Difference between revisions of "Translations / i18n / localizations for programs/fr"

From Lazarus wiki
Jump to navigationJump to search
m
Line 54: Line 54:
 
     end;
 
     end;
 
</pascal>
 
</pascal>
 +
 +
 +
[[Category:Tutorials]]
 +
[[Category:Localization]]

Revision as of 06:00, 3 September 2010

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) 한국어 (ko) polski (pl) português (pt) русский (ru) 中文(中国大陆)‎ (zh_CN)

Overview

Ceci concerne la façon dont un programme peut utiliser différentes chaînes pour différentes langues comme l'anglais, le chinois, l'allemand, le finois, l'italien, ... . Basiquement cela fonctionne comme ceci: Ajoutez une resourcestring pour chaque caption, compilez pour obtenir le(s) fichier(s) .rst et/ou .po (l'IDE peut le faire automatiquement), créez un fichier traduit .po pour chaque langue (il existe des outils graphiques libres) et utilisez les fonctions de l'unité translations de la LCL pour charger la bonnee au lancement du programme.

Resourcestrings

Par exemple

 resourcestring
   Caption1 = 'Some text';
   HelloWorld1 = 'Hello World';

Elles sont comme des constantes de chaîne normales, ce qui veut dire que vous pouvez leur assigner n'importe quelle chaîne. Par exemple:

 Label1.Caption := HelloWorld1;

Quand FPC la compile, il crée pour chaque unité un fichier unitname.rst contenant les données resourcestring (nom + contenu).

Fichiers .po

Il existe de nombreux outils graphiques libres pour éditer les fichiers .po, qui sont de simples fichiers texte comme les fichiers .rst, mais avec quelques options supplémentaires, comme un header contenant des champs indiquant le nom de l'auteur, le type d'encodage, la langue et la date. Chaque installation de FPC met à dispositionl'outil rstconv (Windows: rstconv.exe). Cet outil peut être utilisé pour convertir un fichier .rst en un fichier .po. L'IDE peut le faire automatiquement. Exemples d'outils libres: kbabel, poedit.

Exemple utilisant directement rstconv:

 rstconv -i unit1.rst -o unit1.po

Traduction

Pour chaque langue, le fichier .po doit être copié et traduit. L'unité translation de la LCL utilise les codes courants des langues(en=anglais, de=allemand, it=italien, ...) pour ses recherches. Par exemple la traduction allemande de unit1.po serait unit1.de.po. Cela signifie copier le fichier unit1.po en unit1.de.po, unit1.it.po, et toute autre langue que vous souhaitez supporter puis les traducteurs pourront éditer leurs fichier .po spécifique.

Note pour les brésiliens/portugais: L'IDE de Lazarus et la LCL possèdent uniquement les traductions du portugais brésilien et ces fichiers ont pour extension 'pb.po' et non 'pt.po'.

Options de l'IDE pour la mise à jour des fichiers .po

  • L'unité contenant les ressources de chaînes doit être ajoutée au package ou au projet.
  • Vous devez définir un chemin pour les .po, ce qui signifie un dossier séparé. Par exemple: créez un sous-dossier language dans le dossier du package/projet. Pour les projets, allez dans Projet > Options du Projet. Pour les packages, allez dans Options > Intégration à l'IDE.

Traduction au début du programme

Pour chaque fichier .po, vous devez appeler TranslateUnitResourceStrings de l'unité translations de la LCL. Par exemple:

<pascal>

   {En premier lieu: ajoutez les unités "gettext" et "translations" à la clause uses}
   procedure TForm1.FormCreate(Sender: TObject);
   var
     PODirectory, Lang, FallbackLang: String;
   begin
     PODirectory := '/path/to/lazarus/lcl/languages/';
     GetLanguageIDs(Lang, FallbackLang); // dans l'unité gettext
     TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);
     MessageDlg('Title', 'Text', mtInformation, [mbOk, mbCancel, mbYes], 0);
   end;

</pascal>