Copie du wikimiroir

Ceci est un miroir du wiki de pascal.chat. La modification, l’historique et la connexion se trouvent là-bas.

Getting translation strings right/fr

Deutsch · English · Español · Français · Русский · 日本語

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 :

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 :

text
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 :

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

Sous sa forme non-niée :

text
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 créer les fichiers .po pour un paquet, opérez ainsi :

text
 * 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.

ResourceStrings dans votre application

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

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.

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:

pascal
 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()

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:

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

Ne pas oublier de changer la ligne

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

par

pascal
 "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 :

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

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

Avec des espaces le résultat sera meilleur.


From the Free Pascal wiki, page "Getting translation strings right/fr", as it stood on 2020-02-16 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Version 3, dernière modification par WikiArchive .