要對 Mac 應用程式的翻譯進行往返操作,請匯出 Xcode 本地化目錄,保留其複數結構和參數映射,然後匯入並測試返回的套件。本指南使用合成選擇標籤來展示確切要交付和檢查的內容。
任務是針對在 Mac 上使用 Xcode 準備翻譯人員交付物的人員:發送一個計數相依訊息進行翻譯,並完整保留其行為將其帶回。範例標籤為 Selected 3 tiles in 2 groups. 兩個計數可獨立變化,因此交付物必須保留的不僅僅是可閱讀的措辭。
匯出前定義訊息契約
將訊息契約視為一項小型規格:應用程式查詢哪個條目、提供哪些執行階段值、以及哪些值控制語法變化。Apple 文件說明 String.LocalizationValue 支援具有插值的可本地化字串,包含執行階段提供的值。其文件也描述當識別碼應不同於顯示的來源文字時,使用靜態鍵和單獨的預設值。 String.LocalizationValue
針對此範例,請在翻譯請求旁記錄下列契約。這些是合成標籤的說明性需求,而非 Apple 檔案格式。
| 契約元素 | 本範例的需求 |
|---|---|
| 訊息用途 | 摘要目前的選擇 |
| 英文來源 | Selected 3 tiles in 2 groups. 兩個數字均在執行階段提供 |
| 參數 1 | 磚塊計數;控制 tile 的形式 |
| 參數 2 | 群組計數;控制 group 的形式 |
| 數值表示 | 保留 Xcode 為每個參數記錄的類型和格式指定符 |
| 翻譯自由度 | 重新排序句子,同時保留每個參數的含義 |
| 必要行為 | 每個名詞與其自身的計數一致 |
同時記錄專案中的實際目錄、表格和鍵。翻譯期間請勿發明替代鍵。Apple 的準備指南說明可本地化 API 會在建置期間填入目錄,而 table 或 tableName 參數會選取目錄。它也支援說明字串內容的註解。 Preparing your app’s text for translation
一個實用的合成註解為:選擇摘要。參數 1 為選取的磚塊數量。參數 2 為包含那些磚塊的群組數量。兩個計數獨立變化。保持每個計數連結到其對應的名詞。 這讓翻譯人員有足夠資訊區分兩個參數,即使它們共用數值類型。
在目錄中準備獨立的複數變體
從應用程式可本地化來源中的訊息開始,然後建置專案。在字串目錄編輯器中,Control-點擊相關鍵並選擇 Vary by Plural。Apple 文件說明 Xcode 會決定插值的格式指定符,新增語言的複數形式,並最初以現有值填入變體欄位。那些預填值仍需編輯。 Localizing and varying text with a string catalog
對於英文來源,預期渲染結果包含 Selected 1 tile in 1 group.、Selected 3 tiles in 1 group. 和 Selected 1 tile in 2 groups. 單獨基於磚塊計數的選擇無法正確產生每種組合。
Apple 的字串目錄示範支援透過替換來變化多個參數。每個替換包含複數情況,其檢查器會識別參數位置和 C 風格格式指定符。執行階段將選定的替換組合到周圍的訊息中。 Discover String Catalogs
使用該機制處理兩個獨立計數。將必須與計數一致的文字保留在對應的變體內,而不是在周圍句子中留下固定的複數名詞。在編輯器允許的地方給替換有意義的名稱,然後檢查其映射:磚塊替換必須仍使用參數 1,群組替換必須使用參數 2。
請勿要求每個目標本地化都重現英文分支清單。Apple 文件說明 Xcode 會新增語言特定的複數變體。在來源本地化中新增變體也會傳播到翻譯;僅在另一個本地化中新增則僅影響該本地化。匯出前請檢視實際的目標分支。 Localizing and varying text with a string catalog
文字移動時保留參數身分
佔位符在句子中的位置及其參數編號有不同用途。翻譯人員可能需要群組計數出現在磚塊計數之前,而不改變應用程式提供這些值的順序。
Apple 的格式指定符參考文件說明了使用 n$ 的位置標記法。例如,%1$lld 指參數 1 搭配 long long 整數轉換,而 %2$lld 指參數 2 搭配該轉換。%d 表示不同的整數表示法;它不是 %lld 的縮寫拼法。該參考為封存文件,請將其用於這些既定格式規則,配合當前的目錄工作流程。 String Format Specifiers
考慮說明性格式片段 Groups: %2$lld; tiles: %1$lld。當參數 1 等於 3 且參數 2 等於 2 時,其預期輸出為 Groups: 2; tiles: 3。此片段僅示範參數順序;它不實作語法複數選擇,不應取代目錄的替換。
按含義、索引和類型檢視佔位符。僅檢查是否保留兩個百分號會漏掉交換的計數。僅檢查類型也會漏掉交換,因為兩個值皆為整數。相反地,僅為符合某個翻譯而變更應用程式的參數順序,會變更使用該條目之所有其他翻譯的契約。
交付時,請翻譯人員在調整措辭時保留匯出的參數關聯和格式類型。替換的結構性變更需根據契約明確審查。文字順序的變更完全可以是適當的。
匯出翻譯人員可返回的套件
匯出前,啟用專案的 Use Compiler to Extract Swift Strings 建置設定,以便包含 Swift 可本地化字串。在專案導覽器中選取專案,選擇 Product > Export Localizations,選取所需的本地化和目的地,然後匯出。Apple 文件記錄了這些步驟和產生的 .xcloc 套件。 Exporting localizations
兩種目錄副檔名有不同職責。專案的 .xcstrings 檔案保存其字串目錄。匯出的 .xcloc 套件是翻譯人員交付物;其 Localized Contents 資料夾包含 XLIFF,其 Notes 資料夾可攜帶支援文字。請連同契約備註發送套件,而非將訊息簡化為可見句子的兩欄清單。 Exporting localizations
確認翻譯工具支援 XLIFF 中的字串目錄變化。Apple 說明目錄衍生的變化識別碼編碼字串鍵和變化配置,並記錄了該匯出表示法的 Localization Prefers String Catalogs 設定。這些結構必須在返程中保留。 Discover String Catalogs
使用此實用交付清單。它是源自文件記載的套件結構和範例契約的工作流程建議。
- 返回翻譯後的
.xcloc套件,保持其相關資源完整。 - 保留訊息識別碼和變化路徑,除非有記載的刻意結構變更。
- 為目標本地化所需的複數分支提供目標文字。
- 保留參數身分、數值類型和替換映射。
- 識別匯出後收到的任何來源變更,以便匯入前協調。
如果翻譯人員的工具無法保留變化條目,請使用 Xcode 編輯匯出的本地化,或在專案目錄中輸入翻譯。Apple 文件記載了在 Xcode 中編輯 XLIFF 目標和編輯字串目錄;後續匯出會包含目錄變更。單純的純文字交換會將變化結構留待他人重建。 Editing XLIFF and string catalog files
匯入返回並檢視實際差異
保留原始匯出以供比較。當翻譯套件返回時,選取專案並選擇 Product > Import Localizations。選取 Xcode Localization Catalog 資料夾。在匯入介面中,透過 Issues View 檢查警告和錯誤,並透過 File View 檢查變更,然後完成匯入。Apple 指出比較編輯器在左側顯示匯入版本,右側顯示目前專案版本。 Importing localizations
對於目錄來源的字串,Apple 文件說明將翻譯匯回適當的字串目錄。匯入後,重新開啟選擇摘要條目,檢查兩個替換、其參數映射及其目標分支。 Discover String Catalogs
若有異常,使用聚焦診斷序列。若條目缺失,比較其表格和鍵與原始匯出。若複數變體缺失,比較返回的變化結構。若計數出現在錯誤名詞旁,比較參數映射。若僅有一組合讀起來錯誤,在變更應用程式碼前檢查該分支的文字。此序列遵循範例的相依性;並非宣稱 Xcode 會自動偵測每項契約違規。
以不等計數測試以揭露交換的參數
成功匯入確立 Xcode 接受了交付物。範例仍需行為檢查。使用應用程式的測試資料或開發固定裝置渲染下列組合。這些預期句子說明英文來源契約;目標措辭和分支選擇必須遵循目標本地化。
| 磚塊計數 | 群組計數 | 預期英文來源輸出 | 有助揭露的內容 |
|---|---|---|---|
| 1 | 1 | Selected 1 tile in 1 group. |
單數形式 |
| 3 | 1 | Selected 3 tiles in 1 group. |
獨立磚塊變化 |
| 1 | 2 | Selected 1 tile in 2 groups. |
獨立群組變化 |
| 3 | 2 | Selected 3 tiles in 2 groups. |
暴露參數交換的不等值 |
若應用程式可顯示空選擇,新增零計數檢查。也請選擇能演練每個目標本地化所需的每個複數類別的值。上述四列涵蓋英文單複數組合,而非所有可能的目標分支。
要在目標本地化中執行 Mac 應用程式,選擇 Product > Scheme > Edit Scheme,選取 Run,開啟 Options。設定 App Language,視需要設定 App Region,關閉編輯器,選取 Mac 執行目的地,然後執行。Apple 文件記載了這種基於方案的測試工作流程。 Testing localizations when running your app
閱讀渲染的訊息並檢查其在桌面介面中的適配度。若計數仍連結到正確的名詞、每個必要分支行為正確、且返回結構符合預期契約,則此標籤所需的翻譯往返已保留行為。將契約備註與交付物一起保存,以便下次文字變更能對照相同的明確需求進行檢查。
來源
- String.LocalizationValue — Apple
- Preparing your app’s text for translation — Apple
- Localizing and varying text with a string catalog — Apple
- Discover String Catalogs — Apple
- String Format Specifiers — Apple
- Exporting localizations — Apple
- Editing XLIFF and string catalog files — Apple
- Importing localizations — Apple
- Testing localizations when running your app — Apple