Ir para o conteúdo principal

Conlangs, Scripts e Ortografia

champollion tem suporte de primeira classe para linguagens construídas via registros LLM e conversores de script determinísticos. Este guia cobre como o suporte a conlangs funciona, quais fontes você precisa e como adicionar as suas próprias.

:::tip Por que conlangs importam Conlangs não são apenas novidade — elas exercitam exatamente a mesma infraestrutura usada para linguagens reais pouco atendidas. O quality gate, o sistema de coaching e o pipeline de conversão de script funcionam de forma idêntica para Klingon e Plains Cree. Se seu pipeline de conlang funciona, seu pipeline de linguagem de baixo recurso também funcionará. :::


Linguagens Construídas Suportadas

LinguagemCódigoConversor de ScriptFonte Necessária
Klingontlh✅ Romanização → pIqaDFonte PUA (ex: pIqaD qolqoS)
Sindarin (Élfico Tolkien)x-elvish-s✅ Latin → TengwarFonte CSUR PUA
Kryptonianox-kryptonian✅ Latin → KryptonianFonte PUA
Pirate Englishx-pirate❌ apenas registroNenhuma
Shakespearean Englishx-shakespeare❌ apenas registroNenhuma
Yoda-speakx-yoda❌ apenas registroNenhuma

Códigos de conlang usam o prefixo x- conforme a convenção de uso privado BCP-47, exceto Klingon (tlh) que tem um código ISO 639-3 atribuído pela SIL International.


Unicode, PUA e Requisitos de Fonte

A Área de Uso Privado

Klingon (pIqaD), Sindarin (Tengwar) e Kryptoniano usam caracteres Private Use Area (PUA) do Unicode. PUA é o intervalo U+E000–U+F8FF — esses pontos de código não têm atribuição padrão. O ConScript Unicode Registry (CSUR) mantém mapeamentos acordados pela comunidade para scripts ficcionais, mas estes não fazem parte do padrão Unicode.

O que isso significa na prática:

  • Texto PUA renderiza como caixas vazias (□□□) sem a fonte correta carregada
  • Diferentes fontes podem mapear glifos diferentes para os mesmos pontos de código PUA
  • champollion NÃO agrupa fontes PUA — você deve carregá-las você mesmo
  • Fontes do sistema nunca renderizarão esses caracteres

Intervalos PUA por Script

ScriptIntervalo PUAReferência CSUR
Klingon (pIqaD)U+F8D0–U+F8FFCSUR Klingon
Tengwar (Élfico)U+E000–U+E07FCSUR Tengwar
KryptonianoVaria por fonteSem padrão CSUR

Carregando Fontes Web PUA

champollion inclui um comando integrado para baixar e gerenciar fontes 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

O comando fonts install baixa de repositórios de código aberto verificados:

FonteScriptLicençaFonte
pIqaD qolqoSKlingonSIL Open Font License 1.1GitHub
FreeMonoTengwarTengwarGNU GPL v3 (com exceção de fonte)SourceForge
(fornecida pelo usuário)KryptonianoVariaNenhuma fonte PUA de código aberto disponível

O diretório de saída é detectado automaticamente da estrutura do seu projeto (Docusaurus → static/fonts/, Hugo → static/fonts/, padrão → public/fonts/). Substitua com --dir.

Se você preferir gerenciar fontes manualmente, adicione regras @font-face no seu 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 Suporte a Unicode NÃO é garantido O Unicode Consortium explicitamente recusou codificar scripts ficcionais no padrão. Atribuições PUA são mantidas pela comunidade e podem conflitar entre implementações de fontes. Sempre especifique a fonte exata que seu projeto usa e teste a renderização em navegadores. :::


Conversores de Script

Como Funcionam

A conversão de script do champollion é um hook pós-tradução:

  1. O LLM traduz o texto para um script de trabalho (geralmente Latin ou SRO)
  2. O quality gate valida a saída
  3. O conversor determinístico transforma o texto validado para o script de exibição
  4. O texto convertido é escrito em disco

Essa abordagem em duas etapas funciona porque LLMs produzem melhor saída ao trabalhar em scripts baseados em Latin. O conversor determinístico garante saída de script correta sem depender do conhecimento de script do modelo (frequentemente não confiável).

Todos os Cinco Conversores

champollion vem com cinco conversores de script integrados:

Plains Cree: SRO → Syllabics (crk)

Standard Roman Orthography para Canadian Aboriginal Syllabics.

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

