2012-03-21 116 views
0

我有一个连接到服务器的应用程序。我的应用程序必须是多语言的,所以我的服务器上有语言文件。我需要将我的单词的语言改为他们选择的语言环境。根据语言设置更改应用程序中的单词

这样做的最好方法是什么? 我应该使用隔离存储吗?

回答

0

建立您将在您的应用中使用的已知密钥的集合键/值对及其值。

然后,创建一个Dictionary<string,string>

然后,创建所有的钥匙,以防万一备用文本。

序列化在一块整个字典使用BinarySerializer像Sharp Serializer

然后,serializeDictionary形式

strings.default 

然后,让你的服务器返回XML,JSON等与键/价值观和语言。

<strings language="en-us"> 
<string name="start">start</string> 
</strings> 

连载这盘在另一词典:

strings.en-us 

然后,当应用程序启动时,决定语言,抓住从磁盘上的文件,每当你需要使用字符串,关键他们在字典里。一次存储整个字典将会阻止一遍又一遍地转到磁盘的性能。

//为您的字符串创建一个接口。这将允许您创建一个不依赖于您的服务器/实现的DesignTime版本。

public interface IStringDictionary 
    { 
     string Start { get; } 
     //the rest of your strings 
    } 

//创建字典的实现。

public class StringDictionary : IStringDictionary 
    { 
     private Dictionary<string, string> _dictionary; 

     public StringDictionary(string languageName = "default") 
     { 

      DictionaryLanguage = languageName; 

     } 

     public string Start 
     { 
      get { return _dictionary["start"]; } 
      //your predefined key here, (should probably fallback/return null, or something) 
     } 



     private string _dictionaryLanguage; 

     public string DictionaryLanguage 
     { 
      get { return _dictionaryLanguage; } 
      set 
      { 
       if (_dictionaryLanguage == value) return; 
       _dictionaryLanguage = value; 
       _dictionary = LoadFromDisk("strings." + value); //create this method 
      } 
     } 



    } 

//创建一个模拟版本

public class MockStringDictionary : IStringDictionary 

{ 
    public string Start { get { return "start"; } } 
} 
+0

谢谢您的输入反应。这非常帮助我。 – Kenny 2012-03-22 13:46:03

相关问题