若要找出狀態仍顯示已翻譯、但內容已過時的翻譯,請追蹤變更過的來源訊息,找到它在字串目錄中的項目,重新建置,並比對文字內容。單憑綠色勾號,無法解決你已發現的不一致。

本工作流程適用於在 Xcode 中維護 Mac App,且已有 .xcstrings 目錄的人。目標是在英文來源文字編輯後,找出哪些翻譯需要處理、保留有用的現有文字,並在執行中的 App 驗證修正後的訊息。

來源訊息變更時應該發生什麼事?

Apple 說明,變更來源字串會將其翻譯標記為待審查。目錄會區分未翻譯字串(New)、需要注意的字串(Needs Review),以及附有綠色勾號的已翻譯字串。另一個獨立的 Stale 狀態表示 Xcode 無法在程式碼中找到先前已翻譯的字串。探索字串目錄

診斷這個問題時,這些術語很重要。若 App 仍在使用某則訊息,但其翻譯已過時,這屬於待審查事項。若只搜尋目錄中的 Stale 狀態,可能會漏掉這類情況。

Apple 文件描述的來源變更行為提供了預期結果,但無法說明為何特定項目仍保留已翻譯狀態。發生這種情況時,請先調查經編輯的來源與目錄項目之間的關係,再將勾號視為文字已更新的充分證據。

審查翻譯前,先找出確切訊息

從一則變更過的訊息著手。記下它先前的英文文字、目前的文字、是否有獨立的查找索引鍵,以及目錄名稱。這份簡短的比對紀錄是建議使用的診斷輔助資料,並非 Xcode 功能。當多個項目看起來相似時,它能提供明確的核對依據。

例如,假設桌面按鈕先前顯示 Open item,現在改為 Open selected items。審查時要確認每種翻譯是否仍表達開啟目前所選項目的意思,包括可能選取多個項目的情況。只找到 Open 一詞的翻譯,並不能回答這個問題。

區分查找索引鍵與顯示文字

Swift 支援使用明確的靜態查找索引鍵,並另外提供 defaultValue。這個預設值通常是開發語言的文字,並會在查找失敗時使用。comment 則提供翻譯者所需的語境。如果未指定表格,查找會使用 Localizable;如果未指定套件,則會搜尋 App 的主要套件。Swift 的明確索引鍵字串初始設定式

請用以下示意訊息紀錄區分這些部分。這些是合成範例值,不是目錄檔或可執行程式。

元件 編輯前 編輯後
查找索引鍵 selection.open selection.open
英文來源值 Open item Open selected items
翻譯者語境 開啟一個項目的按鈕 開啟目前所選全部項目的按鈕
目錄表格 Localizable Localizable

此例中,識別碼維持不變,但訊息已變更。若稽核時只比對索引鍵名稱,就會忽略這項編輯。來源值和語境也要一起比對。

有些 Swift 本地化呼叫會改用開發語言的文字作為索引鍵。Apple 說明,String.LocalizationValue 支援這種模式,也支援插值。採用這種方式時,變更文字也可能改變查找索引鍵,因此請檢查新舊項目,不要假設翻譯仍繫結在同一個識別碼上。String.LocalizationValue

重新建置並檢查來源位置

在 Xcode 中選擇 Product > Build,然後在專案導覽器中選取相關目錄。Apple 說明,建置會將程式碼中可本地化字串的變更更新至目錄。選擇 Editor > Assistant,再選取索引鍵以檢查其來源位置。使用字串目錄本地化及變化文字

比對目錄中的來源文字與預期編輯內容。如果目錄仍包含 Open item,請先釐清新來源文字為何尚未更新到該項目。若用舊來源文字來審查目標翻譯,原本的問題仍未解決。

當專案包含多個目錄或模組時,請檢查本地化呼叫所用的表格與套件。Apple 說明,可傳入表格名稱來選取目錄,並為主要 App 套件以外的字串指定適當套件。Apple 也建議使用可本地化的 API,讓 Xcode 能找出面向使用者的文字。準備 App 文字以供翻譯

