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

Xcode 6和 swift中文字,图片,xib的国际化和本地化

2015-09-08 15:54 423 查看
转自: http://www.cocoachina.com/ios/20150114/10911.html
(如有侵犯,请来信 oiken@qq.com)

本文由@RepairmanJacob翻译自Ramblings on Swift and iOS,原文:Internationalization
and localization of Apps in Xcode 6 and Swift

当你希望应用程序无缝支持不同的语言和地区时,应用程序的国际化和本地化就显得十分必要了。国际化是指为应用程序提供一个用来支持不同语言的框架的过程。而本地化则是使你的应用程序支持特定地区的过程,比如德国。

在本篇文章中,我们将对一个支持文本、数字、日期、货币以及图片的应用程序进行英语和德语的本地化。我们将按照以下提示步骤实现:

使用NSNumberFormatter和NSDateFormatter格式化数字、货币以及日期数值

Storyboard的国际化

文本的国际化

图片的国际化

英语形式



德语形式



从github下载源码。(链接)

首先,创建一个新的项目:File menu -> New -> Project



为项目选择单视图应用程序(Single View Application)模板



在接下来出现的窗口中输入"Localisation Demo"作为项目名称,并且选择"Swift"作为程序语言,然后指定一个路径并保存项目。

用户界面设定---UILabels 和UIImageView

首先让我们定位到Main.storyboard, 点击默认的View Controller,从对象库往Storyboard拖放9个标签和1个ImageView。这些标签用来显示下方屏幕上的标题和值:



为UIControls声明IBOutlets

在项目导航中点击ViewController.swift,并且在类声明之后添加以下IBOutlets。

在Main.storyboard中,将标签和图像视图与各自的outlet连接。



为控件赋值

在项目导航中点击ViewController.swift,新建一个函数,并命名为populateValues

上述函数为所有的控件赋值。被赋予的值将在屏幕中以非本地格式显示出来。然后添加如下函数作为ViewDidLoad函数的一部分。

使用Add Files to "Localisation Demo",添加图像hello.png到工程文件夹。



如果你现在编译并且在iOS模拟器上运行该项目,你将会看到下图中标签和图片都带有各自的值。



现在,让我们看看如何使用NSNumberFormatter 对数字和货币,NSDateFormatter对日期设置格式。

目前我们没有看到任何数字、日期或者货币数值上应用了格式化。现在来看看如何使用NSNumberFormatter设置数字和货币字段,以及使用NSDateFormatter来设置日期字段。在ViewController.swift文件中,将以下属性添加到populateValues函数之后。

在上述函数中,我们分别为创建了格式化程序实例,并设置了相应的风格,比如为日期和时间值设定了DecimalStyle, CurrencyStyle以及 MediumStyle。现在我们需要修改一下populateValues函数来使用这些属性展示数值。

使用正确格式后,iOS模拟器将会使用默认的系统区域来展示数字、货币以及日期字段的值。



为Xcode项目添加另一种语言支持

为了支持德语,首先需要将这种语言添加到项目中,这一步可以通过使用可选的选项来作为项目目标的一部分来实现。选择项目文件,然后是项目目标(Project target)。



我们注意到本地化的分区,然后点击"+",从列表中选择德语。



在如下图所示的窗口中,选择所列的默认文件并且点击"Finish"。



现在,你应该可以在本地化选项中看到对德语的支持。



为Storyboard中的控件添加本地化

首先,让我们看一下,如何为Main.storyboard中的标题控件添加另一种语言支持。



展开Main.storyboard,然后点击Main.strings (German)。现在,加入与日期(Date)、货币(Currency)、数字(Number)和图像(Image)同义的德语--Datum,W?hrung,Anzahl和 Bild。对于剩下的控件,本地化将会在代码中执行。



在iOS模拟器中测试本地化的改变

当我们在Xcode的调试环境中将语言和地区设置为德语后,那些对Main.storyboard (German) 、NSNumberFormatter 和 NSDateFormatter的改动才会生效。点击"Set the active scheme"选项,在列表中选择"Edit Scheme"。



现在,让我们来看调试环境(Debug Environment)下的"Options",为应用程序语言和地区分别选择选择德语(German)和德国(Germany)。



在iOS模拟器上运行我们的应用程序,在屏幕上将会显示出德语,以及基于德国地区的数字、日期和货币的格式。



使用NSLocalizedString实现文本的国际化

"Good Morning" 必须用相应的德语来显示,比如"Guten Morgen"。在项目中添加一个Strings类型的文件,并且命名为Localizable.strings。



在项目的导航器中选择Localizable.Strings,在文件检查器下点击"Localize"按钮。



然后在下拉列表中选择"English",并且确保在文件检查器下的本地化选项中标记German。



现在,你可以展开项目导航中的Localizable.Strings,并且看到分别用于英语和德语的两个文件。



在Localizable.Strings (English)中添加下边一行语句,

在Localizable.Strings (German)中添加下边一行语句,

现在添加相应的代码来使用Localizable.Strings文件中的值。

点击ViewController.swift,将

修改为:

NSLocalizedString会根据提供的关键字在Localizable.Strings文件中查找对应的条目。在iOS模拟器中运行APP将会显示与"Good Morning"同义的德语。



图像的国际化

在以上所有截图中,你可以看到图像中的文本仍然是英语。所以,我们需要添加包含相应德语文本的图像,并且做出修改来获得基于应用程序语言的接入口。在项目导航中选择hello.png,然后点击文件检查器的本地化按钮,接下来,你需要选择将文件本地化为英语和德语。



确保在文件检查器的本地化选项中将英语和德语打钩。



在Finder中打开项目文件夹,这里应该包含了德语和英语两个文件夹。



复制包含德语文本的hello.png到de.lproj文件夹,在iOS模拟器上将语言和地区设置为德国后重新生成,并且运行app。

从github上下载源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: