开发应用的时候遇到国际化业务,我们都会针对同一个App进行国际化适配,也就是语言本地化,不同地区的人打开应用会显示对应地区的语言和该有的图案。接下来从app名称、应用内字符串和图片三个方面来使用一下。
一、选择多种语言进行配置
- 新建一个demo工程
- 选中project->Info->Localizations,然后点击”+”,添加需要国际化/本地化的语言,如下图(默认需要勾选Use Base Internationalization)
- 这里我们添加英语、汉语和简体中文,如下图:
二、应用名称多语言化
新建一个strings文件,名为infoPlist.strings,必须为infoPlist的名称,然后选中高亮这个文件,在xcode右边会出现Localization的选择,选中我们要进行国际化的三个语言,你会发现info.strings自动多出三个文件分别对应三个语言,如下图:
我们分别在对应的文件里面,对应的设置应用名称如下:
1 |
CFBundleDisplayName = "AppName"; |
将模拟器切换成韩语的环境,我们可以看到应用名称已经更改,其他语言也是如此
三、页面内字符串多语言化
对于页面内的任意字符而言,与上述较为接近。新建一个strings文件,名为Localizable.strings,必须为Localizable的名称,然后选中高亮这个文件,在xcode右边会出现Localization的选择,选中我们要进行国际化的三个语言,你会发现Localizable.strings自动多出三个文件分别对应三个语言。
Localizable的名字是为了和系统的方法进行关联,我们只需要使用Foundation框架自带的NSLocalizedString(key, comment)这个宏根据Key获取对应的字符串,然后赋值给代码中的字符串。
在对应的文件里面,对应的设置应用名称如下:
1 |
"home" = "home"; |
然后在ViewController里面进行设置,统一设置为home字符串,代码如下:
1 |
|
然后我们调整为韩文环境,在模拟器中可以看到显示如下:
另外,如果的strings文件想要换个名字,比如多个人在协作开发的时候,要利用到别人的文件,这个时候,可以使用系统的NSLocalizedStringFromTable方法,调用是一样的,多一个参数用于传递别人的文件名称。
1 |
|
四、图片的多语言化
- 不同语言环境下不同名称
上述我们已经实现字符串的多语言,因为有imageNamed方法的存在,所以我们可以单独新建一份strings文件用于保存图片名称,这样在不同环境下会自动根据图片名称替换即可。
- 不同语言环境下相同名称
我们拖入一个图片到工程里,然后选中图片,在右边进行localization,选中多个语言环境如下
然后我们选中图片show in finder进入文件夹,会发现自动生成了对应语言的文件夹,里面有相同名称的图片,这个时候我们对应替换文件就行了,名称依旧保持一致
近期评论