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

  1. Dodaj pakiet nuget I18N do swojego projektu MVC.
  2. 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>
  1. 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/ .
  2. W każdym folderze specyficznym dla kultury utwórz plik tekstowy o nazwie messages.po .
  3. Do celów testowych wprowadź następujące wiersze tekstu w pliku messages.po :
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
  1. 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!]]]");
        }
    }
}
  1. 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 .
  2. Zamień /en/ w adresie URL na /fr/ (lub dowolną inną kulturę, którą wybrałeś). Strona powinna teraz wyświetlać przetłumaczoną wersję tekstu.
  3. 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.
  4. 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>


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow