本文主要介紹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>
從上面可以看出,有兩種方式來解釋本地化語言。