Динамическая локализация ASP.NET для английского и еще одного языка - PullRequest
0 голосов
/ 06 августа 2011

Я создаю шаблон сайта, где владелец сайта сможет выбрать родной язык, отличный от английского, и самостоятельно локализовать некоторый контент.Позвольте мне объяснить это лучше с реальной ситуацией прямо сейчас: мой сайт будет иметь английский и турецкий языки (мой родной язык турецкий, но ЭТО должен быть изменяемым и применяться к любому неанглийскому языку) версии названий основного контента, таких как BLOG, PROJECTS, ABOUT, CONTACT и т. Д., Но их количество и имя полностью зависят от выбора пользователя, поэтому я могу открыть новый раздел с именем MySection, и его название и его родной перевод на турецкий язык будут храниться в моей БД (используя EF).Также в моих настройках в БД хранится код родного языка (в данном случае «tr»).Какой самый модульный / организованный способ отправки содержимого веб-страницы в соответствии с браузером, например:

В БД разделы организованы таким образом (заголовки и их турецкие переводы) (все они будут в произвольном количествеи полностью созданный пользователем):

  Title     NativeTitle
  ---------------------
  BLOG      BLOG
  PROJECTS  PROJELER
  ABOUT     HAKKINDA

Также у меня есть настройка моего родного языка (которую я создал) как tr (которая зависит от владельца сайта и также может быть изменена).Таким образом, в зависимости от предпочтения языка браузера, выбранного пользователем, я хочу показать турецкий контент, а для всех других языковых предпочтений, включая (очевидно) английский, я хочу показать английский контент по умолчанию.Локализация для определенного языка статического контента довольно проста для файлов RESX, но в моей ситуации у меня нет ни статического контента, ни конкретного известного родного языка, поэтому все мои данные поступают из БД.Я хочу закодировать это как можно меньше и как можно более декларативно.Какова лучшая практика делать это?Проверяет ли на странице настройки родного языка и текущей культуры и, если они равны, отправляет родной, отправляя заголовок по умолчанию единственным способом?Это определенно сработает, но что если я захочу распространить его на другие части сайта?Я не хочу, если и везде вокруг сайта, мне нужна какая-то централизованная система отображения строк.Какой лучший способ?

1 Ответ

1 голос
/ 06 августа 2011

Вы можете переопределить метод InitializeCulture (http://msdn.microsoft.com/en-us/library/system.web.ui.page.initializeculture.aspx) в своей базе Pag e, чтобы динамически загружать локализованный контент, проверив свойство Thread.CurrentThread.CurrentUICulture (http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentuiculture.aspx)

...