Extensions

Les greffons permettent de personnaliser et d’automatiser le flux du travail de traduction. Les administrateurs peuvent ajouter et gérer les greffons à partir du menu OpérationsGreffons de chaque projet ou composant de traduction. Les greffons peuvent également être installés sur l’ensemble du site dans Interface de gestion.

Indication

Vous pouvez également configurer les greffons en utilisant API, DEFAULT_ADDONS, ou install_addon.

Add-ons that opt in to manual triggering can be run from add-on management or using the API. Results are recorded in the add-on activity log.

../_images/addons.webp

Événements qui activent les greffons

Installation de greffons

Activé lorsqu’un greffon a été installé.

Mise à jour de composant

Activé lors de la modification d’un composant telle que :

  • Les chaînees ont été modifiées dans le dépôt.

  • Une chaîne a été ajoutée.

  • Une nouvelle traduction a été ajoutée.

Quotidien

Déclenché quotidiennement mais les extensions répartissent généralement leur charge quotidienne entre les composants selon BACKGROUND_TASKS.

Modification d’événement

Activé après qu’un événement de modification ait été créé.

Manual trigger

Triggered when an add-on is run manually from add-on management or the API.

Dépôt après l’ajout

Activé juste après que la nouvelle traduction ait été ajoutée et validée.

Dépôt après le commit

Activé juste après que les modifications aient été validées.

Après push dans le dépôt

Activé juste après que le dépôt soit poussé sur l’amont.

Repository post-remove

Triggered just after a translation is removed.

Après la mise à jour du dépôt

Activé à chaque fois que de nouvelles modifications sont poussées sur le dépôt amont.

Pré-validation du dépôt

Activé juste avant que les modifications ne soient validées.

Avant push dans le dépôt

Déclenché juste avant que le dépôt ne soit poussé vers l’amont.

Avant la mise à jour du dépôt

Activé juste avant une tentative de mise à jour du dépôt.

Unité après enregistrement

Activé juste après que la chaîne de caractère soit enregistrée.

Unité post synchrone

Activé après que la chaîne de caractère soit synchronisée avec le système de contrôle des versions.

Unité avant la création

Activé juste après qu’une nouvelle chaîne de caractères est sauvegardée.

Greffons intégrés

Traduction automatique

ID du module:

weblate.autotranslate.autotranslate

Configuration:

mode

Mode de traduction automatique

Choix disponibles :

suggest

Ajouter comme suggestion

translate

Ajouter comme traduction

fuzzy

Ajouter comme « À vérifier »

q

Requête

Veuillez noter que traduire toutes les chaînes écrasera les traductions existantes.

auto_source

Source des traductions automatiques

Choix disponibles :

others

Autres composants de traduction

mt

Traduction automatisée

component

Composant

Précisez l’identifiant du composant à utiliser comme source, laissez vide pour utiliser tous les composants du projet actuel.

engines

Moteurs de traduction automatisée

Moteurs de traduction automatisée

threshold

Seuil de score

Déclencheurs:

Installation de greffons, Mise à jour de composant, Quotidien, Modification d’événement

Traduit automatiquement les chaînes en utilisant des services de traduction automatique ou les traductions dans d’autres composants.

JavaScript localisation CDN

Ajouté dans la version 4.2.

ID du module:

weblate.cdn.cdnjs

Configuration:

threshold

Seuil de traduction

Le pourcentage de chaînes traduites afin que la traduction soit prise en compte.

css_selector

Sélecteur CSS

Sélecteur CSS pour détecter les éléments traduisibles.

cookie_name

Nom du cookie de langue

Nom du cookie contenant la langue préférée.

files

Extraire des chaînes de caractères depuis des fichiers HTML

Liste des noms de fichiers dans le dépôt actuel ou des URL distantes à analyser pour les chaînes traduisibles.

Déclencheurs:

Installation de greffons, Quotidien, Dépôt après le commit, Repository post-remove, Après la mise à jour du dépôt

Publie les traductions dans le réseau de diffusion de contenu (CDN) pour utilisation dans la localisation JavaScript ou HTML.

Peut être utilisé pour localiser des pages HTML statiques ou pour charger la localisation dans le code JavaScript.

Génère une URL unique pour votre composant que vous pouvez inclure dans les documents HTML pour les localiser. Voir Translating HTML and JavaScript using Weblate CDN pour plus de détails.

Note

Cette extension requiert un paramétrage complémentaire du serveur Weblate. LOCALIZE_CDN_PATH indique où les fichiers générés doivent être écrits (dans un système de fichiers) et LOCALIZE_CDN_URL définit où ils seront mis en ligne (URL). La mise en ligne n’est pas effectuée par Weblate et doit être effectuée par ailleurs (par exemple en utilisant un service CDN).

Cette extension est configurée sur Hosted Weblate et sert les fichiers via https://weblate-cdn.com.

Translation files CDN

Ajouté dans la version 2026.5.

ID du module:

weblate.cdn.files

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Mise à jour de composant, Dépôt après le commit, Repository post-remove, Après la mise à jour du dépôt

Publishes translation files into a content delivery network.

Publishes translation files without converting them to another format. Files are written below the add-on specific CDN directory and served from LOCALIZE_CDN_URL/<add-on UUID>/. Single-file translations use the language code and original file extension, for example cs.json or de.po. Multi-file translations are served below the language code using paths relative to the translation directory. Monolingual components include the source language file, while bilingual components publish only target-language files. See CDN de localisation for secure serving guidance.

Supprimer les chaînes constituées d’espaces

Ajouté dans la version 4.4.

ID du module:

weblate.cleanup.blank

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Dépôt après le commit, Après la mise à jour du dépôt

Supprime les chaînes sans traduction des fichiers de traduction.

À utiliser pour ne pas avoir de chaînes vides dans les fichiers de traduction (par exemple si votre bibliothèque de localisation les affiche comme manquantes au lieu de revenir au texte d’origine).

Nettoyer les fichiers de traduction

ID du module:

weblate.cleanup.generic

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Après la mise à jour du dépôt, Pré-validation du dépôt

Mettre à jour tous les fichiers de traduction pour qu’ils correspondent au fichier mono-langue de base. Pour la plupart des formats de fichier, cela signifie supprimer les clés de traduction désuètes.

Pour les formats qui ont un contenu supplémentaire en plus des chaînes de traduction (comme Fichiers HTML, Fichiers RC Windows, ou Format OpenDocument) cela permet aussi de synchroniser le fichier de traduction avec le fichier de base.

Ajouter les langues manquantes

ID du module:

weblate.consistency.languages

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Quotidien, Dépôt après l’ajout

