IOS國際化(三)app內部語言的切換

2021-07-25 19:18:21 字數 3195 閱讀 9466

只隨著手機系統的語言的改變而改變的程式是滿足不了我們的需求的,所以我們需要在自己的程式中來完成語言的切換。結果如圖:

第一步:按照ios國際化(二)的1和2中的(1)和(2),來操作,完成localizable.strings的新增,如果你不想使用localizable.strings,那麼你重新新增乙個.strings如:youling.strings

第二步:

我們需要讀取本地化的檔案如:簡體中文、英文和正體中文,在這之前,我們可以在nsbundle中看到本地化的巨集如下:

從上面的**中我們可以看到四種實現本地化的方法,ios國際化(二)中使用的是第一種本地化的巨集來實現的,這個時候方法的value的值是@」」 ,預設的讀取的是localizable.strings本地化,如果ios國際化(二)不想使用localizable.strings,那麼就重新建立乙個乙個.strings語言檔案,然後使用nslocalizedstringfromtable(key, tbl, comment)這個巨集來完成key在這裡是國際化的唯一標識key,tb1就是需要載入的你建立的.strings檔案的名稱。第二個巨集和第三個巨集為我們提供了自定義語言本地化的巨集,這兩個巨集的區別就是第乙個巨集預設的讀取localizable.strings檔案,第二個巨集就是讀取程式設計師指定的.strings檔案,在這裡我們以第三個巨集為例nslocalizedstringfromtableinbundle(key, tbl, bundle, comment) 來實現。

(1)建立bundle,根據語言的不同建立不同的不同的,在這裡要讓bundle是靜態的以免多次建立:

/*

*設定城全域性的bundel

*/static

nsbundle* bundle = nil;

方法的定義:

/*

*獲取nsbundle

*/+(nsbundle*) getlanguagebundle;

/* *改變nsbundel

*/+(nsbundle*) changelanguagebundle:(nsstring*) languagetype;

方法的實現:

/*

*獲取nsbundle

*/+(nsbundle*) getlanguagebundle

else

}return bundle;}/*

*當自定義的語言切換時重新給bundle賦值

*/+(nsbundle*) changelanguagebundle:(nsstring*) languagetype

對控制項進行賦值:在對控制項進行賦值時,我們可以定義巨集nslocalizedstringyl(key,table,comment) ,這個可以簡寫**。

#define  nslocalizedstringyl(key,table,comment) nslocalizedstringfromtableinbundle(key, table, [ylutility getlanguagebundle], comment)
-(void) setcontrolvaluewithcustomlanguage

完成後對文中的key進行語言版本的翻譯,這裡的快速的方法可以直接使用xlifftool工具來翻譯。

語言在進行切換過程中需要重新給控制項賦值,所以我們需要新增通知,以便於所有的活動介面能夠即使的改變語言:

定義通知:

/*

*當修改語言時傳送的通知

*/#define yl_change_language @"ylchangelanguage"

增加監聽事件:

- (void)viewdidload
語言切換時傳送語言切換通知:

/*

*語言切換

*/-(void) segmentedcontrolchangvalue:(uisegmentedcontrol*) sender

[ylutility changelanguagebundle:languagetype];

/**儲存當前的語言

*/[ylutility setcuntomcurrentlanguage:languagetype];

/**傳送的語言切換的通知

*/[[nsnotificationcenter defaultcenter] postnotificationname:yl_change_language object:nil userinfo:nil];

}

接收到語言修改的處理函式:

-(void) changelanguage:(id) sender

iOS應用國際化 app 名字國際化的坑

然後我就準備給 info.plist 也新增上圖的檔案 選擇完成以後你發現,專案已經報錯了,你的專案已經找不到你的 info.plist 檔案。這該怎麼辦啊,專案馬上就要提交測試版本了,時間迫在眉急啊。此處心裡只想,媽的先趕緊把專案先能跑起來,這個做不做再說了 看到報錯內容,是說我的 info.pl...

iOS語言國際化

參考 語言國際化 根據系統不同的語言自動切換 xcode6.2 一.在不同語言下工程名會變成對應的語言名 步驟 新建乙個singleview工程 再新建infoplist檔案 注意檔名不能改變還有大小寫 然後新增語言 經過以上,會出現 在各自的語言資料夾中分別新增 cfbundledisplayna...

APP實現語言國際化

網上看到一些部落格說借助外掛程式androidlocalizationer可以實現一鍵語言國際化,但是我試了,好像不行,這個外掛程式太老了,會報錯,沒辦法還是老老實實按常理出牌吧,那常理牌是怎麼出的呢?啊哈哈,就是自己乙個乙個去建立唄。第一步 找到你專案中的res,再找到res下的values中的s...