1.国际化和本地化的差别

简单说,国际化是一个应用程序国际兼容性设计的过程,比如:


1.以用户母语处理文本输入和输出;


2.处理不同的日期、时间以及数字格式;


3.利用适当的历法和时区处理数据;


 


国际化是一项你和开发者通过利用系统提供的API来实现的活动,并在代码上做一些补充和修改,从而让应用的中文版、阿拉伯语版本和英文版一样好。
 


相比之下,本地化仅仅是把应用的用户界面和资源翻译成不同的语言,这是你可以也应该交给别人做的工作,除非你能精通app应该支持的每种语言。

2.开始实现应用的本地化 
(1)新建一个项目

android drawabletop 国际化 app国际化_本地化


(2)添加本地化文件,右键点击项目,选择

 File>New File

android drawabletop 国际化 app国际化_国际化_02


(3)命名:此处很重要,请将本地化文件命名为:Localizable。

Localizable.strings是iOS用来本地化文本默认的文件名称。请抑制以其他内容给它命名的冲动,否则以后你每次引用本地化字符串的

时候要一次次输入.strings 文件名。

android drawabletop 国际化 app国际化_国际化_03


(4)添加你需要的语言,系统默认的是English,点击添加你需要的语言。

android drawabletop 国际化 app国际化_文件名_04


(5)添加后,点击新建的本地化文件,在右侧点击localize(箭头所指),然后添加需要的语言。


android drawabletop 国际化 app国际化_ios_05

(6)添加完毕后,如下图所示。点击Localizable.strings,在base和simplified中分别写入你需要语言的对应字符。


  你需要添加所有的文本--当前硬编码在app中的文本。你需要遵从一个特定但简单的格式,类似于字典:

“key” = “value”;


比如下面我给的key分别是“hello”,“world”。在base和 simplified分别写入需要语言的对应翻译。英文的文件为“hello”和“world”,中文的为“你好”和“世界”。

Key/content对也可以包含格式化字符串: 
  "Yesterday you sold %d apps" 
   =  
  "Yesterday you sold %d apps";
_salesCountLabel.text = [NSString stringWithFormat:@"Yesterday you sold %d apps",    10];

android drawabletop 国际化 app国际化_国际化_06



(7)使用,如果用的是代码编程,可使用 NSLocalizedString (

@"key" ,  nil );  key对应的是所需要的key,后面的参数为nil是因为我们的本地化文件文件名是 Localizable。

android drawabletop 国际化 app国际化_ios_07


(8)如果,用的是storyboard的开发,可使用以下方法进行本地化


首先,找到对应控件的Object ID 

android drawabletop 国际化 app国际化_国际化_08


然后在main.strings中修改对应的文字即可

android drawabletop 国际化 app国际化_文件名_09



最后要注意一点:本地化的测试都必须用真机测试!!