Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    Consultant freelance, n'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

Localisation et JavaScript – utilisation des ScriptResources et WebResources – ASP.net Ajax

Lorsque l’on fait une application web contenant du JavaScript, tôt ou tard se pose la question de la localisation, c’est à dire l’affichage des textes en différentes langues. ASP.net Ajax propose une solution utilisant les ressources .net, les fichiers resx.

Afin de mettre en place cette solution, plusieurs étapes sont nécessaires. Tout d’abord il faut utiliser un projet de type “Class Library” puis ajouter un fichier JavaScript que l’on inclut en “Embedded Resource”, il faut également rajouter les fichiers de ressources contenant les différents textes.

image

Il faut ensuite indiquer que notre fichier JavaScript est une WebResource, nous allons pour cela utiliser l’attribut WebResource. Le premier argument, correspond au nom de votre ressource, il est composé du namespace et du nom du fichier, vous pouvez retrouver ce nom en utilisant Reflector.

[assembly: WebResource("ClassLibrary1.Pouet.js", "application/x-javascript")]

Il est également nécessaire d’indiquer que notre WebResource est un ScriptResource, on utilise pour cela l’attribut ScriptResource. C’est ici que l’on associe le fichier Javascript avec notre fichier de ressource. Le premier argument correspond au nom de la WebRessource, le second au nom de la ressource contenant le texte, le dernier au nom de l’objet contenant le texte coté client.

[assembly: ScriptResource("ClassLibrary1.Pouet.js", "ClassLibrary1.Pouet", "Pouet.Res")]

Il ne reste plus qu’à ajouter votre fichier JavaScript à votre page, pour cela 2 possibilités :

public class MyControl : ScriptControl { // ... protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors() { yield break; } protected override IEnumerable<ScriptReference> GetScriptReferences() { yield return new ScriptReference("ClassLibrary1.Pouet.js", typeof(MyControl).Assembly.FullName); } }
  • Soit vous ajoutez votre script via le ScriptManager :

<asp:ScriptManager runat="server"> <Scripts> <asp:ScriptReference Assembly="ClassLibrary1" Name="ClassLibrary1.Pouet.js" /> </Scripts> </asp:ScriptManager>

Dans les 2 cas, votre page pointera vers un nouveau fichier JavaScript :

image

On peut voir qu’un nouvel objet à été créé côté client. Cet objet contient les différents textes localisés. Il est alors possible d’accéder aux ressources via :

alert(Pouet.Res.Hello)

Comment est géré le choix de la langue à utiliser ?

Tout comme ASP.net, le choix de la ressource à utiliser est sélectionné en fonction de la culture du thread courant.

Il est possible de spécifier cette culture au niveau du web.config via la section system.web/globalization. Les valeurs possibles sont “auto” pour utiliser la langue du navigateur ou une culture existante par exemple “FR-fr”

<configuration> ... <system.web> ... <globalization uiCulture="auto"/> </system.web> </configuration>

Et vous ? Comment gérez-vous la localisation en JavaScript ?

Posted: lundi 7 septembre 2009 16:44 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

lesaint a dit :

Merci pour cet article interessant, néanmoins j'aimerais une precision sur quelle classe les attributs WebRessource et ScriptRessource sont-ils appliqués.

Bon coding.

# septembre 24, 2009 10:56

Zied Nemili a dit :

très intéressant, c'est une manière très élégante. Pour ma part j'ai opté pour un moyen très simple aussi mais un peu moins élégant que ta solution. En fait tu écris un fichier xml avec des pairs key / value. Par la suite tu définis un service qui renvoie le contenu de ce fichier xml en json, la transformation peut se faire soit par un fichier xslt soit par le sérialiseur JSON. Côté client on récupère un objet JSON en faisant un eval dessus qu'on peut utiliser facilement.

On peut également écrire les pairs key/value directement en json et le renvoyer tel qu'il est mais je ne l'ai pas fait parce que je pense qu'un fichier xml reste plus clair et plus lisible.

# septembre 29, 2009 22:34

discodog a dit :

Sympa,ya même paperblog qui fait référence à ton billet ;)

<span style="display: none">http://www.paperblog.fr/2000195/faststone-capture-un-outil-agreable-pour-faire-des-captures-d-ecran/</span>

# novembre 20, 2009 19:43
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- TechDays Paris 2010 : Plan de migration vers SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 1 heure et 10 minutes

- TechDays Paris 2010 : La pleinière du second jour par Blog Technique de Romelard Fabrice le il y a 2 heures et 15 minutes

- Visual Studio 2010 and .NET Framework 4 Release Candidate now available par Matthieu MEZIL le il y a 5 heures et 21 minutes

- Création d’une base de donnée sous SQL Azure par Le Blog (Vert) d'Arnaud JUND le il y a 6 heures et 18 minutes

- TechDays Paris 2010 : Les Services d’applications dans SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 16 heures et 17 minutes

- TechDays Paris 2010 : La GED et SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 20 heures et 15 minutes

- TechDays Paris 2010 : SharePoint 2010 et Les réseaux sociaux par Blog Technique de Romelard Fabrice le il y a 21 heures et 29 minutes

- TechDays Paris 2010 : SharePoint 2010 – Description et nouveautés par Blog Technique de Romelard Fabrice le il y a 22 heures et 36 minutes

- TechDays Paris 2010 : Pleinière Lundi par Blog Technique de Romelard Fabrice le il y a 22 heures et 40 minutes

- [Techdays 2010] #02 - Nouveautés de SharePoint 2010 par Le petit blog de Pierre / Pierre's little blog le il y a 23 heures et 18 minutes