多數人以為要做一個雙語甚至多語系網站,得先把每一篇文章、每個頁面都複製一份出來,中文版一份、英文版又一份,改一次內容就要兩邊分別改一次,漏改一邊,網站就成了半吊子的雙語站。這其實是不少 WordPress 多語系外掛的預設邏輯,打開後台的字串翻譯介面,對著一長串被抽離出來的英文片段逐條填空,填到一半才發現原本一整段話被拆得七零八落,格式全跑掉了。
TranslatePress 走的是完全不同的路。它抓的不是資料庫裡的原始文字,而是頁面渲染後的畫面本身,在網站前台看到什麼,就直接在那個畫面上點選、輸入翻譯,存檔後多語言版本共用同一篇文章,不會另外生出一堆重複的內容要維護。這支 GPL 授權的 WordPress 外掛,把翻譯資料留在自己的資料庫裡,即使日後不再續約付費版,已經翻好的內容依然會留在網站上正常顯示,也因此成為目前最多人採用的 WordPress 多語系外掛之一。
TranslatePress 是什麼?前端可視化翻譯的運作邏輯
技術上,大多數翻譯外掛的做法是把文章、頁面存進資料庫的每一段文字抽出來,變成一條一條的字串,在後台逐條填入對應的翻譯,系統再把翻好的字串套回原本的位置。TranslatePress 抓的則是頁面渲染後的 HTML 輸出,也就是瀏覽器最後畫出來的那個畫面。這個差別聽起來技術,實際影響卻很直接,不管內容是文章正文、頁面編輯器排版、外掛產生的表單,還是頁面建置工具拼出來的版面,只要它最後會顯示在頁面上,就能直接在那個畫面裡點選翻譯,不需要另外找一個對應的字串欄位。
因為抓的是渲染輸出而不是原始內容,多語言版本共用同一篇文章、同一個頁面,不會像某些外掛那樣每加一種語言就多複製一份文章出來。這跟 WPML、Polylang 那種每個語言各自建一份文章或頁面的路線不同,兩種做法各有取捨,各自建文章的方式,單篇文章的翻譯狀態比較好逐一管理;TranslatePress 這種共用同一篇的方式,則省去到處同步版面異動的麻煩。官方也把這種前端直接翻譯的做法,定位成不用在編輯器、字串翻譯介面、還有翻得不夠好的翻譯外掛之間來回切換,能直接在前端把完整頁面翻好的替代方案。

TranslatePress 本身是 GPL 授權的開源外掛,語言支援上內建就有上百種語言可選,還能自訂新增官方沒列出的語言。根據 wordpress.org 官方外掛頁,目前活躍安裝數已超過 40 萬、累積下載次數已超過 2,000 萬次,規模在 WordPress 多語系外掛裡數一數二。
安裝與基本語言設定,決定日後的網址結構
免費版的安裝跟一般 WordPress 外掛沒有兩樣,在後台外掛新增頁面搜尋 TranslatePress,安裝並啟用即可直接使用。付費版則要先確認免費版已經裝好並啟用,才能從官方帳號後台下載對應的付費版壓縮檔,以上傳外掛的方式安裝,啟用後貼上授權金鑰才算完成,免費版是付費版運作的基礎,兩者不是互斥的兩套系統。
裝好之後,真正決定日後網址結構的是後台設定裡 TranslatePress 的 General 頁面裡的幾個欄位,而且這幾個欄位一旦網站上線、被 Google 收錄之後就很難隨意更動,值得先想清楚再動手。第一個是 Default Language(預設語言),通常設成原本網站的主要語言;第二個是 All Languages,在這裡新增要提供的第二種語言(免費版可以加一種,形成雙語站),每種語言都會對應一組語言代碼,直接反映在網址的子目錄名稱上,例如英文版網址多半會變成網域後面加一段路徑代表英文。

