.NET Framework
Глобализация в ASP.NET MVC с использованием интеллектуальной интернационализации для ASP.NET
Поиск…
замечания
Интеллектуальная интернационализация для страницы ASP.NET
Преимущество этого подхода в том, что вам не нужно загромождать контроллеры и другие классы с кодом для поиска значений из .resx-файлов. Вы просто размещаете текст в [[[тройные скобки.]]] (Разделитель настраивается.) HttpModule
ищет перевод в вашем файле .po, чтобы заменить разделительный текст. Если перевод найден, HttpModule
заменяет перевод. Если перевод не найден, он удаляет тройные скобки и отображает страницу с оригинальным нетранслируемым текстом.
.po файлы являются стандартным форматом для доставки переводов для приложений, поэтому для их редактирования имеется ряд приложений. Легко отправить файл .po нетехническому пользователю, чтобы они могли добавлять переводы.
Базовая конфигурация и настройка
- Добавьте пакет nuget I18N в проект MVC.
- В web.config добавьте
i18n.LocalizingModule
вi18n.LocalizingModule
<httpModules>
или<modules>
.
<!-- IIS 6 -->
<httpModules>
<add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
</httpModules>
<!-- IIS 7 -->
<system.webServer>
<modules>
<add name="i18n.LocalizingModule" type="i18n.LocalizingModule, i18n" />
</modules>
</system.webServer>
- Добавьте папку с именем «locale» в корень вашего сайта. Создайте подпапку для каждой культуры, которую вы хотите поддержать. Например,
/locale/fr/
. - В каждой папке с конкретными культурами создайте текстовый файл с именем
messages.po
. - Для тестирования введите следующие строки текста в файл
messages.po
:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- Добавьте контроллер в свой проект, который возвращает текст для перевода.
using System.Web.Mvc;
namespace I18nDemo.Controllers
{
public class DefaultController : Controller
{
public ActionResult Index()
{
// Text inside [[[triple brackets]]] must precisely match
// the msgid in your .po file.
return Content("[[[Hello, world!]]]");
}
}
}
- Запустите приложение MVC и перейдите на маршрут, соответствующий действию вашего контроллера, например http: // localhost: [yourportnumber] / default .
Обратите внимание, что URL-адрес изменен, чтобы отразить вашу культуру по умолчанию, например
http: // localhost: [yourportnumber] / en / default . - Замените
/en/
в URL с/fr/
(или любой культурой, которую вы выбрали.) На странице теперь должна отображаться переведенная версия вашего текста. - Измените язык своего браузера, чтобы предпочесть альтернативную культуру и снова просмотреть
/default
. Обратите внимание, что URL-адрес изменен, чтобы отразить вашу альтернативную культуру, и появится переведенный текст. - В web.config добавьте обработчики, чтобы пользователи не могли просматривать вашу папку
locale
.
<!-- IIS 6 -->
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
</system.web>
<!-- IIS 7 -->
<system.webServer>
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
</handlers>
</system.webServer>
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow