iOS实现语言本地化
2015-09-13 22:14
791 查看
简介
iOS实现语言的本地化很简单,这里只是为了简单的记录一下过程。一、本地化storyboard上的字符串
1.创建应用(如项目名为:LocalizationDemo)2.添加本地化文件
3.往Main.storyboard上添加一个
label并设置内容为Setting
这时,我们查看Main.strings(Chinese(Simplified))文件,里面是空。
4.为了让文件自动填充内容,有个小技巧:选择Main.storyboard,然后在右边的 Utilities 中选择 Show the file inspector ,然后在Localization项将Localizable Strings切换到 Interface Builder Storyboard,之后再重新切换回去。
再次查看文件,这时已经有如下内容了
/* Class = "UILabel"; text = "Setting"; ObjectID = "cWa-zv-jKP"; */ "cWa-zv-jKP.text" = "Setting";
5.将Setting修改为设置
/* Class = "UILabel"; text = "Setting"; ObjectID = "cWa-zv-jKP"; */ "cWa-zv-jKP.text" = "设置";
6.完成了,运行程序将默认语言改为中文即可看到设置字样
二、本地化代码中的字符串
熟悉NSLocalizedString的用法:参数一为key,参数二为注释;
在代码中,任何需要本地化的字符串都用
NSLocalizedString包裹起来,如输出
Test字符串:
NSLog(NSLocalizedString("Test", "输出Test字符串"));
导出需要本地化的字符串,有两种方法:
a. 通过
genstrings命令来生成文件:打开终端;用
cd命令进入到项目目录中;执行
genstrings命令
genstrings *.swift(如果使用的语言是Objective-C,则将 .swift 改为 .m 即可)。需要注意的是
genstrings命令不会遍历子文件夹,换句话说,如果swift文件放在多重文件夹当中,那这些文件将不会被访问到,所以最好的方法是使用
find命令先将需要的文件找到,然后再使用
genstrings命令来生成文件。如:
find ./ -name '*.swift' -print0 | xargs -0 genstrings -o ./zh-Hans.lproj/
说明:
-print0和
xargs的作用可以参考
find命令的说明,
-o后面参数指定目标路径
b. 选择Xcode上左边的Navigator选择项目,然后在菜单栏上选择 Editor -> Export For Localization…,然后指定文件目录(暂时指定到桌面吧)。
从桌面路径可以看到生成的文件夹,打开文件夹,里面有个后缀名为
xliff的文件,该文件使用的是 xml 格式。打开文件,我们可以看到所有需要本地化的字符串:
... <body> <trans-unit id="cWa-zv-jKP.text"> <source>Setting</source> <target>Setting</target> <note>Class = "UILabel"; text = "Setting"; ObjectID = "cWa-zv-jKP";</note> </trans-unit> </body> ... <body> <trans-unit id="CFBundleName"> <source>$(PRODUCT_NAME)</source> </trans-unit> <trans-unit id="CFBundleShortVersionString"> <source>1.0</source> </trans-unit> </body> ... <body> <trans-unit id="GOOD"> <source>GOOD</source> <note>输出GOOD字符串</note> </trans-unit> <trans-unit id="Setting"> <source>Setting</source> <note>No comment provided by engineer.</note> </trans-unit> <trans-unit id="Test"> <source>Test</source> <note>测试</note> </trans-unit> </body>
在
source标签下的内容就是要本地化的字符串,
taget标签就是本地化后的字符串,
note标签即是注释。我们发现有些
source下没有
taget标签,我们可以自己加上去,并写上本地化后的字符串,其他
taget标签的内容也修改成我们需要的字符串。
修改后进行保存。然后跟上面同样的步骤,我们选择
import Localization...导入文件。
然后会看到刚才修改的内容和之前文件内容的对比,点击
import即可。
导入成功后,即可看到我们本地化的文件,运行程序,一切顺利:
这就完成了本地化了。
参考文章:
[]http://blog.chinaunix.net/uid-20082146-id-83489.html]
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- iOS开发中实现邮件和短信发送的简单示例
- ios通过按钮点击异步加载图片
- 加载带有手势识别器的XIB文件需注意哪些问题