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

  1. Lägg till I18N nuget-paketet till ditt MVC-projekt.
  2. I web.config lägger du till i18n.LocalizingModule i i18n.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>
  1. 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/ .
  2. Skapa en textfil med namnen messages.po varje kulturspecifik mapp.
  3. För teständamål, ange följande textrader i din messages.po fil:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
  1. 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!]]]");
        }
    }
}
  1. 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 .
  2. Byt ut /en/ i URL: n med /fr/ (eller vilken kultur du har valt.) Sidan ska nu visa den översatta versionen av din text.
  3. Ä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.
  4. 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>


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow