zoukankan      html  css  js  c++  java
  • 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>

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

          

       

  • 相关阅读:
    【Unity】第10章 Mecanim动画系统
    【Unity】9.3 粒子系统生成器详解
    只用一招,让你Maven依赖下载速度快如闪电
    原来实现项目多环境打包部署是如此的简单
    手写Maven的archetype项目脚手架
    通俗易懂详解Java代理及代码实战
    谈谈分布式版本管理工具Git
    拥抱了IDEA却发现再也回不去Eclipse...
    解决Redisson出现Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'create' threw exception; nested exception is java.lang.ArrayIndexOutOfBoundsException: 0的问题
    解决org.apache.shiro.session.UnknownSessionException: There is no session with id的问题
  • 原文地址:https://www.cnblogs.com/flowwind/p/2729692.html
Copyright © 2011-2022 走看看