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é]
Dans le code d'unit1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"
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".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 implementation ResourceString rsBTvalidCaption = 'Yes';
Ce code fonctionne correctement...
... mais m'oblige à déclarer rsBTvalidCaption alors que #: TFORM1.BUTTON1.CAPTION est généré automatiquement par défaut sans déclaration de ResourceString.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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
Partager