[IOS]本地化

來源:互聯網
上載者:User

我們在IOS開發應用中,會碰到做好的一個應用,如何趨向國際化,也就是說支援多種語言?下面我就來簡單示範一下,用一個Demo來實現中文和英文的實現。實現步驟:1.本地化項目中xib的view   1.在view中添加幾個label,把對應的屬性綁定好。   2.ViewController.h: 

#import <UIKit/UIKit.h>    @interface ViewController : UIViewController  @property (retain, nonatomic) IBOutlet UILabel *languageee;  @property (retain, nonatomic) IBOutlet UILabel *label1;  @property (retain, nonatomic) IBOutlet UILabel *label2;    @end  

 

  3.ViewController.m: 
#import "ViewController.h"    @interface ViewController ()    @end    @implementation ViewController    - (void)viewDidLoad  {      [super viewDidLoad];            NSLocale * locale = [NSLocale currentLocale];      NSString * str = [locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]];      self.languageee.text = str;      self.label1.text = NSLocalizedString(@"name",nil);      self.label2.text = NSLocalizedString(@"sex", nil);  }    - (void)dealloc {      [_languageee release];      [_label1 release];      [_label2 release];      [super dealloc];  }  

 

 @end      4.建立xib的其他語言的版本,具體操作:           1.點擊項目(藍色的表徵圖),然後點擊開啟PROJECT的項目表徵圖,開啟Localizations,勾選上Use Base Internationalizatino,會自動建立一個Basexib檔案,然後點擊+,添加其他的語言版本,本來預設的是english的,那麼我們在建立一個Chinese,第一個選項卡。   2.然後點擊xib,滑鼠移動到最右邊選擇屬性那一欄最左邊的選項卡,開啟Localization,勾選上相應的選項,支援的多語言檔案。   3.點擊修改相應的ViewController.strings(Chinese)中的資料:例如:/* Class = "IBUILabel"; text = "Label"; ObjectID = "8"; */ "8.text" = "Label"; /* Class = "IBUILabel"; text = "Label"; ObjectID = "11"; */ "11.text" = "Label"; /* Class = "IBUILabel"; text = "Label"; ObjectID = "14"; */ "14.text" = "Label"; /* Class = "IBUILabel"; text = "name"; ObjectID = "20"; */ "20.text" = "姓名"; /* Class = "IBUILabel"; text = "sex"; ObjectID = "24"; */ "24.text" = "性別"; /* Class = "IBUIButton"; highlightedTitle = "HaHa"; ObjectID = "28"; */ "28.highlightedTitle" ="HaHa"; /* Class = "IBUIButton"; normalTitle = "Button"; ObjectID = "28"; */ "28.normalTitle" ="Button"; /* Class = "IBUISegmentedControl"; 32.segmentTitles[0] = "First"; ObjectID = "32"; */ "32.segmentTitles[0]" ="First"; /* Class = "IBUISegmentedControl"; 32.segmentTitles[1] = "Second"; ObjectID = "32"; */ "32.segmentTitles[1]" ="Second"; 對應的English的檔案也修改成英文版的 以上是本地化的view中靜態label控制項中的資料,如果是動態,就是如果在.h檔案相關聯的資料控制項,那麼就要現在.m檔案中先寫上例如:  
 self.label1.text = NSLocalizedString(@"name",nil);  self.label2.text = NSLocalizedString(@"sex", nil);  

 

這樣才方便在後面自動建立的設定檔中自動產生相應的註冊的對象。4.自動產生對應的動態資料的檔案開啟終端,輸入cd 然後將檔案拖放在終端中,自動產生對應的路徑,然後輸入genstrings ./LocateDemo/*.m會發現在項目中自動產生了一個Localizable.strings的檔案,然後在對應的en.lproj和zh-Hans.lproj也就是兩個對應的語言的檔案包裡面都複製一份這個檔案,然後匯入到項目中,點擊相應的檔案會發現自動產生了相應的欄位/* No comment provided by engineer. */ "name" ="小明"; /* No comment provided by engineer. */ "sex" ="男"; 將對應的中文和英文包中的檔案都改成相應的語言 2.本地化應用程式名稱    建立SingleView的項目之後會發現有一個LocateDemo-Info.plist檔案,雙擊開啟檔案,右擊->Show Row Keys/Values,拷貝CFBundleDisplayName,到InfoPlist.strings中,也將這個檔案本地化一下,產生兩中語言的檔案,然後在各個語言對應的檔案中修改CFBundleDisplayName = "English";還有“中文”,後面測試的話會發現如果模擬器設定的語言不一樣,那麼這個程式對應的應用程式名稱也不一樣。 3.本地化圖片例如兩種語言,我想根據英語和中文不同的環境匯入不同的國旗,美國國旗和中國國旗,在介面中拖放一個ViewImage,然後就圖片資源拖放近項目,也點擊一下本地化,在產生一個 另外一種語言環境下的圖片,然後在對應的檔案中修改這個圖片,但必須確保兩個檔案中的圖片名字是一樣的才行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.