Règles
Une règle est une convention linguistique nommée que le moteur de localisation applique à une langue cible — « abréger Straße en Str. dans les adresses », et non « adopter un ton plus décontracté ». Les règles sont regroupées dans des rulesets : des conteneurs appartenant à l’organisation qu’un moteur applique par association, afin qu’un même ensemble de règles puisse régir tous les moteurs qui en ont besoin.
Les règles s’appelaient auparavant instructions
Dans le tableau de bord, elles s’appellent désormais règles et sont regroupées en jeux de règles. L’API REST expose toujours une règle individuelle à /instructions avec les mêmes noms de champs qu’avant — le changement porte sur l’endroit où la règle est rédigée : rulesetId remplace désormais ownerEngineId.
Fonctionnement#
Un jeu de règles appartient à votre organisation, pas à un moteur. C’est son association à un moteur qui rend ses règles actives — rien n’est copié dans le moteur.
| Objet | Champs |
|---|---|
| Jeu de règles | Nom, description. Peut contenir autant de règles que nécessaire. |
| Règle | Nom, langue cible (ou *), texte. |
Lorsqu’une demande de traduction arrive, le moteur rassemble toutes les règles de tous les jeux de règles associés dont la langue cible correspond à la targetLocale de la demande, puis les ajoute au prompt du LLM aux côtés de la voix de marque et du glossaire. Les règles n’entrent pas en concurrence : toutes les règles correspondantes sont incluses, en commençant par la langue la plus précise, afin que les consignes les plus ciblées passent en premier.
| Champ | Description |
|---|---|
| Nom | Un libellé court qui identifie la règle (par ex. « adresse formelle en allemand ») |
| Langue cible | La langue à laquelle cette règle s’applique, ou * pour toutes les langues (N’importe quelle langue dans le tableau de bord) |
| Texte | La règle linguistique, rédigée en langage naturel |
Plusieurs règles par langue
Créez autant de règles que nécessaire pour une langue. Chaque règle doit traiter un seul point — c’est ce qui permet de la tester individuellement, de l’évaluer avec la évaluation IA des règles et de la supprimer sans risque.
Les jeux de règles appartiennent à l’organisation#
| Action | Effet |
|---|---|
| Créer un jeu de règles | Il existe au niveau de l’organisation et ne s’applique à rien tant qu’il n’est pas associé |
| L’associer à un moteur | Toutes les règles qu’il contient s’appliquent aux traductions de ce moteur |
| L’associer à plusieurs moteurs | Les mêmes règles s’appliquent à tous — une seule modification, et chaque moteur suit |
| Associer plusieurs jeux de règles à un moteur | Toutes leurs règles se combinent |
| Le dissocier d’un moteur | Le moteur cesse de l’appliquer. Le jeu de règles et ses règles sont conservés. |
| Supprimer un jeu de règles | Opération refusée tant qu’un moteur l’applique encore — dissociez-le d’abord. Sa suppression entraîne aussi celle de ses règles. |
| Supprimer un moteur | Les jeux de règles et les règles restent en place. Ils appartiennent à l’organisation, pas au moteur. |
Gérez les ensembles de règles dans Infrastructure → Ensembles de règles. L’onglet Règles d’un ensemble de règles contient ses règles ; son onglet Paramètres répertorie les moteurs de l’organisation, où vous pouvez appliquer l’ensemble de règles à un moteur ou cesser de l’appliquer. À l’inverse, l’onglet Paramètres d’un moteur comporte une section Ensembles de règles qui indique ce que le moteur applique, avec Ajouter un ensemble de règles pour en associer un autre.
Règles prédéfinies#
Lingo.dev propose un catalogue de règles prêtes à l’emploi — des conventions propres à chaque langue dont la plupart des équipes ont besoin, sans toujours penser à les formaliser. Elles s’attachent directement à un moteur plutôt que via un ensemble de règles, et vous pouvez les détacher à tout moment.
Le tableau de bord ne propose pas d’écran dédié aux règles prédéfinies. Parcourez le catalogue et associez des entrées via l’API ou le serveur MCP :
| Appel | Outil MCP | Objectif |
|---|---|---|
GET /predefined-instructions | predefinedInstructions_list | Lister le catalogue |
GET /engines/:id/predefined-instructions | engines_listPredefinedInstructions | Lister les règles prédéfinies appliquées par un moteur |
PUT /engines/:id/predefined-instructions | predefinedInstructions_setForEngine | Remplacer l’ensemble appliqué par un moteur — envoyez la liste complète des ids ; tout élément omis est détaché |
DELETE /engines/:id/predefined-instructions/:predefinedInstructionId | predefinedInstructions_detach | Cesser d’appliquer une entrée à un moteur |
GET /predefined-instructions/:id/engines?organizationId= | predefinedInstructions_listEngines | Lister les moteurs de votre organisation qui appliquent une entrée |
Chaque entrée du catalogue comporte une langue cible, un nom, une description, un type (standard, convention ou preference) et un category. Les entrées qui partagent un groupKey sont des alternatives pour une même langue — un moteur ne peut en appliquer qu’une seule à la fois, et toute requête qui en sélectionne deux est rejetée. Associer ou détacher une entrée nécessite engine:edit sur le moteur ; toute personne connectée peut consulter le catalogue.
Les règles sélectionnées sont placées dans le prompt avant les vôtres, afin qu’une règle que vous rédigez vienne affiner ou remplacer la base de départ, au lieu d’entrer en conflit avec elle.
Règles ou voix de marque#
Les deux influencent le résultat de la traduction, mais à des niveaux différents :
| Voix de marque | Règle | |
|---|---|---|
| Portée | Ton général, style, niveau de formalité | Une règle linguistique précise |
| Par langue | Un texte par langue, une voix par langue et par moteur | Plusieurs règles par langue |
| Appliqué | Un seul texte, celui qui correspond le mieux | Toutes les règles correspondantes se combinent |
| Joker | Oui (* sert de voix par défaut) | Oui (* s’applique à toutes les langues) |
| Exemple | « Utiliser le tutoiement, avec un ton technique » | « Toujours abréger Straße en Str. dans les adresses » |
Utilisez une voix de marque pour définir la manière dont votre produit s’exprime dans une langue — niveau de formalité, registre, style de phrase.
Utilisez des règles pour formaliser des conventions précises que le modèle risquerait sinon de manquer — abréviations, ponctuation, formatage des unités ou structures grammaticales propres à une langue.
Elles fonctionnent ensemble : la voix de marque donne le ton, les règles gèrent les cas particuliers.
Rédiger des règles efficaces#
Chaque règle doit formuler une seule consigne, sans ambiguïté. Le moteur inclut le texte complet dans le prompt du LLM, donc la clarté est essentielle.
Bonnes règles#
Always use the Oxford comma in English lists.In Japanese, use full-width parentheses ()instead of half-width ().For German addresses, abbreviate "Straße" to "Str." and
"Nummer" to "Nr."When translating percentage values for French, add a
non-breaking space before the percent sign: 42 %.À éviter#
- Les consignes vagues qui recoupent la voix de marque (« être plus décontracté ») — mettez-les plutôt dans la voix de marque
- Plusieurs conventions sans lien réunies dans une seule règle — séparez-les pour que chacune puisse être testée indépendamment
- Les règles qui contredisent le glossaire — dans la hiérarchie du moteur, les termes du glossaire ont priorité
Langue générique#
Définissez la langue cible sur * (N’importe quelle langue dans le tableau de bord) pour appliquer une règle à toutes les langues. Pratique pour les conventions indépendantes de la langue :
Never translate product feature names: "Smart Compose",
"Quick Actions", "Flow Builder".Preserve Markdown formatting in all translated strings.
Keep bold (**), italic (*), and link syntax [text](url) intact.Les règles spécifiques à une langue et les règles génériques sont toutes deux incluses lorsque le moteur traite une demande — elles se combinent, elles ne se remplacent pas.
Utiliser les règles avec l’API#
Les règles sont appliquées automatiquement lorsque vous appelez le point de terminaison localize. Le moteur collecte toutes les règles qui correspondent à la targetLocale de la requête (ainsi que toutes les règles *) à partir des ensembles de règles qu’il applique, ainsi que toutes les règles prédéfinies qui y sont associées. Aucun paramètre supplémentaire n’est nécessaire.
| Appel | Objectif |
|---|---|
POST /rulesets | Créer un jeu de règles pour l’organisation |
GET /organizations/:id/rulesets | Lister les jeux de règles de l’organisation avec le nombre de règles et de moteurs |
GET /rulesets/:id/rules | Lister les règles d’un jeu de règles |
POST /instructions avec rulesetId | Ajouter une règle à un jeu de règles |
PUT /engines/:id/rulesets | Remplacer l’ensemble des jeux de règles appliqués par un moteur |
DELETE /engines/:id/rulesets/:rulesetId | Cesser d’appliquer un jeu de règles à un moteur |
GET /engines/:id/instructions | Lister toutes les règles qu’un moteur applique via ses ensembles de règles (les règles prédéfinies sont répertoriées séparément) |
ownerEngineId sur POST /instructions fonctionne toujours — cela écrit dans le jeu de règles propre au moteur, en en créant un s’il n’en a pas encore. Préférez rulesetId.
Accès#
org:ruleset:read et org:ruleset:edit régissent les ensembles de règles et les règles qu’ils contiennent ; associer l’un d’eux à un moteur nécessite aussi engine:edit sur ce moteur. Une autorisation par ensemble de règles permet à une personne d’avoir un accès en lecture et en modification à un seul ensemble de règles, au lieu de tous les ensembles de règles de l’organisation ; ces autorisations se configurent via l’API ou MCP, pas depuis le tableau de bord. Voir Rôles et autorisations.
Gérer les règles via MCP#
Si vous utilisez le serveur MCP Lingo.dev, votre assistant de code IA peut créer, mettre à jour et supprimer directement des règles et des jeux de règles :
"Create a ruleset called German conventions and apply it to
the marketing engine.""Add a rule to that ruleset: always abbreviate Straße to Str.
in addresses.""Add a wildcard rule: never translate the term Smart Compose.""List the predefined rules for German and attach the ones
you recommend to the marketing engine."