2014-02-17 101 views
1

我剛開始致力於本地化我的iOS應用程序,現在我遇到了一些希望有人可以幫我解決的問題。在iOS中本地化動態文本字符串

我生成我的字符串文件的英文和法文文本使用genstrings和它的工作正常我的應用程序中的所有靜態文本。但是,對於動態字符串,genstrings不會在我的字符串文件中創建一個鍵,因爲Im在NSLocalizedString()宏中使用了一個變量作爲字符串。它給我錯誤,說所說的字符串不是一個文字字符串。這是有道理的。現在我實際上使用了動態數據的分配,並且一些來自分析和核心數據的值將在運行時在我的應用程序中使用。

請指導我在哪裏我錯了,我知道我將不得不創建鍵字符串的所有可能的組合,我會在我的字符串文件中收到。根據我收到的文本,我將不得不在我的代碼中爲每個字符串添加檢查?如果我有20個來自解析標籤的字符串組合,我將對該標籤進行20次檢查?有沒有更簡單的方法來解決這個問題

回答

3

NSLocalizedString應與常量「標識符」(文字)一起使用。這與genstrings綁定並允許它生成.strings文件。優選地,當使用NSLocalizedString來描述上下文+參數+順序時,您應該設置註釋,以便翻譯員知道該怎麼做。

現在,.strings文件應該更新爲適當的文本和格式變量(以適合該語言的順序)。

在任何時候都不應該在代碼中指定格式。你不能保證在每種不同語言的格式參數周圍會有什麼和多少個單詞。

關於該主題的有趣討論在objc.io

+0

感謝您的文檔。這真的很有幫助!我認爲沒有捷徑可以讓本地化工作。我必須爲每個可能出現的字符串創建密鑰,並動態地切換我需要的密鑰。 感謝您的幫助! –