【问题标题】:Is Localizable.strings required for the root language of an app?应用程序的根语言是否需要 Localizable.strings?
【发布时间】:2011-10-10 20:31:01
【问题描述】:

当我们使我们的(英语)应用程序本地化时,我们将所有内联字符串替换为 NSLocalizedString() 调用。由于我们所有的英文字符串都与代码一致,例如NSLocalizedString(@"OK, @"OK button in a message box"), 有什么理由需要英文版的 Localizable.strings . 只是想仔细检查一下是否有副作用。谢谢,亚历克斯

【问题讨论】:

    标签: iphone localization


    【解决方案1】:

    使用NSLocalizedString() 宏的要点之一是可以使用genstrings 命令行工具解析您的编程代码以生成相应的Localizable.strings 文件(请参阅Resource Programming Guide: About the String-Loading MacrosUsing 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…";
    

    【讨论】:

    • 对,对我们来说关键问题是在交付的应用程序包中包含英文 Localizable.strings 是否有任何意义。由于英文字符串都在代码中,它似乎是一些不必要的千字节。诚然,没什么大不了的,但很好奇。
    【解决方案2】:

    不建议将单词用作键,如果您想将 Ok 更改为其他内容并且您有任何其他 Localizable.strings,则必须编辑它们中的每一个以更新 Okkey .

    【讨论】:

    • 我不确定我是否遵循。 Localizable.strings 是否应该是源代码中的重复数据版本?它似乎不在我们这边。
    【解决方案3】:

    您的翻译人员肯定会希望您的 Localizable.strings 文件能够使用。并希望它是 ALL 字符串。

    (系统确实会回退到键,但依赖它似乎是不好的做法。你会发现在 Unicode 文件中使用正确的标点符号更可靠,而源代码很少使用。)

    【讨论】:

    • 是的,我们需要为本地化人员提供英文 Localizable.strings。只是想知道它是否需要成为我们提供给 Apple 的捆绑包的一部分。
    • 理论上不会。在实践中,只需要一个非 ASCII 字符就可以搞砸了。不包含它会节省什么?
    猜你喜欢
    • 2021-08-23
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2011-01-28
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多