OVH Cloud OVH Cloud

Localization ASP.NET 2.0

8 réponses
Avatar
JLacerte
Bonjour,

Je cherche un exemple en ASP.NET 2.0 qui me permettrait de changer la langue
d'affichage au runtime (et non pas sur la langue de préférence du Browser)
(Ex un bouton)



Merci

8 réponses

Avatar
Patrice
Cela ne change pas par rapport à 1.1. Changer le culture de la thread ou de
la page (ou peut-être le "profile" prend il cela en charge ?)

Patrice

--

"JLacerte" a écrit dans le message de
news:
Bonjour,

Je cherche un exemple en ASP.NET 2.0 qui me permettrait de changer la


langue
d'affichage au runtime (et non pas sur la langue de préférence du Browser)
(Ex un bouton)



Merci



Avatar
JLacerte
J'ai fait cela mais je suis toujours un pas de retard.
Ex: Si la 1e fois je suis "fr-CA" la page s'affiche en français
Je change pour "en-CA", la page s'affiche encore en français
Je change pour "fr-CA", cette fois la page s'affiche en Anglais
Je change pour "en-CA", la page s'affiche en français, etc


"Patrice" a écrit :

Cela ne change pas par rapport à 1.1. Changer le culture de la thread ou de
la page (ou peut-être le "profile" prend il cela en charge ?)

Patrice

--

"JLacerte" a écrit dans le message de
news:
> Bonjour,
>
> Je cherche un exemple en ASP.NET 2.0 qui me permettrait de changer la
langue
> d'affichage au runtime (et non pas sur la langue de préférence du Browser)
> (Ex un bouton)
>
>
>
> Merci
>





Avatar
Patrice
A quel moment le fais tu ? Visiblement la manip doit-être faite trop tard ce
qui sera sans doute le cas par exemple si tu le gères dans un gestionnaire
d'évènement.


Patrice




--

"JLacerte" a écrit dans le message de
news:
J'ai fait cela mais je suis toujours un pas de retard.
Ex: Si la 1e fois je suis "fr-CA" la page s'affiche en français
Je change pour "en-CA", la page s'affiche encore en français
Je change pour "fr-CA", cette fois la page s'affiche en Anglais
Je change pour "en-CA", la page s'affiche en français, etc


"Patrice" a écrit :

> Cela ne change pas par rapport à 1.1. Changer le culture de la thread


ou de
> la page (ou peut-être le "profile" prend il cela en charge ?)
>
> Patrice
>
> --
>
> "JLacerte" a écrit dans le message


de
> news:
> > Bonjour,
> >
> > Je cherche un exemple en ASP.NET 2.0 qui me permettrait de changer la
> langue
> > d'affichage au runtime (et non pas sur la langue de préférence du


Browser)
> > (Ex un bouton)
> >
> >
> >
> > Merci
> >
>
>
>


Avatar
JLacerte
1) Sur le click d'un LinkButton je place le code de langue dans une variable
de session (Session["Language"] = language)
2) J'ai fait une classe de base (public partial class BagePage :
System.Web.UI.Page)
où j'ai mis le code suivant :
...
protected override void InitializeCulture()
{
string language = Session["Language"] as string;
if (language != null)
{
this.Culture = language;
this.UICulture = language;
Thread.CurrentThread.CurrentCulture = new CultureInfo(language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
}
base.InitializeCulture();
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
this.InitializeCulture();
}
...
ET Toutes mes pages hérite de cette classe de base

--> Donc ça se passe dans le PreRender des pages

Merci pour ton aide

Jacques


"Patrice" a écrit :

A quel moment le fais tu ? Visiblement la manip doit-être faite trop tard ce
qui sera sans doute le cas par exemple si tu le gères dans un gestionnaire
d'évènement.


Patrice




--

"JLacerte" a écrit dans le message de
news:
> J'ai fait cela mais je suis toujours un pas de retard.
> Ex: Si la 1e fois je suis "fr-CA" la page s'affiche en français
> Je change pour "en-CA", la page s'affiche encore en français
> Je change pour "fr-CA", cette fois la page s'affiche en Anglais
> Je change pour "en-CA", la page s'affiche en français, etc
>
>
> "Patrice" a écrit :
>
> > Cela ne change pas par rapport à 1.1. Changer le culture de la thread
ou de
> > la page (ou peut-être le "profile" prend il cela en charge ?)
> >
> > Patrice
> >
> > --
> >
> > "JLacerte" a écrit dans le message
de
> > news:
> > > Bonjour,
> > >
> > > Je cherche un exemple en ASP.NET 2.0 qui me permettrait de changer la
> > langue
> > > d'affichage au runtime (et non pas sur la langue de préférence du
Browser)
> > > (Ex un bouton)
> > >
> > >
> > >
> > > Merci
> > >
> >
> >
> >





