ios最简单的多语言设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios最简单的多语言设置相关的知识,希望对你有一定的参考价值。

参考技术A 只为了最基础的学习。

最简单的教学。

第一步:先建一个项目,打开项目如图添加多语言文件

第二步:你在左边的项目目录里面去创建一个Localizable.strings文件, 切记 :文件名为Localizable,我试过其他名字没有起到作用的原因是:如果创建.strings文件是自定义的名字的话,如Internation.strings,那么调用的方式为:

NSLocalizedStringFromTable(@”name”,@”起的文件名字”, nil) 

当自定义名字后,使用NSLocalizedString的方式不起作用,这里要特别注意,注意,注意!!!(重要的说三遍);。如图:

第三步:创建完成后你会在左边的项目目录中看到你新建的文件Localizable.strings,点击这个文件,看右边点击点击Localize,然后选择一个你新添加的语言,之后再看右边把选择栏的语言都选择上如图

第四步:之后,就回到左边,你会看到Localizable.strings有出现下拉的文件了,你下拉进去就会看到你添加的语言文件,之后在对应的文件内添加对象名字和对象要显示的什么语言,如图

最后一步:就是在你需要显示的地方去使用NSLocalizedString方法提取出来如图

以上就是最基本的根据系统语言进行语言的转换。

下面是在一个APP改变多语言的常规做法

我分别写了两个按钮button去控制我更改的语言,样式需要怎么去做就看你的自己的设计图了,方法大多数是一致的。

第一步先定义一个宏,这个宏的作用是去哪个语言文件拿对应的中英文如图

第二步,我之前有预先写了两个按钮,当我点击英文就是把英文的代表符村进来,点击中文就是把中文代表符存进来,如图

以上就是最简单的多语言选择。

demo: https://github.com/SUWW/-International-Language

iOS多语言本地化(国际化)设置

讨论的iOS应用中的多语言设置,Ok 一般是两种情况:

1.根据当前设备语言自动切换显示

2.在应用中可进行语言设定

至今,我个人做过的项目中有6个是涉及到多语言的,其中全部都是需要在应用中可进行设置。 其实也没多大关系,我们这里会首先说说根据当前设备语言进行切换界面的显示(这些都是网上能搜到的,我整理下给自己清晰点的步骤以便后续查看罢了)。而关于在应用在进行语言设定,其实就是获取当前的语言环境并通过代码进行更改,其他的操作是一致的。


先来说说几个涉及到多语言本地化设置的:

1.本地化应用名称

2.本地化字符串(文字)

3.本地化图片、素材

4.本地化StoryBoard(Xib)


!!重点重点,以上都是废话:

这里才是配置根据当前设备语言自动切换显示的步骤,不贴图,不说明原因:

1.配置工程支持多语言

选中项目—>PROJECT(默认是选中TARGETS,切换下)—>Info—>Localizations—>设置多语言环境

2.国际化应用名称

(1)创建InfoPlist.string,并进行Localization配置:

在项目中点击New File-->Resource-->Strings File -->更名为InfoPlist-->点击创建。

选中InfoPlist.strings —>在Xcode右边栏找到Localization—>在Localization中点“+”进行配置。(如没有则点击 XCode—>View—>Utilities—>File Inspector)

(2)添加属性:

在对应InfoPlist.string文件中输入以下代码:

CFBundleDisplayName ="多语言测试";

注意:CFBundleDisplayName加不加双引号都行,"多语言测试"便是对应的应用名。

(3)编辑Info.plist:

打开Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES即可

3.国际化文字

(1)创建Localizable.strings文件(一定是这个名字,是否使用的方法不一样)并进行进行Localization配置。

(2)在对应语言的Localizable.strings中添加key=value;字串(各个语言文件中key要相同)

(3)在代码中使用NSLocalizedString(<#key#>, <#comment#>)来读取本地化字符串。

注意:如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable(key, @"wang", nil)来读取本地化字符串,中间那个是@"wang"文件名。

*多语言文本中也可包含可变内容:通过以下代码获取:

NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"密码错误%ld次,还可以输入%ld次",nil), 2, 1];

4.国际化图片

有两种方式:

(1)在不同语言的Localizable.strings中指定不同的图片名称,通过NSLocalizedString()获取不同的图片名称后进行显示不同的图片(这个就是通过国际化文字那个)

(2)参照国际化应用名和文字的方式给图片标记两种不同的语言显示 (但将图片放Images.xcassets中时时似乎没有地方可以选择国际化语言的)

5.国际化StoryBoard:(不建议)

在第1步配置工程多语言的时候就会提示包含的更改的文件,其中就有StoryBoard,选中即可。这样便会出现一个Base文件和语言文件。

但有一个问题是更改了SB中的控件之后,语言包中的内容不会对应改变,所以我们的操作是暂时不支持国际化SB。


以上部分参考:http://blog.csdn.net/wangqiuyun/article/details/7875442



以上是关于ios最简单的多语言设置的主要内容,如果未能解决你的问题,请参考以下文章

iOS- 国际化(多语言设置)

iOS多语言(国际化)开发(跟随系统 + APP内手动设置)

iOS多语言(国际化)开发(尾随系统 + APP内手动设置)

iOS多语言的设置

iOS多语言本地化(国际化)设置

iOS多语言本地化(国际化)设置