Accéder au contenu principal

Conlangs, Scripts et Orthographe

champollion offre un support de première classe pour les langues construites via des registres LLM et des convertisseurs de script déterministes. Ce guide couvre le fonctionnement du support des conlangs, les polices dont vous avez besoin, et comment en ajouter vos propres.

:::tip Pourquoi les conlangs sont importants Les conlangs ne sont pas qu'une curiosité — ils exercent exactement la même infrastructure utilisée pour les langues réelles mal desservies. La porte de qualité, le système de coaching et le pipeline de conversion de script fonctionnent de manière identique pour le klingon et le cri des Plaines. Si votre pipeline conlang fonctionne, votre pipeline de langue à faibles ressources fonctionnera aussi. :::


Langues Construites Supportées

LangueCodeConvertisseur de ScriptPolice Requise
Klingontlh✅ Romanisation → pIqaDPolice PUA (p. ex., pIqaD qolqoS)
Sindarin (Elfique Tolkien)x-elvish-s✅ Latin → TengwarPolice PUA CSUR
Kryptonienx-kryptonian✅ Latin → KryptonianPolice PUA
Anglais Piratex-pirate❌ registre uniquementAucune
Anglais Shakespearienx-shakespeare❌ registre uniquementAucune
Parler Yodax-yoda❌ registre uniquementAucune

Les codes conlang utilisent le préfixe x- selon la convention d'usage privé BCP-47, sauf le klingon (tlh) qui possède un code ISO 639-3 assigné par SIL International.


Unicode, PUA et Exigences de Police

La Zone d'Usage Privé

Le klingon (pIqaD), le sindarin (Tengwar) et le kryptonien utilisent des caractères Zone d'Usage Privé Unicode (PUA). La PUA est la plage U+E000–U+F8FF — ces points de code n'ont aucune assignation standard. Le Registre Unicode ConScript (CSUR) maintient des mappages convenus par la communauté pour les scripts fictifs, mais ceux-ci ne font pas partie de la norme Unicode.

Ce que cela signifie en pratique :

  • Le texte PUA s'affiche sous forme de boîtes vides (□□□) sans la police correcte chargée
  • Différentes polices peuvent mapper différents glyphes aux mêmes points de code PUA
  • champollion ne regroupe PAS les polices PUA — vous devez les charger vous-même
  • Les polices système ne rendront jamais ces caractères

Plages PUA par Script

ScriptPlage PUARéférence CSUR
Klingon (pIqaD)U+F8D0–U+F8FFCSUR Klingon
Tengwar (Elfique)U+E000–U+E07FCSUR Tengwar
KryptonienVarie selon la policeAucune norme CSUR

Chargement des Polices Web PUA

champollion inclut une commande intégrée pour télécharger et gérer les polices web PUA :

# See which fonts are needed for your configured languages
champollion fonts list

# Download all needed fonts (auto-detects project type for output directory)
champollion fonts install

# Also generate a CSS snippet with @font-face declarations
champollion fonts install --css

La commande fonts install télécharge depuis des dépôts open-source vérifiés :

