《IOS开发系列教程》让你的程序支持多语言
让你的系统支持多语言,根据用户在系统中设置的语言来决定你的程序所显示的语言。
设置系统语言:
设置(setting)->通用(general)->地区和语言(region and language)
要让你的程序支持多语言,有2部分的字符串需要翻译
一部分是界面中 storyboard和xib文件
另外一部分是在程序代码中使用的字符串(当然是那部分最后呈现给用户的)
翻译第一部分
在最左边的工程控制面板中选中工程的名字,也就是最上面的那一项,然后在工作区的可以看到
工程的属性 (project)
或者
目标平台的属性(target)
默认显示的是第二个,如果想查看工程的属性,那么
点击工作区的最左上角的上下箭头,然后选择 project
我们这里需要配置就是工程的属性,因此我们选择project
选择之后,看到界面显示出来是2个tab页面,一个是info,另外一个是building settings
选择info的tab页面,因为这个是默认显示的,所以不用做什么,在这个tab页面最下面可以看到Localizations,这个部分默认只有英语,
English-Developement Language
我们点击加号,选择
Chinese Simplified(zh-hans)
来添加中文的支持。
接下来会填出对话框问你那些资源文件需要添加目标语言的支持,这里列出的文件一般是 xib和storyboard,默认都是勾选的,因为一般界面部分都是需要根据语言显示不同的内容的,因此2个都选择。
点击完成之后
会在main.storyboard的右侧多一个箭头,点击这个箭头,就会展开,你会发现多了
Main.strings(Chinese(Simplified))
点击这个文件,右侧会显示这个文件的内容,其实就是一些字符串,这些字符串都是代表界面的字符串,选择你要翻译的部分,将英文的翻译成中文。
同时你会发现在工程目录下面多了2个文件夹 en.lproj和 zh-Hans.lproj,里面就是对应的字符串的文件了。在那里做翻译也是一样的效果。
翻译第二部分
这部分是你在代码用到的字符串,但是需要显示给用户。
IOS提供了一个宏
NSLocalizedString
使用方法
NSLocalizedString(string, comment)
例如原先只支持英文显示的代码
self.mylabel.text = "Show string";
现在就变成:
self.mylabel.text = NSLocalizedString(@"Show string", nil)
comment这部分使用nil(这个暂时不用管)
那么Show string对应其他语言的翻译在哪里,NSLocalizedString这个宏去哪里对应的翻译呢?这个就是接下来要做的部分
创建新的文件
IOS->resource->strings file
文件的名字使用
Localizable.strings
注意请不要使用其他的名字,否则NSLocalizedString只返回key,key就是上面例子中的Show string
点击完成。
之后就会在工程下面多这个文件,选中这个文件,在最右边的属性栏中,找到 localization
下面有个按钮 localize,点击然后会让你选语言(这里的可供选择的语言是在 project->info->localization添加的),我们选择中文,然后,就会发现这个文件的右侧也是多了箭头,点开箭头,下面有
Localizable.strings(Chinese(simplified))
然后在这里面做翻译。
可能碰到的问题是:
1. 使用NSLocalizedString之后,怎么还是英文?
我之前就碰到这个问题,这可以说是xcode的bug,需要执行下面的操作
菜单product->clean
然后再重新编译运行即可。我看好多人碰到这个问题。
如何测试多语言的程序
可以进模拟器或者测试设备,
setting(设置)->general(通用)->(region and language)地区和语言
或者
在xcode最上面有个点击工程名字,在出现的菜单中选择edit scheme
edit scheme->Run->application language
注意在ios8.0的模拟器中第一种方法不行,需要用第二种方法,这是一个bug,到写这篇文章之前,apple还没有解决掉。
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章转载自:IT夜班车,否则按侵权处理.