21
Tutoriels / Préparer son script pour la traduction (localisation)
Dernier message par Rantanplan -Bonjour les curieuses et les curieux,
Vous avez écrit un script génial comme celui ci-dessous par exemple :
Code: [Sélectionner]
#! /bin/bash
#script génial à partager avec le monde entier
xmessage "Saluton geamikoj !"
et vous voudriez qu'il puisse être traduit dans n'importe quelle langue.
Soit !
Pour cela, il faut préparer le programme génial ci-dessus en y insérant quelques informations et commandes supplémentaires. Il convient d'encadrer chaque chaîne de caractères à traduire ainsi qu'il suit, par exemple :
... $(gettext "Saluton geamikoj !")...
et d'inclure ces trois lignes après les fonctions si votre programme en contient :
Code: [Sélectionner]
export TEXTDOMAIN=test.sh
export OUTPUT_CHARSET=UTF-8
. gettext.sh # il y a bien un espace entre '.' et 'gettext'
En l'absence, le fichier .mo serait ignoré et ce n'est pas ce que l'on souhaite, n'est-ce pas ?
Enregistrez le fichier ainsi complété qui, pour notre script génial, devrait ressembler à :
Code: [Sélectionner]
#! /bin/bash
#script génial à partager avec le monde entier
export TEXTDOMAIN=test.sh
export OUTPUT_CHARSET=UTF-8
. gettext.sh
xmessage -timeout 15 -bg pink -fg darkblue $(gettext "Saluton geamikoj !")
Puis, installez le devx de la distribution utilisée (par exemple, pour Toutou Linux SlaXen 6.0, il s'agit de devx_slaxen_6.0.sfs).
Ainsi, sera-t-il possible de générer le fichier pot/po avec la commande suivante :
Code: [Sélectionner]
# xgettext [nom_du_script.extension] [-o [nom_fichier_sortie].po]
Un fichier .po sera créé à l'endroit où a été lancée la commande xgettext ou à l'endroit spécifié après l'option '-o'.
Il contiendra quelque chose de comparable à ce qui suit :
Code: [Sélectionner]
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-04-05 15:24+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: test.sh:11
msgid "Saluton geamikoj !"
msgstr ""
En tant que créateur du script, rappelons-le, vraiment génial, pour vous c'est terminé.
À votre charge de mettre à la disposition de la communauté internationale le script proprement dit ainsi que le fichier .po associé.
À charge, pour chaque communauté nationale, de produire le fichier .mo dans sa langue vernaculaire.
Vu votre curiosité naturelle vous voudriez connaître comment feront-ils, ces traducteurs de l'ombre ?
Ils éditeront votre fichier .po avec leur éditeur de textes préféré ;
Ils mettront à jour l'en-tête du fichier .po ;
Ils traduiront les chaînes à traduire pour obtenir, pour le Groland qui est francophone, quelque chose de similaire à :
Code: [Sélectionner]
# Script génial à partager avec le monde entier.
# Copyright (C) 2026 La boîte à coucou
# This file is distributed under the same license as the 'test.sh' package.
# La boîte à coucou <laboite-a-coucouc@laboiteacoucou.org>, 2026.
#
#, fuzzy -----> on en profitera pour supprimer cette ligne.
msgid ""
msgstr ""
"Project-Id-Version: 1.0.0\n"
"Report-Msgid-Bugs-To: <laboite-a-coucouc@laboiteacoucou.org>\n"
"POT-Creation-Date: 2026-04-05 15:24+0200\n"
"PO-Revision-Date: 2026-04-05 15:24+0200\n"
"Last-Translator: groland <groland@groland.grd>\n"
"Language-Team: groland du bas <groland-du-bas@groland.grd>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: test.sh:11
msgid "Saluton geamikoj !"
msgstr "Bonjour les amies et amis !"
Puis, ils enregistreront le fichier '.po' ainsi obtenu.
Pour transformer, le fichier .po en fichier .mo interprétable par le système de localisation, dans un terminal, depuis l'endroit où se trouve le fichier .po, les traducteurs lanceront la commande ci-dessous :
Code: [Sélectionner]
# po2mo [nom_du_fichier].po
po2mo pourra leur demander pour quelle localisation, sur 2 caractères (ou 5, par exemple pt_BR), doit être produit le fichier .mo et/ou le nom du programme.
Le fichier .mo sera créé et automatiquement versé dans /usr/share/locale/[langue sur 2 ou 5 caractères]/LC_MESSAGES/[nom_du_script.extension].mo
Attention ! Les noms du fichier contenant le script et celui .mo doivent IMPÉRATIVEMENT correspondre.
Et lorsqu'un grolandais exécutera le script, il pourra lire dans son idiôme :
Amitiés.
Lien :
en pas français : https://www.gnu.org/software/gettext/manual/gettext.html
.
.