Avatar
Paul Bacelar
"PreRender", c'est presque à la fin. Essayer Load event (OnLoad method) .
--
Paul Bacelar


"JLacerte" wrote in message
news:
1) Sur le click d'un LinkButton je place le code de langue dans une


variable
de session (Session["Language"] = language)
2) J'ai fait une classe de base (public partial class BagePage :
System.Web.UI.Page)
où j'ai mis le code suivant :
...
protected override void InitializeCulture()
{
string language = Session["Language"] as string;
if (language != null)
{
this.Culture = language;
this.UICulture = language;
Thread.CurrentThread.CurrentCulture = new


CultureInfo(language);
Thread.CurrentThread.CurrentUICulture = new


CultureInfo(language);
}
base.InitializeCulture();
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
this.InitializeCulture();
}
...
ET Toutes mes pages hérite de cette classe de base

--> Donc ça se passe dans le PreRender des pages

Merci pour ton aide

Jacques


"Patrice" a écrit :

> A quel moment le fais tu ? Visiblement la manip doit-être faite trop


tard ce
> qui sera sans doute le cas par exemple si tu le gères dans un


gestionnaire
> d'évènement.
>
>
> Patrice
>
>
>
>
> --
>
> "JLacerte" a écrit dans le message


de
> news:
> > J'ai fait cela mais je suis toujours un pas de retard.
> > Ex: Si la 1e fois je suis "fr-CA" la page s'affiche en français
> > Je change pour "en-CA", la page s'affiche encore en français
> > Je change pour "fr-CA", cette fois la page s'affiche en Anglais
> > Je change pour "en-CA", la page s'affiche en français, etc
> >
> >
> > "Patrice" a écrit :
> >
> > > Cela ne change pas par rapport à 1.1. Changer le culture de la


thread
> ou de
> > > la page (ou peut-être le "profile" prend il cela en charge ?)
> > >
> > > Patrice
> > >
> > > --
> > >
> > > "JLacerte" a écrit dans le


message
> de
> > > news:
> > > > Bonjour,
> > > >
> > > > Je cherche un exemple en ASP.NET 2.0 qui me permettrait de changer


la
> > > langue
> > > > d'affichage au runtime (et non pas sur la langue de préférence du
> Browser)
> > > > (Ex un bouton)
> > > >
> > > >
> > > >
> > > > Merci
> > > >
> > >
> > >
> > >
>
>
>


Avatar
JLacerte
L'Event du click click arrive après le OnLoad.

Voici la séquence des Events:
---------------------------------
InitializeCulture() --> J'ai overrider pour assigner le
Tread.CurrentThread.CurrentCulture et
CurrentUICulture
OnPreInit(EventArgs e)
OnInit(EventArgs e)
OnInitComplete(EventArgs e)

OnPreLoad(EventArgs e)
OnLoad(EventArgs e)
-->Click du bouton où je change la langue
OnLoadComplete(EventArgs e)

OnPreRender(EventArgs e) --> où je rappelle le InitializeCulture()
OnPreRenderComplete(EventArgs e)
....

Jacques


"Paul Bacelar" a écrit :

"PreRender", c'est presque à la fin. Essayer Load event (OnLoad method) .
--
Paul Bacelar


