iOS中代码支持多国语言切换的实现(Xcode5+iOS7)
為了增加程序的用戶使用數量,那么程序的國際化是不可或缺的一步。在Xcode中要實現程序的國際化,其實非常簡單,開發者只需要簡單配置,并修改相應的字符串鍵值對即可。
? ? ? ? 應用程序的國際化主要包括三個方面:A、程序名稱國際化;B、程序內容國際化;C、程序資源國際化
? 在Xcode中新建項目后,可以在project的info選項卡中找到Localization的項目,可以添加應用程序需要支持的國際語言。
?
回到項目中可以發現在InfoPlist.strings、Main.storyboard(Main.strings)增加了相應項,而Localizable.strings文件如果已經存在的情況也會增加對應的語言版本。(默認情況,Xcode5+iOS7下Localizable文件需要新建,如下圖)
完成以上的設置和文件添加,來看應用程序國際化的ABC。
A、應用名稱國際化(InfoPlist.strings)
在InfoPList.strings的不同語言版本的文件中設置相應語言下程序的顯示名稱
英語版 /* Localized versions of Info.plist keys */CFBundleDisplayName="test"; 中文版 /* Localized versions of Info.plist keys */CFBundleDisplayName=?"測試"?;
? ? ? ? ?這樣程序在運行時,就會根據設備當前設置的語言版本顯示對應語言的名稱。 B、內容國際化(Localizable.strings)?同樣,應用程序里面的內容(組件顯示的名稱、提示等)可以在Localizable.strings的對應文件以鍵值對的形式配置;
英文/*?
? Localizable.strings
??LocalizeMe
? Created by gisxy on 14-3-5.
? Copyright (c) 2014?年?esrixa. All rights reserved.
*/
"abc"?=?"cba"?;
"message"?=?"this is english"?;
"ok"?=?"ok"?;
? 中文 /* Localizable.stringsLocalizeMeCreated by gisxy on 14-3-5.Copyright (c) 2014年 esrixa. All rights reserved. */ "abc"="我是測試"; "message"="這是中文信息提示"; "ok"="確定"; 需要注意的是代碼里面:對于相應提示的代碼應該使用NSLocalizedString(@"鍵值", nil)??UIAlertView?*alert = [[?UIAlertView?alloc?]?initWithTitle?:?NSLocalizedString?(@"abc"?,?nil?)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??message?:?NSLocalizedString?(?@"message"?,?nil)
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??delegate?:?self
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??cancelButtonTitle?:?NSLocalizedString?(?@"ok"?,?nil?)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??otherButtonTitles?:?nil?];
? ??[alert show];
C、資源國際化? ? ? ? 在iOS7中storyboard生成的對應語言文本文件可以通過配置相應組件的顯示名稱來完成國際化
/* Class = "IBUIButton"; normalTitle = "定位"; ObjectID = "qpS-qC-Lcy"; */ "qpS-qC-Lcy.normalTitle" = "定位"; ? ? ? ? 對于使用xib文件組織布局的情況下,以上方法并不好使,個人建議是:復制xib文件改名,修改顯示的名稱,然后在代碼里面來根據語言版本來加載對應的資源,該方法同樣使用圖片等資源。判斷當前設備語言版本: NSArray *languages = [NSLocale preferredLanguages];NSString *currentLanguage = [languages objectAtIndex:0];NSLog(@"language is %@",currentLanguage);
如不同語言的圖片資源位于不同文件夾下,然后可以根據語言版本來動態加載: _chineseImagesPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Images_Chinese/"]; _englishImagesPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Images_English/"];
總結
以上是生活随笔為你收集整理的iOS中代码支持多国语言切换的实现(Xcode5+iOS7)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [iPhone高级] 基于XMPP的IO
- 下一篇: ipad/iphone启动界面Defau