Display Name(App应用名称)…
- 首先设置APP支持的语言(setting support language)
你可以在完成base版本之后再setting support language,那样你会遇见如下的界面供你一键设置多文件的Localization, 你也可以deselect the resource files you don’t want to localize for this language.
- New file 选择 iOS ,然后 resource 选择string file,命名为:InfoPlist.strings
- 点击显示Utility, 点击Localization,就会将string file 变成两个文件
- 选择你需要支持的语言,string file会出现对应的分支
- 在下图中InfoPlist.strings中添加 “CFBundleDisplayName” = “应用名称”;此时(Base)中会出现一样的描述。
- 在InfoPlist.strings(Chinese (traditional))中添加 “CFBundleDisplayName” = “應用名稱”
- 运行后,App显示名称会跟随系统语言
.xib && .storyboard
- 选择单个(建议先完成基本控件的添加).xib 或者 .storyboard,点击Localization,选择语言
- .xib出现对应的strings文件,显示已有的控件显示string:
取出本人demo的内容以供参考
Main.strings(English):
/* Class = “UILabel”; text = “english”; ObjectID = “6mZ-rE-NhT”; */
“6mZ-rE-NhT.text” = “english”;Main.strings(chinese(traditional)):
/* Class = “UILabel”; text = “english”; ObjectID = “6mZ-rE-NhT”; */
“6mZ-rE-NhT.text” = “繁体字”;Main.strings(Chinese(simplified)):
/* Class = “UILabel”; text = “english”; ObjectID = “6mZ-rE-NhT”; */
“6mZ-rE-NhT.text” = “简体中文”;
- Xcode采取的格式是: “控件.text” = “内容”。只需要在不同语言的strings中进行修改就可以了。
目前发现不好的地方就是:如果你已经完成了国际化,需要添加新的控件,那么并不会直接帮你生成(这就有点尴尬了。。。)格式如下:
/* Class = “UILabel”; text = “english”; ObjectID = “6mZ-rE-NhT”; */
“6mZ-rE-NhT.text” = “english”;
但是你可以手动添加(copy)一份对应的ObjectID,手动添加国际化的语言。
Images
- 目前发现图片的国际化有两种方法
- 第一种:将图片交给Assets.xcassets管理,这种推荐使用ImageName管理来进行本地化;Manager可以通过系统名称将传递进来的本地图片名称转化成对应语言环境下的图片名称。(当然你也可以hook掉系统的方法,自己重实现ImageNamed:方法)
- 第二种使用于少量的图片,可以直接拖进文件夹管理, 将需要的图片添加进来之后, 点击Localizations,然后选择对应语言环境的图片, 然后就会生成如下的
- 你会发现两张图片一样, 那么请右击需要替换的图片进入show in finder, 将图片替换成自己需要的图片就可以了。
App内部大量文字的国际化(此处只以繁简转化为例)
- 可以使用第三方转化库,将文字转换成对应字体,通过全局单例进行字体繁简控制,使用通知全局替换所有文字的样式即可。如果你的App需要支持的是中英或中法等形式,额那就自求多福吧。。。。
- 如果你有更好的方法,请在评论区X*&^%$#
本文部分图片取自苹果开发文档,仅用于非商业用途的技术交流
Apple Develop : Internationalization and Localization Guide
https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/Introduction/Introduction.html#//apple_ref/doc/uid/10000171i-CH1-SW1
本人会陆续将平时整理的笔记发布在简书,敬请收藏哦!
一个自称小兔崽子的开发者 2016.09.21