美文网首页iOS开发超神学院
Xcode7 本地化的一些处理方式

Xcode7 本地化的一些处理方式

作者: ae3c5a9524f5 | 来源:发表于2015-10-10 11:06 被阅读7547次

    最近为了使我的一个iOS Demo中系统预设控件显示的语言实现本地化,我便像往常一样去配置Localizations,然而却发现这个过程并不像往常那么顺利……

    过去,我是这样添加的:
    PROJECT > Info > LocalizationsLanguage列表中添加Chinese,如下图:

    然而这次我却发现弹出的Resource File对话框中空空如也,如下图:

    于是,问题应运而生了:为什么过去的本地化方式不好用了?而这些Resource File又出了什么事??翻了翻文档,不过没看太懂,推测应该是我的Project本地没有这些语言文件,所以加不进去。

    Language IDs identify a language, dialect, or script and are used to name language-specific resource folders stored in the app bundle. Locale IDs identify a set of regional conventions and are used in APIs—such as the NSLocale, NSDateFormatter, NSNumberFormatter, and NSCalendar classes—where region information is needed to format data. OS X and iOS use standard language ID and locale ID formats that consist of language and region designators. For example, using a language combined with a region designator, a language ID can distinguish between different languages and regional dialects.

    既然Xcode项目设置的图形界面不让改,那就去Info.plist看看:
    于是发现了这货:

    “我之前明明可以添加好几种语言的啊!”(摔)

    稍安勿躁,咱们来看看这个键是干嘛的:

    CFBundleDevelopmentRegion

    CFBundleDevelopmentRegion (String - iOS, OS X) specifies the default language and region for the bundle, as a language ID. For example, English for the United Kingdom has the language ID en-UK. The system uses this value if it cannot locate a resource for the user’s preferred language.

    该键为Bundle提供一个默认的语言和地区,当App的本地化列表中没有当前手机系统语言而系统又定位不到用户的首选语言顺序时将采用该语言。关于这个首选语言顺序(Preferred Language)见下图:

    既然过去动刀的是Localizations,那么就看看Info.plist中有没有这个东西:

    好了,既然都这么明显了,把想要适配的地区都添加进去就OK了!

    最后删删改改试了试,发现如果只设置Localizations仍然符合需求。而且Info.plist默认给出的这个键Localization native development region以及Localizations都不是必须设置的项,如果他们都不被声明,你的iOS App仍然只支持英文。

    结论

    如果你的App需要支持多国语言,那么Localization native development region以及Localizations的设置很有必要。否则保证两者任意一条键中有中文即可。

    至于国际化和本地化的一些更高阶用法,仍需后续补充。

    参考:《Internationalization and Localization Guide》

    --Xcode Version 7.0.1 (7A1001)

    相关文章

      网友评论

      • 破晓_银千特:我去我找了一天解决方案,按你说的成功了!
      • 我叫阿水:一直以来有个问题,比方说xib或者sb里面某个Label显示固定的文字,但是项目又是多语言的,我一直的做法都是拉出属性,然后代码NSLocalizedString设置,觉得这样太笨了。。。
        然后发现在user defined runtime attribute那里有个Localized String选项,但是却怎么也无法设置让它自动显示对应语言环境的字。。。有办法吗?
      • 老王技术栈:好贴,设置成功。果然还是直接改info.plist很强大啊。
      • 微光星芒:多谢按照教程,成功
      • 新地球说着一口陌生腔调:为什么我加了还老是显示英文
        盲神:我的也是显示 英文啊 没有别的呀 你们解决了吗?>'
        程小曦:@新地球说着一口陌生腔调 我改了也没有用,你知道解决方法了吗?

      本文标题:Xcode7 本地化的一些处理方式

      本文链接:https://www.haomeiwen.com/subject/qswncttx.html