mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-08-02 10:21:16 +08:00
feat(i18n): add Traditional Chinese localization (#3093)
* Add Traditional Chinese localization * fix: address zh-TW formatting and token units - Format `zh-TW.json` with Prettier. - Use Traditional Chinese `萬` and `億` units for zh-TW token summaries. - Add usage formatting coverage for Traditional Chinese locale aliases. --------- Co-authored-by: Jason <farion1231@gmail.com>
This commit is contained in:
+24
-2
@@ -4,8 +4,9 @@ import { initReactI18next } from "react-i18next";
|
||||
import en from "./locales/en.json";
|
||||
import ja from "./locales/ja.json";
|
||||
import zh from "./locales/zh.json";
|
||||
import zhTW from "./locales/zh-TW.json";
|
||||
|
||||
type Language = "zh" | "en" | "ja";
|
||||
type Language = "zh" | "zh-TW" | "en" | "ja";
|
||||
|
||||
const DEFAULT_LANGUAGE: Language = "zh";
|
||||
|
||||
@@ -13,7 +14,12 @@ const getInitialLanguage = (): Language => {
|
||||
if (typeof window !== "undefined") {
|
||||
try {
|
||||
const stored = window.localStorage.getItem("language");
|
||||
if (stored === "zh" || stored === "en" || stored === "ja") {
|
||||
if (
|
||||
stored === "zh" ||
|
||||
stored === "zh-TW" ||
|
||||
stored === "en" ||
|
||||
stored === "ja"
|
||||
) {
|
||||
return stored;
|
||||
}
|
||||
} catch (error) {
|
||||
@@ -27,6 +33,19 @@ const getInitialLanguage = (): Language => {
|
||||
navigator.languages?.[0]?.toLowerCase())
|
||||
: undefined;
|
||||
|
||||
if (navigatorLang === "zh") {
|
||||
return "zh";
|
||||
}
|
||||
|
||||
if (
|
||||
navigatorLang?.startsWith("zh-tw") ||
|
||||
navigatorLang?.startsWith("zh-hk") ||
|
||||
navigatorLang?.startsWith("zh-mo") ||
|
||||
navigatorLang?.startsWith("zh-hant")
|
||||
) {
|
||||
return "zh-TW";
|
||||
}
|
||||
|
||||
if (navigatorLang?.startsWith("zh")) {
|
||||
return "zh";
|
||||
}
|
||||
@@ -52,6 +71,9 @@ const resources = {
|
||||
zh: {
|
||||
translation: zh,
|
||||
},
|
||||
"zh-TW": {
|
||||
translation: zhTW,
|
||||
},
|
||||
};
|
||||
|
||||
i18n.use(initReactI18next).init({
|
||||
|
||||
@@ -542,7 +542,8 @@
|
||||
}
|
||||
},
|
||||
"autoReload": "Data refreshed",
|
||||
"languageOptionChinese": "中文",
|
||||
"languageOptionChinese": "简体中文",
|
||||
"languageOptionTraditionalChinese": "繁體中文",
|
||||
"languageOptionEnglish": "English",
|
||||
"languageOptionJapanese": "日本語",
|
||||
"windowBehavior": "Window Behavior",
|
||||
|
||||
@@ -542,7 +542,8 @@
|
||||
}
|
||||
},
|
||||
"autoReload": "データを更新しました",
|
||||
"languageOptionChinese": "中文",
|
||||
"languageOptionChinese": "简体中文",
|
||||
"languageOptionTraditionalChinese": "繁體中文",
|
||||
"languageOptionEnglish": "English",
|
||||
"languageOptionJapanese": "日本語",
|
||||
"windowBehavior": "ウィンドウ動作",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -542,7 +542,8 @@
|
||||
}
|
||||
},
|
||||
"autoReload": "数据已刷新",
|
||||
"languageOptionChinese": "中文",
|
||||
"languageOptionChinese": "简体中文",
|
||||
"languageOptionTraditionalChinese": "繁體中文",
|
||||
"languageOptionEnglish": "English",
|
||||
"languageOptionJapanese": "日本語",
|
||||
"windowBehavior": "窗口行为",
|
||||
|
||||
Reference in New Issue
Block a user