Комплексная локализация с MVC ASP.NET - PullRequest
0 голосов
/ 19 июля 2011

В настоящее время у нас есть веб-формы, настроенные для нашего веб-сайта, и мы хотим постепенно преобразовать их в MVC.В настоящее время мы храним переводы в базе данных.наша таблица перевода содержит столбцы для каждого языка и своего рода заголовок.который мы можем отождествить с переводом (Первичный ключ)

Но он становится более сложным, когда у нас могут быть разные клиенты, которым нужны разные слова для одного и того же бита текста.

Например, один хочет, чтобы он прочитал: - Стоимость доставки. А следующий может пожелать, чтобы он был - Цены на доставку.

. Таким образом, у нас есть второй набор данных CustomTranslation, который будет таким же, как перевод, но такжеесть идентификационный номер клиента в нем.Если пользователь вошел в систему и ищет «Идентифицировать перевод» как «DeliveryCost», он проверит, есть ли запись в таблице CustomTranslation, и будет использовать ее сверх стандартной таблицы перевода.

После этого он выберет соответствующий язык, который хотят пользователи.

По сути, я должен иметь возможность переводить наш веб-сайт в зависимости от настроек пользователя.А также в компании, в которой они работают (наш клиент)

Общий метод локализации использует файлы ресурсов, но нам нужно действительно хранить их в базе данных.Это создает вторую проблему, которая заключается в том, что когда вы пытаетесь объявить отображаемые имена и сообщения проверки правильности, они также должны иметь возможность иметь другой текст и / или переводы, но обычно это ожидает статическое поле, которого у нас не было бы.

Как лучше всего решить эту сложную проблему локализации?

Заранее спасибо.Стив

1 Ответ

1 голос
/ 19 июля 2011

Проблема 1 - Наличие ресурсов в базе данных
Используйте подход, использованный в этой статье для расширения стандартных ресурсов в базе данных.

Проблема 2 - Пользовательская локализация для каждого клиента
Нет проблем, стандартный подход .net поддерживает локализацию, включая регион или клиента, просто используйте, например, en-US, en-US-Customer1, en-US-Customer2и т. д.

...