Vogais longas usam macron/circunflexo: ê, î, ô, â. O conversor lida com todos os diacríticos SRO e os mapeia para os caracteres silábicos corretos. Veja Support a Low-Resource Language para o pipeline completo de Cree.

Sérvio: Latin → Cyrillic (sr)

Conversão determinística Latin-para-Cyrillic para Sérvio.

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

Isso lida com o mapeamento completo do alfabeto sérvio incluindo dígrafos (lj → љ, nj → њ, dž → џ).

Klingon: Romanização → pIqaD (tlh)

Sistema de romanização de Marc Okrand para caracteres pIqaD PUA.

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

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

Mapeamento Tengwar modo Sindarin de Tolkien.

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

Kryptoniano: Latin → Kryptonian (x-kryptonian)

Mapeamento de script Kryptoniano de léxico de fã.

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

Acionando um Conversor

Defina o campo scripts na sua configuração de linguagem. Para conversores integrados, isso é detectado automaticamente do código de linguagem:

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

Plains Cree (crk) detecta automaticamente — você não precisa definir scripts explicitamente.


Linguagens Multi-Script

Algumas linguagens reais usam múltiplos scripts ativos:

LinguagemScriptsAbordagem champollion
SérvioLatin + CyrillicConversor de script (sr) — traduzir em Latin, converter para Cyrillic
ChinêsSimplificado + TradicionalCódigos de locale separados (zh vs zh-TW) com registros distintos

Para linguagens onde ambos os scripts servem o mesmo público (Sérvio), use um conversor de script. Para linguagens onde os scripts servem públicos diferentes (Chinês Simplificado para China continental, Tradicional para Taiwan/HK), use códigos de locale separados.


Notas de Ortografia

Registros não são apenas tom — eles carregam instruções ortográficas que direcionam o LLM para convenções de escrita corretas.

Formas de Endereço Formal

Os registros integrados do champollion incluem o endereço formal culturalmente apropriado para cada linguagem:

LinguagemForma FormalInstrução de Registro
AlemãoSieUse Sie-form for formal address
FrancêsvousUse vous-form
RussoвыProfessional register with вы-form
TurcosizProfessional register with siz-form
Coreano합쇼체Formal Korean (합쇼체)
Japonêsです/ますPolite professional register (です/ます form)
PolonêsPan/PaniProfessional register with Pan/Pani form

Escrita Inclusiva de Gênero

Cada cartão de linguagem tem um campo gender.inclusiveGuidance com conselhos específicos da linguagem. Isso é injetado no prompt de tradução do LLM separadamente do preset de registro, então se aplica consistentemente independentemente de qual preset de formalidade o usuário escolher:

  • Francês: Écriture inclusive com notação de interponto (ex: "Connecté·e")
  • Alemão: Notação de dois-pontos (ex: "Benutzer:innen")
  • Espanhol: Reestruturação neutra de gênero preferida; notação de barra (ex: "usuario/a") como fallback

Para linguagens sem orientação específica em seu cartão (ex: Coreano, conlangs), o sistema volta para uma regra genérica: "prefira formas neutras de gênero ou a opção mais inclusiva disponível."

Requisitos de Script RTL

Registros de Árabe, Hebraico, Persa e Urdu todos anotam requisitos da direita para esquerda: Ensure text reads naturally in RTL layout contexts.

Substituindo Qualquer Registro

Todo registro é um valor de configuração — substitua-o para corresponder à voz do seu projeto:

{
"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."
}
}
}

Veja Configuration para a referência de configuração completa.


Adicionando um Novo Conlang

Passo a passo

  1. Escolha um código de uso privado BCP-47: Use o prefixo x- (ex: x-dothraki, x-valyrian).

  2. Adicione à sua configuração:

{
"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. (Opcional) Adicione um conversor de script: Se seu conlang usa um script de exibição não-Latin, adicione um conversor em lib/scripts.js e registre-o em SCRIPT_CONVERTERS.

  2. Teste: Execute champollion sync --dry para visualizar traduções sem escrever arquivos.

  3. Verifique o quality gate: O quality gate pode precisar de ajuste para seu conlang — particularmente a verificação requireNonLatin se seu conlang usa caracteres PUA.

:::note A qualidade de conlang depende do conhecimento do LLM O LLM só pode traduzir para um conlang que viu em dados de treinamento. Conlangs bem documentados (Klingon, Sindarin, Dothraki) funcionam bem. Conlangs obscuros ou recém-inventados podem produzir resultados inconsistentes. Use coaching data para melhorar a qualidade. :::


Veja Também