我们可能需要加载使用的负载笔尖
[NSBundle -pathForResource:ofType:inDirectory:forLocalization:]
我认为这是有可能的结果的笔尖,但所有我能找到的方法只有所需的名称不会导致路径信息。
我们正在探索一种通过一个代码库提供fr-Fr和fr-CA的方法。我们的客户想要一个fr-CA翻译,我们害怕我们可能会有另一个客户想要fr-Fr翻译。我想我们可以根据选定的语言来修正笔尖。
谢谢
我们可能需要加载使用的负载笔尖
[NSBundle -pathForResource:ofType:inDirectory:forLocalization:]
我认为这是有可能的结果的笔尖,但所有我能找到的方法只有所需的名称不会导致路径信息。
我们正在探索一种通过一个代码库提供fr-Fr和fr-CA的方法。我们的客户想要一个fr-CA翻译,我们害怕我们可能会有另一个客户想要fr-Fr翻译。我想我们可以根据选定的语言来修正笔尖。
谢谢
路径查找考虑到用户的区域设置首选项。如果您提供了正确的本地化目录(.lproj
),则应该由系统加载正确的笔尖。
的方法首先查找指定包的非本地化资源目录匹配的资源文件。 (在Mac OS X中,此目录通常称为资源,但在iOS中,它是主包目录。)如果未找到匹配的资源文件,它将查找任何可用的语言特定“.lproj”的顶级目录。 (特定于语言的目录的搜索顺序与用户的首选项相对应。)它不通过其他任何位置的子目录进行递归。有关更多详情,请参阅国际化编程主题。
不幸的是,苹果的文档是自相矛盾和不完整的。
重要:如果你看一下“国际化编程主题”中的“语言和区域设置名称”,你会“语言和区域设置ID”这个宝石下找到在iOS中,捆绑接口不在查找本地化资源时考虑方言或脚本信息;只考虑语言指示符代码。因此,如果您的项目包含具有语言和区域指示符的特定于语言的项目目录,则会忽略这些目录。 Mac OS X中的软件包接口在语言特定的项目目录中支持区域指示符。
这不完全正确。如果你看看苹果自己的应用程序,你会看到iOS确实支持某些区域名称,但只有Apple关心的那些。例如见.LPROJ目录列表在最近的移动Safari浏览器:
$ ls -d *.lproj
Dutch.lproj/ el.lproj/ pt_PT.lproj/
English.lproj/ en_GB.lproj/ ro.lproj/
French.lproj/ fi.lproj/ ru.lproj/
German.lproj/ he.lproj/ sk.lproj/
Italian.lproj/ hr.lproj/ sv.lproj/
Japanese.lproj/ hu.lproj/ th.lproj/
Spanish.lproj/ id.lproj/ tr.lproj/
ar.lproj/ ko.lproj/ uk.lproj/
ca.lproj/ no.lproj/ vi.lproj/
cs.lproj/ pl.lproj/ zh_CN.lproj/
da.lproj/ pt.lproj/ zh_TW.lproj/
注意,两名中国区,一个英式英语区和葡萄牙葡萄牙地区的支持。但是这些都不能解决fr_CA
与fr_FR
的问题。
为此,我们再来看看MobileSafari。它必须执行自己的智能查找,因为它有更多的更精细的区别StaticBookmarks-xx_YY.plist
文件。
所以,这就是解决方案:使用仍然可用的区域设置功能,并相应地进行自己的查找。
我不明白这个问题。 由于Xcode支持,您可以完美拥有法国和加拿大(法语)两种不同的NIB。
只需添加新的定位为您的文件(S):
然后用视图控制器加载NIB,与initWithNibName
方法。根据设备的语言设置,将使用正确的一个。
感谢您的回复。但是ios会查看有区域的语言目录。来自appl文档重要提示:在iOS中,捆绑接口在查找本地化资源时不会考虑方言或脚本信息;只考虑语言指示符代码。因此,如果您的项目包含具有语言和区域指示符的特定于语言的项目目录,则会忽略这些目录。 Mac OS X中的软件包接口在语言特定的项目目录中支持区域指示符。 –
上面的评论应该读取ios不会看看有区域指示符的语言目录。 –
感谢您的响应,但苹果文档声明ios将忽略包含区域指示符的语言目录。这就是我所看到的,如果我添加一个语言目录fr-CA并将我的手机设置为法语我不会得到法语笔尖。 –
请提供相关文档的链接,或引用足够的独特逐字文本,以便我可以自行搜索文档。 –
感谢Jeremy的详细回复。 –