《IOS开发系列教程》让你的程序支持多语言

《IOS开发系列教程》让你的程序支持多语言

 

让你的系统支持多语言,根据用户在系统中设置的语言来决定你的程序所显示的语言。

设置系统语言:

设置(setting)->通用(general)->地区和语言(region and language)

 

要让你的程序支持多语言,有2部分的字符串需要翻译

一部分是界面中 storyboard和xib文件

另外一部分是在程序代码中使用的字符串(当然是那部分最后呈现给用户的)

翻译第一部分

在最左边的工程控制面板中选中工程的名字,也就是最上面的那一项,然后在工作区的可以看到

工程的属性 (project)

或者

目标平台的属性(target)

localization_steps-700x457

默认显示的是第二个,如果想查看工程的属性,那么

点击工作区的最左上角的上下箭头,然后选择 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_button-700x457

下面有个按钮 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夜班车,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *