Глобализация в ASP.Net MVC 3 - PullRequest
       1

Глобализация в ASP.Net MVC 3

27 голосов
/ 01 апреля 2011

Я пытаюсь добиться глобализации / локализации в моем приложении MVC 3. Я не хочу разных просмотров для каждого языка. Пожалуйста, предложите, как я могу продолжить. Любые поддерживаемые ссылки / URL будут очень полезны.

Ответы [ 4 ]

43 голосов
/ 01 апреля 2011

Вы локализуете его так же, как и любое другое приложение, подобное этому:

  1. Создайте папку, назовите ее, например, Ресурсы
  2. Щелкните правой кнопкой мыши папку и добавьте класс ... выберите файл ресурса. Называй как угодно, например. Strings.resx
  3. В свойствах файла измените Custom Tool на PublicResXFileCodeGenerator
  4. Заполните файл ресурсов парами ключей и значений перевода (это будет перевод по умолчанию)
  5. Создайте другие ресурсы с именем культуры, для которой они предназначены, в следующем формате: {name} .de.resx, например. Strings.de.resx
  6. (Это для Razor) взломать файл web.config в папке Views и добавить его в /configuration/system.web.webPages.razor/pages/namespaces: (при условии наличия ресурсов имя папки, в которой вы создали ресурсы, и вы не изменили пространство имен по умолчанию в самих файлах ресурсов). Этот шаг означает, что вам не нужно полностью определять классы ресурсов в ваших представлениях каждый раз, когда вы хотите сослаться на перевод.
  7. Используйте переводы вместо текста в ваших представлениях, как со следующим кодом:

    @Strings.MyString
    

Строки будут автоматически переведены в представление в зависимости от CultureInfo.CurrentCulture, но это не будет установлено автоматически для вас

Вам нужно будет изменить CurrentCulture (потенциально в Application_BeginRequest). Как это сделать, зависит от вас, это может быть значение маршрута, которое его устанавливает, или вы можете прочитать язык браузера пользователя

Список предпочтительных языков пользователя (по порядку) можно найти в HttpContext.Current.Request.UserLanguages.

5 голосов
/ 22 июля 2013

Чтобы добавить некоторые детали к отличный ответ Мартина Бута (на случай, если его ссылка на MediaFire может исчезнуть), вот как я его идентифицировал:

Я использовал два файла, так как яна данный момент нужны только английский и немецкий ("de"):

enter image description here

Для свойств каждого файла мне пришлось вручную ввести Пользовательский инструмент кака также значения пространства имен пользовательских инструментов для каждого файла:

enter image description here

enter image description here

И, наконец, я ввел следующее внутрикорневой файл Web.Config под разделом <system.web>:

<globalization uiCulture="auto" culture="auto" />

Конечно, я также добавил директиву пространства имен в файл Web.Config ниже папки Views (то есть не корневой), как описывает Мартин:

<add namespace="ViewResources" />

И тогда я наконец смогу получить доступ к строго типизированным ресурсам в моем (частичном) представлении Razor:

<h2>@ViewResources.Test1</h2>

Кстати:это работало с MVC 4, тоже не только MVC 3.

5 голосов
/ 12 августа 2011

Вот отличный подробный пост о MVC 3 Глобализация / Интернационализация http://afana.me/post/aspnet-mvc-internationalization-part-2.aspx

1 голос
/ 18 мая 2012

Следующим необходимым шагом является локализация вашей библиотеки Javascript.Посмотрите здесь: MVC-JavaScript-локализация-внешних-js-файлов

...