2013-10-17 19 views
1

ibtool是從XIB文件中提取字符串的工具。示例命令:從XIB文件中提取文本進行人類可讀的翻譯

find . -name \*.xib | xargs -t -I '{}' ibtool --generate-strings-file '{}'.strings.txt '{}' 

但ibtool生成的輸出對於'normal'(讀取:非開發人員)的人是不可讀的。

實施例:

/* Class = "IBUILabel"; text = "Regards:"; ObjectID = "201"; */ 
"201.text" = "Regards:"; 

沒有與它幾個問題(從翻譯者的角度看);

  1. 此格式與Localizable.strings預期的格式不同。
  2. 它混淆了哪些文本要翻譯:a)在評論行中,b)一個在未註釋行中,c)或兩者都可能
  3. 它只是很混亂。

我需要XIB字符串Localizable.strings格式(從NSLocalizableString宏提取字符串提取使用genstrings

"key"="to translate"; 

它有沒有辦法讓ibtool輸出文本這樣

+1

你說得對,生成的格式是一場噩夢。認爲我們被卡住了,因爲這是它在內部匹配的。我發現一個殺手是輸出的順序是由(隨機)鍵字母排序的 - 它與字符串出現在界面中的位置沒有任何對應關係,因此很難遵循。除非我遺漏了一些東西,ibtool似乎無法將新字符串附加到手動重構和註釋的文件(這可能會有所幫助)。擁有通用應用程序意味着發送兩個基本上包含相同字符串的同樣不可讀的文件。 –

+0

@RobGlassey我發佈了下面的工作腳本。 – Lukasz

回答

0

我寫我自己腳本在bash中,它執行以下操作:

  1. 提取所有xib文件中的所有字符串目錄
  2. 將其轉換爲.strings格式(預計爲NSLocalizableString宏)。 "text to translate"="text to translate";它可以被你的翻譯器直接使用。只有右側,需要編輯=後面的引號。
  3. 刪除重複(我同意 - 有時它是不是最好的主意,因爲翻譯可以根據上下文不同)
  4. 刪除評論(只保留了果汁)
  5. 按字母順序排序(可選)
  6. 中保存結果到1輸出文件(全部合併並準備好進行翻譯)

腳本並不完美,但工作得很好。

它有一個時間過長,過去在這裏(90線),所以這裏是直接鏈接GitHub的:

https://github.com/lukaszmargielewski/extract-strings-from-xib-files/blob/master/extract-strings-from-xib-files.sh

+0

有趣。我採取了不同的方法,這涉及到更多手動工作的設置和更新(有效地創建「主」)。字符串文件使用我們自己的鍵,然後映射到iPhone/iPad的IB鍵)。這給譯者一個可讀的文件,如果他們是相同的iPhone/iPad字符串不重複,並且使用正確的IB密鑰爲每種語言生成可讀的.strings文件 - 儘管保留我們的訂購和評論。這有點複雜,我還沒有完成,但我相信一旦完成初始設置,它就可以維護。讓我們看看它是否有效。 –