語言名稱怎麼顯示也是在同一頁決定的,Native language name 選項可以讓語言切換器顯示該語言的母語寫法(例如日本語而不是 Japanese),對母語使用者來說辨識度更高。另外還有一個容易被忽略、卻牽動最大的選項,那就是 Use a subdirectory for the default language,決定預設語言本身要不要也加上一層子目錄。如果網站已經上線一段時間才把這個選項從否改成是,原本語言的所有網址都會多出一層路徑,直接影響既有的內部連結與搜尋引擎已經收錄的排名,不是設定完就能無痛復原的事,建議在網站上線前就先決定好、不要事後才調整。最後還有 Force language in custom links 這個選項,能讓網站裡手動貼的自訂連結也強制套用目前瀏覽的語言,避免使用者切了語言、點連結卻跳回原本語言版本的頁面。
前端視覺化翻譯介面的完整操作方式
TranslatePress 名字裡的前端可視化翻譯,實際操作是這樣,在後台管理列或設定頁點一下 Translate Page(部分版本顯示為 Translate Site),就會直接進入前端翻譯介面。畫面會分成兩側,一側即時顯示網站前台的實際畫面,另一側是翻譯側邊欄。這裡不是另外開一個抽離的編輯畫面,看到的就是訪客會看到的排版、字型、間距,翻完立刻知道會不會爆版或跑版。
操作方式很直覺:把滑鼠移到任何想翻譯的文字、選單項目、小工具上,該元素旁邊就會浮出一個鉛筆圖示,點下去側邊欄會自動帶出對應的輸入框,鍵入翻譯後按下 Save 或用鍵盤快捷鍵存檔即可。整個流程就是點選、輸入、儲存三步,不需要先去後台某個字串列表裡搜尋這段文字對應哪一條。鍵盤快捷鍵包含 Ctrl(或 Mac 的 Cmd)加 S 儲存目前正在編輯的字串、Ctrl 加 Alt 加 Z 捨棄這次編輯、Ctrl 加 Alt 加方向鍵在上一個或下一個字串之間切換,熟悉之後翻一整頁的速度會明顯加快。

比較進階的技巧是翻譯區塊(Translation Block)。有些整段文字裡夾雜著粗體、連結、換行等格式,如果逐個字串翻譯,系統可能會把這段話拆成好幾個零碎片段,分開翻很容易把原本的排版和語意拆散。翻譯區塊可以把這些相關的元素合併成一個大區塊,一次性翻譯整段內容,格式維持完整;需要的話,合併後的區塊之後也能再拆回個別字串重新逐條翻譯,不是不可逆的操作。
前端翻譯介面也原生支援 Gutenberg 區塊編輯器輸出的內容,不管文章是用哪一種區塊排版拼出來的,翻譯操作方式都一樣,不需要為了相容 Gutenberg 另外做設定。
圖片、媒體內容依語言各自替換
圖片與媒體內容一樣可以依語言分開設定,同一個版位,不同語言可以顯示完全不同的圖片(輪播圖也算在內)。這對圖片裡本身就帶著文字的情況特別有用,例如首頁的宣傳圖上寫著中文標語,換成英文版時就能換一張對應英文標語的圖,而不是硬套一張讀者看不懂的中文圖;不同市場需要不同視覺情境時(例如節慶主題圖、在地模特兒),也可以直接照語言分開處理。
操作方式跟翻譯文字完全一致,滑鼠移到想替換的圖片上,一樣會出現鉛筆圖示,點下去側邊欄會出現該語言版本的圖片欄位,可以從媒體庫選取或貼上圖片連結,存檔後前台切換語言就會改變顯示的圖片。同一個流程也能個別設定該語言版本的 alt 文字,這點跟後面 SEO 那節提到的圖片 alt 標籤翻譯是同一件事的兩種做法,差別在這裡是逐張手動換圖與換文字,SEO Pack 那個功能則是針對既有圖片做 alt 文字的整批翻譯。
語言切換器的四種呈現方式與外觀設定
訪客要怎麼切換語言,TranslatePress 提供四種放置方式:浮動選單(Floating language selection)會固定顯示在頁面的某個角落,不管訪客滑到哪裡都找得到;選單項目(Menu item)把語言選項直接嵌進網站原本的導覽選單裡;Language Switcher 區塊是給用 Gutenberg 編輯器的人,直接把語言切換器當成一個區塊拖進頁面任何位置;Shortcode 則是打一段簡短的語法,貼在頁尾、側邊欄或任何支援 shortcode 的版位。四種方式可以互相搭配,不必只選一種。

