Bonjour à toutes et à tous,
Comme le dit le titre, mes boîtes de message (MessageDlg) sous en anglais sous Windows alors qu'elles sont en français sous Ubuntu ???
Un idée du problème ?
Merci de votre aide.
Pierre.
Bonjour à toutes et à tous,
Comme le dit le titre, mes boîtes de message (MessageDlg) sous en anglais sous Windows alors qu'elles sont en français sous Ubuntu ???
Un idée du problème ?
Merci de votre aide.
Pierre.
Bonjour
Je vais encore être un annonciateur de mauvaise nouvelle.
Je viens d'essayer sous la version 0.9.31 et effectivement le texte des boutons est dans la langue de Shakespeare. Donc, c'est un bug. Je ne t'explique plus la procédure à suivre si tu veux que cela soit corrigé. Bug tracker etc etc etc. Tu commences à être routinier du fait. Apparemment, tu est en train de piocher tous les bogues de Lazarus.![]()
Merci DOLPat, je vais encore aller dans le BugTracker.
Le problème c'est que j'en ai encore d'autres sous le pied.
Cordialement.
Pierre
Ben c'est bien ce que je disais tout à l'heure:
Je sais que c'est galère, mais dis-toi que c'est pour la bonne cause. Le chemin est encore grand pour rendre Lazarus exempt de tout bug, hélas. Mais si chacun met une pierre à l'édifice, on arrivera bien à le terminer un jour.
[Conseil] Allumer un cierge afin d'arrêter la série.![]()
Bonjour
J'ai trouvé ceci qui devrait t'être utile.
Merci DolPat pour ce lien, je vais regarder ça.
Cordialement.
Pierre
Bonjour Pierre,
Je suis peut-être complètement à côté de la plaque : j'ai peut-être mal compris le problème... et c'est peut-être une redite des divers liens précisés ci-dessus que j'avoue n'avoir pas lus. Par contre, je constate en effet sur un projet vierge que le Caption des boutons est en anglais sous Win. Je me rappelle avoir eu sur ce forum une discussion assez animée sur la question de l'utilisation de i18n.
Depuis la 0.9.28, systématiquement, sous Win comme sous Nux, j'utilise les fichiers lclstrconsts.po, lclstrconsts.en.po et lclstrconsts.fr.po en activant le i18n du projet.
Je viens de vérifier sur un petit projet. Sous Win comme sous Nux, mes boîtes de dialogue (ie les boutons) "fonctionnent". Et cela ne nécessite pas beaucoup d'investissement... et donc ne ralentira pas beaucoup votre projet.
1. Vous récupérez les fichiers nécessaires lclstrconsts.po, lclstrconsts.fr.po (et éventuellement lclstrconsts.en.po). Dans mon cas, ils sont dans ..\lazarus\0.9.31-31628-fpc-2.4.4-20110710\lcl\languages\ lclstrconsts.xx.po. Vous les placez dans un rép. de votre projet (par exemple \langs).
2. Vous activez l'i18n dans les options de votre projet (et sélectionnez à cette occasion le répertoire \langs que vous venez de créer dans votre projet).
3. Dans le onCreate de votre Form, le code se réduit à ce qui suit. Tel quel, il devrait suffire à régler votre problème.
Je ne sais pas si automatiquement avec l'activation du i18n dans le projet (ie sans le code ci-dessus) Lazarus fait le travail... mais j'en doute même si le répertoire des traductions associé au projet est déclaré au moment de la validation de l'i18n dans les options du projet. J'utilise un code de ce type un peu amélioré pour changer de langue à tout moment dans mes applications.
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
19
20
21
22
23
24 //uses Translations, gettext, StrUtils; var gsFallbackLang, gsLang : string; gsPODirectory : string; // Rép. des "translation files" begin //Gestion des langues gsPODirectory := IncludeTrailingPathDelimiter( IncludeTrailingPathDelimiter( ExtractFilePath(Application.ExeName))+'langs'); GetLanguageIDs(gsLang ,gsFallbackLang); // Choix de la langue par défaut si pas dans celles utilisées par le logiciel if (gsFallbackLang <> 'fr') then begin // and (gsFallbackLang <> 'us') and ... gsFallbackLang := 'fr'; gsLang := 'fr_FR'; end; //Traduction des messages (tous) contenus dans l'unité uglobales [Inutile dans votre cas] // Translations.TranslateUnitResourceStrings('uglobales', gsPODirectory + // ExtractFileNameOnly(Application.ExeName)+'.%s.po', gsLang, gsFallbackLang); //Traduction des caption des buttons des MessageDialogs & co Translations.TranslateUnitResourceStrings('LCLStrConsts', gsPODirectory + 'lclstrconsts.'+gsFallbackLang+'.po', gsLang, gsFallbackLang); end;
Avant
Après
RQ : je n'ai pas pris le tps de traduire le texte du message. Il serait déclaré comme resourcestring (ex. rsMessSupportTech = 'Please, contact technical support'; ), dans mon cas, dans l'unité uGlobales. Il est par défaut en anglais car les default.po à partir desquels sont générés les default.fr.po, sont eux-mêmes en anglais. Lazarus génère alors la structure des fichiers de traduction dans /langs : project1.po, project1.fr.po et project1.en.po
Un tel fichier (project1.fr.po) ressemble alors à
Code testé ce jour sous Lazarus 0.9.31-31628-fpc-2.4.4-20110710 - Windows 7 [32]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #: uglobales.rsmesserror msgid "Error" msgstr "Erreur" #: uglobales.rsmesssupporttech msgid "Please, contact technical support" msgstr "Veuillez contacter le support technique" --> Là, vous placez votre traduction
En conclusion, la gestion de i18n est extrêmement efficace avec Lazarus (encore un excellent point) et totalement contrôlable. On l'implante une fois sur un projet, et on le duplique... Evidemment, c'est plus compliqué au départ que le "paramétrage automatique"... mais après, d'une part, en contre-partie on échappe à ce type de bug, et d'autre part on dispose d'une réelle facilité pour réaliser des applications multi-OS et multilingues.
Bonne fin de WE.
Cordialement. Gilles
Dernière modification par Invité ; 13/09/2011 à 12h21.
Partager