.NET Framework
Globalizzazione in ASP.NET MVC tramite l'internazionalizzazione intelligente per ASP.NET
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
- Aggiungi il pacchetto nuget I18N al tuo progetto MVC.
- 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>
- Aggiungi una cartella denominata "locale" alla radice del tuo sito. Crea una sottocartella per ogni cultura che desideri supportare. Ad esempio,
/locale/fr/
. - In ogni cartella specifica della cultura, crea un file di testo denominato
messages.po
. - A scopo di test, inserisci le seguenti righe di testo nel tuo file
messages.po
:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- 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!]]]");
}
}
}
- 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 . - Sostituisci
/en/
nell'URL con/fr/
(o qualsiasi cultura tu abbia selezionato.) La pagina ora dovrebbe visualizzare la versione tradotta del tuo testo. - 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. - 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>