Установите пару ключей / значений для известных ключей, которые вы будете использовать в своем приложении, и их значение.
Затем создайте 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"; } }
}