iOS APP中的顯示國際化思路

在學(xué)習(xí)iOS的國際化以前,我有想過,假如多國語言化的全部工作都由我自己來做,該怎么做?

首先,所謂的國際化,無非是針對界面上顯示給用戶看的內(nèi)容,按照用戶設(shè)定的語言類型來顯示不同的字符串。在此之前,我寫過一個GO語言的Web項目,由于目前GO并沒有相對成熟的類似Java的i18n框架,所以我只能全部自己動手來做。

我的構(gòu)想是,在界面上,用戶可以選擇所需要顯示的某個語言,然后將此選擇保存到后臺的用戶設(shè)置偏好里,假定此設(shè)置language字段可以為cn和en(中文和英文),每次用戶請求得到的頁面,可以按照此項設(shè)置去查找相應(yīng)的界面顯示字段,進(jìn)行顯示,這些字段的映射當(dāng)然采用Key-Value的形式,可是Key-Value怎么存儲呢?如果字段數(shù)據(jù)量很大,可以選擇配置在靜態(tài)的配置文件里或者數(shù)據(jù)庫里,如果比較少的話也可以使用某個靜態(tài)類,然后在生成動態(tài)頁面時,按照對應(yīng)的Key,根據(jù)language字段的選擇,索引出對應(yīng)的界面顯示值,放到界面上顯示出來。

按照這個思路,最后算是實現(xiàn)了。

界面顯示國際化思路

因為iOS本身已經(jīng)有了比較好的靜態(tài)字符串Key-Value存取框架,所以我們需要做的,其實只需要借用框架填充我們需要進(jìn)行國際化處理的內(nèi)容就可以了。比較普遍的做法就是創(chuàng)建注入InfoPlist.strings文件和Localization.strings或者其他自定義的strings文件,XCode提供了及其方便的語言選擇和索引讀取對應(yīng)的Key-Value的方法,不需要我們自己寫,這一部分,網(wǎng)上有很多人都寫了使用方法,假設(shè)某個用戶選擇了中文作為語言偏好,那么就去對應(yīng)的中文偏好國際化文件,如Localization.string(zh-CN)文件中查找出某界面上顯示對應(yīng)Key的Value,放到界面上即可。

另一方面,我嘗試過直接使用自定義的plist來存儲和數(shù)據(jù)庫來存儲,這當(dāng)然是可以的,只需要在對應(yīng)的plist文件里或者數(shù)據(jù)庫表中寫好對應(yīng)的Key和Value,然后自己寫讀取的方法進(jìn)行讀取。

綜合起來說,自己寫plist封裝和使用iOS已有的機(jī)制其實都很簡單,這類似于靜態(tài)文件的讀取,數(shù)據(jù)庫的相對而言會稍微復(fù)雜一點,當(dāng)然實際上因為不怎么方便和不實用,也不建議使用數(shù)據(jù)庫存儲的方式??偨Y(jié)起來,其實國際化的實現(xiàn)思路還是比較簡單的,按照當(dāng)前系統(tǒng)/用戶選擇的語言偏好,去對應(yīng)的語言設(shè)定的Key-Value存儲文件/數(shù)據(jù)庫查找出對應(yīng)的值,然后顯示在界面上即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容