internationalization - Plusieurs langues dans une application ASP.NET MVC?

Translate

Quelle est la meilleure façon de prendre en charge plusieurs langues pour l'interface dans une application ASP.NET MVC? J'ai vu des gens utiliser des fichiers de ressources pour d'autres applications. Est-ce toujours le meilleur moyen?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Si vous utilisez les moteurs de vue par défaut, les ressources locales fonctionnent dans les vues. Cependant, si vous devez récupérer des chaînes de ressources dans une action de contrôleur, vous ne pouvez pas obtenir de ressources locales et devez utiliser des ressources globales.

Cela a du sens quand vous y réfléchissez car les ressources locales sont locales à une page aspx et dans le contrôleur, vous n'avez même pas sélectionné votre vue.

La source
Translate

j'ai trouvécette ressourceêtre très utile

C'est une enveloppe autour duHttpContext.Current.GetGlobalResourceStringetHttpContext.Current.GetLocalResourceStringqui vous permet d'appeler les ressources comme ça ...

// default global resource
Html.Resource("GlobalResource, ResourceName")

// global resource with optional arguments for formatting
Html.Resource("GlobalResource, ResourceName", "foo", "bar")

// default local resource
Html.Resource("ResourceName")

// local resource with optional arguments for formatting
Html.Resource("ResourceName", "foo", "bar")

Le seul problème que j'ai trouvé est que les contrôleurs n'ont pas accès aux chaînes de ressources locales.

La source
Translate

Oui, les ressources restent le meilleur moyen de prendre en charge plusieurs langues dans l'environnement .NET. Parce qu'ils sont faciles à référencer et encore plus faciles à ajouter de nouvelles langues.

Site.resx
Site.en.resx
Site.en-US.resx
Site.fr.resx
etc...

Vous avez donc raison d'utiliser toujours les fichiers de ressources.

La source
Translate

Le projet Orchard utilise une méthode de raccourci appelée «T» pour effectuer toutes les traductions de chaînes dans la page. Vous verrez donc des balises avec un @T ("Une chaîne à traduire").

J'ai l'intention de regarder comment cela est mis en œuvre dans les coulisses et de l'utiliser potentiellement dans de futurs projets. Le nom court garde le code plus propre car il sera utilisébeaucoup.

Ce que j'aime dans cette approche, c'est que la chaîne d'origine (en anglais, dans ce cas) est toujours facilement visible dans le code et ne nécessite pas de recherche dans un outil de ressources ou à un autre endroit pour décoder ce que la chaîne réelle devrait être ici.

Voirhttp://orchardproject.netpour plus d'informations.

La source
ADB
Translate

Certaines des autres solutions mentionnées comme réponse ne fonctionnent pas pour la version publiée de MVC (elles fonctionnaient avec les versions précédentes d'alpha / beta).

Voici un bon article décrivant un moyen d'implémenter une localisation qui sera fortement typée et n'interrompra pas les tests unitaires des contrôleurs et des vues:guide de localisation pour MVC v1

La source
Translate

Ceci est une autre option, et vous aurez accès à la CurrentUICulture dans le contrôleur:

VérifierMVC3-multi-langue

La source