iOS初学者可以关注我的iOS开发相关的视频课程。
开发一款国际化的iOS App,则必须考虑支持多国家语言,如何实现呢?
第一、国际化——多国家语言;第二、本土化——数据、时间、货币格式等。
DEMO环境:mac osx 10.10+/ios8+/xcode6.1+
一、新建工程MultiLanguage
二、Main.storyboard设计界面
如上图所示,默认语言是中文。为了国际化设计,要求不同国家的用户所见界面是适合当地文化(本土化),图片表示用户所在国家的不同,商品名称描述、数据格式、金额币种、日期时间。
三、增加多语言。(中、英文)
1、点击工程名-->右侧选中project名称-->点击左下角localizations下面的“+”,选择语言chinese(简体中文)
2.弹窗口中勾选main.storyboard和luanchscreen,该操作的目的是实现界面设计时(非程序运行)相对固定的描述性文字的多语言,如“商品:”、“销量:”,等等。
3.点击finish完成后,点击main.storyboard,Xcode右侧的属性监视窗口即可看到增加了chinese语言,同时我们把english语言也勾选。对launchscreen.xib执行同样操作。
4.接下来,用main.storyboard界面举例,launchscreen.xib是类似操作。
三、设置界面标签描述文字的多语言
1.点击main.storyboard下的main.strings(中文),
右侧文件的内容是xcode自动生成的,“=”等号左侧的是对应界面元素的ID,右侧是对应的文本值,我们只需要修改=右侧内容,这里我们只需要设计标签文本的中文,“商品”、“销量”、“利润”、“时间”,其对应的右侧值稍后在代码中动态修改后显示。为了简单起见,可删除该部分内容,完成后如下图所示:
2.点击main.storyboard下的main.strings(english),设置标签文字的英文,并删除多余部分,如下图所示:
3.标签文字多语言设置完成,我们看看界面效果,点击main.storyboard-->右侧点击-->再点击如下图所示:
然后点击视图右下加的语言,切换成english,在界面设计时(程序未运行)即可看见多语言效果:
四、设计标签右侧对应值的多语言,这个在程序运行时动态设置。
1.界面上的值标签与viewcontroller代码关联,即对象抽象定义
2.向工程中添加新文件——多语言字符串文件,并命名文件为Localizable.strings
3.设置Localizable.strings文件支持多语言中、英文,点击该文件,在xcode右侧属性监视窗口,点击localize...按钮
同时勾选english和chinese,
完成后,工程目录中的localizable.strings文件下面包含中英文的文件
4.分别在localizable.strings(chinese)和localizable.strings(english)文件中设置商品值标签“苹果手机”的多语言文本:key=value
5.在viewcontroller代码文件中,视图加载完时设置商品名称,使用
NSLocalizedString方法
6.设置数据,货币,日期时间格式本土化,不同地区数字格式不同,币种不同,日期时间格式不一样。我们分别自定义数字格式器、货币格式器和日期时间格式器:
// 数字格式
var numberFormatter:NSNumberFormatter{
let formatter=NSNumberFormatter()
formatter.numberStyle=NSNumberFormatterStyle.DecimalStyle
return formatter
}
// 货币格式
var currencyFormatter:NSNumberFormatter{
let formatter=NSNumberFormatter()
formatter.numberStyle=NSNumberFormatterStyle.CurrencyStyle
return formatter
}
// 日期时间格式
var dateFormatter:NSDateFormatter{
let formatter=NSDateFormatter()
formatter.dateStyle=NSDateFormatterStyle.MediumStyle
formatter.timeStyle=NSDateFormatterStyle.MediumStyle
return formatter
}
viewDidLoad()方法体内给相应的标签赋值,代码如下:
overridefunc viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 标签初始化值
//商品
lblProduct.text=NSLocalizedString("PRODUCT_NAME",comment:"商品名称");
//销量
lblSales.text=numberFormatter.stringFromNumber(99999);
//利润
lblProfit.text=currencyFormatter.stringFromNumber(2347898)
//日期
lblDateTime.text=dateFormatter.stringFromDate(NSDate())
}
8.设置 模拟器语言为英文,运行后界面显示如下:设置模拟器语言为中文,运行后界面显示如下:
五、设置图片适应多语言。
不同语言时,图片需相应显示不同国家的国旗。比如,中文时,显示中国国旗;英文时显示美国国旗。
点击工程目录中的图片flag.png文件,再在右侧属性监视窗口点击localiza...同时勾选english/chinese,完成后,如下图所示:
在磁盘finder中打开flag图片所在的目录,打开en.lproj目录和zh-Hans.lproj目录,可见同时存在相同的flag图片,
此时用相同命名的美国国旗flag替换en.lproj目录中的同名图片文件(已存在的中国国旗flag)。
六、设置xcode调试环境或切换iOS模拟器语言(中文、英文),运行app后可见效果。
*大家可关注我的CSDN学院的iOS开发视频课程。