Ricerca…


Osservazioni

Internazionalizzazione intelligente per la pagina ASP.NET

Il vantaggio di questo approccio è che non è necessario ingombrare controller e altre classi con il codice per cercare valori dai file .resx. Si circonda semplicemente il testo in [[[parentesi quadre.]]] (Il delimitatore è configurabile.) Un HttpModule cerca una traduzione nel file .po per sostituire il testo delimitato. Se viene trovata una traduzione, HttpModule sostituisce la traduzione. Se non viene trovata alcuna traduzione, rimuove le parentesi quadre e rende la pagina con il testo originale non tradotto.

I file .po sono un formato standard per la fornitura di traduzioni per applicazioni, quindi sono disponibili numerose applicazioni per modificarle. È facile inviare un file .po a un utente non tecnico in modo che possano aggiungere traduzioni.

Configurazione di base e configurazione

  1. Aggiungi il pacchetto nuget I18N al tuo progetto MVC.
  2. In web.config, aggiungi i18n.LocalizingModule alla sezione <httpModules> o <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. Aggiungi una cartella denominata "locale" alla radice del tuo sito. Crea una sottocartella per ogni cultura che desideri supportare. Ad esempio, /locale/fr/ .
  2. In ogni cartella specifica della cultura, crea un file di testo denominato messages.po .
  3. A scopo di test, inserisci le seguenti righe di testo nel tuo file messages.po :
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
  1. Aggiungi un controller al tuo progetto che restituisce del testo da tradurre.
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. Esegui l'applicazione MVC e accedi al percorso corrispondente all'azione del controller, ad esempio http: // localhost: [yourportnumber] / default .
    Osserva che l'URL è cambiato per riflettere la tua cultura predefinita, come ad esempio
    http: // localhost: [yourportnumber] / it / default .
  2. Sostituisci /en/ nell'URL con /fr/ (o qualsiasi cultura tu abbia selezionato.) La pagina ora dovrebbe visualizzare la versione tradotta del tuo testo.
  3. Modifica le impostazioni della lingua del tuo browser per preferire la tua cultura alternativa e torna a /default nuovo. Osserva che l'URL viene modificato per riflettere la tua cultura alternativa e viene visualizzato il testo tradotto.
  4. In web.config, aggiungi gestori in modo che gli utenti non possano navigare nella tua cartella locale .
<!-- 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow