Локализация: как разрешить пользователю определять пользовательские ресурсы без компиляции? - PullRequest
1 голос
/ 24 марта 2010

В нашем приложении у нас есть коллекция элементов данных, каждый со свойством DisplayedName. Это свойство должно быть локализовано, то есть оно должно отображаться на языке, выбранном пользователем. Поэтому другое свойство DisplayedNameResourceKey указывает, какой ресурс должен быть возвращен свойством DisplayedName.

В упрощенном коде это означает что-то вроде этого:

public string DisplayedName
{
    get
    {
        return MyResources.ResourceManager.GetObject(this.DisplayedNameResourceKey);
    }
}

public string DisplayedNameResourceKey
{
    get;
    set;
}

Теперь проблема в том, что пользователь должен иметь возможность редактировать эти элементы, включая DisplayedName или, точнее, DisplayedNameResourceKey. И не только это, но и пользователь должен иметь возможность каким-то образом определять новые ресурсы, на которые он затем может ссылаться. То есть он может либо выбрать из предопределенного набора ресурсов (некоторые часто используемые имена), либо определить пользовательский ресурс, который затем также должен быть локализован пользователем.

Однако пользователь не может добавлять пользовательские ресурсы в MyResources во время выполнения и без компиляции. Поэтому нужен другой подход. Это не должно быть очень удобным для пользователя способом (например, пользовательский интерфейс не требуется), потому что это обычно делается нашими сервисными инженерами.

Я думал об использовании файла txt или csv, содержащего пары ключей ресурсов и соответствующие переводы. Отдельный файл будет существовать для каждого языка в предопределенном месте. Но я не очень доволен этой идеей, потому что она требует много работы для разрешения ресурсов.

Кто-нибудь знает хороший подход к такой ситуации?

1 Ответ

0 голосов
/ 25 марта 2010

Вы можете рассмотреть возможность размещения ресурсов в базе данных. Таким образом, вы сохраняете это довольно динамично и быстро.

например. таблица с 3 столбцами: ключ ресурса, язык, сообщение. Вам, вероятно, следует создать составной индекс для ключа ресурса и языковых столбцов для быстрого поиска.

...