2011-10-10 24 views
0

由於我們正在使我們的(英文)應用程序能夠本地化,所以我們用NSLocalizedString()調用替換了所有內聯字符串。由於我們所有的英文字符串都與代碼一致,例如NSLocalizedString(@「OK,@」消息框中的「OK按鈕」),是否有任何理由需要Localizable.strings的英文版?當我們嘗試從英文Localizable.strings中刪除字符串時,程序似乎正常工作。只是想仔細檢查是否有一些副作用,沒有這一點。謝謝,亞歷克斯是應用程序的根語言所需的Localizable.strings嗎?

回答

1

一個使用NSLocalizedString()宏的要點的是,使你的程序代碼可以用genstrings命令行工具被解析以生成相應的Localizable.strings文件(S)(參見Resource Programming Guide: About the String-Loading MacrosUsing the Genstrings Tool to Create Strings Files)。

Localizable.stringsLocalizable.strings文件然後作爲您的翻譯的起點,用於翻譯到另一種語言。如果沒有該文件,譯員將基本上需要訪問您的源代碼,以便查看您想要使用的所有字符串(哪種類型的目的是失敗)。

是的,你的英語版本,現在工作得很好,因爲如果字符串的本地化版本,您嘗試在代碼來獲得 - 例如,NSLocalizedString(@"OK", @"") - 不能在.strings文件中找到,它只是使用了@"OK"串你通過了。

爲什麼你應該保持英文Localizable.strings的另一個原因是你應該儘量避免在你的代碼中使用高位ASCII字符,但應該在你的實際用戶中使用全部可用字符接口。例如,您可能不想在代碼中放入以下字符,但希望在用戶界面中使用它們:

...(水平省略號)(U + 2026) 「(左雙引號)( U + 201C) 」(右雙引號)(U + 201D) '(左單引號)(U + 2018) '(右單引號)(U + 2019)的代碼

所以,你會這樣做:

NSLocalizedString(@"Add Bookmark...", @"") 

然後在你的.strings文件(這是UTF16,所以這很好):

"Add Bookmark..." = "Add Bookmark…"; 
+0

對,我們面臨的關鍵問題是是否有任何意見讓應用程序包中的英文Localizable.strings獲得發貨。由於英文字符串都在代碼中,所以似乎很少有不必要的千字節。誠然,沒有什麼大不了的,但很好奇。 – Alex

0

不建議使用單詞作爲鍵,如果你想改變Ok的東西,你有任何其他Localizable.strings,你將不得不修改它們的每一個更新Ok關鍵。

+0

我不確定我關注。 Localizable.strings是否應該是源代碼中的一個重要版本?它似乎並不在我們這邊。 – Alex

0

當然你的翻譯會想你的Localizable.strings文件,從工作,並且希望它是ALL字符串。 (這確實是系統會回到關鍵,但依賴於這個看起來是不好的做法,而且你會發現在Unicode文件中使用適當的標點符號更加可靠,而源代碼很少。 )

+0

是的,我們需要給本地化人員英文Localizable.strings。只是想知道它是否需要成爲我們給蘋果的捆綁包的一部分。 – Alex

+0

理論上它沒有。在實踐中,所需要的只是一個非ASCII字符來攪亂你。不包括它會節省什麼? –