Je suis en train d'=E9crire une page ASP sur le choix de la langue, elle =
s'affiche bien en Anglais dans IE et en Fran=E7ais dans Firefox, donc la =
localisation implicite est bien acquise.
En revanche, je suis en train de me planter en beaut=E9 pour ce qui est d=
e=20
la localisation explicite.
J'ai cr=E9=E9 une liste d=E9roulante avec comme valeurs les cultures=20
disponibles, donc d'une part la culture par d=E9faut, d'autre part les=20
cultures faisant l'objet de fichiers de ressources, voir fil "R=E9pertoir=
e=20
et nom de fichier aspx" d'avant-hier soir sur la fa=E7on de les conna=EEt=
re.
J'ai bien ajout=E9 if(!this.isPostBack) pour que la liste d=E9roulante ne=
=20
soit initialis=E9e qu'une fois. Jusqu'au choix par l'utilisateur, tout se=
=20
passe bien.
La clef de la culture s=E9lectionn=E9e s'affiche proprement dans un Label=
,=20
toutefois la page reste affich=E9e dans la m=EAme langue.
Il est vrai que j'ai pris une libert=E9 avec le code, qui ins=E8re la=20
fonction dans le fichier asp, alors que je l'ai ins=E9r=E9 en Code-behind=
,=20
dans un fichier cs. Il ne m'est pas vraiment =E9vident que ceci soit d=E9=
cisif.
Je mets une pause sur UICulture =3D selectedlanguage.
Si j'avais la page affich=E9e en Fran=E7ais et que j'ai s=E9lectionn=E9 A=
nglais :
- UICulture est sur "Fran=E7ais"
- selectedlanguage est sur "en"
apr=E8s ex=E9cution de l'instruction :
- UICulture est sur "English"
- selectedlanguage toujours sur "en"
puis Label1 se met bien =E0 "en".
Mais ma page reste bien affich=E9e dans la m=EAme langue, =E0 savoir cell=
e=20
s=E9lectionn=E9e dans les options du navigateur.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gloops
Oh la la qu'est-ce que "j'avais" tout faux ...
Appeler InitializeCulture depuis Page_Load, de toute manière, c'est une ineptie, puisqu'elle doit faire son travail avant la création des contrôles, alors que Page_Load intervient après.
Ensuite, quelque chose a dû me passer au-dessus, car j'ai remplacé le mot-clef "override" par "virtual", la fois d'après ça a bien appelé InitializeCulture sans que je le mentionne dans le Page_Load, la fois d'encore après ça m'a rappelé à l'ordre comme quoi mettre virtual là ce n'était pas très catholique, et c'était bien override qu'il fallait mettre (quelquefois on a des messages d'erreur dont le caractère explicite est douteux, mais là je ne pouvais pas me plaindre de ça). Toutefois ensuite le InitializeCulture était ressuscité, je n'ai plus eu de souci du style "je m'appelle InitializeCulture, je suis là mais personne ne me voit". Donc, j'ai résolu le problème en mettant quelqu e chose de loufoque, et en remettant les choses dans leur état initial ensuite. Ou alors j'ai aussi fait quelque chose à côté sans en pren dre conscience ?
Bon, en tout cas, et d'une.
Ensuite, il y a encore quelque chose qui m'échappe : j'ai bien mis AutoPostBack à True pour le DropDownList1, changer sa valeur provoque bien un rafraîchissement de la page, mais lors du rafraîchissement, pendant le InitializeCulture, isPostBack retourne faux.
Ah, je crois que j'y suis : il doit être initialisé plus tard dans le cycle d'affichage de la page, donc on peut le tester dans Page_Load, mais pas dans InitializeCulture.
Toujours est-il que j'ai remplacé if(this.isPostBack) par
if (Request.Form["DropDownList1"] != null)
et String selectedLanguage = DropDownList1.SelectedItem.Value; par : String selectedLanguage = Request.Form["DropDownList1"];
en laissant toujours, en-dessous : UICulture = selectedLanguage;
et maintenant, ça marche.
Donc, par défaut, on parle à l'utilisateur dans la langue qu'il a dit e dans les options de son navigateur, grâce à la globalisation implicit e, et si il veut changer d'avis (enfin ... parmi les langues que je parle, pas exagérer non plus), sous réserve qu'il accepte l'exécution des scripts, il peut le faire avec la liste déroulante, grâce à la globalisation explicite -qui peut même gérer une liste de langues différente pour chaque page, selon la progression des traductions, la seule restriction étant de ne pas mettre en ligne un fichier de ressources avant d'avoir fait les traductions dedans, bien entendu.
L'étape suivante sera de faire ça dans une page maîtresse, mais si il y a un souci avec ça, on en causera dans un autre fil.
Merci à ceux qui auraient passé du temps là-dessus. _____________________________________ Gloops a écrit, le 08/03/2008 15:17 :
Bonjour tout le monde,
Je suis en train d'écrire une page ASP sur le choix de la langue, ell e s'affiche bien en Anglais dans IE et en Français dans Firefox, donc l a localisation implicite est bien acquise.
En revanche, je suis en train de me planter en beauté pour ce qui est de la localisation explicite.
J'ai créé une liste déroulante avec comme valeurs les cultures disponibles, donc d'une part la culture par défaut, d'autre part les cultures faisant l'objet de fichiers de ressources, voir fil "Réperto ire et nom de fichier aspx" d'avant-hier soir sur la façon de les connaî tre.
J'ai bien ajouté if(!this.isPostBack) pour que la liste déroulante ne soit initialisée qu'une fois. Jusqu'au choix par l'utilisateur, tout se passe bien.
La clef de la culture sélectionnée s'affiche proprement dans un Lab el, toutefois la page reste affichée dans la même langue.
Il est vrai que j'ai pris une liberté avec le code, qui insère la fonction dans le fichier asp, alors que je l'ai inséré en Code-behi nd, dans un fichier cs. Il ne m'est pas vraiment évident que ceci soit dé cisif.
Je mets une pause sur UICulture = selectedlanguage. Si j'avais la page affichée en Français et que j'ai sélectionné Anglais : - UICulture est sur "Français" - selectedlanguage est sur "en"
après exécution de l'instruction : - UICulture est sur "English" - selectedlanguage toujours sur "en"
puis Label1 se met bien à "en".
Mais ma page reste bien affichée dans la même langue, à savoir ce lle sélectionnée dans les options du navigateur.
Ai-je fait (ou pas) quelque chose de travers ?
Oh la la qu'est-ce que "j'avais" tout faux ...
Appeler InitializeCulture depuis Page_Load, de toute manière, c'est une
ineptie, puisqu'elle doit faire son travail avant la création des
contrôles, alors que Page_Load intervient après.
Ensuite, quelque chose a dû me passer au-dessus, car j'ai remplacé le
mot-clef "override" par "virtual", la fois d'après ça a bien appelé
InitializeCulture sans que je le mentionne dans le Page_Load, la fois
d'encore après ça m'a rappelé à l'ordre comme quoi mettre virtual là ce
n'était pas très catholique, et c'était bien override qu'il fallait
mettre (quelquefois on a des messages d'erreur dont le caractère
explicite est douteux, mais là je ne pouvais pas me plaindre de ça).
Toutefois ensuite le InitializeCulture était ressuscité, je n'ai plus eu
de souci du style "je m'appelle InitializeCulture, je suis là mais
personne ne me voit". Donc, j'ai résolu le problème en mettant quelqu e
chose de loufoque, et en remettant les choses dans leur état initial
ensuite. Ou alors j'ai aussi fait quelque chose à côté sans en pren dre
conscience ?
Bon, en tout cas, et d'une.
Ensuite, il y a encore quelque chose qui m'échappe : j'ai bien mis
AutoPostBack à True pour le DropDownList1, changer sa valeur provoque
bien un rafraîchissement de la page, mais lors du rafraîchissement,
pendant le InitializeCulture, isPostBack retourne faux.
Ah, je crois que j'y suis : il doit être initialisé plus tard dans le
cycle d'affichage de la page, donc on peut le tester dans Page_Load,
mais pas dans InitializeCulture.
Toujours est-il que j'ai remplacé if(this.isPostBack) par
if (Request.Form["DropDownList1"] != null)
et String selectedLanguage = DropDownList1.SelectedItem.Value;
par :
String selectedLanguage = Request.Form["DropDownList1"];
en laissant toujours, en-dessous :
UICulture = selectedLanguage;
et maintenant, ça marche.
Donc, par défaut, on parle à l'utilisateur dans la langue qu'il a dit e
dans les options de son navigateur, grâce à la globalisation implicit e,
et si il veut changer d'avis (enfin ... parmi les langues que je parle,
pas exagérer non plus), sous réserve qu'il accepte l'exécution des
scripts, il peut le faire avec la liste déroulante, grâce à la
globalisation explicite -qui peut même gérer une liste de langues
différente pour chaque page, selon la progression des traductions, la
seule restriction étant de ne pas mettre en ligne un fichier de
ressources avant d'avoir fait les traductions dedans, bien entendu.
L'étape suivante sera de faire ça dans une page maîtresse, mais si il y
a un souci avec ça, on en causera dans un autre fil.
Merci à ceux qui auraient passé du temps là-dessus.
_____________________________________
Gloops a écrit, le 08/03/2008 15:17 :
Bonjour tout le monde,
Je suis en train d'écrire une page ASP sur le choix de la langue, ell e
s'affiche bien en Anglais dans IE et en Français dans Firefox, donc l a
localisation implicite est bien acquise.
En revanche, je suis en train de me planter en beauté pour ce qui est de
la localisation explicite.
J'ai créé une liste déroulante avec comme valeurs les cultures
disponibles, donc d'une part la culture par défaut, d'autre part les
cultures faisant l'objet de fichiers de ressources, voir fil "Réperto ire
et nom de fichier aspx" d'avant-hier soir sur la façon de les connaî tre.
J'ai bien ajouté if(!this.isPostBack) pour que la liste déroulante ne
soit initialisée qu'une fois. Jusqu'au choix par l'utilisateur, tout se
passe bien.
La clef de la culture sélectionnée s'affiche proprement dans un Lab el,
toutefois la page reste affichée dans la même langue.
Il est vrai que j'ai pris une liberté avec le code, qui insère la
fonction dans le fichier asp, alors que je l'ai inséré en Code-behi nd,
dans un fichier cs. Il ne m'est pas vraiment évident que ceci soit dé cisif.
Je mets une pause sur UICulture = selectedlanguage.
Si j'avais la page affichée en Français et que j'ai sélectionné Anglais :
- UICulture est sur "Français"
- selectedlanguage est sur "en"
après exécution de l'instruction :
- UICulture est sur "English"
- selectedlanguage toujours sur "en"
puis Label1 se met bien à "en".
Mais ma page reste bien affichée dans la même langue, à savoir ce lle
sélectionnée dans les options du navigateur.
Appeler InitializeCulture depuis Page_Load, de toute manière, c'est une ineptie, puisqu'elle doit faire son travail avant la création des contrôles, alors que Page_Load intervient après.
Ensuite, quelque chose a dû me passer au-dessus, car j'ai remplacé le mot-clef "override" par "virtual", la fois d'après ça a bien appelé InitializeCulture sans que je le mentionne dans le Page_Load, la fois d'encore après ça m'a rappelé à l'ordre comme quoi mettre virtual là ce n'était pas très catholique, et c'était bien override qu'il fallait mettre (quelquefois on a des messages d'erreur dont le caractère explicite est douteux, mais là je ne pouvais pas me plaindre de ça). Toutefois ensuite le InitializeCulture était ressuscité, je n'ai plus eu de souci du style "je m'appelle InitializeCulture, je suis là mais personne ne me voit". Donc, j'ai résolu le problème en mettant quelqu e chose de loufoque, et en remettant les choses dans leur état initial ensuite. Ou alors j'ai aussi fait quelque chose à côté sans en pren dre conscience ?
Bon, en tout cas, et d'une.
Ensuite, il y a encore quelque chose qui m'échappe : j'ai bien mis AutoPostBack à True pour le DropDownList1, changer sa valeur provoque bien un rafraîchissement de la page, mais lors du rafraîchissement, pendant le InitializeCulture, isPostBack retourne faux.
Ah, je crois que j'y suis : il doit être initialisé plus tard dans le cycle d'affichage de la page, donc on peut le tester dans Page_Load, mais pas dans InitializeCulture.
Toujours est-il que j'ai remplacé if(this.isPostBack) par
if (Request.Form["DropDownList1"] != null)
et String selectedLanguage = DropDownList1.SelectedItem.Value; par : String selectedLanguage = Request.Form["DropDownList1"];
en laissant toujours, en-dessous : UICulture = selectedLanguage;
et maintenant, ça marche.
Donc, par défaut, on parle à l'utilisateur dans la langue qu'il a dit e dans les options de son navigateur, grâce à la globalisation implicit e, et si il veut changer d'avis (enfin ... parmi les langues que je parle, pas exagérer non plus), sous réserve qu'il accepte l'exécution des scripts, il peut le faire avec la liste déroulante, grâce à la globalisation explicite -qui peut même gérer une liste de langues différente pour chaque page, selon la progression des traductions, la seule restriction étant de ne pas mettre en ligne un fichier de ressources avant d'avoir fait les traductions dedans, bien entendu.
L'étape suivante sera de faire ça dans une page maîtresse, mais si il y a un souci avec ça, on en causera dans un autre fil.
Merci à ceux qui auraient passé du temps là-dessus. _____________________________________ Gloops a écrit, le 08/03/2008 15:17 :
Bonjour tout le monde,
Je suis en train d'écrire une page ASP sur le choix de la langue, ell e s'affiche bien en Anglais dans IE et en Français dans Firefox, donc l a localisation implicite est bien acquise.
En revanche, je suis en train de me planter en beauté pour ce qui est de la localisation explicite.
J'ai créé une liste déroulante avec comme valeurs les cultures disponibles, donc d'une part la culture par défaut, d'autre part les cultures faisant l'objet de fichiers de ressources, voir fil "Réperto ire et nom de fichier aspx" d'avant-hier soir sur la façon de les connaî tre.
J'ai bien ajouté if(!this.isPostBack) pour que la liste déroulante ne soit initialisée qu'une fois. Jusqu'au choix par l'utilisateur, tout se passe bien.
La clef de la culture sélectionnée s'affiche proprement dans un Lab el, toutefois la page reste affichée dans la même langue.
Il est vrai que j'ai pris une liberté avec le code, qui insère la fonction dans le fichier asp, alors que je l'ai inséré en Code-behi nd, dans un fichier cs. Il ne m'est pas vraiment évident que ceci soit dé cisif.
Je mets une pause sur UICulture = selectedlanguage. Si j'avais la page affichée en Français et que j'ai sélectionné Anglais : - UICulture est sur "Français" - selectedlanguage est sur "en"
après exécution de l'instruction : - UICulture est sur "English" - selectedlanguage toujours sur "en"
puis Label1 se met bien à "en".
Mais ma page reste bien affichée dans la même langue, à savoir ce lle sélectionnée dans les options du navigateur.