convertor/docs/i18n.md
Your Name 5c68308c36 feat: 擴展 i18n 支援 65 種語言 + 完整文件系統
🌐 國際化 (i18n)
- 從 5 種語言擴展到 65 種語言支援
- 新增:歐洲語系 (de, fr, es, it, pt, ru, nl, pl, tr, uk, cs, sv, da, fi, no, el, hu, ro, bg, hr, sk, sl, lt, lv, et, is, ga, cy, mt, mk, sq, ca, eu, gl, sr)
- 新增:中東語系 (ar, he, fa)
- 新增:南亞語系 (hi, bn, ta, te, mr, gu, kn, ml, ne, si)
- 新增:東南亞語系 (th, vi, id, ms, fil, my, km, lo)
- 新增:非洲語系 (af, sw, am, zu)
- 完整翻譯所有 UI 文字

📖 文件系統
- 重構 README.md 為入口型首頁
- 新增 docs/getting-started.md - 快速入門指南
- 新增 docs/docker.md - Docker 部署指南
- 新增 docs/environment-variables.md - 環境變數說明
- 新增 docs/url-id-and-storage.md - 儲存結構說明
- 新增 docs/advanced-usage.md - 進階使用指南
- 更新 docs/i18n.md - 65 種語言清單

 建構驗證
- TypeScript 編譯通過
- Docker 建構通過
2026-01-20 11:30:21 +08:00

5.7 KiB
Raw Blame History

多語言支援i18n

ConvertX-CN 支援 65 種語言,是目前最完整的多語言檔案轉換服務。


支援語言列表

東亞語言5 種)

代碼 語言 原生名稱
zh-TW 繁體中文(預設) 繁體中文
zh-CN 簡體中文 简体中文
en 英文 English
ja 日文 日本語
ko 韓文 한국어

西歐語言10 種)

代碼 語言 原生名稱
de 德文 Deutsch
fr 法文 Français
es 西班牙文 Español
it 義大利文 Italiano
pt 葡萄牙文 Português
nl 荷蘭文 Nederlands
ca 加泰隆尼亞文 Català
eu 巴斯克文 Euskara
gl 加利西亞文 Galego
mt 馬爾他文 Malti

北歐語言5 種)

代碼 語言 原生名稱
sv 瑞典文 Svenska
da 丹麥文 Dansk
fi 芬蘭文 Suomi
no 挪威文 Norsk
is 冰島文 Íslenska

東歐語言12 種)

代碼 語言 原生名稱
ru 俄文 Русский
pl 波蘭文 Polski
uk 烏克蘭文 Українська
cs 捷克文 Čeština
hu 匈牙利文 Magyar
ro 羅馬尼亞文 Română
bg 保加利亞文 Български
hr 克羅埃西亞文 Hrvatski
sk 斯洛伐克文 Slovenčina
sl 斯洛維尼亞文 Slovenščina
sr 塞爾維亞文 Српски
mk 馬其頓文 Македонски

波羅的海語言3 種)

代碼 語言 原生名稱
lt 立陶宛文 Lietuvių
lv 拉脫維亞文 Latviešu
et 愛沙尼亞文 Eesti

其他歐洲語言4 種)

代碼 語言 原生名稱
el 希臘文 Ελληνικά
sq 阿爾巴尼亞文 Shqip
ga 愛爾蘭文 Gaeilge
cy 威爾斯文 Cymraeg

中東語言4 種)

代碼 語言 原生名稱
ar 阿拉伯文 العربية
he 希伯來文 עברית
fa 波斯文 فارسی
tr 土耳其文 Türkçe

南亞語言10 種)

代碼 語言 原生名稱
hi 印地文 हिन्दी
bn 孟加拉文 বাংলা
ta 泰米爾文 தமிழ்
te 泰盧固文 తెలుగు
mr 馬拉地文 मराठी
gu 古吉拉特文 ગુજરાતી
kn 卡納達文 ಕನ್ನಡ
ml 馬拉雅拉姆文 മലയാളം
ne 尼泊爾文 नेपाली
si 僧伽羅文 සිංහල

東南亞語言8 種)

代碼 語言 原生名稱
th 泰文 ไทย
vi 越南文 Tiếng Việt
id 印尼文 Bahasa Indonesia
ms 馬來文 Bahasa Melayu
fil 菲律賓文 Filipino
my 緬甸文 မြန်မာ
km 高棉文 ខ្មែរ
lo 寮文 ລາວ

非洲語言4 種)

代碼 語言 原生名稱
af 南非語 Afrikaans
sw 斯瓦希里文 Kiswahili
am 阿姆哈拉文 አማርኛ
zu 祖魯文 isiZulu

語言切換

方法一:介面切換

  1. 在網站右上角的導航列找到語言圖示(🌐
  2. 點擊後選擇偏好語言
  3. 語言偏好會自動保存到 Cookie 中

方法二URL 參數

http://localhost:3000/?lang=ja

方法三:瀏覽器設定

ConvertX-CN 會自動偵測瀏覽器的語言設定。


自動偵測

首次訪問時,系統會根據以下優先順序選擇語言:

  1. Cookie 中儲存的語言偏好
  2. URL 參數中的 lang
  3. 瀏覽器的 Accept-Language 標頭
  4. 預設語言(繁體中文 zh-TW

新增語言

如要添加新語言支援,請按以下步驟:

1. 建立翻譯檔案

src/locales/ 目錄新增語言檔案,例如 xx.json

{
  "common": {
    "appName": "ConvertX-CN",
    "poweredBy": "Powered by",
    "version": "v{version}",
    "loading": "...",
    ...
  },
  "nav": {
    "history": "...",
    "account": "...",
    ...
  },
  ...
}

2. 在 index.ts 中註冊

編輯 src/i18n/index.ts

// 導入新語言檔案
import xx from "../locales/xx.json";

// 在 SupportedLocale 類型中添加
export type SupportedLocale = "en" | "zh-TW" | ... | "xx";

// 在 supportedLocales 陣列中添加
export const supportedLocales: LocaleConfig[] = [
  // ...
  { code: "xx", name: "Language Name", nativeName: "原生名稱" },
];

// 在 translations 物件中註冊
const translations: Record<SupportedLocale, TranslationData> = {
  // ...
  xx: xx as TranslationData,
};

3. 測試

bun run dev
# 訪問 http://localhost:3000/?lang=xx

翻譯 Fallback

如果某個翻譯鍵缺失,系統會:

  1. 嘗試使用英文(en)翻譯
  2. 如果英文也缺失,顯示鍵名(如 nav.history

貢獻翻譯

歡迎提交 Pull Request 來新增或改進翻譯!

翻譯指南

  1. 完整翻譯:確保所有鍵都有翻譯
  2. 保留佔位符{version}{count} 等佔位符不要翻譯
  3. 自然表達:使用該語言的自然表達方式
  4. 一致性:同一個詞在不同地方使用相同翻譯
  5. 測試:在實際介面中測試翻譯效果

提交流程

  1. Fork 此專案
  2. 建立新語言檔案或修改現有翻譯
  3. 測試確認無誤
  4. 提交 Pull Request