外掛中文化明明已經翻好,PO 檔也上傳了,WordPress 後台卻還是一堆英文。這時候先不要急著重翻,問題可能只是檔名、語系或儲存位置沒有對上。
使用 Loco Translate 管理外掛翻譯時,PO/MO 檔名必須符合外掛的文字網域(text domain)與語系代碼。如果瀏覽器下載後自動把檔名改成 (1)、(2),直接拿去當正式語言檔,就可能無法按預期載入。
不過檔名不是唯一條件。Loco Translate 官方目前也特別提醒:檔案存在哪裡會影響是否容易被 WordPress 或外掛更新覆蓋;JavaScript 介面的翻譯還可能需要 JSON 語言檔。
Loco Translate 的 PO 檔名為什麼重要?
WordPress 外掛翻譯常見命名方式是:
text-domain-locale.po text-domain-locale.mo
以 WooCommerce 的台灣繁體中文為例,常見檔名是:
woocommerce-zh_TW.po woocommerce-zh_TW.mo
woocommerce 是文字網域,zh_TW 是台灣繁體中文 locale。這兩部分必須跟外掛實際的翻譯載入方式一致。
不同外掛可能有自己的語言目錄與載入設定,因此不要只看到「看起來像正確檔名」就判定一定會生效;Loco Translate 內顯示的 bundle/text domain、locale 與檔案位置也要一起確認。
最常見錯誤:下載後變成 (1)、(2)
如果下載資料夾已經有同名檔案,瀏覽器常會自動改成:
woocommerce-zh_TW(1).po woocommerce-zh_TW(2).po
這只是瀏覽器避免覆蓋舊檔的命名方式,不代表它是 WordPress 預期的正式語言檔名。
如果這份檔案原本就應該是 woocommerce-zh_TW.po,上傳/部署前就應該先把 (1)、(2) 移除,恢復正確名稱。
不要把正式語言檔改成 fixed、new、修正版
在自己電腦做版本備份時,你可以用資料夾區分版本;但真正要放進 WordPress 翻譯路徑的檔案,不要隨意改成:
woocommerce-zh_TW-fixed.po woocommerce-zh_TW-new.po woocommerce-zh_TW-修正版.po
比較好的整理方式是:
WooCommerce 中文化/2026-09-09/woocommerce-zh_TW.po
也就是用資料夾管理版本,正式檔名維持 WordPress/外掛需要的格式。
比檔名更容易踩雷:翻譯檔存錯位置
Loco Translate 建立翻譯時,通常會看到 Author、System、Custom 等位置。這不只是整理方式不同,也關係到更新後翻譯會不會被蓋掉。
| 位置 | 風險 |
|---|---|
| Author/外掛自己的目錄 | 外掛更新可能直接覆蓋,通常不適合放自己的修改。 |
| System/WordPress 語言目錄 | WordPress 自動語言更新可能覆蓋。 |
| Custom | Loco 官方推薦用來保存自己的覆寫翻譯,較不容易被一般更新洗掉。 |
Loco Translate 的 Custom 位置目前位於:
wp-content/languages/loco/
如果你是在「修官方翻譯、改成台灣用語」這類自訂用途,Custom 通常比直接改外掛目錄安全。Loco 官方也明確建議避免直接編輯 Author 與 System 位置的檔案。
PO、MO、JSON 分別做什麼?
| 檔案 | 用途 |
|---|---|
| PO | 可編輯的翻譯來源,包含原文、譯文與相關資訊。 |
| MO | WordPress 傳統 PHP/Gettext 翻譯使用的編譯格式。 |
| JSON | WordPress JavaScript 國際化機制使用;許多現代外掛後台介面會用到。 |
Loco Translate 目前在儲存 PO 檔時,若 PO 裡有有效的 JavaScript 來源參照,可以依 WordPress 命名規則產生對應 JSON 翻譯檔。
所以「PO、MO 都有,為什麼還有英文?」不一定是翻譯壞掉,也可能是:
- 該文字來自 JavaScript,需要對應 JSON。
- PO 檔缺少正確的 JavaScript 來源參照。
- 新版外掛新增了尚未同步的字串。
- 實際載入的是另一個 text domain 或 locale。
- 自訂翻譯被官方/系統語言檔覆蓋。
Loco Translate 上傳 PO 檔後沒生效,照這 7 步檢查
- 確認語系。台灣繁體中文通常是
zh_TW。 - 確認 text domain。不要拿另一個外掛或錯誤網域的 PO 檔套用。
- 確認檔名。移除瀏覽器自動加上的
(1)、(2)等文字。 - 確認儲存位置。自己的覆寫翻譯優先使用 Loco Custom。
- 儲存後確認 MO/JSON 是否產生。
- 外掛更新後執行 Sync 前先看變更。新版可能新增或移除字串。
- 清除快取再測試。若網站有頁面快取、物件快取或瀏覽器快取,舊畫面可能暫時保留。
Loco Translate 的 Sync 可以按嗎?
可以,但要先理解它的用途。Sync 是把目前翻譯檔和外掛/佈景主題的翻譯模板重新同步,讓新版本新增的原文字串進來、移除已不存在的來源字串。
如果你有大量自己修改的翻譯,建議同步前先保留備份,並確認 Loco 使用的是正確模板。同步本身不是「把所有中文刪掉」,但錯誤模板或錯誤操作仍可能讓翻譯檔變得混亂。
Elementor 中文化也會遇到同樣問題嗎?
會。尤其 Elementor 後台大量使用 JavaScript,只檢查 PO/MO 並不一定足夠。
如果你正在處理 Elementor 繁體中文,可直接看Elementor 中文化完整教學。目前更建議先更新 WordPress/Elementor 官方翻譯,真的有缺漏再用 Loco Custom 覆寫。
常見問題 FAQ
PO 檔變成 (1).po 可以直接上傳嗎?
若原本正式檔名不含 (1),建議先恢復正確名稱。瀏覽器加上的序號只是避免覆蓋本機同名檔,不是 WordPress locale 命名的一部分。
台灣繁體中文的語系代碼是什麼?
WordPress 常用的台灣繁體中文 locale 是 zh_TW。
自訂翻譯應該放 System 還是 Custom?
依 Loco Translate 官方目前建議,自己維護的覆寫翻譯優先放 Custom,因為 System 可能被 WordPress 的語言更新覆蓋。
有 PO、MO 為什麼還有英文?
現代 WordPress 外掛可能還使用 JavaScript JSON 翻譯;也可能是新字串尚未同步、text domain 不一致、locale 不對或翻譯檔沒有被實際載入。
結語:中文化沒生效,不要只盯著譯文
使用 Loco Translate 時,翻譯內容只是其中一層。檔名、text domain、locale、儲存位置、MO/JSON 與更新流程都會影響最後有沒有正確顯示。
如果下載後看到 (1)、(2),先恢復正確檔名;如果是自己修改台灣用語,優先放到 Custom 位置;如果介面仍有英文,再檢查 JSON 與新版字串。
把這幾個層級依序排除,會比一直重複上傳同一份 PO 檔有效得多。