"JLacerte" wrote in message
news:
> 1) Sur le click d'un LinkButton je place le code de langue dans une
variable
> de session (Session["Language"] = language)
> 2) J'ai fait une classe de base (public partial class BagePage :
> System.Web.UI.Page)
> où j'ai mis le code suivant :
> ...
> protected override void InitializeCulture()
> {
> string language = Session["Language"] as string;
> if (language != null)
> {
> this.Culture = language;
> this.UICulture = language;
> Thread.CurrentThread.CurrentCulture = new
CultureInfo(language);
> Thread.CurrentThread.CurrentUICulture = new
CultureInfo(language);
> }
> base.InitializeCulture();
> }
> protected override void OnPreRender(EventArgs e)
> {
> base.OnPreRender(e);
> this.InitializeCulture();
> }
> ...
> ET Toutes mes pages hérite de cette classe de base
>
> --> Donc ça se passe dans le PreRender des pages
>
> Merci pour ton aide
>
> Jacques
>
>
> "Patrice" a écrit :
>
> > A quel moment le fais tu ? Visiblement la manip doit-être faite trop
tard ce
> > qui sera sans doute le cas par exemple si tu le gères dans un
gestionnaire
> > d'évènement.
> >
> >
> > Patrice
> >
> >
> >
> >
> > --
> >
> > "JLacerte" a écrit dans le message
de
> > news:
> > > J'ai fait cela mais je suis toujours un pas de retard.
> > > Ex: Si la 1e fois je suis "fr-CA" la page s'affiche en français
> > > Je change pour "en-CA", la page s'affiche encore en français
> > > Je change pour "fr-CA", cette fois la page s'affiche en Anglais
> > > Je change pour "en-CA", la page s'affiche en français, etc
> > >
> > >
> > > "Patrice" a écrit :
> > >
> > > > Cela ne change pas par rapport à 1.1. Changer le culture de la
thread
> > ou de
> > > > la page (ou peut-être le "profile" prend il cela en charge ?)
> > > >
> > > > Patrice
> > > >
> > > > --
> > > >
> > > > "JLacerte" a écrit dans le
message
> > de
> > > > news:
> > > > > Bonjour,
> > > > >
> > > > > Je cherche un exemple en ASP.NET 2.0 qui me permettrait de changer
la
> > > > langue
> > > > > d'affichage au runtime (et non pas sur la langue de préférence du
> > Browser)
> > > > > (Ex un bouton)
> > > > >
> > > > >
> > > > >
> > > > > Merci
> > > > >
> > > >
> > > >
> > > >
> >
> >
> >





Avatar
Patrice
D'après le "post " précédent, sur le click du bouton la langue est
simplement stockée dans une variable de session.

Comme disait Paul la langue du "thread" est changé dans le PreRender. A ce
moment l'arborescence des contrôles est déjà prête d'où le temps de retard.

Je n'ai pas regardé en détail mais dans notre appli, on le fait je pense
dans le Load de la page de base (pour éviter de le coder dans toute nos
pages)... Il est même posisble que sur le click on change la variable de
session et on rappelle la page (response.redirect) pour la recharger avec la
bonne langue (selon ce qui est fait au début c'est déjà trop tard dans
l'évènement click ?).


Patrice


--

"JLacerte" a écrit dans le message de
news:
L'Event du click click arrive après le OnLoad.

Voici la séquence des Events:
---------------------------------
InitializeCulture() --> J'ai overrider pour assigner le
Tread.CurrentThread.CurrentCulture et
CurrentUICulture
OnPreInit(EventArgs e)
OnInit(EventArgs e)
OnInitComplete(EventArgs e)

OnPreLoad(EventArgs e)
OnLoad(EventArgs e)
-->Click du bouton où je change la langue
OnLoadComplete(EventArgs e)

OnPreRender(EventArgs e) --> où je rappelle le InitializeCulture()
OnPreRenderComplete(EventArgs e)
....

Jacques


"Paul Bacelar" a écrit :

> "PreRender", c'est presque à la fin. Essayer Load event (OnLoad method)


.
> --
> Paul Bacelar
>
>
> "JLacerte" wrote in message
> news:
> > 1) Sur le click d'un LinkButton je place le code de langue dans une
> variable
> > de session (Session["Language"] = language)
> > 2) J'ai fait une classe de base (public partial class BagePage :
> > System.Web.UI.Page)
> > où j'ai mis le code suivant :
> > ...
> > protected override void InitializeCulture()
> > {
> > string language = Session["Language"] as string;
> > if (language != null)
> > {
> > this.Culture = language;
> > this.UICulture = language;
> > Thread.CurrentThread.CurrentCulture = new
> CultureInfo(language);
> > Thread.CurrentThread.CurrentUICulture = new
> CultureInfo(language);
> > }
> > base.InitializeCulture();
> > }
> > protected override void OnPreRender(EventArgs e)
> > {
> > base.OnPreRender(e);
> > this.InitializeCulture();
> > }
> > ...
> > ET Toutes mes pages hérite de cette classe de base
> >
> > --> Donc ça se passe dans le PreRender des pages
> >
> > Merci pour ton aide
> >
> > Jacques
> >
> >
> > "Patrice" a écrit :
> >
> > > A quel moment le fais tu ? Visiblement la manip doit-être faite trop
> tard ce
> > > qui sera sans doute le cas par exemple si tu le gères dans un
> gestionnaire
> > > d'évènement.
> > >
> > >
> > > Patrice
> > >
> > >
> > >
> > >
> > > --
> > >
> > > "JLacerte" a écrit dans le


