iPhone开发应用关于国际化案例实现

移动开发 iOS
iPhone开发应用关于国际化案例实现是本文要介绍的内容,主要是来学习在iPhone项目中如何才能国际化,来看详细内容讲解。

iPhone开发应用关于国际化案例实现是本文要介绍的内容,主要是来学习在iPhone项目中如何才能国际化?难道同一个项目,非要写一个英文版的源代码,再写一个中文版的源代码?其实大可不必。我们可以使用iPhone的多语言支持来实现项目的本地(国际)化。

1、新建Windows-base Application。打开main.m文件,在main函数中增加代码如下:

  1. // 取得用户默认信息  
  2. NSUserDefaults *defaults = [ NSUserDefaults standardUserDefaults ];  
  3. // 取得 iPhone 支持的所有语言设置  
  4. NSArray *languages = [defaults objectForKey : @"AppleLanguages" ];  
  5. NSLog ( @"%@" , languages); 

运行程序,从 console 中输出如下内容:

  1. "zh-Hans",   
  2.     en,   
  3.     fr,   
  4.     de,  
  5. "zh-Hant",   
  6. …… 

可以看到, iPhone 设备上支持的所有语言,有英、法、德,还有两个 ”zh” 开头的语言(简体/繁体)。我们知道,以 ”zh” 开头的就是中文。

2 、在 Resources 上右键, Add à New File ,文件类型选择 Resource->Strings File ,文件名为 Localizable.strings 。在该文件上使用 getInfo 命令,在如下界面中点击 Make File Localizable 按钮,如图:

iPhone开发应用关于国际化案例实现

然后 , 你去 Finder 中查看工程目录,会发现多了一个 English.lproj 的目录,其下有一个 Localizable.strings 文件(不过其中的内容是空的)。

再次打开 getInfo 窗口,显示如下界面:

iPhone开发应用关于国际化案例实现

可以看见 Localizations 列表中只有一个语言 English ,我们需要点击 Add Localization 按钮,增加中文 zh_CN,如图:

iPhone开发应用关于国际化案例实现

这时,你再去 Finder 中查看工程目录,发现又多了一个 zh_CN.lproj 的目录,其下也有一个 Localizable.strings 文件(内容也是空的)。

同时,在 Target 下的 Copy Bundle Resources 目录下多出两个不同语言版本的 Localizabel.strings 文件(一个 English ,一个 zh_CN ),如图:

iPhone开发应用关于国际化案例实现

3 、打开 MainWindow.xib ,拖一个 UILable 到 window 中。

4 、打开 AppDelegate.h 文件,在其中申明 UILable 变量并增加一个 IBOutlet :

  1. UILabel * label ;  
  2. ……  
  3. @property ( nonatomic , retain ) IBOutlet UILabel* label; 

5 、打开 AppDelegate.m 文件,

  1. @synthesize window,label; 

在 ( BOOL )applicationv:application didFinishLaunchingWithOptionsv: 方法中增加代码:

  1. // 使用NSLocalizedString函数根据iPhone的多语言设置获取国际化的字符串  
  2. label . text = NSLocalizedString ( @"Localizable Test" , @"" ); 

6 、回到 IB ,将 UILable 控件和 IBOutlet 变量 label 进行连接,如图:

iPhone开发应用关于国际化案例实现

7 、打开终端程序,进入工程目录,运行命令:

  1. genstrings -o English.lproj ./classes/*.m 

你会发现 English.lproj 目录下的那个 Localizable.strings 文件中增加了一行代码:

  1. "Localizable Test" = "Localizable Test" ; 

再运行命令:

  1. genstrings -o zh_CN.lproj ./classes/*.m 

同样 , 在 zh_CN.lproj 目录下的那个 Localizable.strings 文件中也会增加一行代码:

  1. "Localizable Test" = "Localizable Test" ; 

打开 zh_CN.lproj 目录下的 Localizable.strings (双击),修改为

  1. "Localizable Test" = " 本地化测试 " ; 

这样,每当源代码有改变后,我们都需要用 genstrings 命令重新生成 Localizable.strings 文件。但是,每次重新生成后,原来的编辑(翻译)结果又不见了,我们又必须重头翻译。这是个很大的麻烦,建议以后每次 genstrings 之前把文件进行备份,减少重复工作。

8 、运行程序,效果如下(如果模拟器的多语言设置为简体中文)如图:

iPhone开发应用关于国际化案例实现

当你把多语言设置改为 English ,则标签中的文本显示为英文了。

小结:iPhone开发应用关于国际化案例实现的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: starming社区
相关推荐

2011-08-11 13:26:30

iPhoneNSLocalized

2011-07-20 14:53:28

iPhone NSLocalize 国际化

2011-08-19 10:05:30

iPhone开发

2011-08-15 15:44:46

iPhone开发PDF

2011-08-18 16:24:44

iPhone开发图片

2010-01-04 13:09:51

Silverlight

2009-12-29 15:05:29

WPF支持国际化

2011-08-16 15:48:37

iPhone开发抓图程序

2011-08-19 10:13:05

iPhone开发

2011-08-19 11:10:31

iPhone应用

2023-01-31 10:29:26

JavaScript国际化国际化库

2024-01-17 10:16:22

前端国际化消息键

2024-01-04 08:16:34

Spring国际化标准

2011-08-16 15:36:47

iPhone应用测试

2009-01-19 09:06:31

gettextPHP国际化编程

2011-07-08 11:13:42

Cocoa Touch XCode

2011-08-18 10:39:46

iPhone开发界面

2010-01-27 14:55:03

烟台万华

2023-09-05 15:23:06

开发应用鸿蒙

2011-08-30 16:39:34

HTML 5
点赞
收藏

51CTO技术栈公众号