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