feat(i18n): add Traditional Chinese (zh-TW) translation

Add support for Traditional Chinese localization:
- Add chinese_traditional.go with zh-TW translations
- Register zh-TW and zh_TW language codes in i18n.go

Users can enable it by setting `gui.language: zh-TW` in config
or by using LANG=zh_TW.UTF-8 environment variable.
This commit is contained in:
WillmanChen 2026-01-11 10:53:31 +08:00
parent f4fc3669ca
commit f02226237a
2 changed files with 147 additions and 9 deletions

View file

@ -0,0 +1,136 @@
package i18n
func chineseTraditionalSet() TranslationSet {
return TranslationSet{
PruningStatus: "清理中",
RemovingStatus: "移除中",
RestartingStatus: "重新啟動中",
StartingStatus: "啟動中",
StoppingStatus: "停止中",
UppingServiceStatus: "啟動服務中",
UppingProjectStatus: "啟動專案中",
DowningStatus: "關閉中",
PausingStatus: "暫停中",
RunningCustomCommandStatus: "正在執行自訂命令",
RunningBulkCommandStatus: "正在執行批次命令",
NoViewMachingNewLineFocusedSwitchStatement: "沒有符合 newLineFocused switch 語句的視圖",
ErrorOccurred: "發生錯誤!請在 https://github.com/jesseduffield/lazydocker/issues 回報問題",
ConnectionFailed: "無法連線到 Docker。您可能需要重新啟動 Docker",
UnattachableContainerError: "容器不支援 attach。您必須使用 \"-it\" 旗標執行服務,或在 docker-compose.yml 中設定 `stdin_open: true, tty: true`",
WaitingForContainerInfo: "Docker 尚未提供足夠的容器資訊,請稍後再試。",
CannotAttachStoppedContainerError: "無法 attach 到已停止的容器,請先啟動它(按 'r' 鍵)(沒錯,我懶得幫你自動做這件事)(透過錯誤訊息跟你聊天是不是很酷)",
CannotAccessDockerSocketError: "無法存取 Docker socketunix:///var/run/docker.sock\n請以 root 執行 lazydocker或參考 https://docs.docker.com/install/linux/linux-postinstall/",
CannotKillChildError: "等待三秒鐘以停止子程序。可能有孤兒程序在系統上繼續執行。",
Donate: "贊助",
Confirm: "確認",
Return: "返回",
FocusMain: "聚焦主面板",
LcFilter: "篩選列表",
Navigate: "導覽",
Execute: "執行",
Close: "關閉",
Quit: "離開",
Menu: "選單",
MenuTitle: "選單",
Scroll: "捲動",
OpenConfig: "開啟 lazydocker 設定",
EditConfig: "編輯 lazydocker 設定",
Cancel: "取消",
Remove: "移除",
HideStopped: "隱藏/顯示已停止的容器",
ForceRemove: "強制移除",
RemoveWithVolumes: "移除並刪除 volume",
RemoveService: "移除容器",
UpService: "啟動服務",
Stop: "停止",
Pause: "暫停",
Restart: "重新啟動",
Down: "關閉專案",
DownWithVolumes: "關閉專案(含 volume",
Start: "啟動專案",
Rebuild: "重建",
Recreate: "重新建立",
PreviousContext: "上一個分頁",
NextContext: "下一個分頁",
// Attach: "連接",
ViewLogs: "檢視日誌",
UpProject: "建立並啟動容器",
DownProject: "停止並移除容器",
RemoveImage: "移除映像檔",
RemoveVolume: "移除 volume",
RemoveNetwork: "移除網路",
RemoveWithoutPrune: "移除但保留未標記的父層",
RemoveWithoutPruneWithForce: "強制移除但保留未標記的父層",
RemoveWithForce: "強制移除",
PruneContainers: "清理已結束的容器",
PruneVolumes: "清理未使用的 volume",
PruneNetworks: "清理未使用的網路",
PruneImages: "清理未使用的映像檔",
StopAllContainers: "停止所有容器",
RemoveAllContainers: "刪除所有容器(強制)",
ViewRestartOptions: "檢視重新啟動選項",
ExecShell: "執行 shell",
RunCustomCommand: "執行預設的自訂命令",
ViewBulkCommands: "檢視批次命令",
FilterList: "篩選列表",
OpenInBrowser: "在瀏覽器中開啟(第一個 port 為 http",
SortContainersByState: "依狀態排序容器",
GlobalTitle: "全域",
MainTitle: "主要",
ProjectTitle: "專案",
ServicesTitle: "服務",
ContainersTitle: "容器",
StandaloneContainersTitle: "獨立容器",
ImagesTitle: "映像檔",
VolumesTitle: "Volumes",
NetworksTitle: "網路",
CustomCommandTitle: "自訂命令:",
BulkCommandTitle: "批次命令:",
ErrorTitle: "錯誤",
LogsTitle: "日誌",
ConfigTitle: "設定",
EnvTitle: "環境變數",
DockerComposeConfigTitle: "Docker-Compose 設定",
TopTitle: "系統資源",
StatsTitle: "統計資訊",
CreditsTitle: "關於",
ContainerConfigTitle: "容器設定",
ContainerEnvTitle: "容器環境變數",
NothingToDisplay: "沒有內容可顯示",
NoContainerForService: "沒有日誌可顯示;該服務未關聯任何容器",
CannotDisplayEnvVariables: "顯示環境變數時發生問題",
NoContainers: "沒有容器",
NoContainer: "沒有容器",
NoImages: "沒有映像檔",
NoVolumes: "沒有 volume",
NoNetworks: "沒有網路",
NoServices: "沒有服務",
ConfirmQuit: "確定要離開嗎?",
ConfirmUpProject: "確定要啟動這個 docker compose 專案嗎?",
MustForceToRemoveContainer: "無法刪除執行中的容器,除非強制執行。要強制刪除嗎?",
NotEnoughSpace: "空間不足,無法顯示面板",
ConfirmPruneImages: "確定要刪除所有未使用的映像檔嗎?",
ConfirmPruneContainers: "確定要刪除所有已停止的容器嗎?",
ConfirmStopContainers: "確定要停止所有容器嗎?",
ConfirmRemoveContainers: "確定要刪除所有容器嗎?",
ConfirmPruneVolumes: "確定要刪除所有未使用的 volume 嗎?",
ConfirmPruneNetworks: "確定要刪除所有未使用的網路嗎?",
StopService: "確定要停止此服務的容器嗎?",
StopContainer: "確定要停止此容器嗎?",
PressEnterToReturn: "按 Enter 返回 lazydocker可在設定檔中設定 `gui.returnImmediately: true` 來停用此提示)",
No: "否",
Yes: "是",
LcNextScreenMode: "下一個畫面模式(正常/半螢幕/全螢幕)",
LcPrevScreenMode: "上一個畫面模式",
FilterPrompt: "篩選",
}
}

View file

@ -48,15 +48,17 @@ func NewTranslationSet(log *logrus.Entry, language string) *TranslationSet {
// GetTranslationSets gets all the translation sets, keyed by language code
func GetTranslationSets() map[string]TranslationSet {
return map[string]TranslationSet{
"pl": polishSet(),
"nl": dutchSet(),
"de": germanSet(),
"tr": turkishSet(),
"en": englishSet(),
"fr": frenchSet(),
"zh": chineseSet(),
"es": spanishSet(),
"pt": portugueseSet(),
"pl": polishSet(),
"nl": dutchSet(),
"de": germanSet(),
"tr": turkishSet(),
"en": englishSet(),
"fr": frenchSet(),
"zh": chineseSet(),
"zh-TW": chineseTraditionalSet(),
"zh_TW": chineseTraditionalSet(),
"es": spanishSet(),
"pt": portugueseSet(),
}
}