28 lines
1012 B
TypeScript
28 lines
1012 B
TypeScript
|
|
// 确保正确构建API请求URL的工具函数
|
|||
|
|
export const buildApiUrl = (path: string): string => {
|
|||
|
|
// 确保路径以/开头
|
|||
|
|
const normalizedPath = path.startsWith('/') ? path : `/${path}`;
|
|||
|
|
|
|||
|
|
// 在浏览器环境中,使用当前域名构建完整URL
|
|||
|
|
if (typeof window !== 'undefined') {
|
|||
|
|
const protocol = window.location.protocol;
|
|||
|
|
const host = window.location.host;
|
|||
|
|
return `${protocol}//${host}${normalizedPath}`;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 在服务端环境中,返回相对路径
|
|||
|
|
return normalizedPath;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 专门用于加载翻译文件的函数
|
|||
|
|
export const fetchTranslation = async (locale: string, namespace: string): Promise<any> => {
|
|||
|
|
const url = buildApiUrl(`/locales/${locale}/${namespace}.json`);
|
|||
|
|
console.log(`Fetching translation from: ${url}`); // 调试日志
|
|||
|
|
|
|||
|
|
const response = await fetch(url);
|
|||
|
|
if (!response.ok) {
|
|||
|
|
throw new Error(`Failed to fetch ${url}: ${response.status}`);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return response.json();
|
|||
|
|
};
|