2017-02-24 57 views
4

這裏是我們的本地化工作流程:在Interface BuilderXcode的本地化:請翻譯同步與故事板

  1. 建立的東西
  2. 本地化導出項目
  3. 翻譯着眼於XLIFF文件和新的字符串適用的翻譯(只有新翻譯的字符串)
  4. 導入XLIFF到項目

這工作˚F用於建立新的東西。但是,如果開發者更改了已經翻譯的故事板中的標籤中的文本,他將不得不記住刪除該標籤的翻譯,因此翻譯者將該字符串看作未翻譯的。如果開發人員忘記刪除該翻譯,翻譯將是錯誤的,這是一個很難找到的錯誤。

當代碼被定位是這樣的:

var testString = NSLocalizedString("Some text in english", comment: "just a test string") 

的串("Some text in english")限定在XLIFF-文件的密鑰,這意味着,如果該字符串被改變了,那麼導出的XLIFF文件將自動擁有需要翻譯的新字符串。

我試圖解決與Xcode的「出口本地化...」功能,與genstrings的問題,並與BartyCrounch,但所有的方法似乎使用的UI元素的Object ID作爲.strings-文件的關鍵。這意味着它不會對實際字符串中的更改做出反應。

到目前爲止,我發現的唯一解決方案是通過IBOutlet在代碼中設置每個需要翻譯的字符串,但這是一個相當全面的解決方案。

您是否知道解決此問題的任何工具或方法?

+1

我希望我對這個問題的解決方案可以幫助您。檢查出來[iOS本地化:動態地本地化視圖,而不會與故事板/筆尖字符串文件混淆](http://stackoverflow.com/questions/42881255/ios-localization-localize-views-dynamically-without-messing-with-the -storyboard) – MNassar

回答

1

我嘗試了你所說的並理解你的意思。我認爲解決方案很簡單。

首先,我在故事板中添加了一個新按鈕,將其命名爲「測試」。然後我用中文翻譯了它,導入了翻譯。將「測試」更改爲「GoGo」並再次輸出翻譯。該XLIFF部分從

<trans-unit id="jso-qF-Z1t.title"> 
     <source>Test</source> 
     <target>測試</target> 
     <note>Class = "NSButtonCell"; title = "Test"; ObjectID = "jso-qF-Z1t";</note> 
</trans-unit> 

改爲

<trans-unit id="jso-qF-Z1t.title"> 
     <source>GoGo</source> 
     <target>測試</target> 
     <note>Class = "NSButtonCell"; title = "GoGo"; ObjectID = "jso-qF-Z1t";</note> 
</trans-unit> 

下一步

我不知道是否有一個現成的工具,這個來做。但是你可以使用Git,因爲它總能找到差異。

步驟:

  1. 添加您的翻譯文件夾與git
  2. 提交當前的文件
  3. 出口從Xcode的新的翻譯
  4. 看看用git

正如你所看到的diff在圖片中,git已經顯示了什麼變化,那就是你應該再次翻譯的地方。

git with translations