Au d=E9but de l'ann=E9e, j'ai appris =E0 cr=E9er des fichiers de ressourc=
es pour=20
internationaliser une application, et gr=E2ce aux conseils de Gilles j'ai=
=20
su que pour d=E9finir dans quelle culture on affiche un formulaire, il=20
fallait mettre dans le constructeur du formulaire :
si on veut afficher en Am=E9ricain, ou adapter la cha=EEne de caract=E8re=
s=20
pour une autre.
Je me le suis tenu pour dit, j'ai mis =E7a en dur, et =E7a marche. J'ai=20
suppos=E9 qu'en mettant la cha=EEne dans la ligne de commandes on devait =
pouvoir la r=E9cup=E9rer.
Maintenant, je voudrais aller un peu plus loin, et permettre =E0=20
l'utilisateur de choisir la culture non plus dans la ligne de commandes, =
mais dans l'interface.
Alors j'ai vu qu'il allait falloir fermer le formulaire et le rouvrir,=20
et que pour faire =E7a il fallait en ouvrir un autre (qui pourrait=20
s'appeler Param), faire la s=E9lection de culture dans cet autre=20
formulaire, et refaire la man=9Cuvre dans l'autre sens, mais aussi=20
qu'ouvrir un autre formulaire suppose la cr=E9ation d'un autre thread, et=
=20
la fin du thread courant si on veut fermer le formulaire appelant. Donc=20
=E0 la place de Thread.CurrentThread bien entendu on met le nom du nouvea=
u=20
Thread.
Est-ce que c'est bien =E7a qu'il faut faire, ou est-ce que je suis en=20
train de sortir un marteau-pilon pour =E9craser une mouche ?
Si je lance la commande indiqu=E9e ci-dessus (CurrentUICulture =3D ...)=20
alors que le formulaire est d=E9j=E0 ouvert, il reste dans la m=EAme cult=
ure=20
qu'=E0 son ouverture, m=EAme si je lance un Refresh.
Je ne sais pas si ça répondra à ta question mais pour redémarrer une application, tu peux utiliser Application.Restart()
Pour savoir quelle langue utiliser, tu peux utiliser un Settings (type string) de ton appli. Tu initialises cette variable avec le nom du langage à utiliser et au démarrage, tu lis cette valeur avant de définir ta culture et le tour est joué.
-- Jean-Luc M.
Je ne sais pas si ça répondra à ta question mais pour redémarrer une
application, tu peux utiliser Application.Restart()
Pour savoir quelle langue utiliser, tu peux utiliser un Settings (type
string) de ton appli. Tu initialises cette variable avec le nom du
langage à utiliser et au démarrage, tu lis cette valeur avant de
définir ta culture et le tour est joué.
Je ne sais pas si ça répondra à ta question mais pour redémarrer une application, tu peux utiliser Application.Restart()
Pour savoir quelle langue utiliser, tu peux utiliser un Settings (type string) de ton appli. Tu initialises cette variable avec le nom du langage à utiliser et au démarrage, tu lis cette valeur avant de définir ta culture et le tour est joué.
-- Jean-Luc M.
Gloops
Jean-Luc M. a écrit, le 17/05/2008 16:24 :
Je ne sais pas si ça répondra à ta question mais pour redémarre r une application, tu peux utiliser Application.Restart()
ça sonne effectivement comme une piste intéressante. Après, il faut stocker l'option sous une forme qui soit lue au redémarrage, parce que bien entendu, si je la mets en dur au démarrag e, j'ai beau mettre une autre valeur avant de redémarrer, ça ne va pas t rop le faire.
Pour savoir quelle langue utiliser, tu peux utiliser un Settings (type string) de ton appli. Tu initialises cette variable avec le nom du langage à utiliser et au démarrage, tu lis cette valeur avant de dé finir ta culture et le tour est joué.
Voilà qui me paraît être une bonne réponse.
Voyons le résultat.
Alors concrètement, voilà le code du bouton qui demande à afficher en Anglais (on verra après pour faire une belle liste avec les différent es cultures disponibles) :
et là, soit on ne s'arrête pas dans le constructeur du formulaire, so it on s'y arrête mais strLangue vaut "fr" -comme au "design time".
Il y a des trucs qui me laissent perplexe au niveau de l'aide, mais il me semblait quand même avoir compris. Cette impression serait-elle trompeuse ?
Ce qui me laisse perplexe, surtout, c'est qu'au départ de l'aide de VS 2005 j'ai mis du temps à arriver là :
Using Settings in C# http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx
Jean-Luc M. a écrit, le 17/05/2008 16:24 :
Je ne sais pas si ça répondra à ta question mais pour redémarre r une
application, tu peux utiliser Application.Restart()
ça sonne effectivement comme une piste intéressante.
Après, il faut stocker l'option sous une forme qui soit lue au
redémarrage, parce que bien entendu, si je la mets en dur au démarrag e,
j'ai beau mettre une autre valeur avant de redémarrer, ça ne va pas t rop
le faire.
Pour savoir quelle langue utiliser, tu peux utiliser un Settings (type
string) de ton appli. Tu initialises cette variable avec le nom du
langage à utiliser et au démarrage, tu lis cette valeur avant de dé finir
ta culture et le tour est joué.
Voilà qui me paraît être une bonne réponse.
Voyons le résultat.
Alors concrètement, voilà le code du bouton qui demande à afficher en
Anglais (on verra après pour faire une belle liste avec les différent es
cultures disponibles) :
Je ne sais pas si ça répondra à ta question mais pour redémarre r une application, tu peux utiliser Application.Restart()
ça sonne effectivement comme une piste intéressante. Après, il faut stocker l'option sous une forme qui soit lue au redémarrage, parce que bien entendu, si je la mets en dur au démarrag e, j'ai beau mettre une autre valeur avant de redémarrer, ça ne va pas t rop le faire.
Pour savoir quelle langue utiliser, tu peux utiliser un Settings (type string) de ton appli. Tu initialises cette variable avec le nom du langage à utiliser et au démarrage, tu lis cette valeur avant de dé finir ta culture et le tour est joué.
Voilà qui me paraît être une bonne réponse.
Voyons le résultat.
Alors concrètement, voilà le code du bouton qui demande à afficher en Anglais (on verra après pour faire une belle liste avec les différent es cultures disponibles) :
et là, soit on ne s'arrête pas dans le constructeur du formulaire, so it on s'y arrête mais strLangue vaut "fr" -comme au "design time".
Il y a des trucs qui me laissent perplexe au niveau de l'aide, mais il me semblait quand même avoir compris. Cette impression serait-elle trompeuse ?
Ce qui me laisse perplexe, surtout, c'est qu'au départ de l'aide de VS 2005 j'ai mis du temps à arriver là :
Using Settings in C# http://msdn.microsoft.com/en-us/library/aa730869(VS.80).aspx
Fred
Dans : news:u2ETa6$, Gloops disait :
Bonjour tout le monde,
Bonjour,
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ...) alors que le formulaire est déjà ouvert, il reste dans la même culture qu'à son ouverture, même si je lance un Refresh.
Regarde dans les sources générés par VS comment la culture est appliquée aux contrôles. Il suffit d'exécuter ce code à nouveau.
-- Fred
Dans : news:u2ETa6$tIHA.1220@TK2MSFTNGP04.phx.gbl,
Gloops disait :
Bonjour tout le monde,
Bonjour,
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ...)
alors que le formulaire est déjà ouvert, il reste dans la même culture
qu'à son ouverture, même si je lance un Refresh.
Regarde dans les sources générés par VS comment la culture est appliquée
aux contrôles. Il suffit d'exécuter ce code à nouveau.
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ...) alors que le formulaire est déjà ouvert, il reste dans la même culture qu'à son ouverture, même si je lance un Refresh.
Regarde dans les sources générés par VS comment la culture est appliquée aux contrôles. Il suffit d'exécuter ce code à nouveau.
-- Fred
Jean-Luc M.
> Alors concrètement, voilà le code du bouton qui demande à afficher en Anglais (on verra après pour faire une belle liste avec les différentes cultures disponibles) :
et là, soit on ne s'arrête pas dans le constructeur du formulaire, soit on s'y arrête mais strLangue vaut "fr" -comme au "design time".
Tu t'arrètes forcément dans le constructeur du formulaire sinon, ton formulaire n'est pas construit (Lapalisse).
Vérifies que ton Settings est bien en mode Utilisateur et non pas Application.
J'utilise cette technique pour faire un traitement similaire et ça fonctionne très bien.
-- Jean-Luc M.
> Alors concrètement, voilà le code du bouton qui demande à afficher en Anglais
(on verra après pour faire une belle liste avec les différentes cultures
disponibles) :
> Alors concrètement, voilà le code du bouton qui demande à afficher en Anglais (on verra après pour faire une belle liste avec les différentes cultures disponibles) :
et là, soit on ne s'arrête pas dans le constructeur du formulaire, soit on s'y arrête mais strLangue vaut "fr" -comme au "design time".
Tu t'arrètes forcément dans le constructeur du formulaire sinon, ton formulaire n'est pas construit (Lapalisse).
Vérifies que ton Settings est bien en mode Utilisateur et non pas Application.
J'utilise cette technique pour faire un traitement similaire et ça fonctionne très bien.
-- Jean-Luc M.
Gloops
Jean-Luc M. a écrit, le 18/05/2008 20:59 :
Normal, c'est ce qu'il fallait faire.
Ah, on progresse :)
Tu t'arrètes forcément dans le constructeur du formulaire sinon, to n formulaire n'est pas construit (Lapalisse).
Bon, je vais le dire autrement : j'ai mis un point d'arrêt dans le constructeur et un dans le code du bouton. Quand je clique sur le bouton, je vois le point d'arrêt dans son code, et puis juste après l e formulaire réaffiché.
Mais, il est vrai, pas à tous les coups. Parfois, le point d'arrêt qu e j'ai mis dans le constructeur est respecté.
On aurait pu dire que j'ai mis un if{}else{} mais j'ai posté l'intégralité du code du constructeur, je pense que ça se serait vu .
Vérifies que ton Settings est bien en mode Utilisateur et non pas Application.
ça doit être ça. Depuis hier j'ai oublié. Je regarde demain, la m achine qui me sert au développement est en cours de sauvegarde d'image ... Après il sera grand temps de me mettre moi aussi en sauvegarde :)
J'utilise cette technique pour faire un traitement similaire et ça fonctionne très bien.
Bon, eh bien je vais y arriver. Pis tant mieux, parce que c'est plus léger que ce que j'ai décrit ...=
Jean-Luc M. a écrit, le 18/05/2008 20:59 :
Normal, c'est ce qu'il fallait faire.
Ah, on progresse :)
Tu t'arrètes forcément dans le constructeur du formulaire sinon, to n
formulaire n'est pas construit (Lapalisse).
Bon, je vais le dire autrement : j'ai mis un point d'arrêt dans le
constructeur et un dans le code du bouton. Quand je clique sur le
bouton, je vois le point d'arrêt dans son code, et puis juste après l e
formulaire réaffiché.
Mais, il est vrai, pas à tous les coups. Parfois, le point d'arrêt qu e
j'ai mis dans le constructeur est respecté.
On aurait pu dire que j'ai mis un if{}else{} mais j'ai posté
l'intégralité du code du constructeur, je pense que ça se serait vu .
Vérifies que ton Settings est bien en mode Utilisateur et non pas
Application.
ça doit être ça. Depuis hier j'ai oublié. Je regarde demain, la m achine
qui me sert au développement est en cours de sauvegarde d'image ...
Après il sera grand temps de me mettre moi aussi en sauvegarde :)
J'utilise cette technique pour faire un traitement similaire et ça
fonctionne très bien.
Bon, eh bien je vais y arriver.
Pis tant mieux, parce que c'est plus léger que ce que j'ai décrit ...=
Tu t'arrètes forcément dans le constructeur du formulaire sinon, to n formulaire n'est pas construit (Lapalisse).
Bon, je vais le dire autrement : j'ai mis un point d'arrêt dans le constructeur et un dans le code du bouton. Quand je clique sur le bouton, je vois le point d'arrêt dans son code, et puis juste après l e formulaire réaffiché.
Mais, il est vrai, pas à tous les coups. Parfois, le point d'arrêt qu e j'ai mis dans le constructeur est respecté.
On aurait pu dire que j'ai mis un if{}else{} mais j'ai posté l'intégralité du code du constructeur, je pense que ça se serait vu .
Vérifies que ton Settings est bien en mode Utilisateur et non pas Application.
ça doit être ça. Depuis hier j'ai oublié. Je regarde demain, la m achine qui me sert au développement est en cours de sauvegarde d'image ... Après il sera grand temps de me mettre moi aussi en sauvegarde :)
J'utilise cette technique pour faire un traitement similaire et ça fonctionne très bien.
Bon, eh bien je vais y arriver. Pis tant mieux, parce que c'est plus léger que ce que j'ai décrit ...=
Gloops
Fred a écrit, le 18/05/2008 15:11 :
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ... ) alors que le formulaire est déjà ouvert, il reste dans la même c ulture qu'à son ouverture, même si je lance un Refresh.
Regarde dans les sources générés par VS comment la culture est ap pliquée aux contrôles. Il suffit d'exécuter ce code à nouveau.
Bon, je regarde ... en principe demain.
Fred a écrit, le 18/05/2008 15:11 :
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ... )
alors que le formulaire est déjà ouvert, il reste dans la même c ulture
qu'à son ouverture, même si je lance un Refresh.
Regarde dans les sources générés par VS comment la culture est ap pliquée
aux contrôles. Il suffit d'exécuter ce code à nouveau.
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ... ) alors que le formulaire est déjà ouvert, il reste dans la même c ulture qu'à son ouverture, même si je lance un Refresh.
Regarde dans les sources générés par VS comment la culture est ap pliquée aux contrôles. Il suffit d'exécuter ce code à nouveau.
Bon, je regarde ... en principe demain.
d
Est-ce que tu utilises les fichiers de ressources .resx pour mettre tes traductions? Dans mon appli, je sélectionne la langue et le changement se fait sans redémarrage d'application, en Live. Pour ça, j'ai un fichier de ressources par langue et dedans je colles sous forme de string mes traductions que je récupère sous cette forme: //Variables globales public CultureInfo EnglishCulture = new CultureInfo("en-US"); public CultureInfo FrenchCulture = new CultureInfo("fr-FR"); //etc...
public void ChangeLang(int numLanguage) // N° que je récupère via un automate qui sert de passerelle { if(NumLanguage == 0) setLanguage(EnglishCulture); if(NumLanguage == 1 setLanguage(FrenchCulture);
//etc... }
public void setLanguage(CultureInfo Language ) // N° que je récupère via un automate qui sert de passerelle { System.Resources.ResourcesManager rm System.Resources.ResourcesManager(this.GetTypes());
public void ChangeText( System.Resources.ResourcesManager rm ) // N° que je récupère via un automate qui sert de passerelle { //Exemple avec un label Label1.Text = rm.GetString("Label1");//Nom dans le fichier de resources }
Voilà, j'espère que ça t'aidera ou d'autres personnes.
David L
"Gloops" a écrit dans le message de news:u2ETa6$ Bonjour tout le monde,
Au début de l'année, j'ai appris à créer des fichiers de ressources pour internationaliser une application, et grâce aux conseils de Gilles j'ai su que pour définir dans quelle culture on affiche un formulaire, il fallait mettre dans le constructeur du formulaire :
si on veut afficher en Américain, ou adapter la chaîne de caractères pour une autre.
Je me le suis tenu pour dit, j'ai mis ça en dur, et ça marche. J'ai supposé qu'en mettant la chaîne dans la ligne de commandes on devait pouvoir la récupérer.
Maintenant, je voudrais aller un peu plus loin, et permettre à l'utilisateur de choisir la culture non plus dans la ligne de commandes, mais dans l'interface.
Alors j'ai vu qu'il allait falloir fermer le formulaire et le rouvrir, et que pour faire ça il fallait en ouvrir un autre (qui pourrait s'appeler Param), faire la sélection de culture dans cet autre formulaire, et refaire la manœuvre dans l'autre sens, mais aussi qu'ouvrir un autre formulaire suppose la création d'un autre thread, et la fin du thread courant si on veut fermer le formulaire appelant. Donc à la place de Thread.CurrentThread bien entendu on met le nom du nouveau Thread.
Est-ce que c'est bien ça qu'il faut faire, ou est-ce que je suis en train de sortir un marteau-pilon pour écraser une mouche ?
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ...) alors que le formulaire est déjà ouvert, il reste dans la même culture qu'à son ouverture, même si je lance un Refresh.
Est-ce que tu utilises les fichiers de ressources .resx pour mettre tes
traductions?
Dans mon appli, je sélectionne la langue et le changement se fait sans
redémarrage d'application, en Live.
Pour ça, j'ai un fichier de ressources par langue et dedans je colles sous
forme de string mes traductions que je récupère sous cette forme:
//Variables globales
public CultureInfo EnglishCulture = new CultureInfo("en-US");
public CultureInfo FrenchCulture = new CultureInfo("fr-FR");
//etc...
public void ChangeLang(int numLanguage) // N° que je récupère via un
automate qui sert de passerelle
{
if(NumLanguage == 0)
setLanguage(EnglishCulture);
if(NumLanguage == 1
setLanguage(FrenchCulture);
//etc...
}
public void setLanguage(CultureInfo Language ) // N° que je récupère via un
automate qui sert de passerelle
{
System.Resources.ResourcesManager rm System.Resources.ResourcesManager(this.GetTypes());
public void ChangeText( System.Resources.ResourcesManager rm ) // N° que je
récupère via un automate qui sert de passerelle
{
//Exemple avec un label
Label1.Text = rm.GetString("Label1");//Nom dans le fichier de resources
}
Voilà, j'espère que ça t'aidera ou d'autres personnes.
David L
"Gloops" <gloops@invalid.zailes.org> a écrit dans le message de
news:u2ETa6$tIHA.1220@TK2MSFTNGP04.phx.gbl...
Bonjour tout le monde,
Au début de l'année, j'ai appris à créer des fichiers de ressources pour
internationaliser une application, et grâce aux conseils de Gilles j'ai
su que pour définir dans quelle culture on affiche un formulaire, il
fallait mettre dans le constructeur du formulaire :
si on veut afficher en Américain, ou adapter la chaîne de caractères
pour une autre.
Je me le suis tenu pour dit, j'ai mis ça en dur, et ça marche. J'ai
supposé qu'en mettant la chaîne dans la ligne de commandes on devait
pouvoir la récupérer.
Maintenant, je voudrais aller un peu plus loin, et permettre à
l'utilisateur de choisir la culture non plus dans la ligne de commandes,
mais dans l'interface.
Alors j'ai vu qu'il allait falloir fermer le formulaire et le rouvrir,
et que pour faire ça il fallait en ouvrir un autre (qui pourrait
s'appeler Param), faire la sélection de culture dans cet autre
formulaire, et refaire la manœuvre dans l'autre sens, mais aussi
qu'ouvrir un autre formulaire suppose la création d'un autre thread, et
la fin du thread courant si on veut fermer le formulaire appelant. Donc
à la place de Thread.CurrentThread bien entendu on met le nom du nouveau
Thread.
Est-ce que c'est bien ça qu'il faut faire, ou est-ce que je suis en
train de sortir un marteau-pilon pour écraser une mouche ?
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ...)
alors que le formulaire est déjà ouvert, il reste dans la même culture
qu'à son ouverture, même si je lance un Refresh.
Est-ce que tu utilises les fichiers de ressources .resx pour mettre tes traductions? Dans mon appli, je sélectionne la langue et le changement se fait sans redémarrage d'application, en Live. Pour ça, j'ai un fichier de ressources par langue et dedans je colles sous forme de string mes traductions que je récupère sous cette forme: //Variables globales public CultureInfo EnglishCulture = new CultureInfo("en-US"); public CultureInfo FrenchCulture = new CultureInfo("fr-FR"); //etc...
public void ChangeLang(int numLanguage) // N° que je récupère via un automate qui sert de passerelle { if(NumLanguage == 0) setLanguage(EnglishCulture); if(NumLanguage == 1 setLanguage(FrenchCulture);
//etc... }
public void setLanguage(CultureInfo Language ) // N° que je récupère via un automate qui sert de passerelle { System.Resources.ResourcesManager rm System.Resources.ResourcesManager(this.GetTypes());
public void ChangeText( System.Resources.ResourcesManager rm ) // N° que je récupère via un automate qui sert de passerelle { //Exemple avec un label Label1.Text = rm.GetString("Label1");//Nom dans le fichier de resources }
Voilà, j'espère que ça t'aidera ou d'autres personnes.
David L
"Gloops" a écrit dans le message de news:u2ETa6$ Bonjour tout le monde,
Au début de l'année, j'ai appris à créer des fichiers de ressources pour internationaliser une application, et grâce aux conseils de Gilles j'ai su que pour définir dans quelle culture on affiche un formulaire, il fallait mettre dans le constructeur du formulaire :
si on veut afficher en Américain, ou adapter la chaîne de caractères pour une autre.
Je me le suis tenu pour dit, j'ai mis ça en dur, et ça marche. J'ai supposé qu'en mettant la chaîne dans la ligne de commandes on devait pouvoir la récupérer.
Maintenant, je voudrais aller un peu plus loin, et permettre à l'utilisateur de choisir la culture non plus dans la ligne de commandes, mais dans l'interface.
Alors j'ai vu qu'il allait falloir fermer le formulaire et le rouvrir, et que pour faire ça il fallait en ouvrir un autre (qui pourrait s'appeler Param), faire la sélection de culture dans cet autre formulaire, et refaire la manœuvre dans l'autre sens, mais aussi qu'ouvrir un autre formulaire suppose la création d'un autre thread, et la fin du thread courant si on veut fermer le formulaire appelant. Donc à la place de Thread.CurrentThread bien entendu on met le nom du nouveau Thread.
Est-ce que c'est bien ça qu'il faut faire, ou est-ce que je suis en train de sortir un marteau-pilon pour écraser une mouche ?
Si je lance la commande indiquée ci-dessus (CurrentUICulture = ...) alors que le formulaire est déjà ouvert, il reste dans la même culture qu'à son ouverture, même si je lance un Refresh.
Fred
Dans : news:g0rfbn$1gp$, disait :
Est-ce que tu utilises les fichiers de ressources .resx pour mettre tes traductions? Dans mon appli, je sélectionne la langue et le changement se fait sans redémarrage d'application, en Live. Pour ça, j'ai un fichier de ressources par langue et dedans je colles sous forme de string mes traductions que je récupère sous cette forme:
<snip>
Lorsque l'on utilise le designer de VS pour les Forms, les ressources localisées sont automatiquement créées. On peut alors les appliquer aux niveau du contrôle et non pour chaque propriété une à une (bien souvent c'est effectivement le texte qui change mais cela peut aussi être le positionnement)
ex (copier/coller du code généré par le designer) : System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); resources.ApplyResources(this.label1, "label1"); resources.ApplyResources(this.textBox1, "textBox1"); resources.ApplyResources(this, "$this");
-- Fred
Dans : news:g0rfbn$1gp$1@s1.news.oleane.net,
d@ve disait :
Est-ce que tu utilises les fichiers de ressources .resx pour mettre
tes traductions?
Dans mon appli, je sélectionne la langue et le changement se fait sans
redémarrage d'application, en Live.
Pour ça, j'ai un fichier de ressources par langue et dedans je colles
sous forme de string mes traductions que je récupère sous cette forme:
<snip>
Lorsque l'on utilise le designer de VS pour les Forms, les ressources
localisées sont automatiquement créées.
On peut alors les appliquer aux niveau du contrôle et non pour chaque
propriété une à une (bien souvent c'est effectivement le texte qui
change mais cela peut aussi être le positionnement)
ex (copier/coller du code généré par le designer) :
System.ComponentModel.ComponentResourceManager resources = new
System.ComponentModel.ComponentResourceManager(typeof(Form1));
resources.ApplyResources(this.label1, "label1");
resources.ApplyResources(this.textBox1, "textBox1");
resources.ApplyResources(this, "$this");
Est-ce que tu utilises les fichiers de ressources .resx pour mettre tes traductions? Dans mon appli, je sélectionne la langue et le changement se fait sans redémarrage d'application, en Live. Pour ça, j'ai un fichier de ressources par langue et dedans je colles sous forme de string mes traductions que je récupère sous cette forme:
<snip>
Lorsque l'on utilise le designer de VS pour les Forms, les ressources localisées sont automatiquement créées. On peut alors les appliquer aux niveau du contrôle et non pour chaque propriété une à une (bien souvent c'est effectivement le texte qui change mais cela peut aussi être le positionnement)
ex (copier/coller du code généré par le designer) : System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); resources.ApplyResources(this.label1, "label1"); resources.ApplyResources(this.textBox1, "textBox1"); resources.ApplyResources(this, "$this");
-- Fred
d
Je suis d'accord avec toi. J'utilise aussi cette méthode mais elle ne me donne pas entière satisfaction. Explique moi comment tu fais si tu as plusieurs intitulés à mettre dans le même label par exemple Marche et Arrêt en fonction de l'état de ta machine.
C'est pour faire ça que j'utilise la méthode que j'ai donné.
Je veux bien en essayer une autre mais je ne vois pas comment faire avec la méthode que tu donnes.
David L
"Fred" a écrit dans le message de news:%
Dans : news:g0rfbn$1gp$, disait : > Est-ce que tu utilises les fichiers de ressources .resx pour mettre > tes traductions? > Dans mon appli, je sélectionne la langue et le changement se fait sans > redémarrage d'application, en Live. > Pour ça, j'ai un fichier de ressources par langue et dedans je colles > sous forme de string mes traductions que je récupère sous cette forme:
<snip>
Lorsque l'on utilise le designer de VS pour les Forms, les ressources localisées sont automatiquement créées. On peut alors les appliquer aux niveau du contrôle et non pour chaque propriété une à une (bien souvent c'est effectivement le texte qui change mais cela peut aussi être le positionnement)
ex (copier/coller du code généré par le designer) : System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); resources.ApplyResources(this.label1, "label1"); resources.ApplyResources(this.textBox1, "textBox1"); resources.ApplyResources(this, "$this");
-- Fred
Je suis d'accord avec toi. J'utilise aussi cette méthode mais elle ne me
donne pas entière satisfaction. Explique moi comment tu fais si tu as
plusieurs intitulés à mettre dans le même label par exemple Marche et Arrêt
en fonction de l'état de ta machine.
C'est pour faire ça que j'utilise la méthode que j'ai donné.
Je veux bien en essayer une autre mais je ne vois pas comment faire avec la
méthode que tu donnes.
David L
"Fred" <foleide@free.fr.invalid> a écrit dans le message de
news:%231HNddauIHA.2068@TK2MSFTNGP05.phx.gbl...
Dans : news:g0rfbn$1gp$1@s1.news.oleane.net,
d@ve disait :
> Est-ce que tu utilises les fichiers de ressources .resx pour mettre
> tes traductions?
> Dans mon appli, je sélectionne la langue et le changement se fait sans
> redémarrage d'application, en Live.
> Pour ça, j'ai un fichier de ressources par langue et dedans je colles
> sous forme de string mes traductions que je récupère sous cette forme:
<snip>
Lorsque l'on utilise le designer de VS pour les Forms, les ressources
localisées sont automatiquement créées.
On peut alors les appliquer aux niveau du contrôle et non pour chaque
propriété une à une (bien souvent c'est effectivement le texte qui
change mais cela peut aussi être le positionnement)
ex (copier/coller du code généré par le designer) :
System.ComponentModel.ComponentResourceManager resources = new
System.ComponentModel.ComponentResourceManager(typeof(Form1));
resources.ApplyResources(this.label1, "label1");
resources.ApplyResources(this.textBox1, "textBox1");
resources.ApplyResources(this, "$this");
Je suis d'accord avec toi. J'utilise aussi cette méthode mais elle ne me donne pas entière satisfaction. Explique moi comment tu fais si tu as plusieurs intitulés à mettre dans le même label par exemple Marche et Arrêt en fonction de l'état de ta machine.
C'est pour faire ça que j'utilise la méthode que j'ai donné.
Je veux bien en essayer une autre mais je ne vois pas comment faire avec la méthode que tu donnes.
David L
"Fred" a écrit dans le message de news:%
Dans : news:g0rfbn$1gp$, disait : > Est-ce que tu utilises les fichiers de ressources .resx pour mettre > tes traductions? > Dans mon appli, je sélectionne la langue et le changement se fait sans > redémarrage d'application, en Live. > Pour ça, j'ai un fichier de ressources par langue et dedans je colles > sous forme de string mes traductions que je récupère sous cette forme:
<snip>
Lorsque l'on utilise le designer de VS pour les Forms, les ressources localisées sont automatiquement créées. On peut alors les appliquer aux niveau du contrôle et non pour chaque propriété une à une (bien souvent c'est effectivement le texte qui change mais cela peut aussi être le positionnement)
ex (copier/coller du code généré par le designer) : System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); resources.ApplyResources(this.label1, "label1"); resources.ApplyResources(this.textBox1, "textBox1"); resources.ApplyResources(this, "$this");
-- Fred
Gloops
Salut,
Bon, je crois que j'ai trouvé : l'aide ne mentionne nulle part aucune référence à déclarer pour l'objet Settings, et moi j'ai appliqué bêtement.
Curieusement, d'habitude, quand on oublie une référence, on se fait rappeler à l'ordre avec un refus de compiler, mais là non, avec maj. F9 on a un message disant que la valeur n'existe pas, mais elle est quand même passée à une variable (je ne serais pas étonné d'avoir à reformuler ça ...)
Il m'a semblé que System.Configuration ne devait pas nuire, mais ça n e semble pas encore suffire, ou alors il faut préciser.
J'ai essayé quelque chose comme ça : System.Configuration.ApplicationSettingsGroup asg = new ApplicationSettingsGroup(); asg.AppSettingsSection.Settings.Default.Culture = "en";
Mais là-dessus j'ai comme erreur : Error 1 The type 'System.Configuration.ConfigurationSectionGroup' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken°3f5f7f11d50a3a'.
Bon, ben je vais aller casser une graine, la suite au prochain épisode ...
Salut,
Bon, je crois que j'ai trouvé : l'aide ne mentionne nulle part aucune
référence à déclarer pour l'objet Settings, et moi j'ai appliqué bêtement.
Curieusement, d'habitude, quand on oublie une référence, on se fait
rappeler à l'ordre avec un refus de compiler, mais là non, avec maj. F9
on a un message disant que la valeur n'existe pas, mais elle est quand
même passée à une variable (je ne serais pas étonné d'avoir à reformuler
ça ...)
Il m'a semblé que System.Configuration ne devait pas nuire, mais ça n e
semble pas encore suffire, ou alors il faut préciser.
J'ai essayé quelque chose comme ça :
System.Configuration.ApplicationSettingsGroup asg =
new ApplicationSettingsGroup();
asg.AppSettingsSection.Settings.Default.Culture = "en";
Mais là-dessus j'ai comme erreur :
Error 1 The type 'System.Configuration.ConfigurationSectionGroup' is
defined in an assembly that is not referenced. You must add a reference
to assembly 'System.Configuration, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a'.
Bon, ben je vais aller casser une graine, la suite au prochain épisode ...
Bon, je crois que j'ai trouvé : l'aide ne mentionne nulle part aucune référence à déclarer pour l'objet Settings, et moi j'ai appliqué bêtement.
Curieusement, d'habitude, quand on oublie une référence, on se fait rappeler à l'ordre avec un refus de compiler, mais là non, avec maj. F9 on a un message disant que la valeur n'existe pas, mais elle est quand même passée à une variable (je ne serais pas étonné d'avoir à reformuler ça ...)
Il m'a semblé que System.Configuration ne devait pas nuire, mais ça n e semble pas encore suffire, ou alors il faut préciser.
J'ai essayé quelque chose comme ça : System.Configuration.ApplicationSettingsGroup asg = new ApplicationSettingsGroup(); asg.AppSettingsSection.Settings.Default.Culture = "en";
Mais là-dessus j'ai comme erreur : Error 1 The type 'System.Configuration.ConfigurationSectionGroup' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken°3f5f7f11d50a3a'.
Bon, ben je vais aller casser une graine, la suite au prochain épisode ...