Accéder au contenu principal

Convertisseurs de Script

Les convertisseurs de script sont des crochets de post-traduction déterministes et sans LLM qui convertissent le texte d'un système d'écriture à un autre. Ils permettent un flux de travail « traduire une fois, afficher dans plusieurs scripts » — vous traduisez dans un script de travail (généralement Latin), puis convertissez automatiquement au script d'affichage.

Pourquoi les Convertisseurs de Script ?

Certaines langues utilisent plusieurs scripts pour la même langue parlée :

  • Plains Cree : SRO (Latin) pour l'édition → Syllabiques Cree (ᓀᐦᐃᔭᐍᐏᐣ) pour l'affichage
  • Serbe : Latin pour l'usage international → Cyrillique pour l'usage domestique
  • Klingon : Romanisation pour la saisie → pIqaD ( ) pour l'affichage

Traduire directement dans des scripts non-Latin crée des problèmes : les LLM hallucinent des caractères, les fichiers JSON deviennent difficiles à contrôler en version, et les outils de diff ne peuvent pas comparer les modifications. Les convertisseurs de script résolvent ce problème en conservant les traductions dans un script compatible avec le contrôle de version et en convertissant de manière déterministe au moment de la synchronisation.

Convertisseurs Disponibles

Champollion est livré avec cinq convertisseurs de script intégrés :

LocaleDeVersTypePolice Requise ?
crkSRO (Standard Roman Orthography)Syllabiques CreeDéterministeNon — Unicode natif
srLatinCyrilliqueDéterministeNon — Unicode natif
tlhRomanisationpIqaDDéterministeOui — PUA U+F8D0–F8FF
x-elvish-sLatinTengwar (Mode de Beleriand)DéterministeOui — PUA U+E000–E07F
x-kryptonianLatinKryptonianChiffre basé sur policeOui — PUA U+E100–E119

Déterministe vs. Basé sur Police

  • Les convertisseurs déterministes (Cree, Serbe, Klingon, Tengwar) effectuent un véritable mappage caractère-par-caractère en utilisant des règles linguistiques. La sortie contient des caractères Unicode réels.
  • Les convertisseurs basés sur police (Kryptonian) sont des chiffres de substitution 1:1 où la sortie est constituée de caractères Unicode PUA qui ne s'affichent correctement que si une police spécifique est chargée.

Comment Ils Fonctionnent

Les convertisseurs de script s'exécutent après la traduction en tant qu'étape de post-traitement. Le pipeline est :

Source (English) → LLM Translation → Working Script → Script Converter → Display Script

Par exemple, Plains Cree :

"Welcome" → LLM → "tānisi" (SRO) → Converter → "ᑖᓂᓯ" (Syllabics)

Correspondance Gourmande de Gauche à Droite

Tous les convertisseurs utilisent le même algorithme : à chaque position de caractère, essayez d'abord la correspondance la plus longue possible, puis progressivement les correspondances plus courtes. Les caractères qui ne correspondent à aucun motif (espaces, ponctuation, chiffres) passent inchangés.

Cela gère correctement les digrammes et trigrammes :

  • Klingon : tlh → caractère pIqaD unique (pas t + l + h)
  • Serbe : njњ (pas н + ј)
  • Cree : twê → syllabique unique (pas t + w + ê)

Utiliser les Convertisseurs de Script

Les convertisseurs de script s'activent automatiquement lorsque le code de locale correspond à un convertisseur enregistré. Aucune configuration nécessaire — définissez simplement votre locale cible :

champollion.config.json
{
"pairs": {
"en:crk": {
"method": "llm-coached",
"model": "google/gemini-2.5-pro"
}
}
}

Lorsque champollion synchronise la paire en:crk, les traductions sont d'abord produites en SRO, puis automatiquement converties en Syllabiques avant d'être écrites dans crk.json.

Vérifier l'État du Convertisseur

npx champollion status

La sortie d'état affiche quelles paires ont des convertisseurs de script actifs et quelle conversion ils effectuent.

Exigences de Police Web

Trois convertisseurs produisent des caractères Unicode de la Zone d'Usage Privé (PUA) qui nécessitent des polices web personnalisées :

Klingon (pIqaD)

Installez une police pIqaD compatible CSUR (par exemple, « pIqaD qolqoS » ou « Klingon pIqaD HaSta ») :

@font-face {
font-family: 'pIqaD';
src: url('/fonts/pIqaD.woff2') format('woff2');
unicode-range: U+F8D0-F8FF;
}

:lang(tlh) {
font-family: 'pIqaD', sans-serif;
}

Tengwar (Sindarin)

Installez une police Tengwar compatible CSUR (par exemple, « Tengwar Formal CSUR », « Tengwar Annatar ») :

@font-face {
font-family: 'Tengwar';
src: url('/fonts/tengwar-formal-csur.woff2') format('woff2');
unicode-range: U+E000-E07F;
}

:lang(x-elvish-s) {
font-family: 'Tengwar', serif;
}

Kryptonian

Installez une police Kryptonian mappée aux points de code PUA U+E100–E119 :

@font-face {
font-family: 'Kryptonian';
src: url('/fonts/kryptonian.woff2') format('woff2');
unicode-range: U+E100-E119;
}

:lang(x-kryptonian) {
font-family: 'Kryptonian', sans-serif;
}

:::tip Approche alternative pour Kryptonian Puisque Kryptonian est un chiffre pur A-Z, vous pouvez ignorer complètement le convertisseur de script et appliquer la police au texte Latin via CSS. C'est souvent plus simple pour les déploiements web — servez simplement la police Kryptonian et définissez font-family sur les éléments pertinents. :::

Ajouter un Convertisseur Personnalisé

Pour ajouter un convertisseur pour une nouvelle langue, modifiez lib/scripts.js :

  1. Créez la carte de conversion — un tableau ordonné de paires [from, to], les séquences les plus longues en premier
  2. Créez la fonction de convertisseur — un scanner gourmand de gauche à droite (utilisez sroToSyllabics comme modèle)
  3. Enregistrez-le dans l'objet SCRIPT_CONVERTERS avec le code de locale comme clé
  4. Ajoutez le champ script à l'entrée de registre de la langue dans registers.js
// Example: adding a converter for Cherokee (chr)
const LATIN_TO_CHEROKEE_MAP = [
['ga', 'Ꭶ'], ['ka', 'Ꭷ'], ['ge', 'Ꭸ'], // ...
];

function latinToCherokee(text) {
// Same greedy left-to-right pattern as other converters
}

SCRIPT_CONVERTERS['chr'] = {
from: 'Latin',
to: 'Cherokee Syllabary',
type: 'deterministic',
converter: latinToCherokee,
};

Voir Aussi