2009-05-22 59 views
13

我需要localiza在英語開發應用程序&西班牙語。如何簡化iPhone本地化?

儘管我遵循蘋果的使用方式NSLocalizedString &創建了兩個筆尖,我已經失去了需要獲得本地化的新字符串的軌跡,並且驚奇地發現我需要用西班牙語重做筆尖時我改變主人。

(就像這個http://www.gigliwood.com/weblog/Cocoa/A_Great_Need_for_Be.html

我不知道是否有更好的/替代/更自動化的方式。

我知道使用gettext & poedit,並想知道是否可以使用類似的東西。

或者如果存在一些腳本或工具。

回答

17

這裏確實不是一個簡單的解決方法。 NIB需要爲每種語言單獨佈局。在某種程度上,這改善了整體用戶界面,因爲不同的語言實際上通常需要不同的佈局來尋求最佳效果。俄羅斯和德國在屏幕房地產上比英語更「大」的語言。中文通常會更小,而且中文字體的佈局看起來更好。阿拉伯語和希伯來語是從右到左,可能需要根本改變佈局。自動佈局很容易,但是通過在所有語言中使用不同級別的醜陋來實現這一點。當給予開發者容易的選擇和開發者的難看與醜陋之間的選擇與美麗之間的選擇時,蘋果幾乎總是選擇後者。儘管如此,蘋果仍然沒有盡其所能。

因此,這裏的第一課是保持您的NIBs 簡單。這在iPhone上比在Mac上更容易,因爲iPhone沒有綁定,而iPhone NIB通常更簡單。你也可以使用文本注入的非常少量的文字(如標題)的NIB。 「文本注入」是一種奇特的說法,「在標籤上使用插座並在加載視圖時將其設置爲本地化文本」。

ibtool能夠將字符串拉出NIB並將其推回,這可能會有所幫助。我已經使用了iLocalize,這對於使用合同本地化工具很有幫助,但對於您所談論的問題並沒有什麼幫助。

我試圖擺脫NIB,只是使用代碼,認爲它會讓事情變得更容易,但它確實沒有。在NIB中佈置每種語言要比提出在所有語言中看起來不錯的佈局邏輯要容易(見第一段)。文本注入僅在少數幾個地方有用。如果你可以將你的NIB分成需要本地化和不需要的NIB,這可能會有所幫助。在iPhone上,我發現只有不到一半的NIB實際上有文本或本地化的圖像。

當然,您應該閱讀Internationalization Programming Topics,但我很抱歉地說,您的問題確實沒有簡單的答案。航運產品本地化爲19種語言,我感到你的痛苦。

2

有時需要爲每種語言佈置NiB,但大多數時候不必爲每種語言重新佈局NiB。

如果使用ibtool從筆尖生成字符串

ibtool --generate弦文件

您可以將它們導入每種語言的新的筆尖。

ibtool --import弦文件

這些都是命令行工具,讓他們可以編寫腳本。看看'man ibtool'

2

我只是在我的筆尖文件(UILabel,UITextField,UITextView等)中爲所有文本用戶界面創建IBOutlets,並將其文本/ placeHolder屬性以編程方式分配給所需的NSLocalizaedString 。

鑑於我已經提供了不同langs中特定字符串的翻譯,當iPhone語言環境更改時,文本的翻譯版本將出現在nib文件中。

希望別人覺得這有用