PoliceScriptLicenceSource
pIqaD qolqoSKlingonSIL Open Font License 1.1GitHub
FreeMonoTengwarTengwarGNU GPL v3 (avec exception de police)SourceForge
(fournie par l'utilisateur)KryptonienVarieAucune police PUA open-source disponible

Le répertoire de sortie est auto-détecté à partir de votre structure de projet (Docusaurus → static/fonts/, Hugo → static/fonts/, défaut → public/fonts/). Remplacez avec --dir.

Si vous préférez gérer les polices manuellement, ajoutez des règles @font-face dans votre CSS :

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

/* Apply to Klingon text elements */
[lang="tlh"], [data-script="piqad"] {
font-family: 'pIqaD', sans-serif;
}

:::warning Le support Unicode n'est PAS garanti Le Consortium Unicode a explicitement refusé d'encoder les scripts fictifs dans la norme. Les assignations PUA sont maintenues par la communauté et peuvent entrer en conflit entre les implémentations de polices. Spécifiez toujours la police exacte que votre projet utilise, et testez le rendu sur plusieurs navigateurs. :::


Convertisseurs de Script

Comment Ils Fonctionnent

La conversion de script de champollion est un hook post-traduction :

  1. L'LLM traduit le texte dans un script de travail (généralement Latin ou SRO)
  2. La porte de qualité valide la sortie
  3. Le convertisseur déterministe transforme le texte validé dans le script d'affichage
  4. Le texte converti est écrit sur le disque

Cette approche en deux étapes fonctionne parce que les LLM produisent une meilleure sortie lorsqu'ils travaillent dans des scripts basés sur le latin. Le convertisseur déterministe garantit une sortie de script correcte sans dépendre de la connaissance du script du modèle (souvent peu fiable).

Les Cinq Convertisseurs

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

Cri des Plaines : SRO → Syllabiques (crk)

Orthographe Romane Standard vers Syllabiques Autochtones Canadiennes.

Input: "tawâw"
Output: "ᑕᐚᐤ"

Les voyelles longues utilisent macron/accent circonflexe : ê, î, ô, â. Le convertisseur gère tous les diacritiques SRO et les mappe aux caractères syllabiques corrects. Voir Support a Low-Resource Language pour le pipeline cri complet.

Serbe : Latin → Cyrillique (sr)

Conversion déterministe Latin-Cyrillique pour le serbe.

Input: "zdravo"
Output: "здраво"

Cela gère le mappage complet de l'alphabet serbe incluant les digraphes (lj → љ, nj → њ, dž → џ).

Klingon : Romanisation → pIqaD (tlh)

Système de romanisation de Marc Okrand vers les caractères pIqaD PUA.

Input: "Qapla'" (romanized Klingon)
Output: [pIqaD PUA] (requires pIqaD font to render)

Sindarin : Latin → Tengwar (x-elvish-s)

Mappage Tengwar mode Sindarin de Tolkien.

Input: "elen síla" (Latin Sindarin)
Output: [Tengwar PUA] (requires Tengwar font to render)

Kryptonien : Latin → Kryptonian (x-kryptonian)

Mappage de script kryptonien du lexique fan.

Input: "Kal-El"
Output: [Kryptonian PUA] (requires Kryptonian font to render)

Déclencher un Convertisseur

Définissez le champ scripts dans votre configuration de langue. Pour les convertisseurs intégrés, ceci est auto-détecté à partir du code de langue :

{
"languages": {
"sr": { "scripts": "sr" },
"crk": {}
}
}

Le cri des Plaines (crk) auto-détecte — vous n'avez pas besoin de définir scripts explicitement.


Langues Multi-Script

Certaines langues réelles utilisent plusieurs scripts actifs :

LangueScriptsApproche champollion
SerbeLatin + CyrilliqueConvertisseur de script (sr) — traduire en latin, convertir en cyrillique
ChinoisSimplifié + TraditionnelCodes de locale distincts (zh vs zh-TW) avec registres distincts

Pour les langues où les deux scripts servent le même public (serbe), utilisez un convertisseur de script. Pour les langues où les scripts servent des publics différents (chinois simplifié pour la Chine continentale, traditionnel pour Taïwan/HK), utilisez des codes de locale distincts.


Notes sur l'Orthographe

Les registres ne sont pas seulement un ton — ils portent des instructions orthographiques qui orientent l'LLM vers les conventions d'écriture correctes.

Formes d'Adresse Formelle

Les registres intégrés de champollion incluent la forme d'adresse formelle culturellement appropriée pour chaque langue :

LangueForme FormelleInstruction de Registre
AllemandSieUse Sie-form for formal address
FrançaisvousUse vous-form
RusseвыProfessional register with вы-form
TurcsizProfessional register with siz-form
Coréen합쇼체Formal Korean (합쇼체)
Japonaisです/ますPolite professional register (です/ます form)
PolonaisPan/PaniProfessional register with Pan/Pani form

Écriture Inclusive du Genre

Chaque fiche de langue a un champ gender.inclusiveGuidance avec des conseils spécifiques à la langue. Ceci est injecté dans l'invite de traduction LLM séparément du préréglage de registre, donc il s'applique de manière cohérente quel que soit le préréglage de formalité que l'utilisateur choisit :

  • Français : Écriture inclusive avec notation interpunct (p. ex., « Connecté·e »)
  • Allemand : Notation Doppelpunkt (p. ex., « Benutzer:innen »)
  • Espagnol : Restructuration neutre du genre préférée ; notation slash (p. ex., « usuario/a ») comme solution de secours

Pour les langues sans conseils spécifiques dans leur fiche (p. ex., coréen, conlangs), le système revient à une règle générique : « préférer les formes neutres du genre ou l'option la plus inclusive disponible ».

Exigences de Script RTL

Les registres arabe, hébreu, persan et ourdou notent tous les exigences droite-à-gauche : Ensure text reads naturally in RTL layout contexts.

Remplacer N'Importe Quel Registre

Chaque registre est une valeur de configuration — remplacez-le pour correspondre à la voix de votre projet :

{
"languages": {
"fr": {
"register": "Casual French. Use tu-form. Conversational blog tone. Gender-neutral when possible."
},
"de": {
"register": "Informal German. Use du-form. Tech startup voice."
}
}
}

Voir Configuration pour la référence de configuration complète.


Ajouter un Nouveau Conlang

Étape par étape

  1. Choisissez un code d'usage privé BCP-47 : Utilisez le préfixe x- (p. ex., x-dothraki, x-valyrian).

  2. Ajoutez à votre configuration :

{
"languages": {
"x-dothraki": {
"register": "Dothraki language. Use David J. Peterson's vocabulary from the Living Language Dothraki textbook. Harsh, direct tone. No articles, no verb 'to be'."
}
}
}
  1. (Optionnel) Ajoutez un convertisseur de script : Si votre conlang utilise un script d'affichage non-latin, ajoutez un convertisseur dans lib/scripts.js et enregistrez-le dans SCRIPT_CONVERTERS.

  2. Testez : Exécutez champollion sync --dry pour prévisualiser les traductions sans écrire les fichiers.

  3. Vérifiez la porte de qualité : La porte de qualité peut nécessiter un ajustement pour votre conlang — particulièrement la vérification requireNonLatin si votre conlang utilise des caractères PUA.

:::note La qualité du conlang dépend de la connaissance de l'LLM L'LLM ne peut traduire que dans un conlang qu'il a vu dans les données d'entraînement. Les conlangs bien documentés (klingon, sindarin, dothraki) fonctionnent bien. Les conlangs obscurs ou nouvellement inventés peuvent produire des résultats incohérents. Utilisez les données de coaching pour améliorer la qualité. :::


Voir Aussi