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、后台代码实现如下:

     

View Code
 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中:

       

View Code
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中:

   

View Code
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中

View Code
 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>

      从上面可以看出,有两种方式来解释本地化语言。

      

   

posted @ 2012-10-18 16:19  flowbywind  阅读(1903)  评论(1编辑  收藏  举报