在Titanium里實現多語言
我這里介紹的方法就可以解決直接在app里隨時更換語言的問題,實現起來也很簡單,原來其實與官方的差不多,也是要通過讀取不同的xml語言文件來顯示相關語言。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就可以實現我們想要的效果了,呵呵,接下來讓我慢慢解釋一下吧。首先第一句
Ti.App.Properties.getString(‘lang’);
就是從當前appsession里獲取語言設置,當然這個可放到數據庫里保存起來也行,否則關了應用下次再開就沒了。第二句
varfile=Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory,’languages/’+langFile+‘.xml’);
就是直接獲取相關的語言文件,因此xml的命名規則要和你設置的語言名稱一致,如en-US.xml,zh-CN.xml…
后面幾句也不需多解釋了,一看就知道是讀取XML然后獲取其屬性值的意思。但這里要注意的是XML文件的格式,必須要有一個根,然后才可填寫鍵值對的語言文字,我剛開始就在這里被卡住了,以下是en-US.xml的內容:
- <?xml version="1.0" encoding="utf-8"?>
- <lang>
- <title>title</title>
- </lang>
OK,就是調用此函數,如以上語言key是title,那么只需直接使用:
Ti.App.Properties.setString(‘lang’,'en-US’);//設置當前語言
Ti.API.info(‘title:’+L(‘title’));
就可以獲取當前語言的文字了,用此方法就可實現讓用戶隨時更換當前語言