IOS开发之国际化篇第二章:文本信息国际化

Posted 长命百岁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS开发之国际化篇第二章:文本信息国际化相关的知识,希望对你有一定的参考价值。

本文是以XCode7.2.1为开发平台

在第一章中,我们基本了解了国际化是怎么一会事,介绍到有3种国际化,接下来的几章就会分别介绍这3种国际化,第一个是文本信息国际化

文本信息国际化包含一下几点

  • 系统按钮和信息国际化
  • 应用名称国际化
  • 程序代码中输出的静态文本国际化

-系统按钮和信息国际化

系统本身会自带一些系统的信息,系统按钮等,这一些系统自带的信息提示,按钮文本都是由Cocoa本身自带的,他们都是统一又系统管理,例如Done在英文环境中是Done,还有系统提示信息,如下图,在不同语言环境系统会显示不同的提示语言

技术分享

我们先来看看没有国际化前的效果,下面我们会先拉出一个UIToolBar然后把自带的那个UIToolBarItem里面的种类设成Cancal,运行后正常,正是我们要的,接下来我们在设置那里换一下语言环境换成韩文,再次运行,结果没变化,还是英文显示cancal,这是因为我们没有设置程序的韩文支持

技术分享

技术分享

技术分享

 

现在我们来添加一下韩文的支持在Projct->Info->Locallizations,按+号,然后添加需要支持的语言,我们这里添加韩文,运行后机会得到预期效果

技术分享

技术分享

技术分享

 

-应用名称国际化

应用名称国际化从字面上看很容易理解,就是应用在桌面展示时的中英文名称,这个名称一般由开发者确定,现在先看看系统自带的一些app如:设置,日历等,他们国际化后的效果

技术分享

在正常的情况下文件的结构如图

技术分享

如果增加了一种以上的语言支持后,它有可能会多了一个InfoPlist.String文件,文件下会带有该种语言的文本翻译文件,如果没有可手动添加,切记这个文件名字必须是InfoPlist,添加方式如下:

右键菜单->New File...在弹出的窗口找到Strings File,然后创建,记得名称必须是InfoPlist

技术分享

 

创建成功后,在文件结构里看到多出一个文件,InfoPlist.strings,点击文件后,会在右手边的设置里面,显示如图,然后点击Localize...按钮,然后就需要选取需要国际化的语言,这里的选项会因添加的支持语言而变化,例如添加了韩文支持,那就有韩文选择,如有中文,就有中文的选项

技术分享

技术分享

 

按Localize按钮后,右手边属性栏会有所变化,变成了这样,打沟的部分为刚才所选的国际化语言,而文件结构那边是没有任何的变化

技术分享技术分享

 

如果需要添加其它的国际化语言,只需在右边的,沟上想国际化的语言即可(前提是必须支持该种语言的国际化,如不懂怎样添加支持的语言种类,可参考本章前面的内容),沟选了对应的国际化后,InfoPlist.strings文件下会多出了想国际化的文本文件,文件括号后面跟的是语言的种类,如:English代表英文 如图:

技术分享技术分享

 

打开文件,就可以在里面编写需要国际化的键值对,这里我们要国际化的时候app的展示名称,app的展示名称的Key是CFBundleDisplayName,分别在

*.strings(Simplified)文件内写上CFBundleDisplayName="国际化";

*.strings(English)文件内写上CFBundleDisplayName="Internationalization";

技术分享

然后用各自用简体中文和英文环境运行一下应用,在桌面上,会看到效果

技术分享

 

-程序代码国际化

首先我们要建立一个国际化文件是用于代码内的国际化,如上面的教程一样,新建一个*.string文件,文件名为Localizable.strings,必须要以这个名字命名。然后跟上面教程一样,创建它对应的国际化支持文件,

技术分享

然后就可以在文件内编写键值对,我们这里用Name作键,做一个测试,分别在中文和英文的国际化文件内编写Name这个键对应的值

英文国际化:Name="International Test";

中文国际化:Name="国际化测试";

 然后在相应需要国际化的地方使用以下代码,本例子是在控制台上打印一个语句

- (IBAction)buttonOnClick:(id)sender {
    NSString *text = @"Name";
    NSLog(@"%@",NSLocalizedString(text, @"Name"));
}

主要关注的方法是,NSLocalizedString(@“”,@“”);这里有两个参数,第一个参数就是在国际化文件内的键值,第二个参数是默认值,当找不到国际化文件或在国际化文件中找不到对应的键时,默认会显示这个默认值

以上是关于IOS开发之国际化篇第二章:文本信息国际化的主要内容,如果未能解决你的问题,请参考以下文章

iOS之应用程序国际化

iOS之应用程序国际化

iOS之应用程序国际化

国际化

iOS开发之本地化国际化语言设置

Ionic App之国际化 json数组的处理