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

iOS开发--语言国际化-最新使用方法

2016-07-22 16:49 120 查看
前言

我这篇文章主要介绍,如何实现APP的语言随着iOS系统语言的改变而改变,包括以下三部分:

1)通过代码实现文本国际化
2) APP名字的国际化
3)storyboard(xib类似)上文本国际化实现


实现步骤

第一步:首先在项目下找到info里面的Localizations,添加相对应的语言strings文件



第二步:根据自己的需要选择上面所显示的四个文件。如果一个不选择,那么本地化语言也不会增加。当本地化语言时也只会有base和默认的English两个选项。

点击finish之后,会生成对应的strings文件。

第三步:看下面分情况介绍。

分情况介绍

1. 通过代码实现文本国际化+APP名字的国际化

看到上面的可选择的四个文件,你一定比较纳闷最后两个选项:InfoPlist.strings+Localizable.strings。先说下创建方法:第一可以直接创建strings文件,注意名字不要错了,第二,也可以直接创建空文件名字写上后缀.strings生成。

之后选择文件,在右边选项你会看到Localization选项,点击之后,你就可以选择你前面已经在info里面设置的几种语言的strings文件的生成。





那么这两个都有什么用途呢?

第一、InfoPlist.strings主要用于实现APPName的语言国际化,主要通过CFBundleDisplayName来实现,具体实现如下图:



细心的同学应该可以看到我生成了5个文件,base+两种汉文+两种英文。base的文件主要用于当系统没有找到对应语言的strings文件而默认的值,如果不用base文件,这个情况就会显示默认的English-develop设置的APPName名。其他主要用于对应语言的APPName的设置。

第二、Localizable.strings主要用于实现APP内部文本的语言国际化,主要在对应的strings文件里设置文本的key值以及对应的语言value值,然后在对控件设置文本时使用NSLocalizedString(key, comment)宏定义方法实现。但是这个如果没有base文件和对应语言的strings文件,默认的文本就是key值。

具体实现如下图:



说明:我自己试了以下,要想实现中英文的实现,必须要有两种英文和两种汉文,否则没法实现,英文一个是默认的English-develop(不需要添加),一个是en-AS或者en-US这两个都能实现(这两个都可以,不过其他的我也没试,不过具体哪个还的看你系统设置的语言,这个可以根据公司需求设置,当时我们公司就要求了澳大利亚欧洲等,不过如果系统选择的那个最简单的English语言的,应该只能两个吧,即美国英语),汉文选择的是Chinese-Simplied和Chinese-Traditional(因为我系统语言设置的是简体中文)。

具体实现效果图如下:



storyboard(xib类似)上文本国际化实现

storyboard一般有两种实现方法:

1)一种是通过生成的strings文件,修改文件里面的对应的文本值



2)一种是通过生成对应语言的storyboard。



不过我感觉如果你的项目每个语言版本控件布局一样,那么适合第一种方法,如果布局不一样(例如英文太长而应该有不同布局),那么适合第二种。

具体实现效果如下图:



注:如果只是通过代码实现的话,如果先去info添加本地化语言的话,就没有可选择的文件,那么就没法添加成功,所以应该先创InfoPlist.strings+Localizable.strings文件。

如果有更好的方法或建议望大神指教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: