我刚刚开始本地化我的iOS应用程序,现在我遇到了一些我希望有人可以帮助我的问题。
我使用genstrings为英语和法语文本生成了我的字符串文件,并且它适用于我的应用程序中的所有静态文本。但是,对于动态字符串,genstrings不会在我的字符串文件中创建一个键,因为我在NSLocalizedString()宏中使用了一个变量作为字符串。它给了我错误,表示字符串不是文字字符串。这是有道理的。现在我实际上使用了大量动态数据,解析和核心数据中的一些值将在运行时在我的应用程序中使用。
请指导我错在哪里,我知道我必须为我将在字符串文件中收到的所有字符串组合创建密钥。根据我收到的文本,我将在每个字符串的代码中添加检查?如果我有20个字符串组合来自解析标签,我将对该标签进行20次检查?是否有更简单的方法。
答案 0 :(得分:3)
NSLocalizedString
应与常量'标识符'(文字)一起使用。这与genstrings
联系在一起,并允许它生成.strings文件。最好在使用NSLocalizedString
描述上下文+参数+顺序时设置注释,以便翻译人员知道该怎么做。
现在,.strings文件应该使用适当的文本和格式变量(以适当的语言顺序)更新。
在任何时候都不应该在代码中指定格式。您不能保证每种不同语言的格式参数周围有哪些单词和多少单词。
关于这个主题的有趣讨论是在objc.io。