message
> de
> > > news:
> > > > J'ai fait cela mais je suis toujours un pas de retard.
> > > > Ex: Si la 1e fois je suis "fr-CA" la page s'affiche en français
> > > > Je change pour "en-CA", la page s'affiche encore en français
> > > > Je change pour "fr-CA", cette fois la page s'affiche en Anglais
> > > > Je change pour "en-CA", la page s'affiche en français, etc
> > > >
> > > >
> > > > "Patrice" a écrit :
> > > >
> > > > > Cela ne change pas par rapport à 1.1. Changer le culture de la
> thread
> > > ou de
> > > > > la page (ou peut-être le "profile" prend il cela en charge ?)
> > > > >
> > > > > Patrice
> > > > >
> > > > > --
> > > > >
> > > > > "JLacerte" a écrit dans le
> message
> > > de
> > > > > news:
> > > > > > Bonjour,
> > > > > >
> > > > > > Je cherche un exemple en ASP.NET 2.0 qui me permettrait de


changer
> la
> > > > > langue
> > > > > > d'affichage au runtime (et non pas sur la langue de préférence


du
> > > Browser)
> > > > > > (Ex un bouton)
> > > > > >
> > > > > >
> > > > > >
> > > > > > Merci
> > > > > >
> > > > >
> > > > >
> > > > >
> > >
> > >
> > >
>
>
>


Avatar
JLacerte
Avec toutes lesidées que vs m,avez fournies,j'ai finalement trouvé une
solution à mon problème:
1) dans le Click Event de mon bouton changement de langue:

protected void LinkButton1_Click(object sender, EventArgs e)
{
string language = Session["Language"] as string;
if ((language != null) && language.ToLower().StartsWith("en"))
{
language = "fr-ca";
}
else
{
language = "en-ca";
}
Session["Language"] = language;

this.Response.Redirect(this.Request.AppRelativeCurrentExecutionFilePath);
}
2) Dans la classe de base (toutes les pages hérite de cette classe)
protected override void InitializeCulture()
{
string language = Session["Language"] as string;
if (language != null)
{
this.Culture = language;
this.UICulture = language;
}
base.InitializeCulture();
}

3) Dans le Global.asax
void Session_Start(Object sender, EventArgs e) {
string language = this.Request.UserLanguages[0];
if ((language == null) || (!language.ToLower().StartsWith("en") &&
!language.ToLower().StartsWith("fr")))
{
language = "fr-ca";
}
Session["Language"] = language;
}

Merci à vous

"Patrice" a écrit :

D'après le "post " précédent, sur le click du bouton la langue est
simplement stockée dans une variable de session.

Comme disait Paul la langue du "thread" est changé dans le PreRender. A ce
moment l'arborescence des contrôles est déjà prête d'où le temps de retard.

