由于我们正在使我们的(英语)应用程序本地化,我们将使用NSLocalizedString()调用替换所有内联字符串。由于我们所有的英文字符串都与代码一致,例如NSLocalizedString(消息框中的“OK,@”OK按钮“),有什么理由我们需要英文版的Localizable.strings吗?当我们尝试从英文Localizable.strings中删除字符串时,该程序似乎工作正常只是想仔细检查是否有一些副作用,没有那个。谢谢,亚历克斯
答案 0 :(得分:1)
使用NSLocalizedString()
宏的一个要点是,可以使用genstrings
命令行工具解析您的编程代码,以生成相应的Localizable.strings
文件(请参阅Resource Programming Guide: About the String-Loading Macros和Using the Genstrings Tool to Create Strings Files)。
然后,Localizable.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…";
答案 1 :(得分:0)
不建议使用单词作为键,如果您想更改Ok
以获取其他内容而您还有其他Localizable.strings
,则必须编辑每个单词以更新Ok
键。
答案 2 :(得分:0)
您的翻译人员肯定希望您的Localizable.strings文件可以使用。并希望它是 ALL 字符串。
(确实,系统将回归到密钥,但依赖于这似乎是不好的做法。而且你会发现在Unicode文件中使用正确的标点符号更为可靠,源代码很少。)