chore: add more language supports

This commit is contained in:
Junyan Qin
2026-03-28 20:48:36 +08:00
parent 99e2976826
commit dddfa8ac79
14 changed files with 3758 additions and 0 deletions

View File

@@ -3,6 +3,9 @@ export interface I18nObject {
zh_Hans: string;
zh_Hant?: string;
ja_JP?: string;
th_TH?: string;
vi_VN?: string;
es_ES?: string;
}
export interface ComponentManifest {

View File

@@ -39,6 +39,15 @@ export function LanguageSelector({
} else if (i18n.language === 'ja' || i18n.language === 'ja-JP') {
setCurrentLanguage('ja-JP');
localStorage.setItem('langbot_language', 'ja-JP');
} else if (i18n.language === 'th' || i18n.language === 'th-TH') {
setCurrentLanguage('th-TH');
localStorage.setItem('langbot_language', 'th-TH');
} else if (i18n.language === 'vi' || i18n.language === 'vi-VN') {
setCurrentLanguage('vi-VN');
localStorage.setItem('langbot_language', 'vi-VN');
} else if (i18n.language === 'es' || i18n.language === 'es-ES') {
setCurrentLanguage('es-ES');
localStorage.setItem('langbot_language', 'es-ES');
} else {
setCurrentLanguage('en-US');
localStorage.setItem('langbot_language', 'en-US');
@@ -58,6 +67,15 @@ export function LanguageSelector({
detectedLanguage = 'zh-Hant';
} else if (browserLanguage === 'ja' || browserLanguage === 'ja-JP') {
detectedLanguage = 'ja-JP';
} else if (browserLanguage === 'th' || browserLanguage === 'th-TH') {
detectedLanguage = 'th-TH';
} else if (browserLanguage === 'vi' || browserLanguage === 'vi-VN') {
detectedLanguage = 'vi-VN';
} else if (
browserLanguage === 'es' ||
browserLanguage.startsWith('es-')
) {
detectedLanguage = 'es-ES';
} else {
detectedLanguage = 'en-US';
}
@@ -92,6 +110,9 @@ export function LanguageSelector({
<SelectItem value="zh-Hant"></SelectItem>
<SelectItem value="en-US">English</SelectItem>
<SelectItem value="ja-JP"></SelectItem>
<SelectItem value="th-TH"></SelectItem>
<SelectItem value="vi-VN">Tiếng Việt</SelectItem>
<SelectItem value="es-ES">Español</SelectItem>
</SelectContent>
</Select>
);

View File

@@ -27,6 +27,9 @@ export const extractI18nObject = (i18nObject: I18nObject): string => {
if (language === 'zh_Hans' && i18nObject.zh_Hans) return i18nObject.zh_Hans;
if (language === 'zh_Hant' && i18nObject.zh_Hant) return i18nObject.zh_Hant;
if (language === 'ja_JP' && i18nObject.ja_JP) return i18nObject.ja_JP;
if (language === 'th_TH' && i18nObject.th_TH) return i18nObject.th_TH;
if (language === 'vi_VN' && i18nObject.vi_VN) return i18nObject.vi_VN;
if (language === 'es_ES' && i18nObject.es_ES) return i18nObject.es_ES;
return (
i18nObject.en_US ||
i18nObject.zh_Hans ||
@@ -49,6 +52,12 @@ export const getAPILanguageCode = (): string => {
if (language === 'en-US') return 'en';
// ja-JP -> ja_JP
if (language === 'ja-JP') return 'ja_JP';
// th-TH -> th_TH
if (language === 'th-TH') return 'th_TH';
// vi-VN -> vi_VN
if (language === 'vi-VN') return 'vi_VN';
// es-ES -> es_ES
if (language === 'es-ES') return 'es_ES';
// 默认返回 en
return 'en';
};

View File

@@ -8,6 +8,9 @@ import enUS from './locales/en-US';
import zhHans from './locales/zh-Hans';
import zhHant from './locales/zh-Hant';
import jaJP from './locales/ja-JP';
import thTH from './locales/th-TH';
import viVN from './locales/vi-VN';
import esES from './locales/es-ES';
i18n
.use(LanguageDetector)
@@ -26,6 +29,15 @@ i18n
'ja-JP': {
translation: jaJP,
},
'th-TH': {
translation: thTH,
},
'vi-VN': {
translation: viVN,
},
'es-ES': {
translation: esES,
},
},
fallbackLng: 'zh-Hans',
debug: process.env.NODE_ENV === 'development',

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff