[0.9.29] Réactualiser la langue (fr/us) d'une Form
Bonjour,
J'ai besoin d'utiliser une Form bilingue. Classiquement, j'emploie les fichiers project1.fr.po et project1.en.po. Je peux donc afficher ma Form1 en anglais ou en français.
Voici un extrait du project1.fr.po généré [i18n activé]
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: form1.rsbtvalidcaption
msgctxt "form1.rsbtvalidcaption"
msgid "Yes"
msgstr "Oui"
#: TFORM1.BUTTON1.CAPTION
msgctxt "TFORM1.BUTTON1.CAPTION"
msgid "Yes"
msgstr "Oui"
#: TFORM1.BUTTON2.CAPTION
msgctxt "TFORM1.BUTTON2.CAPTION"
msgid "Language"
msgstr "Langue" |
Dans le code d'unit1
Code:
1 2 3
| implementation
ResourceString
rsBTvalidCaption = 'Yes'; |
Mon problème est le suivant : je veux changer la langue de ma Form1 sans "la fermer puis la réouvrir" afin de ne pas être obligé de sauver les données "actives".
Ce code fonctionne correctement...
Code:
1 2 3 4 5 6 7
| procedure TForm1.Button2Click(Sender: TObject);
begin
gsFallbackLang :='en';
gsLang:='en_US';
Change_Language(); //Fonction Perso
Button1.Caption:= rsBTvalidCaption;
end; |
... mais m'oblige à déclarer rsBTvalidCaption alors que #: TFORM1.BUTTON1.CAPTION est généré automatiquement par défaut sans déclaration de ResourceString.
Mais comment l'appelle-t-on ?
Button1.Caption:= TFORM1.BUTTON1.CAPTION ne fonctionne évidemment pas.
A moins que quelqu'un(e) ne connaisse la méthode pour réaffecter dynamiquement les "variables" du fichier .po (une fois relu) dans les Forms ouvertes... ce qui serait très pratique notamment pour les traductions des Dialogs à partir de lazarus\lcl\languages\lclstrconsts.xx.po (toujours sans fermer les Forms ouvertes).
Merci. Cordialement.
Gilles