您的位置:首页 > 移动开发 > IOS开发

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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 本地化