monoTouch开发软件在多语言运用中的实例
本文主要介绍monoTouch中实现软件支持多国语言,在不同的环境中本地化,即面向国际用户进行本地化。
在monodevelop中新建项目,C#--MomoTouch--iphone--Single View Application ,命名为Localization01,在根目录添加新建文件夹en.lproj,在里面新建文件命名为Localizable.strings,这是添加的英语语种,类似添加法语和西班牙语,即将文件夹命名为fr.lproj和es.lproj ,文件夹里分别添加新文件命名为Localizable.strings。命名必须和上述保持一致,这样软件才能根据苹果设备设置里面的语言,寻找到相应本地资源。
务必要保证的是Localizable.strings的文件,选中文件--右键Build Action要设置为content。不然的话你是无法实现本地化效果的,切记。刚开始我就在这上面摔跟头了,调试好长时间。
实现本地化主要用到了LocalizedStrings()方法和PathForResource()方法。 前者是从.strings文件中加载本地化字符串。 后者是加载本地化文件夹中对应的图像(或其他文件类型)的路径。
具体代码如下:
1、在xcode中设计窗体如下:
2、后台代码实现如下:
1 public override void ViewDidLoad() { 2 base.ViewDidLoad(); 3 4 LocaleLabel.Text=NSLocale.CurrentLocale.LocaleIdentifier; 5 LanguageLabel.Text=NSLocale.PreferredLanguages[0]+"Lan"; 6 7 GoodbyeLabel.Text=NSBundle.MainBundle.LocalizedString("Hello","a greeting"); 8 Segments.SetTitle(NSBundle.MainBundle.LocalizedString("One","Number one"),0); 9 Segments.SetTitle(NSBundle.MainBundle.LocalizedString("Two","Number two"),1); 10 Segments.SetTitle(NSBundle.MainBundle.LocalizedString("Three","Number three"),2); 11 12 OkButton.SetTitle(NSBundle.MainBundle.LocalizedString("OK","affirmative"),UIControlState.Normal); 13 // OkButton.SetTitle(NSBundle.MainBundle.LocalizedString("OK (unavailable)","affirmative disabled"),UIControlState.Disabled); 14 CancelButton.SetTitle(NSBundle.MainBundle.LocalizedString("Cancel","cancle button"),UIControlState.Normal); 15 16 }
3、在三个Localizable.strings文件中代码如下:
1)en.lproj中:
1 "Hello" = "Hello"; 2 "Goodbye" = "Good-bye"; 3 "OK" = "OK"; 4 "Cancel" = "Cancel"; 5 "One" = "One"; 6 "Two" = "Two"; 7 "Three" = "Three";
2)es.lproj中:
1 /* A greeting */ 2 "Hello" = "Hola"; 3 "Goodbye" = "Adiós"; 4 "OK" = "Si"; 5 "Cancel" = "Cancelar"; 6 "One" = "Uno"; 7 "Two" = "Dos"; 8 "Three" = "Tres";
3)fr.lproj中
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3 <plist version="1.0"> 4 <dict> 5 <key>Hello</key> 6 <string>Bonjour</string> 7 <key>Goodbye</key> 8 <string>Au revoir</string> 9 <key>OK</key> 10 <string>Oui</string> 11 <key>Cancel</key> 12 <string>Annuler</string> 13 <key>One</key> 14 <string>un</string> 15 <key>Two</key> 16 <string>deux</string> 17 <key>Three</key> 18 <string>trois</string> 19 </dict> 20 </plist>
从上面可以看出,有两种方式来解释本地化语言。