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.

../_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éé.

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.

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

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

file_format

Format de fichier

Format de fichier

name_template

Personnaliser le nom du composant

base_file_template

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

Laisser vide pour les fichiers de traduction bilingue.

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.

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.

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

confirm

Je confirme que les correspondances ci-dessus semblent correctes

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.

La mise en correspondance se fait à l’aide d’expressions régulières permettant une configuration complexe, mais nécessitant certaines connaissances. Quelques exemples de cas d’utilisation courants sont disponibles dans la section d’aide du greffon.

L’expression régulière utilisée pour faire correspondre les fichiers de traduction doit contenir deux groupes nommés l’un pour le composant et l’autre pour la langue. Tous les groupes nommés de l’expression régulière peuvent être utilisés comme variables dans les champs du modèle.

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

{{ component }}

Nom de fichier du composant correspondant

{{ 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

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

Excluding certain matches

Negative lookahead can be used to exclude certain patterns from being processed.

Expression régulière :

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

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

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

Not matching files:
  • res/values-cs/strings-about.xml

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

  • res/values-cs/strings-info-1.xml

  • res/values-de/strings-info-1.xml

  • res/values-cs/strings-info-2.xml

  • res/values-de/strings-info-2.xml

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.

Avertissement

Pour être découvert, un nouveau composant doit contenir un fichier correspondant à base_file_template et au moins un fichier dont le nom correspond à match – i.e., le composant doit contenir un fichier langue de base et au moins une traduction existante. Sinon, il sera ignoré.

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.

Toutes les chaînes non traduites dans le composant seront renseignées avec la chaîne source, et marquées comme devant être modifiées. Utilisez ceci lorsque vous ne pouvez pas avoir de chaînes vides dans les fichiers de traduction.

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

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

Personnaliser la sortie gettext

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

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

Met à jour le fichier LINGUAS lors de l’ajout d’une nouvelle traduction.

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 (tels que configuré par Masque de fichier) pour correspondre au fichier POT (tel que configuré par 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.

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.

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

Seuil pour la suppression d’une suggestion. Ce champ est sans effet lorsque le vote est désactivé.

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

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 :

aws

Amazon Translate

deepl

DeepL

google-translate-api-v3

Google Cloud Translation Advanced

google-translate

Google Cloud Translation Basic

microsoft-translator

Azure AI Translator

modernmt

ModernMT

openai

OpenAI

weblate

Weblate

weblate-translation-memory

Mémoire de traduction Weblate

É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

Format de fichier

Choix disponibles :

appstore

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

arb

Fichier ARB

aresource

Chaîne de caractères pour Android

ass

Fichier de sous-titres Advanced SubStation Alpha

catkeys

Haiku catkeys

cmp-resource

Composer une ressource multiplateforme

csv

Fichier CSV

csv-multi-utf-8

Fichier CSV multi-valeurs (UTF-8)

csv-simple

Fichier CSV simplifié

csv-simple-iso

Fichier CSV simplifié (ISO-8859-1)

csv-simple-utf-8

Fichier CSV simplifié (UTF-8)

csv-utf-8

Fichier CSV (UTF-8)

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 (UTF-8)

gwt-iso

Propriétés GWT (ISO-8859-1)

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

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

Java Properties (ISO-8859-1)

properties-utf16

Propriétés Java (UTF-16)

properties-utf8

Propriétés Java (UTF-8)

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 (UTF-16)

strings-utf8

Chaînes de caractères iOS (UTF-8)

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

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

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.