外觀上,每一種放置法都能個別調整背景色、文字顏色(含滑鼠移過去時的 hover 狀態)、邊框寬度與顏色,以及要不要顯示國旗圖示、國旗與文字的大小比例、擺放位置,不想用國旗當識別也可以直接關掉、只顯示語言名稱。部分外觀選項桌機版和手機版可以分開設定,例如浮動選單在手機上常常改成縮小成一個小圖示,點開才展開完整選項,避免佔用行動裝置寶貴的版面空間。
佈景主題和外掛裡的動態字串翻譯
文章與頁面內容之外,佈景主題與外掛自己輸出的文字,例如聯絡表單的欄位名稱、彈出視窗裡的提示文字、購物車按鈕上的字,這些不是存在文章資料庫裡,而是寫在程式碼裡透過 Gettext 機制輸出,一般翻譯外掛的字串列表抓不到。TranslatePress 把這類內容獨立放進 String Translation 介面管理,底下再分成三個分頁:Slugs 處理文章、頁面、自訂內容類型的網址別名;Gettext 管理佈景主題與外掛輸出的動態字串;Emails 列出外掛本身已經在地化的通知信字串。如果自己修改過信件範本或表單文字,那些自訂內容通常不會出現在 Emails 分頁,要到 Regular 的一般翻譯介面裡才找得到。
有時候切換到某個頁面,會發現有些文字沒有出現在字串清單裡可以翻。這通常是因為外掛剛更新,或某個頁面第一次被載入。這時候可以按 Rescan plugins and themes for strings,系統會重新掃描一次目前啟用的佈景主題與外掛,把新出現的字串抓進清單。
動態字串翻譯還有一個附帶用法很少人注意:就算不想加新語言,也能把佈景主題或外掛裡寫錯、或想換個說法的英文字串,改寫成另一種英文寫法,等於是同語言互換的字串替換功能,不需要真的建立一個新的語言版本。
自動化翻譯的三種引擎,內建 AI 是目前主力
手動一句一句翻譯適合精雕細琢的重要頁面,但整個網站動輒成千上萬字,全靠人工翻完並不切實際,這時候就要靠自動翻譯打底、再挑重點頁面人工微調。TranslatePress 目前提供三種自動翻譯引擎,彼此的定位與使用門檻不一樣。
TranslatePress AI 是官方目前主推的選項,背後整合了 Google Translate、DeepL 等神經機器翻譯引擎,以及 Gemini、GPT 這類大型語言模型,依網站主要語言自動挑選合適的引擎組合,不需要自己另外申請任何一家的 API 帳號。使用上是以字數額度計費,額度隨授權方案不同而不同,而且沒有使用期限,只要授權持續有效,額度沒用完就不會被沒收,續約當下還會拿到新一年的額度。免費版本身也能試用 TranslatePress AI,但額度只有 2,000 字,適合小範圍試翻,大量內容還是得靠付費方案的額度。
Google Translate 是免費版就能接的選項,但要自己到 Google Cloud 申請帳號、建立專案並啟用 Cloud Translation API,拿到 API 金鑰後貼進外掛設定才能用;免費額度用完之後,超出的部分是由 Google 直接依用量計費,跟 TranslatePress 本身的授權費用是分開兩筆帳。DeepL 則限定付費方案才能使用,一樣需要自己申請並貼上 DeepL 的 API 金鑰。這代表三個引擎不是裝了就無限用。TranslatePress AI 靠額度制,Google Translate 跟 DeepL 都要另外申請帳號並自行負擔超額費用,選之前最好先想清楚預期的翻譯量落在哪個門檻。

