YAML
Traduction IA pour fichiers YAML avec Lingo.dev CLI
Qu'est-ce que YAML ?
YAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par l'humain, couramment utilisé pour les fichiers de configuration, l'échange de données et le stockage de données structurées. Il utilise l'indentation pour représenter la hiérarchie et prend en charge des structures de données complexes.
Par exemple :
title: "MyApp"
description: Hello, world!
welcome_message: 'Welcome to MyApp'
user_profile:
display_name: "John Doe"
bio: Software developer
navigation_items:
- "Home"
- "About"
- "Contact"
product:
name: "MyWidget"
tagline: The best widget ever
Qu'est-ce que Lingo.dev CLI ?
Lingo.dev CLI est une CLI gratuite et open-source pour traduire des applications et du contenu avec l'IA. Elle est conçue pour remplacer les logiciels traditionnels de gestion de traduction tout en s'intégrant aux pipelines existants.
Pour en savoir plus, consultez Vue d'ensemble.
À propos de ce guide
Ce guide explique comment traduire des fichiers YAML avec Lingo.dev CLI.
Vous apprendrez comment :
- Créer un projet à partir de zéro
- Configurer un pipeline de traduction
- Générer des traductions avec l'IA
Prérequis
Pour utiliser Lingo.dev CLI, assurez-vous que Node.js v18+ est installé :
❯ node -v
v22.17.0
Étape 1. Configurer un projet
Dans le répertoire de votre projet, créez un fichier i18n.json :
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
Ce fichier définit le comportement du pipeline de traduction, y compris les langues entre lesquelles traduire et où se trouve le contenu localisable dans le système de fichiers.
Pour en savoir plus sur les propriétés disponibles, consultez i18n.json.
Étape 2. Configurer la locale source
La locale source est la langue et la région d'origine dans lesquelles votre contenu a été rédigé. Pour configurer la locale source, définissez la propriété locale.source dans le fichier i18n.json :
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
La locale source doit être fournie sous forme de balise de langue BCP 47.
Pour la liste complète des codes de locale pris en charge par Lingo.dev CLI, consultez Codes de locale pris en charge.
Étape 3. Configurer les locales cibles
Les locales cibles sont les langues et régions vers lesquelles vous souhaitez traduire votre contenu. Pour configurer les locales cibles, définissez la propriété locale.targets dans le fichier i18n.json :
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {}
}
Étape 4. Créer le contenu source
Si ce n'est pas déjà fait, créez un ou plusieurs fichiers YAML contenant le contenu à traduire. Ces fichiers doivent être situés dans un chemin qui inclut la locale source quelque part dans le chemin (par exemple, comme nom de répertoire tel que en/ ou comme partie du nom de fichier tel que messages.en.yml).
Étape 5. Créer un bucket
-
Dans le fichier
i18n.json, ajoutez un objet"yaml"à l'objetbuckets:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "yaml": {} } } -
Dans l'objet
"yaml", définissez un tableau d'un ou plusieurs motifsinclude:{ "$schema": "https://lingo.dev/schema/i18n.json", "version": "1.10", "locale": { "source": "en", "targets": ["es"] }, "buckets": { "yaml": { "include": ["./[locale]/example.yml"] } } }Ces motifs définissent quels fichiers traduire.
Les motifs eux-mêmes :
- doivent contenir
[locale]comme placeholder pour la locale configurée - peuvent pointer vers des chemins de fichiers (par exemple,
"[locale]/config.yml") - peuvent utiliser des astérisques comme placeholders génériques (par exemple,
"[locale]/*.yml")
Les motifs glob récursifs (par exemple,
**/*.yml) ne sont pas pris en charge. - doivent contenir
Étape 6. Configurer un LLM
Lingo.dev CLI utilise des modèles de langage de grande taille (LLMs) pour traduire du contenu avec l'IA. Pour utiliser l'un de ces modèles, vous avez besoin d'une clé API d'un fournisseur pris en charge.
Pour démarrer le plus rapidement possible, nous recommandons d'utiliser Lingo.dev Engine — notre propre plateforme hébergée qui offre 10 000 tokens d'utilisation mensuelle gratuite :
-
Exécutez la commande suivante :
npx lingo.dev@latest loginCela ouvrira votre navigateur par défaut et vous demandera de vous authentifier.
-
Suivez les instructions.
Étape 7. Générer les traductions
Dans le répertoire qui contient le fichier i18n.json, exécutez la commande suivante :
npx lingo.dev@latest run
Cette commande :
- Lit le fichier
i18n.json. - Trouve les fichiers qui doivent être traduits.
- Extrait le contenu traduisible des fichiers.
- Utilise le LLM configuré pour traduire le contenu extrait.
- Écrit le contenu traduit dans le système de fichiers.
La première fois que les traductions sont générées, un fichier i18n.lock est créé. Ce fichier garde une trace du contenu qui a été traduit, évitant ainsi des retraductions inutiles lors des exécutions ultérieures.
Exemple
en/example.yml
title: "MyApp"
description: Hello, world!
welcome_message: 'Welcome to MyApp'
user_profile:
display_name: "John Doe"
bio: Software developer
navigation_items:
- "Home"
- "About"
- "Contact"
product:
name: "MyWidget"
tagline: The best widget ever
features:
- "Easy to use"
- "Fast and reliable"
settings:
max_users: 100
enabled: true
timeout: 30.5
complex_structure:
level_one:
level_two:
message: "Deep nested text"
locked_key_1: "This value is locked and should not be changed"
ignored_key_1: "This value is ignored and should not appear in target locales"
es/example.yml
title: "MyApp"
description: "¡Hola, mundo!"
welcome_message: "Bienvenido a MyApp"
user_profile:
display_name: "Juan Pérez"
bio: "Desarrollador de software"
navigation_items:
- "Inicio"
- "Acerca de"
- "Contacto"
product:
name: "MyWidget"
tagline: "El mejor widget de todos"
features:
- "Fácil de usar"
- "Rápido y confiable"
settings:
max_users: 100
enabled: true
timeout: 30.5
complex_structure:
level_one:
level_two:
message: "Texto anidado profundo"
locked_key_1: "This value is locked and should not be changed"
i18n.json
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.10",
"locale": {
"source": "en",
"targets": ["es"]
},
"buckets": {
"yaml": {
"include": ["./[locale]/example.yml"],
"lockedKeys": ["locked_key_1"]
}
}
}
i18n.lock
version: 1
checksums:
1b0d7c9f07dcc31a978bc337763270ea:
title: 7dc70110429d46e3685f385bd2cc941c
description: 0468579ef2fbc83c9d520c2f2f1c5059
welcome_message: d1c3a9f35e377554a4ccaa467ca26614
user_profile/display_name: febee8e9ab40b2fe5106d72675228d00
user_profile/bio: 155ddcb7c93493ac72a37074eea0a653
navigation_items/0: 104a3db3b671c04e167eafbe21e57881
navigation_items/1: 944521eeeed2511833d2299931273c71
navigation_items/2: 9afa39bc47019ee6dec6c74b6273967c
product/name: ed21de171d538a49db999c47875f75a5
product/tagline: b7ac41680e82d75ae7f5774f7ceef1b4
product/features/0: c916ba887951a02793ff851853fd964f
product/features/1: 1c60a04d6890c6ec910a7f2e6ec0ae7b
complex_structure/level_one/level_two/message: b53034560bf657106e5aaea9160e357e