В нашем приложении у нас есть коллекция элементов данных, каждый со свойством DisplayedName
. Это свойство должно быть локализовано, то есть оно должно отображаться на языке, выбранном пользователем. Поэтому другое свойство DisplayedNameResourceKey
указывает, какой ресурс должен быть возвращен свойством DisplayedName
.
В упрощенном коде это означает что-то вроде этого:
public string DisplayedName
{
get
{
return MyResources.ResourceManager.GetObject(this.DisplayedNameResourceKey);
}
}
public string DisplayedNameResourceKey
{
get;
set;
}
Теперь проблема в том, что пользователь должен иметь возможность редактировать эти элементы, включая DisplayedName
или, точнее, DisplayedNameResourceKey
. И не только это, но и пользователь должен иметь возможность каким-то образом определять новые ресурсы, на которые он затем может ссылаться. То есть он может либо выбрать из предопределенного набора ресурсов (некоторые часто используемые имена), либо определить пользовательский ресурс, который затем также должен быть локализован пользователем.
Однако пользователь не может добавлять пользовательские ресурсы в MyResources
во время выполнения и без компиляции. Поэтому нужен другой подход. Это не должно быть очень удобным для пользователя способом (например, пользовательский интерфейс не требуется), потому что это обычно делается нашими сервисными инженерами.
Я думал об использовании файла txt или csv, содержащего пары ключей ресурсов и соответствующие переводы. Отдельный файл будет существовать для каждого языка в предопределенном месте. Но я не очень доволен этой идеей, потому что она требует много работы для разрешения ресурсов.
Кто-нибудь знает хороший подход к такой ситуации?