Garantit qu’un ensemble cohérent de langues est utilisé pour tous les composants d’un projet.

Note

Le composant partagé à partir d’autres projets ne sont pas pris en compte ici.

Les langues manquantes sont vérifiées toutes les 24 heures, et lorsque de nouvelles langues sont ajoutées dans Weblate.

Contrairement à d’habitude, ce module s’applique à l’ensemble du projet.

Indication

Traduisez automatiquement les chaînes de caractères nouvellement ajoutées avec Traduction automatique.

Découverte du composant

ID du module:

weblate.discovery.discovery

Configuration:

match

Expression rationnelle à laquelle faire correspondre les fichiers de traduction

L’expression rationnelle doit définir des groupes nommés pour composant et langue.

file_format

Format de fichier

Format de fichier

name_template

Personnaliser le nom du composant

Utilisez la syntaxe des modèles Django. Ce modèle doit inclure {{ component }}.

base_file_template

Définir le nom du fichier de base mono-langue

Laisser vide pour les fichiers de traduction bilingues. Si ce champ est défini, ce modèle doit inclure {{ component }}.

new_base_template

Définit le fichier de base pour de nouvelles traductions

Nom du fichier utilisé pour la création de nouvelles traductions. Pour gettext choisir un fichier .pot. Ce modèle doit inclure {{ component }}.

intermediate_template

Fichier de langue intermédiaire

Nom du fichier de traduction intermédiaire. Dans la plupart des cas, il s’agit d’un fichier de traduction fourni par les développeurs et utilisé pour créer les chaînes sources. Ce modèle doit inclure {{ component }}.

language_regex

Filtre sur la langue

Expression rationnelle pour filtrer les fichiers de traduction lors de la recherche d’un motif de fichier.

copy_addons

Dupliquer les extensions du composant principal vers les éléments nouvellement créés

remove

Supprimer les composants pour les fichiers inexistants

Déclencheurs:

Installation de greffons, Après la mise à jour du dépôt

Ajoute ou supprime automatiquement des composants du projet en fonction des fichiers modifiés dans le système de contrôle de version.

The matching is done using regular expressions enabling complex configuration, but some knowledge is required to do so. The regular expression to match translation files has to contain two named groups to match component and language. All named groups in the regular expression can be used as variables in the template fields.

Discovery requirements

To discover a component successfully, the configuration has to do all of the following:

  • The regular expression must define component and language named groups.

  • Template fields used to name or locate per-component files must include {{ component }}, so the rendered value actually changes for each discovered component.

  • For monolingual formats, the component must contain a file matching base_file_template and at least one translation file matching match.

Worked example: news_<lang>.md

This is a common filename-based language variant layout:

  • docs/news_en.md

  • docs/news_cs.md

  • docs/guide_en.md

Use the Filename-based language variants preset for a starting point, then choose the matching file format and review the populated values.

Expression régulière :

(?:(?P<path>.*/))?(?P<component>.+?)_(?P<language>[A-Za-z]{2,3}(?:[_-][A-Za-z0-9]+)*)\.(?P<extension>[^/.]+)

Nom du composant :

{{ component }}

Discovered file masks:
  • docs/news_*.md

  • docs/guide_*.md

In this example, {{ component }} resolves to the basename before the language suffix, so docs/news_en.md, docs/news_pt_BR.md, and docs/news_pt-BR.md all become the news component.

Vous pouvez utiliser les balises du modèle Django dans tous les champs de nom de fichier, par exemple :

{{ component }}

Component name parsed from the component match group

{{ component|title }}

Nom de fichier du composant avec la première lettre en majuscule

{{ path }}: {{ component }}

Groupe de correspondance personnalisé à partir de l’expression rationnelle

Une fois que vous aurez cliqué sur Enregistrer, un aperçu des composants correspondants sera présenté, à partir duquel vous pourrez vérifier si la configuration correspond réellement à vos besoins :

../_images/addon-discovery.webp

Exemples de découverte du composant

The worked example above covers the most common filename-based variant layout. The following examples show other repository structures you can match.

Un dossier par langue

Un dossier par langue contenant des fichiers de traduction pour les composants.

Expression régulière :

(?P<language>[^/.]*)/(?P<component>[^/]*)\.po

Fichiers correspondants :
  • cs/application.po

  • cs/website.po

  • de/application.po

  • de/website.po

Liste des paramètres régionaux Gettext

Structure habituelle pour stocker les fichiers PO de gettext.

Expression régulière :

locale/(?P<language>[^/.]*)/LC_MESSAGES/(?P<component>[^/]*)\.po

Fichiers correspondants :
  • locale/cs/LC_MESSAGES/application.po

  • locale/cs/LC_MESSAGES/website.po

  • locale/de/LC_MESSAGES/application.po

  • locale/de/LC_MESSAGES/website.po

Noms de fichier complexes

Utilisation simultanée du nom du composant et de la langue dans le nom du fichier.

Expression régulière :

src/locale/(?P<component>[^/]*)\.(?P<language>[^/.]*)\.po

Fichiers correspondants :
  • src/locale/application.cs.po

  • src/locale/website.cs.po

  • src/locale/application.de.po

  • src/locale/website.de.po

Code de langue répété

Langue utilisée à la fois dans le chemin et le nom du fichier.

Expression régulière :

locale/(?P<language>[^/.]*)/(?P<component>[^/]*)/(?P=language)\.po

Fichiers correspondants :
  • locale/cs/application/cs.po

  • locale/cs/website/cs.po

  • locale/de/application/de.po

  • locale/de/website/de.po

Séparer les chaînes Android

Ressources Android divisées en plusieurs fichiers.

Expression régulière :

res/values-(?P<language>[^/.]*)/strings-(?P<component>[^/]*)\.xml

Fichiers correspondants :
  • res/values-cs/strings-about.xml

  • res/values-cs/strings-help.xml

  • res/values-de/strings-about.xml

  • res/values-de/strings-help.xml

Plusieurs chemins sont possibles

Projet Maven multi-modules avec traductions de fichiers properties Java.

Expression régulière :

(?P<originalHierarchy>.+/)(?P<component>[^/]*)/src/main/resources/ApplicationResources_(?P<language>[^/.]*)\.properties

Nom du composant :

{{ originalHierarchy }}: {{ component }}

Fichiers correspondants :
  • parent/module1/submodule/src/main/resources/ApplicationResources_fr.properties

  • parent/module1/submodule/src/main/resources/ApplicationResource_es.properties

  • parent/module2/src/main/resources/ApplicationResource_de.properties

  • parent/module2/src/main/resources/ApplicationResource_ro.properties

