根据语言设置更改应用程序中的单词

时间:2012-03-21 14:11:41

标签: c# windows silverlight windows-phone-7

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

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

1 个答案:

答案 0 :(得分:0)

建立您将在应用中使用的已知键的一组键/值对及其值。

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

然后,创建所有密钥,并备份文本以防万一。

使用像Sharp Serializer

这样的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"; } }
}