Suche…


Bemerkungen

Intelligente Internationalisierung für ASP.NET-Seite

Der Vorteil dieses Ansatzes besteht darin, dass Sie Controller und andere Klassen nicht mit Code überladen müssen, um Werte aus RESX-Dateien nachzuschlagen. Sie umgeben den Text einfach in [[[[dreifache Klammern]]] (Das Trennzeichen ist konfigurierbar.) Ein HttpModule sucht in Ihrer .po-Datei nach einer Übersetzung, um den Text mit Trennzeichen zu ersetzen. Wenn eine Übersetzung gefunden wird, ersetzt das HttpModule die Übersetzung. Wenn keine Übersetzung gefunden wird, werden die dreifachen Klammern entfernt und die Seite mit dem ursprünglichen nicht übersetzten Text dargestellt.

.po-Dateien sind ein Standardformat für die Bereitstellung von Übersetzungen für Anwendungen. Daher stehen eine Reihe von Anwendungen zur Bearbeitung zur Verfügung. Es ist einfach, eine .po-Datei an einen nichttechnischen Benutzer zu senden, damit er Übersetzungen hinzufügen kann.

Grundkonfiguration und Setup

  1. Fügen Sie das I18N-Nuget-Paket Ihrem MVC-Projekt hinzu.
  2. Fügen Sie in web.config das i18n.LocalizingModule zum Abschnitt <httpModules> oder <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. Fügen Sie im Stammverzeichnis Ihrer Site einen Ordner mit dem Namen "locale" hinzu. Erstellen Sie für jede Kultur, die Sie unterstützen möchten, einen Unterordner. Zum Beispiel /locale/fr/ .
  2. Erstellen Sie in jedem kulturspezifischen Ordner eine Textdatei mit dem Namen messages.po .
  3. Geben Sie zu Testzwecken die folgenden Textzeilen in Ihre Datei messages.po :
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
  1. Fügen Sie Ihrem Projekt einen Controller hinzu, der den zu übersetzenden Text zurückgibt.
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. Führen Sie Ihre MVC-Anwendung aus, und navigieren Sie zu der Route, die Ihrer Controller-Aktion entspricht, z. B. http: // localhost: [Ihre Portnummer] / default .
    Beachten Sie, dass die URL entsprechend Ihrer Standardkultur geändert wird, z. B.
    http: // localhost: [IhrePortnummer] / de / default .
  2. Ersetzen Sie /en/ in der URL durch /fr/ (oder die von Ihnen ausgewählte Kultur.) Die Seite sollte jetzt die übersetzte Version Ihres Textes anzeigen.
  3. Ändern Sie die Spracheinstellung Ihres Browsers, um Ihre alternative Kultur zu bevorzugen, und navigieren Sie erneut zu /default . Beachten Sie, dass die URL entsprechend Ihrer alternativen Kultur geändert wird und der übersetzte Text angezeigt wird.
  4. Fügen Sie in web.config Handler hinzu, damit Benutzer nicht zu Ihrem locale navigieren können.
<!-- 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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow