iOS是否会查找特定于区域的.lproj目录(例如en_US.lproj)?

时间:2013-04-06 08:13:45

标签: ios cocoa-touch localization localizable.strings

根据官方文件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()函数找到英文字符串。

有什么问题?

1 个答案:

答案 0 :(得分:2)

我不确定,但这是我受过教育的猜测。

首先要认识到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上没有正式支持它。也就是说,如果这个功能无限期地继续工作,我也不会感到惊讶。