Indication

L’extension de la découverte des composants utilise les URLs internes de Weblate. C’est un moyen pratique pour partager la configuration du système de contrôle des versions entre plusieurs composants. Les composants liés utilisent le dépôt local du composant principal établit en remplissant le weblate://project/main-component du champ Dépôt du code source (dans Opérations ↓ Paramètres ↓ Système de contrôle des versions) pour chaque composant respectif. Cela fait gagner du temps lors de la configuration et permet également d’économiser les ressources systèmes.

Indication

Veillez à ce que le nouveau composant contienne l’ensemble des langues traduisibles avec Ajouter les langues manquantes.

Messagerie Fedora

Ajouté dans la version 5.15.

ID du module:

weblate.fedora_messaging.publish

Configuration:

events

Évènements de modification

Évènements de modification

amqp_host

Hôte de courtier AMQP

Le courtier AMQP auquel se connecter.

amqp_ssl

Utiliser SSL pour la connexion AMQP

ca_cert

Certificats CA

Ensemble de certificats d’autorité de certification encodés au format PEM, utilisé pour valider le certificat présenté par le serveur.

client_key

Clé SSL du client

Clé SSL privée du client encodée au format PEM.

client_cert

Certificats SSL clients

Certificat SSL client encodé en PEM.

Déclencheurs:

Modification d’événement

Envoie des notifications à un échange AMQP compatible avec Fedora Messaging.

Fedora Messaging est un serveur de publication AMQP qui diffuse toutes les modifications apportées à Weblate. Vous pouvez ainsi connecter des services supplémentaires aux modifications de Weblate.

Message topic

All messages have topic weblate.<action>.<project>.<component>.<translation>. The action is lowercase textual representation of action with underscores instead of space, for example resource_update, all other parts are optional and represent slug of the object or a language code.

Message body

Le corps du message comprend les champs suivants (sous réserve de leur disponibilité pour l’événement) :

change_id

Numerical ID of change

action

Verbose name of the change.

timestamp

ISO formatted timestamp

target

New value of the change (eg. new translation of the string)

old

Old value of the change (eg. previous translation of the string)

source

Source string.

url

URL absolue pour afficher l’objet associé.

author

Nom d’utilisateur de l’auteur (cela peut être différent de celui de l’utilisateur, par exemple lors de l’acceptation de suggestions)

user

Acting username

project

Identifiant du projet

component

Identifiant du composant

translation

Code de langue de traduction

Message headers

Il existe d’autres en-têtes que vous pouvez également utiliser pour le routage :

action

Verbose name of the change.

project

Identifiant du projet

component

Identifiant du composant

Example messages

Repository merge event:

{
  "id": 1,
  "action": "Merged repository",
  "timestamp": "2017-06-15T11:30:47.325000+00:00",
  "url": "http://example.com/projects/test/test/",
  "component": "test"
}

New source string event:

