You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

62 lines
3.1 KiB

// BCP-47 语言全集(与后端 modules/echomeet/core.go 的转写/翻译口径一致,
// 避免在第三方服务里配出运行时并不支持的语言)。
// code 为存储值(第三方服务 languages 字段里逗号分隔、default_lang 存单个);name 仅前端展示。
export interface LangOption {
code: string
name: string
}
export const LANG_OPTIONS: LangOption[] = [
{ code: 'zh-CN', name: '中文(简体)' },
{ code: 'zh-TW', name: '中文(繁体)' },
{ code: 'zh-HK', name: '中文(香港)' },
{ code: 'yue-HK', name: '粤语' },
{ code: 'en-US', name: '英语(美国)' },
{ code: 'en-GB', name: '英语(英国)' },
{ code: 'ja-JP', name: '日语' },
{ code: 'ko-KR', name: '韩语' },
{ code: 'id-ID', name: '印尼语' },
{ code: 'es-ES', name: '西班牙语(西)' },
{ code: 'es-MX', name: '西班牙语(墨)' },
{ code: 'pt-BR', name: '葡萄牙语(巴西)' },
{ code: 'pt-PT', name: '葡萄牙语(葡)' },
{ code: 'de-DE', name: '德语' },
{ code: 'fr-FR', name: '法语' },
{ code: 'it-IT', name: '意大利语' },
{ code: 'nl-NL', name: '荷兰语' },
{ code: 'pl-PL', name: '波兰语' },
{ code: 'ru-RU', name: '俄语' },
{ code: 'uk-UA', name: '乌克兰语' },
{ code: 'tr-TR', name: '土耳其语' },
{ code: 'vi-VN', name: '越南语' },
{ code: 'th-TH', name: '泰语' },
{ code: 'ms-MY', name: '马来语' },
{ code: 'fil-PH', name: '菲律宾语' },
{ code: 'ar-SA', name: '阿拉伯语' },
]
// 会议模板等历史数据里出现、但不在 LANG_OPTIONS(第三方服务可选语言集)里的语言码。
// 只用于展示中文名,不进第三方服务的候选下拉——那里多一个选项就意味着运行时可能选路到不支持的语言。
const EXTRA_LANG_NAMES: Record<string, string> = {
'bg-BG': '保加利亚语', 'cs-CZ': '捷克语', 'da-DK': '丹麦语', 'el-GR': '希腊语',
'et-EE': '爱沙尼亚语', 'fa-IR': '波斯语', 'fi-FI': '芬兰语', 'hi-IN': '印地语',
'hr-HR': '克罗地亚语', 'hu-HU': '匈牙利语', 'is-IS': '冰岛语', 'lt-LT': '立陶宛语',
'lv-LV': '拉脱维亚语', 'nb-NO': '挪威语', 'ro-RO': '罗马尼亚语', 'sk-SK': '斯洛伐克语',
'sl-SI': '斯洛文尼亚语', 'sr-RS': '塞尔维亚语', 'sv-SE': '瑞典语', 'tl-PH': '菲律宾语',
'he-IL': '希伯来语', 'bn-BD': '孟加拉语', 'ta-IN': '泰米尔语', 'ur-PK': '乌尔都语',
'ca-ES': '加泰罗尼亚语', 'sw-KE': '斯瓦希里语', 'af-ZA': '南非荷兰语', 'mk-MK': '马其顿语',
}
// langName 按 BCP-47 码查中文名,未知码原样返回。
export function langName(code: string): string {
const o = LANG_OPTIONS.find((x) => x.code === code)
if (o) return o.name
return EXTRA_LANG_NAMES[code] || code
}
// ALL_LANG_NAMES 展示用的语言码全集(LANG_OPTIONS ∪ EXTRA_LANG_NAMES),
// 供「给模板补一个新语言版本」这类需要广口径候选的场景使用。
export const ALL_LANG_OPTIONS: LangOption[] = [
...LANG_OPTIONS,
...Object.entries(EXTRA_LANG_NAMES).map(([code, name]) => ({ code, name })),
].sort((a, b) => (a.code < b.code ? -1 : 1))