Difference between revisions of "Getting translation strings right/fr"

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category included in page template)
 
(29 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
{{Getting translation strings right}}
 
{{Getting translation strings right}}
  
Cette page contient quelques notes de base sur la façon de traduire des chaînes de caractères correctement dès le début , du point de vue des auteurs originaux (par exemple le plus souvent des programmeurs ).
+
Cette page contient quelques notes sur la manière d'avoir dès le début les chaînes à traduire correctes, à l'usage de leurs auteurs originaux (le plus souvent des programmeurs).
  
"Pour l'obtenir droit" dans ce contexte signifie que les chaînes de traduction ont été préparées correctement pour une traduction plus facile, et la version originale s'est adaptée aux conditions de base pour leur l'usage.
+
Dans ce contexte, cela signifie que les chaînes à traduire ont été prévues pour une traduction facile. et que la version originale est adaptée aux exigences de base pour leur usage.
  
Bien qu'il essaye d'être un langage aussi neutre que possible, il y a en fait une légère tournure vers l'anglais en particulier. vous êtes libre pour prolonger ou d'enlever ce qui ne s'appliquent pas à votre situation (et les ajouter peut-être à cette page ?).
+
Bien que cette page essaie d'être neutre par rapport au langage initial, elle est en fait légèrement orientée vers l'anglais. Vous êtes libre de compléter, ou d'ignorer ce qui ne s'applique pas à votre situation, et éventuellement de mettre à jour la page.
  
 
=== Généralités ===
 
=== Généralités ===
  
Pour éviter des problèmes, s'assurer simplement que '''les chaînes originales sont bonne''' en premier lieu - il y a plusieurs raisons de faire ainsi :
+
Pour éviter des problèmes, assurez-vous en premier lieu que '''les chaînes originales sont correctes'''. Il y a plusieurs raisons de les vérifier :
* les chaines originales sont habituellement employées comme traduction par défaut, faire une mauvaise impression à l'utilisateur finale fait qu'il emploiera les chaines par défaut.
+
* Les chaînes originales sont habituellement employées comme traduction par défaut, et cela peut donner une mauvaise impression à l'utilisateur final s'il lui arrive de tomber sur des chaînes fautives.
* une encore plus mauvaise fabrication fait que le traducteur travail plus dur inutilement, il est responsable de donner l'information originale dans une autre langue. Se rappeler juste que "Ordures dedans, Ordures dehors" principe qui s'applique parfaitement ici.
+
* Au pire, cela rendra inutilement difficile le travail du traducteur. Se rappeler le principe "Garbage in, garbage out", qui s'applique parfaitement ici.
Essayer ainsi de s'assurer que votre '''épellation est correcte''' - employer un dictionnaire si vous êtes incertain.
+
Essayez donc de vous assurer que votre '''orthographe est correcte'''. Consultez un dictionnaire si vous n'êtes pas sûr de vos compétences en la matière.
  
Expressions compréhensibles et bien connues d'utilisation pour une situation donnée que vous voulez décrire, d'une façon '''cohérente'''. Si vous êtes incertain si quelque chose est commun, essayer de mettre d'autres programmes dans la même situation et d'examiner leurs réponses. Les fichiers de littérature et d'aide sont également souvent une bonne ressource pour les termes spéciales ou des expressions, ou de modèle.
+
Utilisez des expressions compréhensibles, d'utilisation courante et de manière '''cohérente'''. Si vous avez des doutes, essayez de mettre d'autres programmes dans la même situation et d'examiner leurs réponses. Les fichiers de documentation et d'aide sont souvent un bon modèle pour les expressions ou termes particuliers.
Essayer d'être conforme dans le choix des expressions aussi. Par exemple les questions
+
Essayez d'être cohérent dans le choix des expressions. Par exemple, les questions :
 
  Supprimer le dossier ?
 
  Supprimer le dossier ?
 
  Effacer le dossier ?
 
  Effacer le dossier ?
 
  Enlever le dossier ?
 
  Enlever le dossier ?
  Zapper le dossier ?
+
  Retirer le dossier ?
Tous ont une signification quelque peu semblable, mais une fois utilisé dans l'interchangeable pour aucune raison apparente l'un ou autre lecteur peut commencer à interpréter des choses étranges.
+
ont toutes une signification semblable, mais si elles sont échangées sans raison apparente, le lecteur peut en faire des interprétations étranges.
Particulièrement les traducteurs sont très enclins à cette erreur, souvent puisqu'ils ne connaissent pas le contexte exact d'un message particulier (par exemple informations sur l'origine du message) et peut interpréter des variations de mot simple comme indication des différences importantes, et sera probablement tenté de choisir (de mauvaises) traductions.
+
Les traducteurs sont particulièrement enclins à cette erreur, puisqu'ils ne connaissent souvent pas le contexte exact d'un message : ils peuvent interpréter de simples variations de vocabulaire comme l'indication de différences importantes, et par conséquent être tentés de choisir une mauvaise traduction.
  
Particulièrement pour des messages d'erreur à l'utilisateur : essayer de '''décrire le problème''' soi-même dans des mots appropriés. Ce n'est jamais l'état du programme qui a mené au message d'erreur. C'est seulement utile pour la personne qui fait le programme, mais pas pour l'utilisateur. Les utilisateurs veulent l'un ou l'autre et gesticulent simplement leurs épaules les ignorent dans le meilleur cas, ou choisisse un autre programme dans le pires des cas parce que sans description appropriée du problème l'utilisateur ne pourra pas fixer le problème et continuer son travail - seulement parce que le programme ne pouvait pas donner une description appropriée de problème.
+
Particulièrement pour des messages d'erreur destinés à l'utilisateur, essayez de '''décrire le problème''' avec les mots appropriés. Ce n'est jamais l'état du programme qui a mené au message d'erreur (ceci est seulement utile au programmeur, mais pas à l'utilisateur). Sinon, les utilisateurs vont soit hausser les épaules en ignorant les messages (dans le meilleur cas), soit choisir un autre programme (dans le pire des cas) : l'utilisateur ne pourra pas résoudre le problème et continuer son travail, et tout cela parce que le programme n'en aura pas donné une description appropriée.
  
Donner (facilement) une '''descriptions compréhensibles '''. Ne pas essayer d'impressionner vos assistances avec des mots étrangers ou très techniques seulement pour dire que le travail courant n'a pas encore été sauvé ou vraiment nécessaire .
+
Donnez une '''description compréhensible'''. N'essayez pas d'impressionner vos utilisateurs avec des mots étrangers ou très techniques, juste pour dire que le travail en cours n'a pas encore été enregistré.
  
Essayer particulièrement d'éviter des négations multiples dans une phrase simple de vos messages, il est presque toujours plus difficile de les lire que leurs contre-parties non-niées. Un exemple a pu être
+
Essayez particulièrement d'éviter des négations multiples dans un message : elles sont presque toujours plus difficiles à lire que leurs équivalents positifs. Exemple :
  Ce composant ne peut pas être lâché sur des non-TControls .
+
  Ce composant ne peut pas être déposé sur des contrôles non visuels.
sous sa forme non-niée  
+
Sous sa forme non-niée :
  Ce composant peut seulement être lâché sur des TControls .
+
  Ce composant peut seulement être déposé sur des contrôles visuels.
il est certainement plus facile de lire et de comprendre .
+
La dernière formulation est sans doute plus facile à lire et à comprendre.
  
 
=== Questions techniques ===
 
=== Questions techniques ===
  
Dans cette section une vue d'ensemble courte des questions techniques, fondamentalement une vue d'ensemble des possibilités existants sont données. Ceux-ci incluent la construction de resourcestring, GNU gettext() et la fonction format().
+
Dans cette section, nous donnons une vue d'ensemble des questions techniques, tout particulièrement des possibilités existantes. Celles-ci incluent la construction de ''resourcestring'', ''GNU gettext()'' et la fonction ''format()''.
  
 
==== Resourcestrings, et GNU gettext ====
 
==== Resourcestrings, et GNU gettext ====
  
Free Pascal a quelques fonctions de langue intégrées de manière a manipuler les Chaines. Il y a une section spéciale d'une unité appelée "resourcestring" ce qui a été spécifiquement présenté pour cette raison. Voir la section appropriée du manuel de FPC (prog.pdf, pg. 89ff ou [http://www.freepascal.org/docs-html/prog/progch9.html#x184-1870009 ici ]) pour les détails.
+
Free Pascal dispose de quelques fonctions de langue intégrées de manière à manipuler les chaînes. Il y a une section spéciale d'une unité appelée "resourcestring" qui a été spécifiquement étudiée pour cette raison. Voir la section appropriée du manuel de FPC (prog.pdf, pg. 89ff ou [http://www.freepascal.org/docs-html/prog/progch9.html#x184-1870009 ici ]) pour les détails.
  
GNU gettext est un ensemble spécial d'utilités pour fournir des traductions a vos programmes, voir le manuel de FPC une fois de plus (prog.pdf, pg. 91ff ou [http://www.freepascal.org/docs-html/prog/progse41.html#x210-2130009.4 ici]).  
+
''GNU gettext'' est un ensemble spécial d'utilitaires pour fournir des traductions de vos programmes : voir le manuel de FPC une fois de plus (prog.pdf, pg. 91ff ou [http://www.freepascal.org/docs-html/prog/progse41.html#x210-2130009.4 ici]).  
  
<u>Note:</u> GNU gettext a une paille conceptuelle qui ne permet pas de tracer une chaine originale simple aux chaines multiples traduites, se rendre compte de cela.
+
<u>Note:</u> ''GNU gettext'' a une faille conceptuelle qui ne permet pas de faire correspondre une chaîne originale simple à de multiples chaînes traduites.
  
 
==== ResourceStrings dans l'IDE ====
 
==== ResourceStrings dans l'IDE ====
  
* Lazarus a un outil pour créer facilement des resourcestrings de chaine. Voir [[IDE Window: Make ResourceString/fr|Faire des ResourceStrings]]
+
* Lazarus a un outil pour créer facilement des chaînes de ressources. Voir [[IDE Window: Make ResourceString/fr|Faire des ResourceStrings]]
  
* Pour chaque section resourcestring FPC crée un fichier .rst, mais il n'y a aucun éditeur pour ces fichiers. Lazarre peut automatiquement créer un fichier .po du fichier .rst. Il y a beaucoup d'outils d'édition de fichier .po (par exemple kbabel).  
+
* Pour chaque section ''resourcestring'', FPC crée un fichier ''.rst'', mais il n'y a aucun éditeur pour ces fichiers. Lazarus peut automatiquement créer un fichier ''.po'' du fichier ''.rst''. Il y a beaucoup d'outils d'édition de fichier ''.po'' (par exemples: kbabel et poEdit).  
Pour permettre créer les fichiers .po pour un paquet faire :
+
Pour créer les fichiers ''.po'' pour un paquet, opérez ainsi :
   * Créer un sous-répertoire 'languages' (ou 'locale', ou autre chose)
+
   * Créez un sous-répertoire ''languages'' (ou ''locale'', ou autre chose) ;
   * Ouvrir le Composant. Puis options -> IDE Intégration -> Répertoire des fichiers .po placer à ''languages''
+
   * Ouvrez le composant. Puis Options -> Intégration de l'EDI -> Répertoire des fichiers ''.po'' que vous fixerez à ''languages'' (ou tout répertoire adapté).
La prochaine fois que vous compilez le paquet, l'IDE créera les fichiers .po. Note: Les fichiers .rst doivent appartenir aux unités de paquet. Autrement l'IDE ignore les fichiers autres .rst.  
+
La prochaine fois que vous compilerez le paquet, l'EDI créera les fichiers ''.po''. Note: Les fichiers ''.rst'' doivent appartenir aux unités de paquet. Sinon, l'EDI ignore les autres fichiers .rst.  
  
 
Le même fonctionnement pour des projets. Le répertoire est placé dans projet -> Options du Projet -> i18n -> Répertoire des fichiers .po.  
 
Le même fonctionnement pour des projets. Le répertoire est placé dans projet -> Options du Projet -> i18n -> Répertoire des fichiers .po.  
Line 63: Line 63:
  
 
* ToDo: Implémenter et documenter rassemblement de tous les fichiers .po des paquets statiquement liés .
 
* ToDo: Implémenter et documenter rassemblement de tous les fichiers .po des paquets statiquement liés .
 +
==== ResourceStrings dans votre application ====
 +
 +
Vous pouvez charger les fichiers .po à l'initialisation pour traduire les resourcestrings. Ajoutez ceci à votre fichier .lpr:
 +
 +
<syntaxhighlight lang=pascal>
 +
...
 +
uses
 +
  ...
 +
  Translations, gettext;
 +
 +
procedure TranslateLCL;
 +
var
 +
  PODirectory, Lang, FallbackLang: String;
 +
begin
 +
  PODirectory:='/path/to/lazarus/lcl/languages/';
 +
  Lang:='';
 +
  FallbackLang:='';
 +
  GetLanguageIDs(Lang,FallbackLang); // in unit gettext
 +
  Translations.TranslateUnitResourceStrings('LCLStrConsts',
 +
                      PODirectory+'lclstrconsts.%s.po',Lang,FallbackLang);
 +
  // ... add here a TranslateUnitResourceStrings call for every po file ...
 +
end;
 +
 +
begin
 +
  TranslateLCL;
 +
  Application.Initialize;
 +
  Application.CreateForm(TForm1, Form1);
 +
  Application.Run;
 +
end.
 +
</syntaxhighlight>
  
 
==== La fonction format() ====
 
==== La fonction format() ====
  
 
Pour ne pas utiliser des chaînes complètement statiques dans les traductions, vous pouvez employer la méthode [[doc:rtl/sysutils/format.html|format()]] dans l'unité sysutils. Il peut remplacer des paramètres donnés dans un texte par leur valeur réelle donnée comme paramètre secondaire dans un ensemble. Exemple:
 
Pour ne pas utiliser des chaînes complètement statiques dans les traductions, vous pouvez employer la méthode [[doc:rtl/sysutils/format.html|format()]] dans l'unité sysutils. Il peut remplacer des paramètres donnés dans un texte par leur valeur réelle donnée comme paramètre secondaire dans un ensemble. Exemple:
<delphi>
+
 
  format('Demain %0:s il y aura du %1:s.', ['Sunday', 'sunshine']);
+
<syntaxhighlight lang=pascal>
</delphi>
+
  format('Demain %0:s il y aura du %1:s.', ['dimanche', 'soleil']);
restituant  
+
</syntaxhighlight>
Demain dimanche il y aura du soleil.
+
 
 +
restituant Demain dimanche il y aura du soleil.
 
Dans ce cas-ci %0:s est un paramètre pour le premier (index 0) argument dans l'ensemble de valeurs réelles (Soleil), et de même %1:s.
 
Dans ce cas-ci %0:s est un paramètre pour le premier (index 0) argument dans l'ensemble de valeurs réelles (Soleil), et de même %1:s.
 
Pour une définition exacte des paramètres permis et leur syntaxe voir le manuel de référence de FPC.
 
Pour une définition exacte des paramètres permis et leur syntaxe voir le manuel de référence de FPC.
Line 96: Line 127:
 
   "Content-Type: text/plain; charset=UTF8\n"
 
   "Content-Type: text/plain; charset=UTF8\n"
  
=== Lié à l'anglais ===
+
=== Particularités liées à l'anglais ===
 +
 
 +
Cette section contient les notes qui s'appliquent en particulier quand l'anglais est la langue originale :
  
Cette section contient les notes qui s'appliquent en particulier en utilisant l'anglais comme langue de basse pour des traductions .
+
* Veillez à réserver assez d'espace pour les textes : en anglais les textes sont presque toujours plus courts (en caractères) que leurs traductions. Prévoyez donc assez d'espace. L'expérience prouve que les chaînes très courtes (quelques caractères) doublent souvent de taille; ce rapport diminue pour les chaînes plus longues.
  
* Veiller à réserver assez d'espace où le texte est produit : L'anglais est une langue dans laquelle les textes sont presque toujours plus courts (en caractères) que leurs traductions respectives, ainsi prévoyez en réservant assez d'espace. L'expérience prouve que les chaînes très courtes de quelques caractères doublent de taille presque souvent; cette différence diminue pendant que les chaînes obtiennent plus longtemps.
+
* Évitez les abréviations en anglais; en plus du fait que ceci raccourcit encore des chaînes déjà courtes, il y a des problèmes graves avec, par exemple, les langues qui emploient les caractères idéographiques, où ces abréviations n'existent pas.
  
* Éviter les abréviations en anglais; en plus du fait que ceci raccourcit encore les chaînes déjà plus courtes, il y a des problèmes graves avec par exemple les langues qui emploient les caractères idéographiques où simplement ces abréviations n'existent pas du tout.
+
* Puisque c'est souvent une question : Dans les signes de ponctuation anglaise (point, virgule, ...) font partie des mots précédents. Particulièrement après un point-virgule il devrait toujours y avoir un espace. La lecture est plus difficile quand la ponctuation est erronée.
  
* Puisque c'est souvent une question : Dans les signes de ponctuation anglaise (point, virgule, ...) font partie des mots précédents, ou former une sorte de mots elles-mêmes s'il n'y a aucun mot précédent (en cas d'énumération). Particulièrement après un point-virgule il devrait toujours y a un espace.
 
 
  There was an error!Please check file settings,compiler settings,...to fix this issue.
 
  There was an error!Please check file settings,compiler settings,...to fix this issue.
Une ponctuation horrible et simplement un mauvais regard et il est plus difficile de lire que d'habitude. Considérer qu'un algorithmes sur une ligne commune sans espaces pour casser la ligne, probablement a pour résultat un arrêt simple au début d'une ligne...
+
Considérez aussi que les algorithmes prévus pour couper les lignes trop longue provoqueront probablement une coupure arbitraire s'il n'y a pas d'espaces.
 +
 
 
  There was an error! Please check file settings, compiler settings, ... to fix this issue.
 
  There was an error! Please check file settings, compiler settings, ... to fix this issue.
c'est probablement mieux avec seulement de la ponctuation.
+
Avec des espaces le résultat sera meilleur.

Latest revision as of 12:26, 16 February 2020

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) русский (ru)

Cette page contient quelques notes sur la manière d'avoir dès le début les chaînes à traduire correctes, à l'usage de leurs auteurs originaux (le plus souvent des programmeurs).

Dans ce contexte, cela signifie que les chaînes à traduire ont été prévues pour une traduction facile. et que la version originale est adaptée aux exigences de base pour leur usage.

Bien que cette page essaie d'être neutre par rapport au langage initial, elle est en fait légèrement orientée vers l'anglais. Vous êtes libre de compléter, ou d'ignorer ce qui ne s'applique pas à votre situation, et éventuellement de mettre à jour la page.

Généralités

Pour éviter des problèmes, assurez-vous en premier lieu que les chaînes originales sont correctes. Il y a plusieurs raisons de les vérifier :

  • Les chaînes originales sont habituellement employées comme traduction par défaut, et cela peut donner une mauvaise impression à l'utilisateur final s'il lui arrive de tomber sur des chaînes fautives.
  • Au pire, cela rendra inutilement difficile le travail du traducteur. Se rappeler le principe "Garbage in, garbage out", qui s'applique parfaitement ici.

Essayez donc de vous assurer que votre orthographe est correcte. Consultez un dictionnaire si vous n'êtes pas sûr de vos compétences en la matière.

Utilisez des expressions compréhensibles, d'utilisation courante et de manière cohérente. Si vous avez des doutes, essayez de mettre d'autres programmes dans la même situation et d'examiner leurs réponses. Les fichiers de documentation et d'aide sont souvent un bon modèle pour les expressions ou termes particuliers. Essayez d'être cohérent dans le choix des expressions. Par exemple, les questions :

Supprimer le dossier ?
Effacer le dossier ?
Enlever le dossier ?
Retirer le dossier ?

ont toutes une signification semblable, mais si elles sont échangées sans raison apparente, le lecteur peut en faire des interprétations étranges. Les traducteurs sont particulièrement enclins à cette erreur, puisqu'ils ne connaissent souvent pas le contexte exact d'un message : ils peuvent interpréter de simples variations de vocabulaire comme l'indication de différences importantes, et par conséquent être tentés de choisir une mauvaise traduction.

Particulièrement pour des messages d'erreur destinés à l'utilisateur, essayez de décrire le problème avec les mots appropriés. Ce n'est jamais l'état du programme qui a mené au message d'erreur (ceci est seulement utile au programmeur, mais pas à l'utilisateur). Sinon, les utilisateurs vont soit hausser les épaules en ignorant les messages (dans le meilleur cas), soit choisir un autre programme (dans le pire des cas) : l'utilisateur ne pourra pas résoudre le problème et continuer son travail, et tout cela parce que le programme n'en aura pas donné une description appropriée.

Donnez une description compréhensible. N'essayez pas d'impressionner vos utilisateurs avec des mots étrangers ou très techniques, juste pour dire que le travail en cours n'a pas encore été enregistré.

Essayez particulièrement d'éviter des négations multiples dans un message : elles sont presque toujours plus difficiles à lire que leurs équivalents positifs. Exemple :

Ce composant ne peut pas être déposé sur des contrôles non visuels.

Sous sa forme non-niée :

Ce composant peut seulement être déposé sur des contrôles visuels.

La dernière formulation est sans doute plus facile à lire et à comprendre.

Questions techniques

Dans cette section, nous donnons une vue d'ensemble des questions techniques, tout particulièrement des possibilités existantes. Celles-ci incluent la construction de resourcestring, GNU gettext() et la fonction format().

Resourcestrings, et GNU gettext

Free Pascal dispose de quelques fonctions de langue intégrées de manière à manipuler les chaînes. Il y a une section spéciale d'une unité appelée "resourcestring" qui a été spécifiquement étudiée pour cette raison. Voir la section appropriée du manuel de FPC (prog.pdf, pg. 89ff ou ici ) pour les détails.

GNU gettext est un ensemble spécial d'utilitaires pour fournir des traductions de vos programmes : voir le manuel de FPC une fois de plus (prog.pdf, pg. 91ff ou ici).

Note: GNU gettext a une faille conceptuelle qui ne permet pas de faire correspondre une chaîne originale simple à de multiples chaînes traduites.

ResourceStrings dans l'IDE

  • Pour chaque section resourcestring, FPC crée un fichier .rst, mais il n'y a aucun éditeur pour ces fichiers. Lazarus peut automatiquement créer un fichier .po du fichier .rst. Il y a beaucoup d'outils d'édition de fichier .po (par exemples: kbabel et poEdit).

Pour créer les fichiers .po pour un paquet, opérez ainsi :

 * Créez un sous-répertoire languages (ou locale, ou autre chose) ;
 * Ouvrez le composant. Puis Options -> Intégration de l'EDI -> Répertoire des fichiers .po que vous fixerez à languages (ou tout répertoire adapté).

La prochaine fois que vous compilerez le paquet, l'EDI créera les fichiers .po. Note: Les fichiers .rst doivent appartenir aux unités de paquet. Sinon, l'EDI ignore les autres fichiers .rst.

Le même fonctionnement pour des projets. Le répertoire est placé dans projet -> Options du Projet -> i18n -> Répertoire des fichiers .po.

  • Pour créer une traduction allemande : copier le fichier unit1.po vers unit1.de.po. Employer alors un éditeur de texte ou un éditeur de fichier .po pour traduire toutes les chaînes.
  • L'IDE chargera automatiquement des fichiers .po pour les composants installés, s'ils existe. Par exemple voir lazarus/components/projecttemplates/languages/.
  • ToDo: Implémenter et documenter la mise à jour du fichier .po traduit quand de nouvelle resourcestrings sont ajoutés .
  • ToDo: Implémenter et documenter rassemblement de tous les fichiers .po des paquets statiquement liés .

ResourceStrings dans votre application

Vous pouvez charger les fichiers .po à l'initialisation pour traduire les resourcestrings. Ajoutez ceci à votre fichier .lpr:

...
uses
  ...
  Translations, gettext;

procedure TranslateLCL;
var
  PODirectory, Lang, FallbackLang: String;
begin
  PODirectory:='/path/to/lazarus/lcl/languages/';
  Lang:='';
  FallbackLang:='';
  GetLanguageIDs(Lang,FallbackLang); // in unit gettext
  Translations.TranslateUnitResourceStrings('LCLStrConsts',
                      PODirectory+'lclstrconsts.%s.po',Lang,FallbackLang);
  // ... add here a TranslateUnitResourceStrings call for every po file ...
end;

begin
  TranslateLCL;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

La fonction format()

Pour ne pas utiliser des chaînes complètement statiques dans les traductions, vous pouvez employer la méthode format() dans l'unité sysutils. Il peut remplacer des paramètres donnés dans un texte par leur valeur réelle donnée comme paramètre secondaire dans un ensemble. Exemple:

 format('Demain %0:s il y aura du %1:s.', ['dimanche', 'soleil']);

restituant Demain dimanche il y aura du soleil. Dans ce cas-ci %0:s est un paramètre pour le premier (index 0) argument dans l'ensemble de valeurs réelles (Soleil), et de même %1:s. Pour une définition exacte des paramètres permis et leur syntaxe voir le manuel de référence de FPC.

Quelques directives pour l'utilisation de la fonction format()

  • Essayer d'employer des paramètres classés dans les chaînes originales, même si ils sont facultatifs. Une fois utilisé, ils permettent au traducteur de déplacer les paramètres facilement dans la phrase lui permettant des expressions plus normales(en déplaçant réellement les paramètres dans la phrase vous pouvez créer des phrases appropriées dans cette langue).
  • Ne jamais composer une phrase de plus d'une chaine. Employer toujours la méthode format() à partir de l'unité sysutils pour construire la chaine correcte en utilisant des paramètres pendant le temps d'exécution. Les traducteurs ne pourront habituellement pas reconstruire la phrase entière, donc incapable de donner une bonne traduction; considérer seulement qu'il y a souvent des centaines de chaînes dans une base de données de traduction...
  • Ne pas composer en utilisant des espaces. Déplacer simplement votre Label à la position appropriée en premier lieu. Il peut y avoir des problèmes avec des changements de police, et les espaces apparemment superflus seront difficile à équilibré par le traducteur.

Note: Puisque format() n'interprète pas les caractères d'échappements (par exemple C's "\n", "\t", etc) et GNU gettext pour toute ses raisons étant le système de traduction de choix (et ses outils ne pouvant pas interpréter non plus les caractères d'échappements), on exige aux programmeurs d'insérer les coupures de ligne.Dans la version courante de Lazarus, "\n" et "\t" dans les chaines traduites sont remplacés par le caractère nouvelle ligne et tabulation.

Convertir le jeu de caractères d'une traduction

Par exemple : convertir un fichier de ISO-8859-1 à UTF-8:

 iconv --from-code=ISO-8859-1 --to-code=UTF-8 ancienfichier.po > nouveaufichier.po

Ne pas oublier de changer la ligne

 "Content-Type: text/plain; charset=ISO-8859-1\n"

par

 "Content-Type: text/plain; charset=UTF8\n"

Particularités liées à l'anglais

Cette section contient les notes qui s'appliquent en particulier quand l'anglais est la langue originale :

  • Veillez à réserver assez d'espace pour les textes : en anglais les textes sont presque toujours plus courts (en caractères) que leurs traductions. Prévoyez donc assez d'espace. L'expérience prouve que les chaînes très courtes (quelques caractères) doublent souvent de taille; ce rapport diminue pour les chaînes plus longues.
  • Évitez les abréviations en anglais; en plus du fait que ceci raccourcit encore des chaînes déjà courtes, il y a des problèmes graves avec, par exemple, les langues qui emploient les caractères idéographiques, où ces abréviations n'existent pas.
  • Puisque c'est souvent une question : Dans les signes de ponctuation anglaise (point, virgule, ...) font partie des mots précédents. Particulièrement après un point-virgule il devrait toujours y avoir un espace. La lecture est plus difficile quand la ponctuation est erronée.
There was an error!Please check file settings,compiler settings,...to fix this issue.

Considérez aussi que les algorithmes prévus pour couper les lignes trop longue provoqueront probablement une coupure arbitraire s'il n'y a pas d'espaces.

There was an error! Please check file settings, compiler settings, ... to fix this issue.

Avec des espaces le résultat sera meilleur.