自動翻譯的觸發時機也值得了解,內容不會在後台儲存的當下就自動全部翻完,而是當有訪客用某個語言瀏覽該頁面時,系統才即時產生那個語言的翻譯;翻好的內容會存進資料庫,之後同一頁再有訪客造訪,直接讀取已經翻好的版本,不會每次都重新呼叫翻譯引擎。這也代表換一個引擎不會把過去已經存好的翻譯洗掉,例如原本用 DeepL 翻好的內容,之後改用 TranslatePress AI,舊的翻譯依然留在資料庫,只有之後新增的內容才會走新引擎。
進階設定裡的排除規則與翻譯範圍控管
不是每個網站都要一次把全站翻完,尤其是內容量已經很大、想先集中火力翻首頁與核心轉換頁面的網站。後台 Advanced 分頁裡的 Exclude strings 功能可以指定只翻譯特定路徑,或反過來排除特定路徑不翻,也能依 CSS 選擇器或特定的 Gettext 字串排除翻譯範圍。用這個功能分階段翻譯有個好處,還沒翻完的頁面不會提前對外顯示語言切換器與對應網址,不會讓訪客點進一個看起來像多語系、實際上內容還沒翻好的半成品頁面。
另一塊常被忽略的是效能疑難排解。有些頁面的內容是靠 JavaScript 動態插入到畫面裡的(例如某些互動元件、延遲載入的區塊),TranslatePress 為了確保這些動態內容也能被翻譯,會持續透過 AJAX 嘗試偵測並即時翻譯它們。這個機制在內容量大或動態元件多的頁面,可能會拖慢前台的載入速度、增加伺服器負擔。遇到這種情況,可以在 Advanced > Troubleshooting 分頁直接停用動態字串翻譯,或者回到 Exclude strings & pages,把觸發這個行為的 CSS 選擇器加進排除清單,只針對真正需要動態翻譯的元件保留這個功能,其餘的關掉換取效能。
多語系 SEO 功能,從 hreflang 到多語言網站地圖
想靠多語系網站衝海外流量,SEO 這塊要分兩層看。免費版就內建了基礎但關鍵的一層,每個語言版本都是各自獨立、可以被搜尋引擎個別索引的靜態網址,不是靠 JavaScript 動態切換內容那種搜尋引擎看不到的假多語言;外掛也會自動幫每個頁面加上 hreflang 標記,告訴 Google 這些網址彼此是同一頁內容的不同語言版本。
hreflang 標記本身有個容易被忽略、卻直接影響有沒有效的規則。根據 Google Search Central 官方文件,每個語言版本的頁面都必須同時列出自己與所有其他語言版本的對應網址,而且雙向對應才算數,中文版頁面連到英文版,英文版頁面也得連回中文版。少了任一方向的回連,Google 可能會直接忽略整組 hreflang 標記,或無法正確解讀對應關係。沒有適合特定語言版本可以顯示給訪客的情況,還可以用 x-default 指定一個備用網頁。對台灣讀者來說最實用的是語言代碼怎麼寫,繁體中文(台灣)的正確代碼是 zh-TW,Google 會據此判斷對應到繁體中文;也可以用 zh-Hant 更明確地指定文字版本,兩種寫法各有使用情境。

