using UnityEngine; using System.Collections; public class SettingLanguage : MonoBehaviour { void Start () { string systemLanguage = Application.systemLanguage.ToString(); Debug.Log(systemLanguage); } }顯示Chinese,的確我的電腦系統語系是中文。
知道可以偵測到系統語系後,接著就是修改文字,這裡我拿之前使用讀JSON檔的方法:
Unity - JSON檔資料讀取
物件鍵值使用Unity系統有的語系,可以參考:
SystemLanguage
這是要修改的文字,三個UI元件的Text,要轉換的語言是中文、日文、英文和韓文。
JSON檔是這個樣子:
{ "Chinese" : ["中文", "測試", "你好世界"] ,"ChineseTraditional" : ["中文", "測試", "你好世界"] ,"English" : ["English", "test", "HelloWorld"] ,"Japanese" : ["日本語", "テスト", "こんにちは世界"] ,"Korean" : ["한국의", "테스트", "프로그램"] }JSON檔案準備好後,接著就可以做轉換的動作:
using UnityEngine; using System.Collections; using UnityEngine.UI; using LitJson; public class SettingLanguage : MonoBehaviour { public Text language; public Text test; public Text helloworld; void Start () { JsonData jsonData; TextAsset textAsset = Resources.Load<TextAsset>("SystemLanguage");//(1) jsonData = JsonMapper.ToObject(textAsset.text); string systemLanguage = Application.systemLanguage.ToString();//(2) if (((IDictionary)jsonData).Contains(systemLanguage)){//(3) language.text = jsonData[systemLanguage][0].ToString();//(4) test.text = jsonData[systemLanguage][1].ToString(); helloworld.text = jsonData[systemLanguage][2].ToString(); } } }(1)這次使用TextAsset來讀Resources資料夾下的JSON檔。
(2)將抓到系統文字轉換成字串。
(3)寫文寫到一半查到的方法,可以查詢有檔案內有無相同字串。
(4)使用系統文字的字串查詢要轉換的字串。
以下是測試影片:
從影片看的出來是成功的,影片中忘記測試沒對應鍵值的狀況,依條件式來看就是不修改text顯示預設文字,這次就到這裡。
沒有留言:
張貼留言