fix(i18n): complete zh_TW locale coverage (#13792)

This updates the Traditional Chinese (`zh_TW`) locale coverage across
Chatwoot so the app no longer falls back to English for missing backend,
dashboard, widget, and survey strings.

## How to test

1. Start Chatwoot locally and switch the UI locale to Traditional
Chinese (`zh_TW`).
2. Walk through the main product areas: dashboard, settings, inbox
management, help center, automations, reports, widget, and survey flows.
3. Confirm the UI surfaces translated Traditional Chinese copy instead
of English fallbacks.
4. Spot-check newly added locale surfaces such as secure password
messaging and snooze UI copy.

---------

Co-authored-by: Sojan Jose <sojan@pepalo.com>
This commit is contained in:
salmonumbrella
2026-03-16 18:47:22 -07:00
committed by GitHub
parent b8f6fe5bb7
commit a62beffeef
25 changed files with 1004 additions and 904 deletions

View File

@@ -1,60 +1,60 @@
#Additional translations at https://github.com/plataformatec/devise/wiki/I18n
zh_TW:
devise:
confirmations:
confirmed: "您的信箱已通過驗證,現在您已成功登入。"
send_instructions: "您將在幾分鐘後收到一封電子郵件,內有驗證帳號的步驟說明。"
send_paranoid_instructions: "如果我們有您的信箱,您將會收到一封驗證您的帳號的電子郵件。"
confirmed: 您的信箱已通過驗證,現在您已成功登入。
send_instructions: 您將在幾分鐘後收到一封電子郵件,內有驗證帳號的步驟說明。
send_paranoid_instructions: 如果我們有您的信箱,您將會收到一封驗證您的帳號的電子郵件。
failure:
already_authenticated: "您已經登入。"
inactive: "您的帳號尚未被啟用。"
invalid: "%{authentication_keys}密碼或帳號尚未審核。"
locked: "您的帳號已被鎖定。"
last_attempt: "您還有最後一次嘗試機會,再次失敗您的帳號將會被鎖定。"
not_found_in_database: "%{authentication_keys}或密碼錯誤。"
timeout: "您的登入時效過期,請重新登入。"
unauthenticated: "您需要先登入或註冊後才能繼續。"
unconfirmed: "您的帳號需要經過驗證後,才能繼續。"
already_authenticated: 您已經登入。
inactive: 您的帳號尚未被啟用。
invalid: '%{authentication_keys}密碼或帳號尚未審核。'
locked: 您的帳號已被鎖定。
last_attempt: 您還有最後一次嘗試機會,再次失敗您的帳號將會被鎖定。
not_found_in_database: '%{authentication_keys}或密碼錯誤。'
timeout: 您的登入時效過期,請重新登入。
unauthenticated: 您需要先登入或註冊後才能繼續。
unconfirmed: 您的帳號需要經過驗證後,才能繼續。
mailer:
confirmation_instructions:
subject: "確認指令"
subject: 確認指令
reset_password_instructions:
subject: "重設密碼"
subject: 重設密碼
unlock_instructions:
subject: "帳號解鎖步驟"
subject: 帳號解鎖步驟
password_change:
subject: "密碼已更改"
subject: 密碼已更改
omniauth_callbacks:
failure: "因為 %{reason},無法從 %{kind} 驗證。"
success: "成功從 %{kind} 驗證。"
failure: 因為 %{reason},無法從 %{kind} 驗證。
success: 成功從 %{kind} 驗證。
passwords:
no_token: "這是密碼重設頁面,僅能透過密碼重設信件進入。如果您是透過重設信件進入的,請確認您的網址是完整的。"
send_instructions: "您將在幾分鐘後收到一封電子郵件,內有重新設定密碼的步驟說明。"
send_paranoid_instructions: "如果我們有您的信箱,您將會收到一封內含可重新設定密碼連結的電子郵件。"
updated: "您的密碼已被修改,您現在已經登入。"
updated_not_active: "您的密碼已被修改。"
no_token: 這是密碼重設頁面,僅能透過密碼重設信件進入。如果您是透過重設信件進入的,請確認您的網址是完整的。
send_instructions: 您將在幾分鐘後收到一封電子郵件,內有重新設定密碼的步驟說明。
send_paranoid_instructions: 如果我們有您的信箱,您將會收到一封內含可重新設定密碼連結的電子郵件。
updated: 您的密碼已被修改,您現在已經登入。
updated_not_active: 您的密碼已被修改。
registrations:
destroyed: "再會!您的帳號已被取消。有緣再會。"
signed_up: "註冊成功,歡迎!"
signed_up_but_inactive: "您已註冊成功。然而因為您的帳號尚未啓動,暫時無法登入,抱歉!"
signed_up_but_locked: "您已註冊成功。 然而因為您的帳號已被鎖定,暫時無法登入,抱歉!"
signed_up_but_unconfirmed: "確認信件已送至您的 Email 信箱,請點擊信件內連結以啓動您的帳號。"
update_needs_confirmation: "您已經成功的更新帳號資訊,但我們仍需確認您的電子信箱,請至新信箱收信並點擊連結以確認您的新電子郵件帳號。"
updated: "您已經成功的更新帳號資訊。"
destroyed: 再會!您的帳號已被取消。有緣再會。
signed_up: 註冊成功,歡迎!
signed_up_but_inactive: 您已註冊成功。然而因為您的帳號尚未啓動,暫時無法登入,抱歉!
signed_up_but_locked: 您已註冊成功。 然而因為您的帳號已被鎖定,暫時無法登入,抱歉!
signed_up_but_unconfirmed: 確認信件已送至您的 Email 信箱,請點擊信件內連結以啓動您的帳號。
update_needs_confirmation: 您已經成功的更新帳號資訊,但我們仍需確認您的電子信箱,請至新信箱收信並點擊連結以確認您的新電子郵件帳號。
updated: 您已經成功的更新帳號資訊。
sessions:
signed_in: "成功登入。"
signed_out: "成功登出。"
already_signed_out: "成功登出。"
signed_in: 成功登入。
signed_out: 成功登出。
already_signed_out: 成功登出。
unlocks:
send_instructions: "您將在幾分鐘後收到一封電子郵件,內有將帳號解除鎖定的步驟說明。"
send_paranoid_instructions: "如果您的帳號已存在,您的電子信箱將會收到如何解鎖帳號的指示。"
unlocked: "您的帳號已被解鎖,現在已經登入。"
send_instructions: 您將在幾分鐘後收到一封電子郵件,內有將帳號解除鎖定的步驟說明。
send_paranoid_instructions: 如果您的帳號已存在,您的電子信箱將會收到如何解鎖帳號的指示。
unlocked: 您的帳號已被解鎖,現在已經登入。
errors:
messages:
already_confirmed: "已經驗證,請直接登入。"
confirmation_period_expired: "必須在 %{period} 內驗證,請重新申請。"
expired: "已經過期,請重新申請。"
not_found: "找不到。"
not_locked: "並未被鎖定。"
already_confirmed: 已經驗證,請直接登入。
confirmation_period_expired: 必須在 %{period} 內驗證,請重新申請。
expired: 已經過期,請重新申請。
not_found: 找不到。
not_locked: 並未被鎖定。
not_saved:
other: "有 %{count} 個錯誤導致 %{resource} 不能被儲存:"
one: 1 個錯誤禁止儲存此 %{resource}
other: 有 %{count} 個錯誤導致 %{resource} 不能被儲存:

View File

@@ -0,0 +1,70 @@
zh_TW:
secure_password:
character:
one: 字元
other: 字元
types:
uppercase: 大寫字母
downcase: 小寫字母
lowercase: 小寫字母
number: 數字
special: 特殊字元
password_has_required_content:
errors:
messages:
unknown_characters: 包含 %{count} 個無效%{subject}
minimum_characters: 至少要包含 %{count} 個%{type}%{subject}
maximum_characters: 必須少於 %{count} 個%{type}%{subject}
minimum_length: 至少要包含 %{count} 個%{subject}
maximum_length: 必須少於 %{count} 個%{subject}
password_disallows_frequent_reuse:
errors:
messages:
password_is_recent: 最近 %{count} 次使用過的密碼不得重複使用
password_disallows_frequent_changes:
errors:
messages:
password_is_recent: 每個 %{timeframe} 內只能更改一次密碼
password_requires_regular_updates:
alerts:
messages:
password_updated: 您的密碼已更新。
errors:
messages:
password_expired: 您的密碼已過期。密碼必須每隔 %{timeframe} 更換一次
datetime:
precise_distance_in_words:
half_a_minute: 半分鐘
less_than_x_seconds:
one: 1秒
other: '%{count} 秒'
x_seconds:
one: 1秒
other: '%{count} 秒'
less_than_x_minutes:
one: 一分鐘
other: '%{count} 分鐘'
x_minutes:
one: 1分鐘
other: '%{count} 分鐘'
about_x_hours:
one: 1小時
other: '%{count} 小時'
x_days:
one: 1天
other: '%{count} 天'
about_x_months:
one: 1個月
other: '%{count} 個月'
x_months:
one: 1個月
other: '%{count} 個月'
about_x_years:
one: 1年
other: '%{count} 年'
over_x_years:
one: 1年
other: '%{count} 年'
almost_x_years:
one: 1年
other: '%{count} 年'

View File

@@ -417,13 +417,17 @@ zh_TW:
button: 開啟對話
time_units:
days:
other: '%{count} days'
one: '%{count} '
other: '%{count} 天'
hours:
other: '%{count} hours'
one: '%{count} 小時'
other: '%{count} 小時'
minutes:
other: '%{count} minutes'
one: '%{count} 分鐘'
other: '%{count} 分鐘'
seconds:
other: '%{count} seconds'
one: '%{count} '
other: '%{count} 秒'
auto_assignment:
default_policy_name: 'Default Policy'
policy_actor: 'Automation System via %{policy_name}'