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

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

4 ответа

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

  • Создайте папку, назовите ее, например. Ресурсы
  • Щелкните правой кнопкой мыши папку и добавьте класс... выберите файл ресурсов. Назовите это всем, что вам нравится, например. Strings.resx
  • В свойствах файла измените Custom Tool на PublicResXFileCodeGenerator
  • Заполните файл ресурсов с помощью пар ключей и значений перевода (это будет перевод по умолчанию)
  • Создайте другие ресурсы с именем культуры, для которой они предназначены в этом формате: {name}.de.resx, например. Strings.de.resx
  • (Это для Razor), откройте файл web.config в папке Views и добавьте его в /configuration/system.web.webPages.razor/pages/namespaces: < add namespace="Resources" /> (предполагается, что ресурсы - это имя папки, в которой были созданы ресурсы, и вы не изменили пространство имен по умолчанию на самих файлах resouce). Этот шаг означает, что вам не нужно полностью квалифицировать классы ресурсов в своих представлениях каждый раз, когда вы хотите ссылаться на перевод.
  • Используйте переводы вместо текста в своих представлениях, например, со следующим кодом:

    @Strings.MyString

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

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

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


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


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

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

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

И, наконец, я ввел следующее внутри корневого файла Web.Config ниже раздела :

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

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

<h2>@ViewResources.Test1</h2>

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


Следующий шаг, который вам нужен, - это локализовать вашу библиотеку Javascript. Посмотрите здесь: MVC-JavaScript-localization-of-external-js-files

licensed under cc by-sa 3.0 with attribution.