2015-04-16 41 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内容