Internationalisation¶
Ajouté dans la version 1.1.
En complément des traductions fournies pour les messages générés par Sphinx comme les barres de navigation, Sphinx offre un mécanisme facilitant la traduction du document en lui-même. Voir les Options for internationalisation pour les détails de configuration.
Visualisation du flux de traitement des traductions dans Sphinx. (Le schéma est réalisé avec plantuml.)¶
Détails de l’internationalisation avec Sphinx¶
gettext [1] est un standard reconnu pour l’internationalisation et la localisation. Il met naïvement en correspondance les messages dans un programme avec des chaines traduites. Sphinx utilise cette infrastructure pour traduire des documents entiers.
Initially project maintainers have to collect all translatable strings (also referred to as messages) to make them known to translators. Sphinx extracts these through invocation of sphinx-build -M gettext.
Chaque élément du doctree se retrouvera individuellement dans un message unique, les liste se trouvant ainsi séparées en différents éléments, alors que les paragraphes le seront aussi grossièrement qu’ils le sont dans le document original. Ceci permet des mises à jour de documents transparentes tout en fournissant aux traducteurs un peu de contexte dans les passages en texte libre. Il appartient au mainteneur de séparer les paragraphes trop longs, car il n’existe pas de manière fiable de le faire automatiquement.
Après que Sphinx a exécuté le MessageCatalogBuilder
, vous trouverez une collection de fichiers .pot
dans votre répertoire de sortie. Ce sont les catalogues modèles et contiennent les messages dans votre langue d’origine uniquement.
Ils peuvent être distribués aux traducteurs qui les transformeront en fichiers .po
— dits catalogues de messages — mettant en correspondance les messages originaux avec les chaines en langues étrangères.
gettext les compile sous forme de catalogues binaires avec msgfmt pour des raisons d’efficacité. Si vous rendez ces fichiers découvrables avec le paramètre locale_dirs
pour votre language
, Sphinx les trouvera automatiquement.
An example: you have a document usage.rst
in your Sphinx project. The
gettext builder will put its messages into usage.pot
. Imagine you have
Spanish translations [2] stored in usage.po
— for your builds to
be translated you need to follow these instructions:
Compile your message catalog to a locale directory, say
locale
, so it ends up in./locale/es/LC_MESSAGES/usage.mo
in your source directory (wherees
is the language code for Spanish.)msgfmt "usage.po" -o "locale/es/LC_MESSAGES/usage.mo"
Configurer
locale_dirs
comme valant["locale/"]
.Configurer
language
comme valantes
(également possible grâce à l’option-D
desphinx-build
).Générer la sortie voulue.
Afin d’éviter les erreurs, un avertissement est émis si les références croisées dans le paragraphe traduit ne correspondent pas à celles de l’original. Ce comportement peut être désactivé globalement avec le paramètre suppress_warnings
. Autrement, pour le supprimer pour certains messages seulement, terminer ceux-ci avec #noqa
comme ceci
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
risus tortor, luctus id ultrices at. #noqa
(Écrire \#noqua
si vous souhaitez que « #noqua » apparaisse littéralement dans le texte. Ceci ne s’applique pas aux blocs de code dans lesquels #noqua
est ignoré puisqu’ils ne contiennent pas de références croisées de toute façon.)
Ajouté dans la version 4.5: Le mécanisme #noqa
.
Traduire avec sphinx-intl¶
Guide rapide¶
sphinx-intl est un outil pratique pour travailler avec le flux de traduction de Sphinx. Cette section décrit une manière facile de traduire avec sphinx-intl.
Installer sphinx-intl :
$ pip install sphinx-intl
Add configurations to
conf.py
.locale_dirs = ['locale/'] # path is example but recommended. gettext_compact = False # optional.
Cette étude de cas présume que la valeur
_build
est affectée à la variable d’environnement BUILDDIR,locale/
au paramètrelocale_dirs
, etFalse
àgettext_compact
(the Sphinx document is already configured as such).Extraire les messages traduisibles dans des fichiers POT :
$ make gettext
The generated pot files will be placed in the
_build/gettext
directory. If you want to customize the output beyond what can be done via the Options for internationalisation, thedefault pot file template
can be replaced by a custommessage.pot.jinja
file placed in any directory listed intemplates_path
.Générer les fichiers PO :
Nous utiliserons les fichiers POT générés à l’étape précédente.
$ sphinx-intl update -p _build/gettext -l de -l ja
Une fois terminé, les fichiers PO générés seront placés dans les répertoires suivants :
./locale/de/LC_MESSAGES/
./locale/ja/LC_MESSAGES/
Traduire les fichiers PO :
As noted above, these are located in the
./locale/<lang>/LC_MESSAGES
directory. An example of one such file, from Sphinx,builders.po
, is given below.# a5600c3d2e3d48fc8c261ea0284db79b #: ../../builders.rst:4 msgid "Available builders" msgstr "<FILL HERE BY TARGET LANGUAGE>"
Autre cas,
msgid
est un segment de texte multiligne comportant de la syntaxe reStructuredText :# 302558364e1d41c69b3277277e34b184 #: ../../builders.rst:9 msgid "" "These are the built-in Sphinx builders. More builders can be added by " ":ref:`extensions <extensions>`." msgstr "" "FILL HERE BY TARGET LANGUAGE FILL HERE BY TARGET LANGUAGE FILL HERE " "BY TARGET LANGUAGE :ref:`EXTENSIONS <extensions>` FILL HERE."
Please be careful not to break reStructuredText notation. Most po-editors will help you with that.
Générer les documents traduits
You need a
language
parameter inconf.py
or you may also specify the parameter on the command line.Pour BSD/GNU make, exécutez :
$ make -e SPHINXOPTS="-D language='de'" html
Dans l’Invite de commande Windows cmd.exe, exécuter :
> set SPHINXOPTS=-D language=de > .\make.bat html
Dans Windows PowerShell, exécuter :
PS> Set-Item env:SPHINXOPTS "-D language=de" PS> .\make.bat html
Félicitations ! La documentation traduite est obtenue dans le répertoire _build/html`
.
Ajouté dans la version 1.3: Le programme sphinx-build invoqué via la commande make compilera les fichiers PO en fichiers MO.
Si vous utilisez la version 1.2.x ou antérieure, veuillez exécuter la commande sphinx-intl build avant d’invoquer la commande make.
Traduction¶
Mise-à-jour des fichiers PO avec de nouveaux fichiers POT¶
Si un document est actualisé, il est nécessaire de générer des fichiers POT mis-à-jour et d’appliquer les différences aux fichiers PO traduits. Afin d’appliquer les mises à jour depuis un fichier POT vers un fichier PO, utilisez la commande sphinx-intl update.
$ sphinx-intl update -p _build/gettext
Utilisation du service Transifex pour la traduction en équipe¶
Transifex is one of several services that allow collaborative translation via a web interface. It has a nifty Go-based command line client that makes it easy to fetch and push translations.
Install the Transifex CLI tool.
You need the tx command line tool for uploading resources (pot files). The official installation process place the
tx
binary file in the current directory along with a README and a LICENSE file, and adds the current directory to$PATH
.$ curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
Voir aussi
Create your Transifex account and create a new project and an organization for your document.
À ce jour, Transifex ne permet pas de gérer plusieurs versions de document dans un projet de traduction. Il est donc préférable d’inclure un numéro de version dans votre nom de projet.
Par exemple :
- Organization ID:
sphinx-document
- ID projet:
sphinx-document-test_1_0
- URL projet:
https://www.transifex.com/projects/p/sphinx-document-test_1_0/
Create an API token to be used in the command-line.
Go to your Transifex API token page and generate a token. Copy the generated token now, as you will not be able to see it again later.
Set your Transifex API token in the user configuration file
$HOME/.transifexrc
.[https://app.transifex.com] rest_hostname = https://rest.api.transifex.com token = paste_your_api_token_here
Alternatively, you can store your Transifex API token as the environment variable
TX_TOKEN
, which is recognized and used by tx.$ export TX_TOKEN=paste_your_api_token_here
Create the project’s config file for tx command.
This process will create
.tx/config
in the current directory.$ cd /your/document/root $ tx init Successful creation of '.tx/config' file
Téléversement des fichiers POT vers le service Transifex.
Register pot files to
.tx/config
file using sphinx-intl update-txconfig-resources, adjusting--pot-dir
value to your project’s pot files” directory:$ cd /your/document/root $ sphinx-intl update-txconfig-resources --pot-dir _build/locale \ --transifex-organization-name=sphinx-document \ --transifex-project-name=sphinx-document-test_1_0
You can use the
SPHINXINTL_TRANSIFEX_ORGANIZATION_NAME
andSPHINXINTL_TRANSIFEX_PROJECT_NAME
environment variables instead of the respective command line arguments.puis téléverser les fichiers POT :
$ tx push -s # Getting info about resources sphinx-document-test_1_0.builders - Getting info sphinx-document-test_1_0.builders - Done # Pushing source files sphinx-document-test_1_0.builders - Uploading file sphinx-document-test_1_0.builders - Done
Transfert des traductions vers Transifex.
Récupération des fichiers PO traduits et génération des traductions HTML.
Téléchargez les catalogues traduits et construisez les fichiers MO. Par exemple, pour générer les fichiers MO pour l’Allemand (de) :
$ cd /your/document/root $ tx pull -l de # Getting info about resources sphinx-document-test_1_0.builders - Getting info sphinx-document-test_1_0.builders - Done # Pulling files sphinx-document-test_1_0.builders [de] - Pulling file sphinx-document-test_1_0.builders [de] - Creating download job sphinx-document-test_1_0.builders [de] - Done
Invoke make html (for BSD/GNU make) passing the language code:
$ make -e SPHINXOPTS="-D language='de'" html
C’est tout !
Astuce
Traduction en local et sur Transifex
Si vous souhaitez pousser tous les fichiers PO de langues, vous le pouvez avec la commande tx push -t. Prenez garde ! Cette opération écrase les traductions dans Transifex.
En d’autres termes, si les fichiers PO ont été édités simultanément en local et via le service, cela nécessiterait beaucoup de temps et d’effort pour les réconcilier.
Utilisation du service Weblate pour la traduction en équipe¶
Pour en savoir plus, consultez la documentation de Weblate.
Contribution à la traduction de Sphinx¶
La manière recommandée aux nouveaux contributeurs pour traduire Sphinx est de rejoindre l’équipe de traduction sur Transifex.
Il y a une sphinx translation page pour la documentation de Sphinx (branche master).
Connectez-vous au service Transifex.
Rendez-vous sur la sphinx translation page.
Cliquez sur
Demander une langue
et remplissez le formulaire.Attendez l’approbation par les mainteneurs de la traduction de Sphinx.
(Après approbation) Traduisez Sphinx sur Transifex.
Detail is here: https://help.transifex.com/en/articles/6248698-getting-started-as-a-translator
Translation progress and statistics¶
Ajouté dans la version 7.1.0.
During the rendering process,
Sphinx marks each translatable node with a translated
attribute,
indicating if a translation was found for the text in that node.
The translation_progress_classes
configuration value
can be used to add a class to each element,
depending on the value of the translated
attribute.
The |translation progress|
substitution can be used to display the
percentage of nodes that have been translated on a per-document basis.
Notes de bas de page