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>
从上面可以看出,有两种方式来解释本地化语言。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述