【问题标题】:Does iOS Look for Region-Specific .lproj Directory (e.g. en_US.lproj)?iOS 是否查找特定于区域的 .lproj 目录(例如 en_US.lproj)?
【发布时间】:2013-04-08 06:04:13
【问题描述】:

根据官方文档Internationalization Programming Topics

如果您的 Mac 应用具有针对美国、英国、 和澳大利亚用户,捆绑例程将搜索适当的 首先是区域目录(en_US.lproj、en_GB.lproj 或 en_AU.lproj), 然后是 en.lproj 目录。 同一个应用程序在 iPhone 只会在 en.lproj 目录中查找。

但我尝试将我的 Localizable.strings 放在 en_US.lproj 目录中,不是 en.lproj,我仍然可以使用NSLocalizedString() 函数找到英文字符串。

有什么问题?

【问题讨论】:

    标签: ios cocoa-touch localization localizable.strings


    【解决方案1】:

    我不确定,但这是我有根据的猜测。

    首先要认识到 OS X 和 iOS 共享大量代码。您实际上可以找到很多官方 OS X 的功能 - 仅在 iOS 上也可以使用。

    这是我在手机上观察到的:

    如果我只有

    - en_US.lproj
        - Localizable.strings
    

    然后,它会从该文件中读取值,这与您找到的文档所说的相矛盾(如您所述)。

    但是,如果我有:

    - en_US.lproj
        - Localizable.strings
    - en.lproj
        - Localizable.strings
    

    那么,它将采用 en.lproj 的价值,有点尊重文档的精神。

    现在,当我以图形方式使用 Xcode 时,它​​只会让我为en-US 选择本地化,这与en_US(美国地区)相同。所以,我猜你(和我一样)离开了 Xcode,手动添加了 en_US.lproj 目录,然后将其添加到你的 Xcode 项目中。

    也许 Apple 的想法是,虽然 iOS 仍然可以识别 en_US.lproj,但由于他们已将 Xcode 配置为不允许您直接创建本地化,应用程序不会在那里结束?因此,您已经(某种程度)侵入了该功能。

    还有一点需要注意:如果您像我一样手动创建 .lproj 文件夹,则必须小心,当您在 Xcode 之外更改它们时,它们实际上已经消失了。此外,您可能必须卸载您的应用程序以清除您以这种方式添加(和删除)的旧 .lproj 目录。所以,这是看待奇怪行为的另一种方式。

    长话短说,就文档本身而言,我不会向 App Store 提交具有这种本地化类型的应用程序。将来它可能会被拒绝或中断(找不到字符串值),因为它在 iOS 上不受官方支持。也就是说,如果这个功能无限期地继续工作,我也不会感到惊讶。

    【讨论】:

    • 你是对的,我手动创建了en_US.lproj目录,然后添加到Xcode项目中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多