話說回來,在iOS的多語系開發中,不像Android是在res之中設置指定名稱的資料夾,而是在PROJECT之中Info進行語言的設定,裡面有一個Localizatios的欄位可以填寫,
其中要注意的部分有:
- 一開始設定如果是英文,可以看見在Resources欄位中顯示2個資料夾。如果我們刪掉再重建,他會報錯,說已經有資料夾了?ㄎㄎ,這時候我進去Finder裡面果然發現親愛的XCode沒有把資料夾刪掉。於是手動把他刪掉之後就解決了。
- 上述的作法可能還是會報錯,是因為Tests的資料夾中也有一樣的檔案,我把他刪掉之後就沒事了。創建時候也會產生3個資料夾。
- 於是我對這3個資料夾很好奇,稍微看了一下發現他分別是:
- Supporting Files的InfoPlist.strings ,每個語系都在Finder裡面都會有自己的資料夾,但是在XCode會整理到InfoPlist裡面。
- Tests資料夾中Supporting Files的InfoPlist.strings (老實說我不太懂這個資料夾是作什麼用的)
- storyboard。
所以我們會發現,各國語系的文字應該統一放在InfoPlist.strings裡面,但是要注意Storyboard也會有獨立的layout可以動作,所以我做了一個demo,結構展開來長這樣:
我們可以在storyboard裡面作每個語系應該要有的畫面和靜態的文字,而如果需要從.m檔產生的文字,則需要利用到InfoPlist.strings的內容啦!
在InfoPlist.strings裡面應該長這樣:
就像是一個table,使用map的型式,等號左邊是key值,右邊是語系對應的value。
接著就是要調用文字了,這邊不禁要抱怨一下,網路上都說用
NSLocalizedString()方法,整個蛋疼啊,因為這個方法指定了Localization.strings的文件,可是偏偏他預設的文件叫做InfoPlist.strings,心想為什麼Apple要騙我...於是使用了另外一種方法:
NSLocalizedStringFromTable(@"文件的Key值", @"文件名稱", nil);
文件的key值就是我們剛剛說的等號左邊的內容;文件名稱就指定輸入InfoPlist;而第三個參數輸入的內容是一個類似註解的東西,這邊我查到的結果一般是不需要輸入的。
好惹,用了以後就可以如願產生不同語系的資料內文了,
該怎麼測試呢?我們可以在裝置的"設定"->"一般"->"國際設定"中指定語言,調整看看就會發現,我們之前的設定也會跟著改變喔!
該怎麼測試呢?我們可以在裝置的"設定"->"一般"->"國際設定"中指定語言,調整看看就會發現,我們之前的設定也會跟著改變喔!
最後作個筆記,在選擇語系檔的時候常常搞混:
繁體中文:zh-Hant
簡體中文:zh-Hans
繁體中文:zh-Hant
簡體中文:zh-Hans
以上。
沒有留言:
張貼留言
你好,我是小書,如果文章內容有錯誤,或是看到有建議以及任何感想時,歡迎提出分享,我們一起學習一起努力。