.NET Framework
Globalisering in ASP.NET MVC met behulp van slimme internationalisering voor ASP.NET
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
- Voeg het I18N nuget-pakket toe aan uw MVC-project.
- 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>
- 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/
. - Maak in elke cultuurspecifieke map een tekstbestand met de naam
messages.po
. - Voer voor testdoeleinden de volgende tekstregels in uw
messages.po
bestand in:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- 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!]]]");
}
}
}
- 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 . - 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. - 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. - 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>