.NET Framework
Globalizacja w ASP.NET MVC przy użyciu inteligentnej internacjonalizacji dla ASP.NET
Szukaj…
Uwagi
Inteligentna internacjonalizacja strony ASP.NET
Zaletą tego podejścia jest to, że nie trzeba zaśmiecać kontrolerów i innych klas kodem, aby wyszukać wartości z plików .resx. Po prostu HttpModule
tekst w [[[nawiasach potrójnych.]]] (Separator można konfigurować.) Moduł HttpModule
szuka tłumaczenia w pliku .po w celu zastąpienia rozdzielanego tekstu. Jeśli znaleziono tłumaczenie, HttpModule
zastępuje tłumaczenie. Jeśli tłumaczenie nie zostanie znalezione, usuwa potrójne nawiasy i renderuje stronę z oryginalnym nieprzetłumaczonym tekstem.
Pliki .po są standardowym formatem dostarczania tłumaczeń dla aplikacji, więc istnieje wiele aplikacji do ich edycji. Łatwo jest wysłać plik .po do nietechnicznego użytkownika, aby mógł dodawać tłumaczenia.
Podstawowa konfiguracja i konfiguracja
- Dodaj pakiet nuget I18N do swojego projektu MVC.
- W pliku web.config dodaj
i18n.LocalizingModule
do<httpModules>
lub<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>
- Dodaj folder o nazwie „locale” do katalogu głównego witryny. Utwórz podfolder dla każdej kultury, którą chcesz wspierać. Na przykład
/locale/fr/
. - W każdym folderze specyficznym dla kultury utwórz plik tekstowy o nazwie
messages.po
. - Do celów testowych wprowadź następujące wiersze tekstu w pliku
messages.po
:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- Dodaj kontroler do swojego projektu, który zwraca tekst do przetłumaczenia.
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!]]]");
}
}
}
- Uruchom aplikację MVC i przejdź do trasy odpowiadającej akcji kontrolera, takiej jak http: // localhost: [twój numer_portu] / default .
Zauważ, że adres URL został zmieniony w celu odzwierciedlenia Twojej domyślnej kultury, np
http: // localhost: [numer_portu] / en / default . - Zamień
/en/
w adresie URL na/fr/
(lub dowolną inną kulturę, którą wybrałeś). Strona powinna teraz wyświetlać przetłumaczoną wersję tekstu. - Zmień ustawienie języka przeglądarki, aby preferować alternatywną kulturę, i ponownie przejdź do
/default
. Zauważ, że adres URL został zmieniony w celu odzwierciedlenia Twojej kultury alternatywnej i pojawia się przetłumaczony tekst. - W pliku web.config dodaj programy obsługi, aby użytkownicy nie mogli przeglądać folderu
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>