ios10+swift3.0 app多語言——國際化和本土化

開發(fā)一款國際化的iOS App霍骄,則必須考慮支持多國家語言,如何實(shí)現(xiàn)呢淡溯?

第一读整、國際化——多國家語言;第二咱娶、本土化——數(shù)據(jù)米间、時(shí)間、貨幣格式等豺总。

一车伞、新建工程LSMultiLanguage

二、Main.storyboard設(shè)計(jì)界面

732FB274-8362-4378-B2D8-B7F3D482FDE4.png

如上圖所示喻喳,默認(rèn)語言是中文另玖。為了國際化設(shè)計(jì),要求不同國家的用戶所見界面是適合當(dāng)?shù)匚幕ū就粱┍砺祝瑘D片表示用戶所在國家的不同谦去,商品名稱描述、數(shù)據(jù)格式蹦哼、金額幣種鳄哭、日期時(shí)間。

三纲熏、增加多語言妆丘。(中、英文)

1局劲、點(diǎn)擊工程名-->右側(cè)選中project名稱-->點(diǎn)擊左下角localizations下面的“+”勺拣,選擇語言chinese(簡體中文)

20150321094349970.png

2.彈窗口中勾選main.storyboard和luanchscreen,該操作的目的是實(shí)現(xiàn)界面設(shè)計(jì)時(shí)(非程序運(yùn)行)相對固定的描述性文字的多語言鱼填,如“商品:”药有、“銷量:”,等等苹丸。

20150321094711665.png

3.點(diǎn)擊finish完成后愤惰,點(diǎn)擊main.storyboard,Xcode右側(cè)的屬性監(jiān)視窗口即可看到增加了chinese語言,同時(shí)我們把english語言也勾選赘理。對launchscreen.xib執(zhí)行同樣操作宦言。

20150321095151787.png

接下來,用main.storyboard界面舉例感憾,launchscreen.xib是類似操作蜡励。

三令花、設(shè)置界面標(biāo)簽描述文字的多語言

1.點(diǎn)擊main.storyboard下的main.strings(中文),

2A39DEFC-B381-4048-932D-F698037FF1C4.png

右側(cè)文件的內(nèi)容是xcode自動(dòng)生成的,“=”等號左側(cè)的是對應(yīng)界面元素的ID凉倚,右側(cè)是對應(yīng)的文本值兼都,我們只需要修改=右側(cè)內(nèi)容,這里我們只需要設(shè)計(jì)標(biāo)簽文本的中文稽寒,“商品”扮碧、“銷量”、“利潤”杏糙、“時(shí)間”慎王,其對應(yīng)的右側(cè)值稍后在代碼中動(dòng)態(tài)修改后顯示。為了簡單起見宏侍,可刪除該部分內(nèi)容赖淤,完成后如下圖所示:

00CFFC69-8269-4608-B53D-609385F7367A.png

2.點(diǎn)擊main.storyboard下的main.strings(english),設(shè)置標(biāo)簽文字的英文,并刪除多余部分谅河,如下圖所示:

72A061F0-9634-4161-9546-40B54109839E.png

3.標(biāo)簽文字多語言設(shè)置完成咱旱,我們看看界面效果,點(diǎn)擊main.storyboard-->右側(cè)點(diǎn)擊-->再點(diǎn)擊如下圖所示:


C0B7C1E6-EC60-4D78-92A2-F00630BBFBAB.png

然后點(diǎn)擊視圖右下加的語言绷耍,切換成english吐限,在界面設(shè)計(jì)時(shí)(程序未運(yùn)行)即可看見多語言效果:如上圖

四、設(shè)計(jì)標(biāo)簽右側(cè)對應(yīng)值的多語言褂始,這個(gè)在程序運(yùn)行時(shí)動(dòng)態(tài)設(shè)置诸典。

1.界面上的值標(biāo)簽與viewcontroller代碼關(guān)聯(lián),即對象抽象定義

054759ED-A53B-411D-B0EC-28C1E8C81663.png

2.向工程中添加新文件——多語言字符串文件崎苗,并命名文件為Localizable.strings


4CDDE724-964D-4C8A-828E-1B22450A52AF.png

3.設(shè)置Localizable.strings文件支持多語言中狐粱、英文,點(diǎn)擊該文件胆数,在xcode右側(cè)屬性監(jiān)視窗口脑奠,點(diǎn)擊localize...按鈕

7F3785FA-12EE-4237-9ED8-7E3F605A7DB7.png

同時(shí)勾選english和chinese,

70132875-A787-49A5-8951-7E84DE461008.png

4.分別在localizable.strings(chinese)和localizable.strings(english)文件中設(shè)置商品值標(biāo)簽“蘋果手機(jī)”的多語言文本:key=value

1F068481-8098-49C5-B59B-4170E7B360CA.png
1FCE4B87-2875-40A5-8CD8-9CB07558E89A.png

5.在viewcontroller代碼文件中幅慌,視圖加載完時(shí)設(shè)置商品名稱,使用NSLocalizedString方法

lab_Product.text = NSLocalizedString("PRODUCT_NAME", comment: "商品名稱")

6.設(shè)置數(shù)據(jù)轰豆,貨幣胰伍,日期時(shí)間格式本土化,不同地區(qū)數(shù)字格式不同酸休,幣種不同骂租,日期時(shí)間格式不一樣。我們分別自定義數(shù)字格式器斑司、貨幣格式器和日期時(shí)間格式器:

 // 數(shù)字格式
    var numberFormatter:NumberFormatter{
        let formatter=NumberFormatter()
        formatter.numberStyle=NumberFormatter.Style.decimal
        return formatter
    }
    // 貨幣格式
    var currencyFormatter:NumberFormatter{
        let formatter=NumberFormatter()
        formatter.numberStyle=NumberFormatter.Style.currency
        return formatter
    }
    
    // 日期時(shí)間格式
    var dateFormatter:DateFormatter{
        let formatter=DateFormatter()
        formatter.dateStyle=DateFormatter.Style.medium
        formatter.timeStyle=DateFormatter.Style.medium
        return formatter
    }

7.在viewcontroller代碼文件中
viewDidLoad()方法體內(nèi)給相應(yīng)的標(biāo)簽賦值,代碼如下:

 override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        lab_Product.text = NSLocalizedString("PRODUCT_NAME", comment: "商品名稱")
        
        lab_Sales.text=numberFormatter.string(from: 99999);
        //利潤
        lab_Profit.text=currencyFormatter.string(from: 2347898)
        //日期
        lab_DateTime.text=dateFormatter.string(from: NSDate() as Date)
    }

8.設(shè)置模擬器語言為英文渗饮,運(yùn)行后界面顯示如下:

![803E1119-6F2F-4371-B56F-9C71EEED8ABC.png](http://upload
![Uploading BA8DFB72-08CD-4A86-8AC2-1F353A512B7F_778214.png . . .]images.jianshu.io/upload_images/1830761-2545448ed53015d2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

設(shè)置模擬器語言為中文,運(yùn)行后界面顯示如下:

BA8DFB72-08CD-4A86-8AC2-1F353A512B7F.png

五、設(shè)置圖片適應(yīng)多語言互站。

不同語言時(shí)私蕾,圖片需相應(yīng)顯示不同圖片。
點(diǎn)擊工程目錄中的圖片1.jpg文件胡桃,再在右側(cè)屬性監(jiān)視窗口點(diǎn)擊localiza...同時(shí)勾選english/chinese踩叭,完成后,如下圖所示:

056F7D62-4457-4E00-AF01-7BBCEE9DAA24.png

在磁盤finder中打開flag圖片所在的目錄翠胰,打開en.lproj目錄和zh-Hans.lproj目錄容贝,可見同時(shí)存在相同的flag圖片,

106DDE29-E4C8-4BEF-9A7E-4142C74BFC50.png

此時(shí)用相同命名的圖片替換en.lproj目錄中的同名圖片文件(已存在的一張圖片1.jpg)之景。
這時(shí)項(xiàng)目中已經(jīng)變了圖片斤富。

A6229744-2228-44B0-8C1C-493BB82129A6.png

六、設(shè)置xcode調(diào)試環(huán)境或切換iOS模擬器語言(中文锻狗、英文)满力,運(yùn)行app后可見效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屋谭,一起剝皮案震驚了整個(gè)濱河市脚囊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桐磁,老刑警劉巖悔耘,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異我擂,居然都是意外死亡衬以,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門校摩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來看峻,“玉大人,你說我怎么就攤上這事衙吩』ゼ耍” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵坤塞,是天一觀的道長冯勉。 經(jīng)常有香客問我,道長摹芙,這世上最難降的妖魔是什么灼狰? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮浮禾,結(jié)果婚禮上交胚,老公的妹妹穿的比我還像新娘份汗。我一直安慰自己,他們只是感情好蝴簇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布杯活。 她就那樣靜靜地躺著,像睡著了一般军熏。 火紅的嫁衣襯著肌膚如雪轩猩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天荡澎,我揣著相機(jī)與錄音均践,去河邊找鬼。 笑死摩幔,一個(gè)胖子當(dāng)著我的面吹牛彤委,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播或衡,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼焦影,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了封断?” 一聲冷哼從身側(cè)響起斯辰,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坡疼,沒想到半個(gè)月后彬呻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柄瑰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年闸氮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片教沾。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蒲跨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出授翻,到底是詐尸還是另有隱情或悲,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布堪唐,位于F島的核電站隆箩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏羔杨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一杨蛋、第九天 我趴在偏房一處隱蔽的房頂上張望兜材。 院中可真熱鬧理澎,春花似錦、人聲如沸曙寡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽举庶。三九已至执隧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間户侥,已是汗流浹背镀琉。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蕊唐,地道東北人屋摔。 一個(gè)月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像替梨,于是被迫代替她去往敵國和親钓试。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容