Zoeken…


Opmerkingen

Slimme internationalisering voor ASP.NET-pagina

Het voordeel van deze aanpak is dat u controllers en andere klassen niet met code hoeft te rommelig maken om waarden uit .resx-bestanden op te zoeken. U omringt eenvoudig tekst tussen [[[drievoudige haakjes.]]] (Het scheidingsteken is configureerbaar.) Een HttpModule zoekt naar een vertaling in uw .po-bestand om de gescheiden tekst te vervangen. Als een vertaling wordt gevonden, vervangt de HttpModule de vertaling. Als er geen vertaling wordt gevonden, worden de drievoudige haakjes verwijderd en wordt de pagina weergegeven met de originele niet-vertaalde tekst.

.po-bestanden zijn een standaardindeling voor het leveren van vertalingen voor toepassingen, dus er zijn een aantal toepassingen beschikbaar om ze te bewerken. Het is eenvoudig om een .po-bestand naar een niet-technische gebruiker te sturen, zodat deze vertalingen kunnen toevoegen.

Basisconfiguratie en setup

  1. Voeg het I18N nuget-pakket toe aan uw MVC-project.
  2. Voeg in web.config de i18n.LocalizingModule aan uw <httpModules> of <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. Voeg een map met de naam 'locale' toe aan de hoofdmap van uw site. Maak een submap voor elke cultuur die u wilt ondersteunen. Bijvoorbeeld /locale/fr/ .
  2. Maak in elke cultuurspecifieke map een tekstbestand met de naam messages.po .
  3. Voer voor testdoeleinden de volgende tekstregels in uw messages.po bestand in:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
  1. Voeg een controller toe aan uw project die wat tekst retourneert om te vertalen.
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. Voer uw MVC-applicatie uit en blader naar de route die overeenkomt met uw controlleractie, zoals http: // localhost: [uwpoortnummer] / standaard .
    Merk op dat de URL is gewijzigd om uw standaardcultuur weer te geven, zoals
    http: // localhost: [uwpoortnummer] / nl / standaard .
  2. Vervang /en/ in de URL door /fr/ (of welke cultuur je ook hebt geselecteerd.) De pagina zou nu de vertaalde versie van je tekst moeten weergeven.
  3. Wijzig de taalinstelling van uw browser om uw alternatieve cultuur te verkiezen en blader opnieuw naar /default . Merk op dat de URL is gewijzigd om uw alternatieve cultuur weer te geven en de vertaalde tekst verschijnt.
  4. Voeg in web.config handlers toe zodat gebruikers niet naar uw locale map kunnen bladeren.
<!-- 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow