2015-04-16 38 views
0

我想根據所選語言切換包含我應用程序數據的json文件。切換json數據文件

基本上當語言被改變,這將意味着改變數據URI以指向新的URI:

烏里dataUri =新URI( 「MS-APPX:///DataModel/SampleData.json」);

我使用下面的開關用於此目的:

System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentUICulture; 

     string locale = ci.ToString(); 

     switch (locale) 
     { 
      case "fr": 
       { 
        Uri dataUri = new Uri("ms-appx:///DataModel/SampleDataFrench.json"); 

        break; 
       } 

      case "en": 
       { 
        Uri dataUri = new Uri("ms-appx:///DataModel/SampleDataEnglish.json"); 
       } 
     } 

我得到的錯誤:在目前情況下不存在「名稱「dataUri'does什麼我做錯了,如何解決這個問題。 ?

回答

1

我想Sunil Kumar S C是正確的,你所定義的dataUri只能在case內工作。

關於你的代碼的另一個建議是你最好不要使用開關盒來做到這一點,因爲當你需要支持一種新的文化時,你需要改變代碼。

您可以直接在文件名後添加文化,如果特定文化文件不存在,則使用默認文化。所以當你想支持更多的文化時,你只需要添加一個新文件,並且不需要更改代碼。

System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.CurrentUICulture; 
string locale = ci.ToString(); 
Uri dataUri = new Uri(string.Format("ms-appx:///DataModel/SampleData.{0}.json", ci.ToString())); 
+0

這是一個很好的提示!謝謝。 – Aiseduk

0

嘿它只是一個輔助的錯誤。你在本地定義dataUri案件。ü應該做這樣的。 希望這有助於。謝謝

 Uri dataUri = null; 
     switch (locale) 
     { 
      case "fr": 
       { 
        dataUri = new Uri("ms-appx:///DataModel/SampleDataFrench.json"); 
        break; 
       } 
      case "en-US": 
       { 
        dataUri = new Uri("ms-appx:///DataModel/SampleDataEnglish.json"); 
        break; 
       } 
     } 
     //You can access it now --- dataUri 
+0

啊!我錯過了這一點..感謝小費。 – Aiseduk

0

Uri變量dataUri = null;這個變量是發表在公共密封類ItemPage面積:頁

反序列化JSON內容