.NET Framework
Globalisation dans ASP.NET MVC en utilisant l'internationalisation intelligente pour ASP.NET
Recherche…
Remarques
Internationalisation intelligente pour la page ASP.NET
L'avantage de cette approche est que vous n'avez pas à encombrer les contrôleurs et les autres classes avec du code pour rechercher des valeurs à partir de fichiers .resx. Vous entourez simplement le texte dans [[[triple crochets.]]]] (Le délimiteur est configurable.) Un HttpModule
recherche une traduction dans votre fichier .po pour remplacer le texte délimité. Si une traduction est trouvée, le HttpModule
remplace la traduction. Si aucune traduction n'est trouvée, elle supprime les triples parenthèses et restitue la page avec le texte original non traduit.
Les fichiers .po sont un format standard pour fournir des traductions pour les applications, il existe donc un certain nombre d'applications disponibles pour les éditer. Il est facile d'envoyer un fichier .po à un utilisateur non technique afin qu'il puisse ajouter des traductions.
Configuration et configuration de base
- Ajoutez le package nuget I18N à votre projet MVC.
- Dans web.config, ajoutez le
i18n.LocalizingModule
à votre section<httpModules>
ou<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>
- Ajoutez un dossier nommé "paramètres régionaux" à la racine de votre site. Créez un sous-dossier pour chaque culture que vous souhaitez prendre en charge. Par exemple,
/locale/fr/
. - Dans chaque dossier spécifique à la culture, créez un fichier texte nommé
messages.po
. - À des fins de test, entrez les lignes de texte suivantes dans votre fichier
messages.po
:
#: Translation test
msgid "Hello, world!"
msgstr "Bonjour le monde!"
- Ajoutez un contrôleur à votre projet qui renvoie du texte à traduire.
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!]]]");
}
}
}
- Exécutez votre application MVC et naviguez jusqu'à l'itinéraire correspondant à l'action de votre contrôleur, tel que http: // localhost: [votre numéro de port] / default .
Notez que l'URL est modifiée pour refléter votre culture par défaut, telle que
http: // localhost: [votre numéro de port] / en / default . - Remplacez
/en/
dans l'URL par/fr/
(ou la culture que vous avez sélectionnée). La page doit maintenant afficher la version traduite de votre texte. - Modifiez le paramètre de langue de votre navigateur pour préférer votre autre culture et accédez à
/default
nouveau. Notez que l'URL est modifiée pour refléter votre autre culture et que le texte traduit apparaît. - Dans web.config, ajoutez des gestionnaires pour que les utilisateurs ne puissent pas accéder à votre dossier de
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>