36
src/i18n/config.ts
Normal file
36
src/i18n/config.ts
Normal file
@ -0,0 +1,36 @@
|
||||
// i18n 核心配置:语言列表、默认语言、URL 前缀规则
|
||||
// 改这里即可增减语言;新增语言记得同步 src/i18n/dictionary.ts 里的每个 key(单文件聚合多语言)。
|
||||
|
||||
/** 默认语言(无前缀时使用的语言,如 /shows)。 */
|
||||
export const DEFAULT_LOCALE = 'en' as const;
|
||||
|
||||
/** 支持的语言列表。URL 前缀用的就是这些值,例如 /cn/shows 的 `cn`。 */
|
||||
export const LOCALES = ['en', 'cn'] as const;
|
||||
export type Locale = (typeof LOCALES)[number];
|
||||
|
||||
/**
|
||||
* 默认语言是否带 URL 前缀:
|
||||
* - false → 英文在根路径(/shows),中文在 /cn/shows(本项目采用)
|
||||
* - true → 所有语言都带前缀(/en/shows、/cn/shows)
|
||||
*/
|
||||
export const PREFIX_DEFAULT_LOCALE = false;
|
||||
|
||||
/** 语言显示名(用于语言切换器等 UI)。 */
|
||||
export const LOCALE_NAMES: Record<Locale, string> = {
|
||||
en: 'English',
|
||||
cn: '中文',
|
||||
};
|
||||
|
||||
/** 浏览器 Accept-Language / navigator.language → 本项目支持的语言。 */
|
||||
export const BROWSER_LOCALE_MAP: Record<string, Locale> = {
|
||||
'zh': 'cn',
|
||||
'zh-cn': 'cn',
|
||||
'zh-tw': 'cn',
|
||||
'zh-hk': 'cn',
|
||||
'en': 'en',
|
||||
};
|
||||
|
||||
/** 判断一个路径段是不是已支持的语言前缀。 */
|
||||
export function isLocaleSegment(seg: string | undefined): seg is Locale {
|
||||
return !!seg && (LOCALES as readonly string[]).includes(seg);
|
||||
}
|
||||
Reference in New Issue
Block a user