Aller au contenu

« GNU gettext » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
m retrait lien obsolète + ajout Bibliographie
Metamorforme42 (discuter | contributions)
suppression de la section guide pratique (voir WP:NOTGP) => retour à l’état d’ébauche
 
(14 versions intermédiaires par 10 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{ébauche|logiciel}}
{{Infobox Logiciel
{{Infobox Logiciel
| nom = gettext
| nom = gettext
| logo = Official gnu.svg
| logo = Official gnu.svg
| image =
| image = Gettext.svg
| description =
| légende = Workflow
| développeur = [[Projet GNU]]
| développeur = [[Projet GNU]]
| date de première version =
| date de première version =
| langage de programmation =
| langage de programmation =
| environnement = [[Multiplate-forme]]
| environnement = [[Multiplate-forme]]
| langue =
| langues =
| type = [[Internationalisation (informatique)|Internationalisation]]
| type = [[Internationalisation (informatique)|Internationalisation]]
| licence = [[GNU GPL]]
| licence = [[GNU GPL]]
| site web = {{Site officiel|en|http://www.gnu.org/s/gettext}}
| site web = {{URL|https://www.gnu.org/s/gettext}}
}}
}}
'''gettext''' est la [[bibliothèque logicielle]] du [[projet GNU]] qui sert à l'[[internationalisation de logiciel]]s (i18n). Elle est couramment utilisée pour écrire des programmes [[multilingue]]s.
'''gettext''' est la [[bibliothèque logicielle]] du [[projet GNU]] qui sert à l'[[internationalisation de logiciel]]s (i18n). Elle est couramment utilisée pour écrire des programmes [[multilingue]]s.

== Processus ==
{{guide pratique}}
=== Programmeur ===

Le [[code source]] est d'abord modifié pour utiliser les appels à la fonction GNU gettext. Pour la plupart des [[Langage de programmation|langages]], ceci se fait en insérant les chaînes destinées à l'[[Utilisateur (informatique)|utilisateur]] dans la fonction gettext. Pour gagner du temps de saisie et clarifier le code, l'alias de substitution _ est habituellement utilisé pour cette fonction de sorte que le code [[C (langage)|C]] :
<source lang="C">printf(gettext("My name is %s.\n"), my_name);</source>
devienne
<source lang="C">printf(_("My name is %s.\n"), my_name);</source>

gettext utilise alors la chaîne fournie comme clef de recherche de traductions et renvoie la chaîne d'origine si aucune traduction n'est disponible, à la différence de systèmes comme catgets ou de l'utilisation de Loadstring sous [[Microsoft]] [[Microsoft Windows|Windows]], où une identité de programmation est utilisée (souvent un entier).

Outre le C, la fonction GNU gettext est implémentée en : [[C++]], [[Objective C]], [[SH]] script, [[Bourne-Again shell|bash]] script, [[Python (langage)|Python]], [[OCaml]], [[Lisp|GNU CLISP]], Emacs Lisp, librep, [[Smalltalk|GNU Smalltalk]], [[Ruby]], [[Java (langage)|Java]], [[awk|GNU awk]], [[Pascal (langage)|Pascal]], [[wxWidgets]] (par wxLocale), YCP (langage de YaST2), [[Tool Command Language|Tcl]], [[Perl (langage)|Perl]], [[PHP: Hypertext Preprocessor|PHP]], [[Pike (langage)|Pike]], et [[R (logiciel)|R]]. Dans la plupart des cas, son utilisation s'y apparente à celle du C.

xgettext est appliquée aux sources pour produire un [[Fichier informatique|fichier]] .pot, ou modèle, qui contient une liste de toutes les chaînes traduisibles extraites du code. Pour l'exemple ci-dessus, une entrée du fichier .pot ressemblerait à ceci :

#: src/name.c:36
msgid "My name is %s.\n"
msgstr ""

==== Commentaires pour les traducteurs ====

Si le développeur désire donner au traducteur une indication pour une chaîne spécifique, il peut le faire dans le code source à l'aide d'une étiquette (TAG) destinée à xgettext, pour lui permettre de filtrer ces indications et de les mettre dans le fichier .pot. Ces indications seront montrées par [[KBabel]] et [[PoEdit]].

<source lang="C">
printf(_("My name is %s.\n"), my_name);
// TRANSLATORS: Please let %s as it is, because it is exchanged by the program.
// Thank you for contributing to this project.
</source>
Dans cet exemple, l'étiquette est // et doit être fournie à xgettext pour lui permettre d'extraire les commentaires pour les traducteurs lors de la construction du fichier .pot. D'autres caractères peuvent être utilisés comme étiquette du moment qu'ils sont utilisés de manière cohérente dans tout le code.

xgettext -c=//

Avec les commentaires, le fichier .pot ressemblerait à ceci :

#. TRANSLATORS: Please let %s as it is, because it is exchanged by the program.
#. Thank you for contributing to this project.
#: src/name.c:36
msgid "My name is %s.\n"
msgstr ""

=== Traducteur ===

Le traducteur dérive un fichier .po du modèle en utilisant le programme msginit puis remplit les traductions. msginit initialise les traductions de sorte que pour créer une traduction en français, par exemple, il faut exécuter :

msginit --locale=fr --input=name.pot

Ceci engendre fr.po. Un exemple d'entrée serait :

#: src/name.c:36
msgid "My name is %s.\n"
msgstr "My name is %s.\n"

Le traducteur doit les corriger, à la main ou à l'aide d'un outil de traduction comme [[PoEdit]]. Ceci fait, l'entrée prendrait la forme suivante :

#: src/name.c:36
msgid "My name is %s.\n"
msgstr "Je m'appelle %s.\n"

Finalement, les fichiers .po sont compilés en fichiers binaires .mo avec msgfmt. Ils sont alors prêts à être distribués dans le paquet logiciel.

=== Utilisateur ===

L'utilisateur, sur des systèmes de type Unix, ajuste la [[variable d'environnement]] LANG ou, si la langue doit être différente de LANG, LC_MESSAGES et le programme affiche alors les chaînes dans la langue sélectionnée, si un fichier .mo est présent et si les [[locales]] de la langue en question sont installées.


== Notes et références ==
== Notes et références ==
{{références}}
{{références}}


== Bibliographie ==
== Annexes ==
=== Bibliographie ===
* {{ouvrage|prénom1=Ulrich |nom1=Drepper |lien auteur1=Ulrich Drepper |prénom2=Jim |nom2=Meyering |prénom3=François |nom3=Pinard |prénom4=Bruno |nom4=Haible |langue=anglais |titre=GNU gettext tools |sous-titre=for version 0.18.2.25|éditeur=FSF|lien éditeur=Free Software Foundation|jour=25|mois=02|année=2013|pages totales=253 |lire en ligne=https://www.gnu.org/software/gettext/manual/gettext.pdf}} ;
* {{ouvrage|prénom1=Ulrich |nom1=Drepper |lien auteur1=Ulrich Drepper |prénom2=Jim |nom2=Meyering |prénom3=François |nom3=Pinard |prénom4=Bruno |nom4=Haible |langue=anglais |titre=GNU gettext tools |sous-titre=for version 0.18.2|éditeur=FSF|lien éditeur=Free Software Foundation|jour=25|mois=02|année=2013|pages totales=253 |lire en ligne=https://www.gnu.org/software/gettext/manual/gettext.pdf}} ;


== Liens externes ==
=== Liens externes ===
* {{en}} [http://code.google.com/p/gettext-commons/ Gettext-Commons], bibliothèque Java
* {{en}} [http://directory.fsf.org/wiki/Gettext Notice technique], [[répertoire du logiciel libre]] ;
* {{en}} [https://savannah.gnu.org/git/?group=gettext Code source], forge [[GNU Savannah]] ;
* {{fr}} [http://traduc.org/L%27adaptation_des_logiciels/Gettext L'adaptation des logiciels avec Gettext]
* {{fr}} [http://wikiss.tuxfamily.org/?page=gettext gettext] sur WiKiss


{{Palette GNU}}
{{Palette GNU}}

Dernière version du 12 février 2024 à 19:39

gettext
Description de l'image Official gnu.svg.
Description de cette image, également commentée ci-après
Workflow
Informations
Créateur Ulrich DrepperVoir et modifier les données sur Wikidata
Développé par Projet GNU
Première version Voir et modifier les données sur Wikidata
Dernière version 0.22.5 ()[1]Voir et modifier les données sur Wikidata
Dépôt git.savannah.gnu.org/cgit/gettext.gitVoir et modifier les données sur Wikidata
Écrit en CVoir et modifier les données sur Wikidata
Supporte les langages PythonVoir et modifier les données sur Wikidata
Système d'exploitation GNU/Linux, BSD, Microsoft Windows et macOSVoir et modifier les données sur Wikidata
Environnement Multiplate-forme
Formats lus GNU Gettext Machine Object (big endian) (d), GNU Gettext Machine Object (litte endian) (d) et Gettext catalog file (d)Voir et modifier les données sur Wikidata
Formats écrits GNU Gettext Machine Object (big endian) (d), GNU Gettext Machine Object (litte endian) (d) et Gettext catalog file (d)Voir et modifier les données sur Wikidata
Type Internationalisation
Licence GNU GPL
Documentation gnu.org/software/gettext/manualVoir et modifier les données sur Wikidata
Site web www.gnu.org/s/gettext

gettext est la bibliothèque logicielle du projet GNU qui sert à l'internationalisation de logiciels (i18n). Elle est couramment utilisée pour écrire des programmes multilingues.

Notes et références

[modifier | modifier le code]
  1. (en) Bruno Haible (d), « GNU gettext 0.22.5 released », (consulté le )

Bibliographie

[modifier | modifier le code]
  • (en) Ulrich Drepper, Jim Meyering, François Pinard et Bruno Haible, GNU gettext tools : for version 0.18.2, FSF, , 253 p. (lire en ligne) ;

Liens externes

[modifier | modifier le code]