若是手動管理的項目,請直接檢查並維護其來源:Apple 表示,建置同步不會更新或移除手動管理的字串。不要預期單靠重新建置就能更新這類字串。探索字串目錄

使用來源變更決策表比對含義

確認目前的來源文字已出現後,選取每種目標語言並檢查受影響的項目。Xcode 支援依文字篩選及依狀態排序,有助於找出待審查的項目。即使特定變更訊息的狀態仍顯示已翻譯,也要檢查該訊息。探索字串目錄

以下決策輔助表是根據訊息含義比對而整理,並非自動翻譯評估結果。表中的英文標籤是合成範例。它能協助你判斷要請本地化人員檢查哪些內容,而不會假設每次來源編輯都必須改動目標語言文字。

示意來源變更 檢查事項 審查決策
Open item → Open selected items 選取範圍,以及單數或複數含義 檢查翻譯是否仍描述完整動作。
Show details → Hide details 動作方向 檢查翻譯後的動作是否相應改變。
Items → Items: 標點符號與標籤的位置 只有在語境中仍合適時,才保留原文。
Open 維持 Open,但用途改變 標籤現在是否指稱不同動作 即使來源文字相同,也要審查語境。

對每個候選項目,請比對三件事:舊訊息的含義、目前訊息的含義,以及翻譯現在傳達的意思。來源文字有明顯差異,表示這是待審查項目,但單憑這點無法證明目標語言的文字一定要改。

語境變更也應明確檢查。Apple 說明,註解可作為翻譯者指引,但已檢索到的文件並未證實每次註解編輯都會自動使現有翻譯失效。如果英文標籤不變,但含義有所不同,請自行將它列入審查佇列。準備 App 文字以供翻譯

如果訊息包含數量或依裝置而異的變體,請展開這些變體,而不只檢查上層項目。Apple 說明,目錄支援複數及裝置變體。英文的數量範例可能需要 1 item 和 2 items;請審查每種目標語言適用的形式,不要直接套用英文文法。使用字串目錄本地化及變化文字

解決審查問題,同時保留有用的翻譯

使用項目的快顯選單,將有疑慮的翻譯標記為待審查。若現有文字已經確認仍然合適,請選擇 Mark as Reviewed;否則請更新翻譯。Apple 的字串目錄操作說明文件記載了這些審查操作。探索字串目錄

比對變更過的來源時,保留現有文字以供參照。只為了減少歧義而清除翻譯,會移除有用的比對資料。同樣地,不要只因翻譯已過時就刪除項目:先確認 App 是否仍在使用它的索引鍵。

以合成的選取範例來說,交接資料可包含索引鍵 selection.open、Open item 變更為 Open selected items 的說明,以及按鈕會開啟所有已選取項目的解釋。這樣一來,本地化人員就能針對明確的動作與範圍進行評估。

這裡有個實務上的限制:為本工作流程取得的 Apple 文件,並未說明有哪個回溯指令能重建已翻譯項目背後所有漏掉的來源變更。如果無法取得先前的文字,你可以用目前來源文字比對目前翻譯,但無法確定不一致從何時開始。若新舊比對很重要,請使用可取得的較早專案版本或已儲存的來源副本。

在 Mac App 中驗證修正後的訊息

編輯後,請測試實際介面。選擇 Product > Scheme > Edit Scheme,選取 Run,開啟 Options,並在 App Language 中選擇目標語言。關閉對話框,選取 Mac 執行目的地,然後執行 App。Apple 說明了這種以配置為基礎的本地化測試方式。執行 App 時測試本地化

回到最初引發調查的確切控制項。對於 Open selected items,請分別嘗試單一選取項目和多個選取項目。確認標籤在兩種情況下是否都能描述該動作,以及顯示的文字是否符合你編輯的目錄項目。若此時發現不一致,請重新檢查查找索引鍵、表格、套件或適用的變體。

最後,為每種受影響的語言明確記錄處理結果:保留現有文字、已更新翻譯,或仍待審查。如此便能結束對變更訊息及其介面行為的檢查,並以目錄狀態作為決策依據。

來源