我有一个连接到服务器的应用程序。我的应用程序必须是多语言,所以我的服务器上有语言文件。我需要将我的单词的语言更改为他们选择的语言设置。
最好的方法是什么? 我应该使用隔离存储吗?
答案 0 :(得分:0)
建立您将在应用中使用的已知键的一组键/值对及其值。
然后,创建一个Dictionary<string,string>
然后,创建所有密钥,并备份文本以防万一。
这样的BinarySerializer将整个字典序列化为一个整体然后,serialize
表单中的Dictionary
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"; } }
}