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

From Lazarus wiki
Jump to navigationJump to search
Line 28: Line 28:
 
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.
 
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'.
+
'''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'.
  
 
==IDE options for automatic updates of .po files==
 
==IDE options for automatic updates of .po files==

Revision as of 22:02, 20 June 2008

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'.

IDE options for automatic updates of .po files

  • The unit containing the resource strings must be added to the package or project.
  • You must provide a .po path, this means a separate directory. For example: create a sub directory language in the package / project directory. For projects go to the Project > Project Options. For packages go to Options > IDE integration.

Translating at start of program

For every .po file, you must call TranslateUnitResourceStrings of the LCL translations unit. For example:

<pascal>

   {First of all: add "gettext" and "translations" units in uses clause}
   procedure TForm1.FormCreate(Sender: TObject);
   var
     PODirectory, Lang, FallbackLang: String;
   begin
     PODirectory := '/path/to/lazarus/lcl/languages/';
     GetLanguageIDs(Lang, FallbackLang); // in unit gettext
     TranslateUnitResourceStrings('LCLStrConsts', PODirectory + 'lclstrconsts.%s.po', Lang, FallbackLang);
     MessageDlg('Title', 'Text', mtInformation, [mbOk, mbCancel, mbYes], 0);
   end;

</pascal>