.NET Framework
Globalisering i ASP.NET MVC med smart internationalisering för ASP.NET
Sök…
Anmärkningar
Smart internationalisering för ASP.NET-sidan
Fördelen med detta tillvägagångssätt är att du inte behöver röra kontroller och andra klasser med kod för att slå upp värden från .resx-filer. Du omger helt enkelt text i [[[trippelkonsoler.]]] (Avgränsaren kan konfigureras.) En HttpModule
letar efter en översättning i din .po-fil för att ersätta den avgränsade texten. Om en översättning hittas, HttpModule
översättningen. Om ingen översättning hittas tar den bort de tre tripplarna och gör sidan med den ursprungliga oöversatta texten.
.po-filer är ett standardformat för att tillhandahålla översättningar för applikationer, så det finns ett antal applikationer tillgängliga för att redigera dem. Det är enkelt att skicka en .po-fil till en icke-teknisk användare så att de kan lägga till översättningar.
Grundläggande konfiguration och installation
- Lägg till I18N nuget-paketet till ditt MVC-projekt.
- I web.config lägger du till
i18n.LocalizingModule
ii18n.LocalizingModule
<httpModules>
eller<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>
- Lägg till en mapp med namnet "språk" till roten på din webbplats. Skapa en undermapp för varje kultur du vill stödja. Till exempel,
/locale/fr/
. - Skapa en textfil med namnen
messages.po
varje kulturspecifik mapp. - För teständamål, ange följande textrader i din
messages.po
fil:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- Lägg till en controller till ditt projekt som returnerar lite text att översätta.
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!]]]");
}
}
}
- Kör din MVC-applikation och bläddra till den rutt som motsvarar din controlleråtgärd, till exempel http: // localhost: [dittportnummer] / standard .
Observera att URL: n ändras för att återspegla din standardkultur, t.ex.
http: // localhost: [dittportnummer] / sv / standard . - Byt ut
/en/
i URL: n med/fr/
(eller vilken kultur du har valt.) Sidan ska nu visa den översatta versionen av din text. - Ändra webbläsarens språkinställning för att föredra din alternativa kultur och bläddra till
/default
igen. Observera att URL: n ändras för att återspegla din alternativa kultur och att den översatta texten visas. - Lägg till hanterare i web.config så att användare inte kan bläddra till din
locale
mapp.
<!-- 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>