免費版沒辦法個別翻譯每個語言版本自己的頁面標題與描述(meta description),這些欄位所有語言共用同一組內容,是它最大的限制。真心要做多語系 SEO、讓每個語言版本的搜尋結果標題都對應該語言的讀者,就得升級到 SEO Pack 這個付費加值功能。SEO Pack 能翻譯的欄位包括網址別名、頁面標題、描述、圖片 alt 標籤,以及社群分享用的 Open Graph 與 Twitter 標籤,並且能產生多語言版本的網站地圖,相容 Yoast SEO、Rank Math、SEOPress、All in One SEO、Slim SEO 等主流 SEO 外掛,不會跟既有的 SEO 設定衝突。這代表免費版適合先求有多語系、能被索引,要進一步優化每個語言版本在搜尋結果裡的呈現,才需要考慮加購 SEO Pack。
WooCommerce 電商內容的翻譯涵蓋範圍
電商網站是多語系需求特別強烈的場景,TranslatePress 免費版就內建支援 WooCommerce,不需要另外付費解鎖。商品名稱、商品描述、購物車頁面、結帳流程裡的每一個欄位,都能用前面講過的同一套前端翻譯介面直接處理,不需要為 WooCommerce 另外學一套操作方式。
比較特別的是訂單通知信。WooCommerce 系統會依照訪客當下的登入狀態與偏好語言,自動選擇要寄出哪個語言版本的通知信,不需要手動指定;這些外掛本身已經在地化過的信件字串,列在前面提過的 String Translation 底下的 Emails 分頁管理。如果自己修改過信件的範本內容(不是外掛原本內建的字串,而是店家自訂新增或改寫過的文字),那些自訂部分不會出現在 Emails 分頁裡,要到 Regular 的一般翻譯介面才找得到、才能翻譯。
進階付費功能,鎖定跨語言網域與使用者體驗
前面講的功能多半免費版就用得到,這裡列的幾個附加元件則各自獨立、多半要付費解鎖,分別解決不同情境下的需求;用途看懂了,該挑哪一個要看網站實際碰到的情境而定。
自動語言偵測依瀏覽器或 IP 導向對應版本
Automatic User Language Detection 這個附加元件,讓訪客第一次造訪網站時,系統會依照瀏覽器的語言設定或訪客的 IP 位置,自動判斷該導向哪一個語言版本,省去訪客自己找語言切換器手動點選的步驟。
這個功能特別適合訪客來源國家分散、又想讓每個人一進站就看到自己語言版本的網站。官方也持續在維護這個功能,例如某次版本更新就特別提到強化了偵測彈窗設定介面的相容性,代表這不是一個裝了就不管的功能,還在持續調整體驗細節。
選單項目可依語言個別設定
Navigation Based on Language 讓同一個選單位置,在不同語言版本可以顯示不同的選單項目組合,而不是整份選單被翻譯成另一種語言、結構卻完全一樣。
適合不同市場要導去不同活動頁或不同重點內容的情況,例如某個促銷活動只在特定地區舉辦,對應語言的選單裡才需要出現這個入口,其他語言版本的訪客看到的選單則維持原本的結構,不會被不相關的活動項目干擾。
每個語言可以綁定不同網域
Different Domain per Language 可以把某個語言指定給完全獨立的網域,例如把德文版指定到另一個網域,而不是掛在原本網域底下的子目錄或子網域。
對需要深耕當地市場的網站來說,獨立網域能讓該語言版本在網址層面就顯得更在地,某種程度上也是把在地化的 SEO 訊號做得更完整,搜尋引擎與訪客都更容易辨認出這是一個針對當地市場經營的網站,而不只是同一個網站掛了個語言切換器。
翻譯者帳號讓外部人員不必進入後台介面
Translator Accounts 讓網站可以開一個不具備 WordPress 後台完整管理權限的帳號,專門給外部譯者或配合的翻譯社使用。
對方登入後只能使用前端翻譯介面工作,翻譯需要的頁面、字串都看得到,但碰不到網站設定、外掛管理或其他管理員才能動的功能,適合把翻譯工作外包出去、又不想開放完整後台權限的情況。
角色視角切換讓翻譯者看見隱藏內容
Browse As User Role 解決的是有些內容平常根本看不到的問題,網站上常有只有登入會員、或特定角色(例如 VIP 會員、批發商)才看得到的專屬頁面或區塊,一般管理員登入後台去翻譯時,如果沒有切換視角,根本找不到這些內容。
這個附加元件讓翻譯者可以切換成特定角色的瀏覽視角,實際看到並翻譯這些平常隱藏起來的內容,避免會員專屬頁面因為翻譯者根本看不到,變成整個多語系網站裡唯一沒被翻譯的破口。
免費版與三個付費方案的功能落差
免費版的邊界劃分得很清楚。可以新增一種第二語言,做出一個雙語網站;手動翻譯完全不限量,想翻幾頁、翻幾個字都可以;也能用自己申請的 Google Translate 或 DeepL API 金鑰接上自動翻譯;TranslatePress AI 則提供 2,000 字的免費試用額度,先感受一下自動翻譯的效果沒問題,但要靠它翻完整個網站,額度很快就會用完。
超過免費版的邊界之後,官方目前分成三個付費方案。Personal 方案可用在 1 個網站,TranslatePress AI 的翻譯字數額度是 50,000 字,這個方案開始才解鎖前面提到的 SEO Pack,以及不限語言數量(免費版只能加一種第二語言,Personal 起才能加更多語言)。Business 方案可用在 3 個網站,AI 額度提高到 200,000 字,並解鎖前面逐一介紹過的進階附加元件,Different Domain per Language、Translator Accounts、Browse As User Role、Navigation Based on Language、DeepL 自動翻譯引擎,以及 Automatic User Language Detection。Developer 方案解鎖的附加功能跟 Business 完全相同,差別在於可以用在無限個網站,AI 翻譯字數額度也拉高到 500,000 字,適合同時經營多個網站、或單一網站內容量特別大的情況。根據官方定價頁,三個方案都是採年繳制,Personal 每年 99 歐元、Business 每年 199 歐元、Developer 每年 349 歐元。

挑選的邏輯並不複雜。如果只是想做一個雙語網站、翻譯量不大,免費版加上自己申請的 API 金鑰就能滿足需求;一旦需要多語系 SEO 的完整加分(翻譯標題、描述、社群標籤),或者網站數量、AI 翻譯字數超出免費版的手動能力範圍,才需要往 Personal 以上的方案考慮;真的要用到跨網域經營、翻譯者帳號分權、依角色顯示內容這幾個進階情境,則要看到 Business 或 Developer 才有。
整體看下來,TranslatePress 把翻譯這件事盡量拉回到原本熟悉的前台畫面裡完成,少了在後台字串列表裡對照猜測的那道轉折,對排版、格式比對內容更敏感的網站來說,這是它最直接的優勢。免費版本身就足以應付雙語站的基本需求,真正決定要不要升級付費方案的,通常不是想不想要更多語言,而是有沒有踩到 SEO 個別翻譯、多網站授權、或角色權限管理這幾個免費版天生沒有的邊界。先照網站實際的翻譯量與經營規模對照一輪,再決定要不要往付費方案走,會比一開始就衝著最貴的方案下手來得踏實。