Je n'ai pas regardé en détail mais dans notre appli, on le fait je pense
dans le Load de la page de base (pour éviter de le coder dans toute nos
pages)... Il est même posisble que sur le click on change la variable de
session et on rappelle la page (response.redirect) pour la recharger avec la
bonne langue (selon ce qui est fait au début c'est déjà trop tard dans
l'évènement click ?).


Patrice


--

"JLacerte" a écrit dans le message de
news:
> L'Event du click click arrive après le OnLoad.
>
> Voici la séquence des Events:
> ---------------------------------
> InitializeCulture() --> J'ai overrider pour assigner le
> Tread.CurrentThread.CurrentCulture et
> CurrentUICulture
> OnPreInit(EventArgs e)
> OnInit(EventArgs e)
> OnInitComplete(EventArgs e)
>
> OnPreLoad(EventArgs e)
> OnLoad(EventArgs e)
> -->Click du bouton où je change la langue
> OnLoadComplete(EventArgs e)
>
> OnPreRender(EventArgs e) --> où je rappelle le InitializeCulture()
> OnPreRenderComplete(EventArgs e)
> ....
>
> Jacques
>
>
> "Paul Bacelar" a écrit :
>
> > "PreRender", c'est presque à la fin. Essayer Load event (OnLoad method)
..
> > --
> > Paul Bacelar
> >
> >
> > "JLacerte" wrote in message
> > news:
> > > 1) Sur le click d'un LinkButton je place le code de langue dans une
> > variable
> > > de session (Session["Language"] = language)
> > > 2) J'ai fait une classe de base (public partial class BagePage :
> > > System.Web.UI.Page)
> > > où j'ai mis le code suivant :
> > > ...
> > > protected override void InitializeCulture()
> > > {
> > > string language = Session["Language"] as string;
> > > if (language != null)
> > > {
> > > this.Culture = language;
> > > this.UICulture = language;
> > > Thread.CurrentThread.CurrentCulture = new
> > CultureInfo(language);
> > > Thread.CurrentThread.CurrentUICulture = new
> > CultureInfo(language);
> > > }
> > > base.InitializeCulture();
> > > }
> > > protected override void OnPreRender(EventArgs e)
> > > {
> > > base.OnPreRender(e);
> > > this.InitializeCulture();
> > > }
> > > ...
> > > ET Toutes mes pages hérite de cette classe de base
> > >
> > > --> Donc ça se passe dans le PreRender des pages
> > >
> > > Merci pour ton aide
> > >
> > > Jacques
> > >
> > >
> > > "Patrice" a écrit :
> > >
> > > > A quel moment le fais tu ? Visiblement la manip doit-être faite trop
> > tard ce
> > > > qui sera sans doute le cas par exemple si tu le gères dans un
> > gestionnaire
> > > > d'évènement.
> > > >
> > > >
> > > > Patrice
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > >
> > > > "JLacerte" a écrit dans le
message
> > de
> > > > news:
> > > > > J'ai fait cela mais je suis toujours un pas de retard.
> > > > > Ex: Si la 1e fois je suis "fr-CA" la page s'affiche en français
> > > > > Je change pour "en-CA", la page s'affiche encore en français
> > > > > Je change pour "fr-CA", cette fois la page s'affiche en Anglais
> > > > > Je change pour "en-CA", la page s'affiche en français, etc
> > > > >
> > > > >
> > > > > "Patrice" a écrit :
> > > > >
> > > > > > Cela ne change pas par rapport à 1.1. Changer le culture de la
> > thread
> > > > ou de
> > > > > > la page (ou peut-être le "profile" prend il cela en charge ?)
> > > > > >
> > > > > > Patrice
> > > > > >
> > > > > > --
> > > > > >
> > > > > > "JLacerte" a écrit dans le
> > message
> > > > de
> > > > > > news:
> > > > > > > Bonjour,
> > > > > > >
> > > > > > > Je cherche un exemple en ASP.NET 2.0 qui me permettrait de
changer
> > la
> > > > > > langue
> > > > > > > d'affichage au runtime (et non pas sur la langue de préférence
du
> > > > Browser)
> > > > > > > (Ex un bouton)
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Merci
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > >
> > > >
> > > >
> >
> >
> >