0
我有一个连接到服务器的应用程序。我的应用程序必须是多语言的,所以我的服务器上有语言文件。我需要将我的单词的语言改为他们选择的语言环境。根据语言设置更改应用程序中的单词
这样做的最好方法是什么? 我应该使用隔离存储吗?
我有一个连接到服务器的应用程序。我的应用程序必须是多语言的,所以我的服务器上有语言文件。我需要将我的单词的语言改为他们选择的语言环境。根据语言设置更改应用程序中的单词
这样做的最好方法是什么? 我应该使用隔离存储吗?
建立您将在您的应用中使用的已知密钥的集合键/值对及其值。
然后,创建一个Dictionary<string,string>
然后,创建所有的钥匙,以防万一备用文本。
序列化在一块整个字典使用BinarySerializer像Sharp Serializer
然后,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"; } }
}
谢谢您的输入反应。这非常帮助我。 – Kenny 2012-03-22 13:46:03