Quelqu'un peu me dire quelle la meilleur façon de gérer un site multilangue avec .NET 2.0 ?
Merci
Version imprimable
Quelqu'un peu me dire quelle la meilleur façon de gérer un site multilangue avec .NET 2.0 ?
Merci
Bin, au lieu de coder en dur les texte des controls dans la page .aspx (labels, text des buttons...), utilise les fichiers Resources .resx.
Par exemple :
- t'as une page "default.aspx"
- resources français : "default.aspx.resx"
- resources anglais : "default-US.aspx.resx"
Enfin qqch comme ça. Regarde sur le net pour plus d'explications
J'avais bien l'idée d'utiliser les fichiers mais avec .NET 2.0 ça a changer et c'est pas trpo simple apparement.
En fait, je veux utiliser les fichier de resource .resx. Je n'arrive pas trop. quelqu'un peut me dire commet ça marche ?
Merci
Tu ajoutes ton repertoire axistant, soit App_GlobalResource soit App_LocalResources (voir doc msdn pour la difference entre les deux)
La dedans tu peux gérer l'arborescense que tu souhaites, cela n'a pas d'importance.
Tu y ajoutes un fichier resources, et tu ajoutes des clés et des valeurs.
Dans ton fichier aspx, pour les controles, au lieu de mettre Text="blable" tu mettras
Alors pour le nom du fichier, je pense que comme l'a dit Rodie, tu dois mettre .fr.resx, .en.resx, ....Code:
1
2
3Text="<%$ Resources:NAME_FILE_RESOURCES, NAME_KEY%>"
Fix
Mille fois merci. Juste une derniere question, une fois que j'aurais fait mes deux fichiers resources, comment dire au prog quelle langue (donc quelle fichier de reosource) utiliser ?
je suis également en train de faire cela, et on m'a dit qu'en faite c'etait pris en compte via la localisation définie au niveau de ton browser.
Cela se ferait automatiquement :)
Je n'ai pas encore été testé, pour le moment j'ai une sorte de fichier resource et mes labels prennent bien la valeur du contenu des fichiers resources.
Si tu as fait les testes, avec .en et .fr ou autre, dit moi si ca fonctionne.
Sinon je pense qu'au niveau :
Si tu dois sélectionner dans une page une langue .....Code:
1
2
3 System.Threading.Thread.CurrentThread.CurrentCulture
D'ailleur, tu fais comment pour récuperer les valeurs dans un code behind ? Je crois qu'il existe Resourses.NonDuFichier.Keys.
oui c'est ca
Moi je fais ça :
GetLocalResourceObject("maKeys").ToString()
Et il me fait une erreur :Donc en fait, il ne trouve pas la page de resource. Ma page s'apelle part exemple test.aspx et ma page de resource se nome test.fr.resx...Citation:
The resource class for this page was not found. Please check if the resource file exists and try again.
Normalement, ça devrait marcher non ?
hum, j'utilise que des Globals pour le moment, et dans le code C# je peux faire Resources.NAMEFILE_WITHOUTEXT.KEY_NAME
essaie de rajouter le .aspx.fr.resx
Effectivement :
si ta page s'appelle "default.aspx", le fichier Resource associé doit être : "default.aspx.resx" :)
N'utilise le GlobalResources que si c'est global, et non propre à ta page. Sinon c'est du code malpropre :)
http://ditch.developpez.com/aspnet/tome5/
Certes c'était pour le 1.1. Depuis cela a été un peu simplifié mais dans les principes, tu trouveras les différentes techniques etc. Cela n'a pas changé
Il me met toujours la même erreur. J'ai rajouter le .aspx.fr mais c'est toujours pareil. Je ne sais pas trop quoi faire là...
Voilà ce qu'il me met (en Français) :Mon fichier se nome 'contact-form.aspx', il se trouve dans le dossier 'pages'. Le fichier de resources se trouve dans le dossier 'App_LocalResources' et se nome 'contact-form.aspx.fr.resx'.Citation:
La classe de ressource pour cette page n'a pas été trouvée. Veuillez vérifier si le dossier de ressource existe et essayer encore.
Je ne voit pas pouruqoi il me dit qu'il ne trouve pas.??:cry:
les local ne doivent pas respecter l'arborescence ?
Vraiment spécial ca
J'ai créé un dossier 'page' dans le dossier où se trouve les fichier resource pour essayer de respercter l'arborescence de la page mais ça ne marche pas...
Les noms des fichiers resources sont plutôt comme ceci :
contact-form.aspx.en-US.resx
contact-form.aspx.fr-FR.resx
contact-form.aspx.en-GB.resx
Créer un répertoire "Page" à l'intérieur du répertoire Resources me paraît bizarre.
Pour que ta page .aspx puisse voir son fichier resources .resx, il suffit d'avoir cette arborescence :
\contact-form.aspx
\App_LocalResources\contact-form.aspx.resx
Merci mais ça e marche toujours pas. Il me marque la même erreur.:cry:
Dans le code Behind, il ne faut rien rajouter ? Faut-il ratacher un fichier au code behind ?