{
  "id": 2,
  "action": "New source string",
  "timestamp": "2017-06-15T11:30:47.372000+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

Resource update event:

{
  "id": 6,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.410000+00:00",
  "url": "http://example.com/projects/test/test/cs/",
  "project": "test",
  "component": "test",
  "translation": "cs"
}
{
  "id": 7,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.510000+00:00",
  "url": "http://example.com/projects/test/test/de/",
  "project": "test",
  "component": "test",
  "translation": "de"
}
{
  "id": 8,
  "action": "Resource update",
  "timestamp": "2017-06-15T11:30:47.595000+00:00",
  "url": "http://example.com/projects/test/test/it/",
  "project": "test",
  "component": "test",
  "translation": "it"
}

Project removal event:

{
  "id": 9,
  "action": "Removed project",
  "timestamp": "2019-10-17T15:57:08.559420+00:00",
  "target": "test",
  "user": "testuser"
}

New contributor event:

{
  "id": 11,
  "action": "New contributor",
  "timestamp": "2019-10-17T15:57:08.759960+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "author": "testuser",
  "user": "testuser",
  "project": "test",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

New translation event:

{
  "id": 12,
  "action": "New translation",
  "timestamp": "2019-10-17T15:57:08.772591+00:00",
  "url": "http://example.com/translate/test/test/cs/?checksum=6412684aaf018e8e",
  "target": ["Ahoj svete!\n"],
  "author": "testuser",
  "user": "testuser",
  "project": "test",
  "component": "test",
  "translation": "cs",
  "source": ["Hello, world!\n"]
}

Modification en masse

ID du module:

weblate.flags.bulk

Configuration:

q

Requête

state

État à paramétrer

Choix disponibles :

-1

Ne pas modifier

10

À vérifier

11

Nécessite une révision (Nécessite une réécriture)

12

À corriger (À vérifier)

20

Traduit

30

Approuvé

add_flags

Drapeaux de traduction à ajouter

remove_flags

Drapeaux de traduction à supprimer

add_labels

Étiquettes à ajouter

remove_labels

Étiquettes à supprimer

Déclencheurs:

Installation de greffons, Mise à jour de composant

Modifier en masse les drapeaux, les étiquettes ou les statuts des chaînes.

Exemples :

Étiqueter automatiquement les nouvelles chaînes de caractères

Requête de recherche

NOT has:label

Étiquettes à ajouter

récent

Marquer toutes les chaines du journal des modifications de Fichiers de métadonnées de l’App Store en lecture seule

Requête de recherche

language:en AND key:changelogs/

Drapeaux de traduction à ajouter

read-only

Marquage de certaines chaînes en lecture seule

Requête de recherche

source:r"^\`\`[.a-zA-Z0-9_-]*\`\`$" AND language:en

Drapeaux de traduction à ajouter

read-only

Signaler les traductions inchangées comme « À réécrire »

ID du module:

weblate.flags.same_edit

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Unité avant la création

Lorsqu’une nouvelle chaîne traduisible est importée du système de contrôle de version et qu’elle correspond à une chaîne source, Weblate la signale comme nécessitant une réécriture. Cette fonctionnalité est particulièrement utile pour les formats de fichiers contenant des chaînes sources pour les chaînes non traduites.

Indication

Il se peut que vous vouliez également renforcer la vérification de Traduction inchangée en ajoutant l’indicateur strict-same à Drapeaux de traduction.

Signaler les nouvelles chaînes de caractères sources comme « À vérifier »

ID du module:

weblate.flags.source_edit

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Unité avant la création

Lorsqu’une nouvelle chaîne de caractères est importée du système de contrôle de version, elle est signalée comme nécessitant une vérification dans Weblate. Vous pouvez ainsi facilement filtrer et modifier les chaînes de caractères écrites par les développeurs.

Signaler les nouvelles traductions comme « À réécrire »

ID du module:

weblate.flags.target_edit

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Unité avant la création

Lorsqu’une nouvelle chaîne traduisible est importée du système de contrôle de version, elle est signalée comme nécessitant une réécriture dans Weblate. Vous pouvez ainsi facilement filtrer et modifier les traductions créées par les développeurs.

Signaler les traductions mises à jour du dépôt comme « À réécrire »

ID du module:

weblate.flags.target_repo_update

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Unité post synchrone

Lorsqu’une traduction de chaîne est modifiée dans le système de contrôle de version, Weblate la signale comme nécessitant une réécriture. Cette fonctionnalité est particulièrement utile si les fichiers de traduction sont fréquemment mis à jour manuellement ou par un service externe.

Copier les chaînes sources dans les chaînes en lecture seule

Ajouté dans la version 4.18.

ID du module:

weblate.generate.fill_read_only

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Mise à jour de composant, Quotidien

Alimente chaque chaîne de traduction en lecture seule avec la chaîne source.

Générateur de statistiques

ID du module:

weblate.generate.generate

Configuration:

filename

Nom du fichier généré

template

Contenu du fichier généré

Déclencheurs:

Installation de greffons, Pré-validation du dépôt

Génère un fichier avec des informations détaillées sur les statuts de la traduction.

Vous pouvez utiliser un modèle Django à la fois dans le nom de fichier et dans le contenu, voir Balisage de modèle pour une description détaillée des balises.

Par exemple, générer un fichier de résumé pour chaque traduction :

Nom du fichier généré

locale/{{ language_code }}.json

Contenu
{
   "language": "{{ language_code }}",
   "strings": "{{ stats.all }}",
   "translated": "{{ stats.translated }}",
   "last_changed": "{{ stats.last_changed }}",
   "last_author": "{{ stats.last_author }}",
}

Voir aussi

Balisage de modèle

Pré-remplir la traduction avec la source

Ajouté dans la version 4.11.

ID du module:

weblate.generate.prefill

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Mise à jour de composant, Quotidien

Alimente les chaînes de traduction avec la chaîne source.

All untranslated strings in the component will be filled with the source string, and marked as needing edit. Use this when you can not have empty strings in the translation files. .. AUTOGENERATED START: weblate.generate.pseudolocale .. This section is automatically generated by ./manage.py list_addons. Do not edit manually.

Génération d’une pseudo-traduction

Ajouté dans la version 4.5.

ID du module:

weblate.generate.pseudolocale

Configuration:

source

Chaînes source

target

Traduction cible

Toutes les chaines de cette traduction vont être remplacées

prefix

Texte statique utilisé comme préfixe

var_prefix

Texte variable utilisé comme préfixe

suffix

Texte statique ajouté

var_suffix

Texte variable utilisé comme suffixe

var_multiplier

Répétition de texte variable

Nombre de répétitions du texte variable en fonction de la longueur de la chaîne source.

include_readonly

Inclure les chaînes en lecture seule

Déclencheurs:

Installation de greffons, Mise à jour de composant, Quotidien

Génère une pseudo-traduction en ajoutant automatiquement un préfixe et un suffixe aux chaînes sources.

Les pseudo-traductions sont utiles pour trouver les chaînes de caractères qui ne sont pas préparées pour la traduction. Pour ce faire, toutes les chaînes sources sont modifiées afin de faciliter la détection des chaînes non-modifiées lors de l’exécution de l’application en utilisant la pseudo-traduction.

Il est également possible de trouver les chaînes de caractères dont les équivalents traduits pourraient ne pas correspondre à la mise en page.

L’utilisation de parties variables rend possible la recherche de chaînes de caractères qui pourraient ne pas tenir dans l’interface utilisateur après la traduction - elle étend la source en se basant sur sa longueur. Les parties textuelles variables sont répétées autant de fois que la longueur de la source multipliée par le coefficient. Par exemple, la source Hello world avec le texte variable _ et le coefficient 1 devient Hello world___________ ; le texte est répété une fois pour chaque caractère de la source.

Les chaînes seront générées en utilisant le motif suivant :

Texte statique du préfixe Texte variable du préfixe Chaîne source Texte variable du suffixe Texte statique du suffixe

Indication

Vous pouvez utiliser pour les tests des langues existantes, mais il existe des langues pseudo-locales dédiées et disponibles dans Weblate — en_XA et ar_XB.

Indication

Vous pouvez utiliser ce greffon pour commencer une traduction vers une nouvelle locale d’une langue existante ou similaire. Une fois que vous avez ajouté la traduction au composant, suivez les instructions du greffon. Exemple : si vous êtes en fr et que vous voulez commencer une traduction en fr_CA, vous pouvez simplement définir fr comme étant la source, fr_CA la cible, et laisser vide le préfixe et le suffixe.

Désinstallez le greffon une fois la nouvelle traduction remplie pour empêcher Weblate de modifier les traductions effectuées après la copie.

Contributeurs dans le commentaire

ID du module:

weblate.gettext.authors

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Pré-validation du dépôt

Ajoute le nom des contributeurs et les années de contribution dans le commentaire d’en-tête du fichier PO.

L’en-tête du fichier PO ressemble généralement à ceci :

# Michal Čihař <michal@weblate.org>, 2012, 2018, 2019, 2020.
# Pavel Borecki <pavel@example.com>, 2018, 2019.
# Filip Hron <filip@example.com>, 2018, 2019.
# anonymous <noreply@weblate.org>, 2019.

Mettre à jour la variable ALL_LINGUAS dans le fichier « configure »

ID du module:

weblate.gettext.configure

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Quotidien, Dépôt après l’ajout, Repository post-remove

Met à jour la variable ALL_LINGUAS dans les fichiers « configure », « configure.in » ou « configure.ac » lorsqu’une traduction est ajoutée ou supprimée.

Updates the ALL_LINGUAS variable in configure, configure.in or any configure.ac files, when a translation is added or removed.

Personnaliser la sortie gettext

Supprimé dans la version 5.13: Remplacé par Paramètres du format de fichier.

Update gettext template (Django)

Ajouté dans la version 5.17.

ID du module:

weblate.gettext.django

Configuration:

interval

Fréquence des mises à jour

À quelle fréquence l’extension doit-elle mettre à jour le fichier POT lorsque le composant est actualisé.

Choix disponibles :

daily

Quotidien

weekly

Hebdomadaire

monthly

Mensuel

normalize_header

Normaliser l’en-tête POT

Mets à jour les en-têtes gettext et remplace les commentaires POT temporaires.

Déclencheurs:

Installation de greffons, Manual trigger, Après la mise à jour du dépôt

Met à jour le modèle gettext en utilisant la commande makemessages intégrée à Django.

Mettre à jour le fichier LINGUAS

ID du module:

weblate.gettext.linguas

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Quotidien, Dépôt après l’ajout, Repository post-remove

Met à jour le fichier LINGUAS lorsqu’une traduction est ajoutée ou supprimée.

Mise à jour du fichier POT (Meson)

Ajouté dans la version 5.17.

ID du module:

weblate.gettext.meson

Configuration:

interval

Fréquence des mises à jour

À quelle fréquence l’extension doit-elle mettre à jour le fichier POT lorsque le composant est actualisé.

Choix disponibles :

daily

Quotidien

weekly

Hebdomadaire

monthly

Mensuel

normalize_header

Normaliser l’en-tête POT

Mets à jour les en-têtes gettext et remplace les commentaires POT temporaires.

comment_mode

Commentaires du code

Choisissez si xgettext doit n’extraire aucun commentaire, tous les commentaires ou uniquement les commentaires marqués avec une étiquette spécifique.

Choix disponibles :

off

Ne pas extraire les commentaires

all

Extraire tous les commentaires

tagged

Extraire les commentaires avec étiquette

comment_tag

Commenter l’étiquette

Étiquette transmise à xgettext pour l’extraction des commentaires lorsque le mode commentaire étiqueté est utilisé.

checks

Vérifications xgettext

Vérifications supplémentaires de xgettext à activer pour les messages extraits.

Choix disponibles :

ellipsis-unicode

ellipsis-unicode

space-ellipsis

space-ellipsis

quote-unicode

quote-unicode

bullet-unicode

bullet-unicode

keyword

Mot-clé supplémentaire

Mot-clé facultatif supplémentaire transmis à xgettext en utilisant –keyword.

preset

Présélection Meson

Préréglage d’arguments xgettext intégré, compatible avec l’intégration gettext de Meson. Le préréglage GLib ajoute les options de mot-clé et d’indicateur de format utilisées par l’utilitaire gettext de Meson.

Choix disponibles :

glib

GLib

Déclencheurs:

Installation de greffons, Manual trigger, Après la mise à jour du dépôt

Met à jour le modèle gettext en utilisant les conventions gettext de Meson.

Générer des fichiers MO

ID du module:

weblate.gettext.mo

Configuration:

path

Chemin du fichier MO généré

Si non précisé, l’emplacement utilisé sera identique à celui du fichier PO.

fuzzy

Inclure les chaînes devant être modifiées

Les chaînes qui doivent être modifiées (fuzzy) ne sont généralement pas prêtes à être utilisées comme traductions.

Déclencheurs:

Pré-validation du dépôt

Génère automatiquement un fichier MO pour chaque fichier PO modifié.

L’emplacement du fichier MO généré peut être personnalisé et le champ pour cela utilise Balisage de modèle.

Note

Si une traduction est supprimée, son fichier PO le sera également du dépôt mais le fichier MO généré par ce module complémentaire sera conservé. Le fichier MO doit être supprimé manuellement en amont.

Mettre à jour les fichiers PO afin qu’ils correspondent au POT (msgmerge)

Modifié dans la version 5.13: La configuration des Paramètres a été déplacée vers Paramètres du format de fichier.

ID du module:

weblate.gettext.msgmerge

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Après la mise à jour du dépôt

Met à jour tous les fichiers PO (filtrés selon le « motif de fichier ») pour qu’ils correspondent au fichier POT (paramétré via le « modèle pour les nouvelles traductions ») en utilisant msgmerge.

This add-on is essential when working with gettext PO files where the POT (template) file is updated with new strings or changes to existing strings. When the POT file is updated in the repository, this add-on automatically merges those changes into all language PO files, ensuring that:

  • Les nouvelles chaînes traductibles apparaissent dans toutes les langues

  • Les chaînes supprimées sont marquées obsolètes

  • Les chaînes modifiées sont marquées pour relecture (fuzzy)

La plupart des options de la ligne de commande de msgmerge peuvent être définies dans la configuration des paramètres du format des fichiers.

Mise à jour du fichier POT (Sphinx)

Ajouté dans la version 5.17.

ID du module:

weblate.gettext.sphinx

Configuration:

interval

Fréquence des mises à jour

À quelle fréquence l’extension doit-elle mettre à jour le fichier POT lorsque le composant est actualisé.

Choix disponibles :

daily

Quotidien

weekly

Hebdomadaire

monthly

Mensuel

normalize_header

Normaliser l’en-tête POT

Mets à jour les en-têtes gettext et remplace les commentaires POT temporaires.

filter_mode

Filtrage

Supprime optionnellement les chaînes qui ne sont pas utiles à traduire après l’extraction Sphinx.

Choix disponibles :

none

Aucun

weblate_docs

Documentation de Weblate

Déclencheurs:

Installation de greffons, Manual trigger, Après la mise à jour du dépôt

Met à jour le modèle gettext en utilisant le générateur gettext de Sphinx sans charger la configuration du projet.

Mettre à jour le fichier POT (xgettext)

Ajouté dans la version 5.17.

ID du module:

weblate.gettext.xgettext

Configuration:

interval

Fréquence des mises à jour

À quelle fréquence l’extension doit-elle mettre à jour le fichier POT lorsque le composant est actualisé.

Choix disponibles :

daily

Quotidien

weekly

Hebdomadaire

monthly

Mensuel

normalize_header

Normaliser l’en-tête POT

Mets à jour les en-têtes gettext et remplace les commentaires POT temporaires.

comment_mode

Commentaires du code

Choisissez si xgettext doit n’extraire aucun commentaire, tous les commentaires ou uniquement les commentaires marqués avec une étiquette spécifique.

Choix disponibles :

off

Ne pas extraire les commentaires

all

Extraire tous les commentaires

tagged

Extraire les commentaires avec étiquette

comment_tag

Commenter l’étiquette

Étiquette transmise à xgettext pour l’extraction des commentaires lorsque le mode commentaire étiqueté est utilisé.

checks

Vérifications xgettext

Vérifications supplémentaires de xgettext à activer pour les messages extraits.

Choix disponibles :

ellipsis-unicode

ellipsis-unicode

space-ellipsis

space-ellipsis

quote-unicode

quote-unicode

bullet-unicode

bullet-unicode

keyword

Mot-clé supplémentaire

Mot-clé facultatif supplémentaire transmis à xgettext en utilisant –keyword.

input_mode

Modifier la source

Sélectionnez si xgettext doit lire les fichiers source à partir de motifs globaux ou à partir d’un manifeste POTFILES/POTFILES.in.

Choix disponibles :

patterns

Motifs de fichiers sources

potfiles

Manifeste POTFILES

language

langage xgettext

Langage de programmation transmis à xgettext, par exemple Python ou C.

source_patterns

Motifs de fichiers sources

Motifs globaux relatifs au dépôt, séparés par des lignes nouvelles, pour les fichiers à extraire avec xgettext.

potfiles_path

Chemin vers POTFILES

Chemin relatif au dépôt vers POTFILES ou POTFILES.in. Les entrées sont correspondantes à la racine du dépôt. S’il est présent à côté du manifeste, POTFILES.skip exclut les fichiers listés de l’extraction.

Déclencheurs:

Installation de greffons, Manual trigger, Après la mise à jour du dépôt

Met à jour le modèle gettext en utilisant xgettext sur les fichiers sources sélectionnés.

Squasher les commits Git

ID du module:

weblate.git.squash

Configuration:

squash

Squash du commit

Choix disponibles :

all

Tous les commits en un seul

language

Par langue

file

Par fichier

author

Par auteur

append_trailers

Ajout de champs d’en-têtes aux messages de commits squashés

Les lignes de fin sont des lignes comparables aux lignes d’en-tête RFC 822 pour les courriels. Ces lignes sont ajoutées en fin de la partie libre du message de commit. Exemple : « Co-authored-by : … ».

commit_message

Message de commit

Ce message de commit sera utilisé à la place des messages de commit combinés des commits squashés.

Déclencheurs:

Installation de greffons, Dépôt après le commit

Squasher les commits Git avant de pousser les modifications.

Indication

Afin d’éviter les conflits inutiles, il est recommandé de configurer la réception automatique des modifications amont via webhooks ou API, voir Mise à jour des dépôts.

Les commits de Git peuvent êtres écrasés avant de pousser les changements dans l’un des modes suivants :

  • Tous les commits en un seul

  • Par langue

  • Par fichier

  • Par auteur

Les messages d’archivage originaux sont préservés mais perdront la paternité de l’archivage, sauf si vous sélectionnez Par auteur ou si vous personnalisez le message d’archivage pour l’inclure.

Les messages d’archivage originaux peuvent être écrasés par un message d’archivage personnalisé.

Les Trailers (lignes d’archivage comme Co-authored-by : ) peuvent éventuellement être supprimés des messages d’archivage originaux et ajoutés à la fin du message d’archivage écrasé. Ceci génère également un crédit Co-authored-by : pour chaque traducteur.

Personnaliser la sortie JSON

Modifié dans la version 5.12: Ajout de l’option Eviter les espaces après les séparateurs.

Supprimé dans la version 5.13: Remplacé par Paramètres du format de fichier.

Réinitialisation du dépôt en amont

Ajouté dans la version 5.17.

ID du module:

weblate.hosted.reset

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Quotidien

Chaque nuit, ignorer toutes les modifications faites dans le dépôt Weblate.

Formater le fichier des propriétés Java

ID du module:

weblate.properties.sort

Configuration:

case_sensitive

Activer le tri en fonction de la casse de la clé

Déclencheurs:

Pré-validation du dépôt

Formate et ordonne le fichier des propriétés Java.

  • Consolide les nouvelles lignes en celles d’Unix.

  • Formatage en majuscules des séquences d’échappements d’Unicode (si elles sont présentes).

  • Supprime les lignes vides et les commentaires.

  • Trie les chaînes par les clés.

  • Supprime les chaînes en double.

Purge automatique des commentaires

ID du module:

weblate.removal.comments

Configuration:

age

Nombre de jours à conserver

Déclencheurs:

Installation de greffons, Quotidien

Définir le délai au bout duquel les commentaires sont supprimés.

Cela peut être utile pour supprimer d’anciens commentaires qui pourraient être devenus obsolètes. Utilisez-les avec précaution, car le fait qu’un commentaire devienne ancien ne signifie pas qu’il a perdu de son importance.

Purge automatique des suggestions

ID du module:

weblate.removal.suggestions

Configuration:

age

Nombre de jours à conserver

votes

Seuil de votes

Threshold for removal. Leave empty to remove suggestions regardless of votes. This field has no effect with voting turned off.

Déclencheurs:

Installation de greffons, Quotidien

Définir le délai au bout duquel les suggestions sont supprimées.

Peut être très utile dans le cadre du vote par suggestion (voir Évaluation par les pairs) pour supprimer les suggestions qui ne reçoivent pas assez de votes positifs dans un délai donné.

Mettre à jour les fichiers RESX

ID du module:

weblate.resx.update

Configuration:

Ce greffon ne possède aucun paramètre.

Déclencheurs:

Installation de greffons, Après la mise à jour du dépôt

Mettre à jour tous les fichiers de traduction pour qu’ils correspondent au fichier de base amont monolingue. Les chaînes inutilisées sont supprimées et de nouvelles chaînes sont ajoutées en copiant la chaîne source.

Indication

Utilisez Nettoyer les fichiers de traduction si vous voulez seulement supprimer les clés de traduction périmées.

Accroches web de Slack

Ajouté dans la version 5.12.

ID du module:

weblate.webhook.slack

Configuration:

webhook_url

URL du Webhook

events

Évènements de modification

Évènements de modification

Déclencheurs:

Modification d’événement

Envoie une notification sur un canal Slack en fonction des événements sélectionnés.

Avertissement

Le contenu de la notification peut contenir des balises HTML. C’est un problème connu qui sera bientôt corrigé ; voir https://github.com/WeblateOrg/weblate/issues/15056.

Indication

Pour obtenir une URL webhook, suivez les étapes défines dans la Documentation des Slack Incoming Webhooks

Webhook

Ajouté dans la version 5.11.

Modifié dans la version 5.15: La conformité entre la longueur du secret et la spécification est maintenant validée.

ID du module:

weblate.webhook.webhook

Configuration:

webhook_url

URL du Webhook

secret

Secret pour le Webhook

Le secret standard des Webhooks est une chaîne encodée en base64.

events

Évènements de modification

Évènements de modification

Déclencheurs:

Modification d’événement

Envoie une notification à un service externe en fonction des évènements sélectionnés, en suivant les spécifications des normes Webhooks.

Le contenu demandé est conforme avec le schéma du Weblate Messaging. Vous trouverez la description de OpenAPI dans /api/docs/. Exemple de contenu d’une requête :

{
   "change_id": 99,
   "action": "Translation changed",
   "timestamp": "2019-08-24T14:15:22Z",
   "target": "Nazdar svete!",
   "old": "Nazdar!",
   "source": "Hello, world",
   "url": "/translate/project-slug/component-slug/cs/?checksum=46add148a53cab6f",
   "author": "author-username",
   "user": "user-username",
   "project": "project-slug",
   "component": "component-slug",
   "translation": "cs"
}

Exemple de contenu d’une requête avec des catégories :

{
   "change_id": 8910,
   "action": "Component renamed",
   "timestamp": "2025-06-11T07:15:09Z",
   "target": ["new-name"],
   "old": ["component-slug"],
   "url": "/projects/project-slug/parent-category/child-category/sub-category/component-slug/",
   "user": "testuser",
   "project": "project-slug",
   "component": "component-slug",
   "category": [
      "sub-category",
      "child-category",
      "parent-category"
   ]
}

Exemple d’entêtes de requêtes :

{
   "webhook-id": "7f1c5477f6275a69af7b83236c20cb1a",
   "webhook-timestamp": "1748505623.044281",
   "webhook-signature": "v1,Ceo5qEr07ixe2NLpvHk3FH9bwy/WavXrAFQ/9tdO6mc="
}

La webhook-signature est une liste de signatures HMAC séparées par une espace et générées en utilisant la chaîne secret, le contenu de la requête, l’horodatage webhook-timestamp, et l’identifiant webhook-id. Cela assure l’authenticité et l’integrité de la requête webhook.

The provided secret is a base64 encoded string between 24 bytes (192 bits) and 64 bytes (512 bits). It can be prefixed with whsec_ for easy identification.

Pour vérifier une requête, vous pouvez utiliser la méthode Webhook.verify de la bibliothèque standardwebhooks ou une implémentation de la « Standard Webhooks Specification ».

Greffons obsolètes

Personnaliser la sortie XML

Ajouté dans la version 4.15.

Supprimé dans la version 5.13: Remplacé par Paramètres du format de fichier.

Personnaliser la sortie YAML

Supprimé dans la version 5.13: Remplacé par Paramètres du format de fichier.

Common add-on parameters

Moteurs de traduction automatisée

Choix disponibles :

alibaba

Alibaba

aws

Amazon Translate

anthropic

Anthropic

apertium-apy

Apertium APy

microsoft-translator

Azure AI Translator

azure-openai

Azure OpenAI

baidu

Baidu

cyrtranslit

CyrTranslit

deepl

DeepL

glosbe

Glosbe

google-translate-api-v3

Google Cloud Translation Advanced

google-translate

Google Cloud Translation Basic

ltengine

LTEngine

libretranslate

LibreTranslate

modernmt

ModernMT

mymemory

MyMemory

netease-sight

Netease Sight

ollama

Ollama

openai

OpenAI

sap-translation-hub

SAP Translation Hub

systran

Systran

weblate

Weblate

weblate-translation-memory

Mémoire de traduction Weblate

yandex

Yandex

yandex-v2

Yandex v2

youdao-zhiyun

Youdao Zhiyun

tmserver

tmserver

Format de fichier

Choix disponibles :

apple-xliff

XLIFF 1.2 avec extensions Apple

appstore

Fichiers de métadonnées de l’App Store

arb

Fichier ARB

aresource

Chaîne de caractères pour Android

asciidoc

Fichier AsciiDoc

ass

Fichier de sous-titres Advanced SubStation Alpha

catkeys

Haiku catkeys

cmp-resource

Composer une ressource multiplateforme

csv

Fichier CSV

csv-multi

Fichier CSV multivaleurs

csv-simple

Fichier CSV simplifié

dokuwiki

Fichier texte DokuWiki

dtd

Fichier DTD

flatxml

Fichier XML plat

fluent

Fichier Fluent

formatjs

Fichier JSON Format.JS

go-i18n-json

Fichier JSON go-i18n v1

go-i18n-json-v2

Fichier JSON go-i18n v2

go-i18n-toml

Fichier TOML go-i18n

gotext

Fichier JSON gotext

gwt

Propriétés GWT

html

Fichier HTML

i18next

Fichier i18next JSON v3

i18nextv4

Fichier i18next JSON v4

idml

Fichier IDML

ini

Fichier INI

islu

Fichier INI Inno Setup

joomla

Fichier de langue Joomla

json

Fichier JSON

json-nested

Fichier JSON à structure imbriquée

laravel

Chaînes de caractères PHP Laravel

markdown

Fichier Markdown

mdx

Fichier MDX

mediawiki

Fichier texte MediaWiki

mi18n-lang

fichier de langue @draggable/i18n

moko-resource

Kotlin Mobile Resource

nextcloud-json

Fichier JSON Nextcloud

odf

Fichier OpenDocument

php

Chaînes de caractères PHP

plainxliff

Fichier de traduction XLIFF 1.2

po

Fichier PO gettext

po-mono

Fichier PO gettext (mono-langue)

poxliff

XLIFF 1.2 avec extensions gettext

properties

Propriétés Java

rc

Fichier RC

resjson

Fichier RESJSON

resourcedictionary

Fichier ResourceDictionary

resx

Fichier de ressource .Net

ruby-yaml

Fichier Ruby YAML

srt

Fichier de sous-titres SubRip

ssa

Fichier de sous-titres SubStation Alpha

strings

Chaînes de caractères iOS

stringsdict

Fichier Stringsdict

sub

Fichier de sous-titres MicroDVD

tbx

Fichier TermBase eXchange

toml

Fichier TOML

ts

Fichier de traduction Qt Linguist

txt

Fichier texte brut

webextension

Fichier JSON WebExtension

wxl

Fichier WixLocalization

xliff

XLIFF 1.2 avec prise en charge des transposables

xliff2

Fichier de traduction XLIFF 2.0

xliff2-placeables

Fichier de traduction XLIFF 2.0 avec prise en charge des transposables

xlsx

Excel Open XML

xwiki-fullpage

XWiki Full Page

xwiki-java-properties

XWiki Java Properties

xwiki-page-properties

XWiki Page Properties

yaml

Fichier YAML

Évènements de modification

Choix disponibles :

0

Ressources mises à jour

1

Traduction terminée

2

Traduction modifiée

3

Commentaire ajouté

4

Suggestion ajoutée

5

Traduction ajoutée

6

Traduit automatiquement

7

Suggestion acceptée

8

Traduction restaurée

9

Traduction téléversée

13

Chaîne source ajoutée

14

Le composant est verrouillé

15

Le composant est déverrouillé

17

Modifications validées

18

Modifications poussées

19

Réinitialiser le dépôt

20

Dépôt fusionné

21

Dépôt rebasé

22

Échec de la fusion de dépôt

23

Échec du rebasement du dépôt

24

Échec de l’analyse

25

Traduction supprimée

26

Suggestion supprimée

27

Traduction remplacée

28

Échec de la poussée du dépôt

29

Suggestion supprimée lors du nettoyage

30

Chaîne source modifiée

31

Chaîne ajoutée

32

Modification en masse du statut modifié

33

Visibilité changée

34

Utilisateur ajouté

35

Utilisateur supprimé

36

Traduction approuvée

37

Marqué comme À vérifier

38

Composant supprimé

39

Projet supprimé

41

Projet renommé

42

Composant renommé

43

Composant déplacé

45

Un contributeur à rejoint

46

Annonce publiée

47

Alerte déclenchée

48

Langage ajouté

49

Langue demandée

50

Projet créé

51

Composant créé

52

Utilisateur invité

53

Notification de dépôt reçue

54

Traduction remplacée par téléversement

55

Licence modifiée

56

L’accord de licence du contributeur a été modifié

57

Capture écran ajoutée

58

Capture d’écran téléversée

59

Chaîne mise à jour dans le dépôt

60

Extension installée

61

Paramétrage modifié pour l’extension

62

Extension désinstallée

63

Chaîne supprimée

64

Commentaire supprimé

65

Commentaire résolu

66

Explication mise à jour

67

Catégorie supprimée

68

Catégorie renommée

69

Catégorie déplacée

70

Échec de l’enregistrement de la chaîne

71

Chaîne ajoutée au dépôt

72

Chaîne mise à jour dans le téléversement

73

Chaîne ajoutée dans le téléversement

74

Traduction mise à jour par la source du téléversement

75

Traduction du composant terminée

76

La vérification étendue a été appliquée

77

Modification propagée

78

Fichier téléversé

79

Drapeaux supplémentaires mis à jour

80

Police téléversée

81

Police modifiée

82

Police supprimée

83

Synchronisation forcée des traductions

84

Analyse forcée des traductions

85

Capture d’écran supprimée

86

Étiquette ajoutée

87

Étiquette retirée

88

Nettoyage du dépôt

89

Chaîne source ajoutée lors du téléchargement

90

Chaîne source ajoutée au dépôt

91

Projet en attente

92

Projet restauré

93

Composant restauré

94

Modification utilisateur annulée

95

Les paramètres du projet ont été modifiés

96

Le paramètre du composant a été modifié

Personnalisation de la liste des greffons

La liste des module est configurée par WEBLATE_ADDONS. Pour ajouter un autre module, il suffit d’inclure le nom absolu de la classe dans ce paramètre.

Écrire un greffon

Vous pouvez également écrire vos propres module, il suffit de faire une sous-classe weblate.addons.base.BaseAddon, de définir les métadonnées du module et d’implémenter un rappel qui effectuera le traitement.

Exécution de scripts à partir du greffon

Les modules peuvent également être utilisés pour exécuter des scripts externes. Avant, cette fonction était intégrée dans Weblate, mais maintenant vous devez écrire du code pour envelopper votre script avec un module.

# Copyright © Michal Čihař <michal@weblate.org>
#
# SPDX-License-Identifier: GPL-3.0-or-later

"""Example pre commit script."""

from __future__ import annotations

from typing import ClassVar

from django.utils.translation import gettext_lazy

from weblate.addons.events import AddonEvent
from weblate.addons.scripts import BaseScriptAddon


class ExamplePreAddon(BaseScriptAddon):
    # Event used to trigger the script
    events: ClassVar[set[AddonEvent]] = {
        AddonEvent.EVENT_PRE_COMMIT,
    }
    # Name of the addon, has to be unique
    name = "weblate.example.pre"
    # Verbose name and long description
    verbose = gettext_lazy("Execute script before commit")
    description = gettext_lazy("This add-on executes a script.")

    # Script to execute
    script = "/bin/true"
    # File to add in commit (for pre commit event)
    # does not have to be set
    add_file = "po/{{ language_code }}.po"

Pour les instructions d’installation, consultez Custom quality checks, add-ons, automatic suggestions and auto-fixes.

Le script est exécuté avec le répertoire courant placé à la racine du dépôt de système de contrôle des versions pour un composant donné.

En outre, les variables d’environnement suivantes sont disponibles :

WL_VCS

Système de contrôle de version utilisé.

WL_REPO

URL du dépôt en amont.

WL_PATH

Chemin absolu vers le dépôt du système de contrôle des versions.

WL_BRANCH

Branche du dépôt configurée dans le composant actuel.

WL_FILEMASK

Masque de fichier pour le composant actuel.

WL_TEMPLATE

Nom de fichier du modèle pour les traductions monolingues (peut être vide).

WL_NEW_BASE

Nom de fichier du fichier utilisé pour créer de nouvelles traductions (peut être vide).

WL_FILE_FORMAT

Format de fichier utilisé dans le composant actuel.

WL_LANGUAGE

Langue de la traduction actuellement traitée (non disponible pour les crochets de niveau composant).

WL_PREVIOUS_HEAD

HEAD précédent après la mise à jour (disponible uniquement après l’exécution du crochet post update).

WL_COMPONENT_SLUG

Identifiant du composant utilisé pour construire l’URL.

WL_PROJECT_SLUG

Identifiant du projet utilisé pour construire l’URL.

WL_COMPONENT_NAME

Nom du composant.

WL_PROJECT_NAME

Nom du projet.

WL_COMPONENT_URL

URL du composant.

WL_ENGAGE_URL

URL d’engagement du projet.

Traitement du dépôt après mise à jour

Peut être utilisé pour mettre à jour les fichiers de traduction lorsque la source amont du VCS change. Pour ce faire, n’oubliez pas que Weblate ne voit que les fichiers validés par le VCS, vous devez donc valider les changements dans le cadre du script.

Par exemple, avec Gulp, vous pouvez le faire en utilisant le code suivant :

#! /bin/sh
gulp --gulpfile gulp-i18n-extract.js
git commit -m 'Update source strings' src/languages/en.lang.json

Traitement des traductions avant archivage

Utilisez le script d’archivage pour apporter automatiquement des modifications à la traduction avant qu’elle soit archivée dans le dépôt.

Il est transmis en tant que paramètre unique composé du nom de fichier d’une traduction en cours.

Journalisation de l’activité du greffon

Le journal de l’activité du greffon conserve une trace de l’exécution du greffon et peut être utilisé pour suivre son exécution.

Les journaux peuvent être raccourcis au bout d’un certain temps en configurant le ADDON_ACTIVITY_LOG_EXPIRY.