Question

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 la meilleure solution ?

Était-ce utile?

La solution

Si vous utilisez les moteurs d'affichage 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 on y pense car les ressources locales sont locales sur une page aspx et dans le contrôleur, vous n'avez même pas sélectionné votre vue.

Autres conseils

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

C'est un emballage autour du HttpContext.Current.GetGlobalResourceString et HttpContext.Current.GetLocalResourceString cela 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.

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, utilisez toujours les fichiers de ressources.

Le projet Orchard utilise une méthode de raccourci appelée « T » pour effectuer toutes les traductions de chaînes sur la page.Vous verrez donc des balises avec un @T("A String to Translate").

J'ai l'intention d'examiner comment cela est mis en œuvre en coulisses et potentiellement de l'utiliser dans de futurs projets.Le nom court garde le code plus propre puisqu'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 emplacement pour décoder ce que devrait être la chaîne réelle ici.

Voir http://orchardproject.net pour plus d'informations.

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 une manière 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

Il s'agit d'une autre option, et vous aurez accès à CurrentUICulture dans le contrôleur :

Vérifier MVC3-multi-langue

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top