2009-02-28 59 views
7

在Apple Docs中,他們說Nib通過將筆尖翻譯成多種語言來實現國際化。我現在正在考慮一個更糟但實際的情況:您已經創建了一個巨大的用戶界面。然後你把它翻譯成25種語言。所以你得到25個不同的尼布。您還可以在樣式和界定UI方面獲得巨大的冗餘:25倍相同的東西。相同的綁定,相同的一切。只是文字是不同的。用筆尖國際化。這真的是個好主意嗎?

所以,我真的認爲這是一個非常糟糕的做法。相反,我寧願只鏈接資源包中的所有文本或類似的東西。只是一個包含文本字符串的文件,它在運行時從相應的語言資源鏈接。然後,你只有在文本中連接「麻煩」,真的沒有什麼好玩的。但是,你可以在你的用戶界面上做一些改變,而不必一遍又一遍地做同樣的步驟。每個筆尖都有一個新的綁定。那太可怕了!

現在,請告訴我,我弄錯了。蘋果公司並不認爲我們做了一些如此瘋狂的事情?

回答

9

本地化情況並不理想。儘管Cocoa UI元素在尺寸設置(ausosizing flags)方面支持一些動態的靈活性,但要將它們排列在視圖中非常困難,以便它們可以容納任何大小的文本。

正如Heng-Cheong指出的,這通常意味着需要對每個本地化進行一些佈局調整。 Apple支持稱爲「ibtool」的工具,稱爲增量本地化,與您的開發人員工具捆綁在一起。這個過程遠非直觀,似乎有一些微妙的錯誤,但它有助於使該過程比單獨維護25個不同的筆尖更容易。該過程基本上涉及將您對主要筆尖所做的更改映射到其他本地化筆尖上。蘋果詳細描述了過程:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

爲了避免這種痛苦的過程,一些人採取不同的方法。如果您在視圖佈局上妥協,則可以實現每個UI元素都容納最大的本地化字符串的情況。使用文本字段的對齊功能等,可以安排可接受的佈局,儘管用最大的字符串進行本地化所需的額外空間常常會導致字符串最短的語言佈局不理想。如果採取這種方法,則需要設計自己的筆尖,以便控制器類在運行時用正確的本地化字符串填充筆尖的UI元素。最後,一些開發人員將自己的重新佈局應用於筆尖中的元素,並根據已設置的字符串大小對其進行優化。這將是上述策略的改進,其中使用單個筆尖並在運行時操縱以達到期望的效果。

5

有時,本地化涉及的不僅僅是替換文本,還包括佈局的變化。例如,一種語言環境/語言中的字符串可能比另一種語言環境/語言中的字符串長得多,從而強制更改佈局。從右到左的語言往往意味着佈局也會發生一些變化。

+1

我第二個這個。如果您計劃支持從右向左的語言,簡單的字符串替換幾乎是不可能的。 – sbooth 2009-02-28 16:06:07

5

基於前面的兩個答案,有一個名爲iLocalize的工具,目的是使該工藝比ibtool更容易(它比ibtool更早)。我從來沒有用過它,但我的朋友Evan在Adium和Growl上都使用它,並且很喜歡它。

相關問題