在Titanium里實現(xiàn)多語言
我這里介紹的方法就可以解決直接在app里隨時更換語言的問題,實現(xiàn)起來也很簡單,原來其實與官方的差不多,也是要通過讀取不同的xml語言文件來顯示相關(guān)語言。OK,廢話少說,直接上代碼吧:
- functionL(text){
- varlangFile=Ti.App.Properties.getString('lang');
- varfile=Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory,'languages/'+langFile+'.xml');
- varxmltext=file.read().text;
- varxmldata=Ti.XML.parseString(xmltext);
- vardata=xmldata.documentElement.getElementsByTagName(text);
- Ti.API.info('lang:'+JSON.stringify(data.item(0).text));
- if(data!=null)
- returndata.item(0).text;
- return"";
- }
以上一個簡單的function就可以實現(xiàn)我們想要的效果了,呵呵,接下來讓我慢慢解釋一下吧。首先第一句
Ti.App.Properties.getString(‘lang’);
就是從當(dāng)前appsession里獲取語言設(shè)置,當(dāng)然這個可放到數(shù)據(jù)庫里保存起來也行,否則關(guān)了應(yīng)用下次再開就沒了。第二句
varfile=Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory,’languages/’+langFile+‘.xml’);
就是直接獲取相關(guān)的語言文件,因此xml的命名規(guī)則要和你設(shè)置的語言名稱一致,如en-US.xml,zh-CN.xml…
后面幾句也不需多解釋了,一看就知道是讀取XML然后獲取其屬性值的意思。但這里要注意的是XML文件的格式,必須要有一個根,然后才可填寫鍵值對的語言文字,我剛開始就在這里被卡住了,以下是en-US.xml的內(nèi)容:
- <?xml version="1.0" encoding="utf-8"?>
- <lang>
- <title>title</title>
- </lang>
OK,就是調(diào)用此函數(shù),如以上語言key是title,那么只需直接使用:
Ti.App.Properties.setString(‘lang’,'en-US’);//設(shè)置當(dāng)前語言
Ti.API.info(‘title:’+L(‘title’));
就可以獲取當(dāng)前語言的文字了,用此方法就可實現(xiàn)讓用戶隨時更換當(dāng)前語言