メインコンテンツへスキップ

人工言語・文字・正書法

champollion は、LLM レジスターと決定論的な文字変換器を通じて、人工言語を第一級にサポートしています。このガイドでは、人工言語サポートの仕組み、必要なフォント、および独自の人工言語を追加する方法について説明します。

:::tip 人工言語が重要な理由 人工言語は単なる物珍しさではありません。実際のサポートが不十分な言語に使われるものとまったく同じインフラを活用しています。品質ゲート、コーチングシステム、文字変換パイプラインは、Klingon と Plains Cree で同一の動作をします。人工言語のパイプラインが機能すれば、低リソース言語のパイプラインも機能します。 :::


サポートされている人工言語

言語コード文字変換器必要なフォント
Klingontlh✅ ローマ字表記 → pIqaDPUA フォント(例:pIqaD qolqoS)
Sindarin(トールキンのエルフ語)x-elvish-s✅ ラテン文字 → TengwarCSUR PUA フォント
Kryptonianx-kryptonian✅ ラテン文字 → KryptonianPUA フォント
海賊英語x-pirate❌ レジスターのみなし
シェイクスピア英語x-shakespeare❌ レジスターのみなし
ヨーダ語x-yoda❌ レジスターのみなし

人工言語コードは BCP-47 私的使用規約に従い x- プレフィックスを使用しますが、Klingon(tlh)は SIL International によって ISO 639-3 コードが割り当てられています。


Unicode、PUA、およびフォント要件

私的使用領域(Private Use Area)

Klingon(pIqaD)、Sindarin(Tengwar)、Kryptonian は Unicode の Private Use Area(PUA) 文字を使用します。PUA は U+E000〜U+F8FF の範囲であり、これらのコードポイントには標準的な割り当てがありませんConScript Unicode Registry(CSUR)は架空の文字体系に対するコミュニティ合意のマッピングを管理していますが、これらは Unicode 標準の一部ではありません。

実際の意味合いとしては:

  • 正しいフォントが読み込まれていない場合、PUA テキストは空のボックス(□□□)として表示されます
  • 異なるフォントが同じ PUA コードポイントに異なるグリフをマッピングする場合があります
  • champollion は PUA フォントをバンドルしていません。ご自身で読み込む必要があります
  • システムフォントはこれらの文字を表示しません

文字体系別の PUA 範囲

文字体系PUA 範囲CSUR 参照
Klingon(pIqaD)U+F8D0–U+F8FFCSUR Klingon
Tengwar(エルフ語)U+E000–U+E07FCSUR Tengwar
Kryptonianフォントによって異なるCSUR 標準なし

PUA ウェブフォントの読み込み

champollion には 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

fonts install コマンドは、検証済みのオープンソースリポジトリからダウンロードします:

フォント文字体系ライセンスソース
pIqaD qolqoSKlingonSIL Open Font License 1.1GitHub
FreeMonoTengwarTengwarGNU GPL v3(フォント例外付き)SourceForge
(ユーザー提供)Kryptonian様々利用可能なオープンソース PUA フォントなし

出力ディレクトリはプロジェクト構造から自動検出されます(Docusaurus → static/fonts/、Hugo → static/fonts/、デフォルト → public/fonts/)。--dir で上書きできます。

フォントを手動で管理する場合は、CSS に @font-face ルールを追加してください:

@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 Unicode サポートは保証されていません Unicode コンソーシアムは、架空の文字体系を標準に収録することを明示的に拒否しています。PUA の割り当てはコミュニティによって管理されており、フォント実装間で競合する場合があります。プロジェクトで使用する正確なフォントを必ず指定し、ブラウザ間でのレンダリングをテストしてください。 :::


文字変換器

仕組み

champollion の文字変換は翻訳後フックです:

  1. LLM がテキストを作業用文字体系(通常はラテン文字または SRO)に翻訳します
  2. 品質ゲートが出力を検証します
  3. 決定論的な変換器が検証済みテキストを表示用文字体系に変換します
  4. 変換されたテキストがディスクに書き込まれます

この二段階のアプローチが機能するのは、LLM がラテン文字ベースの文字体系で作業する方が優れた出力を生成するためです。決定論的な変換器は、モデルの(しばしば信頼性の低い)文字体系の知識に依存することなく、正確な文字出力を保証します。

5 つの変換器すべて

champollion には 5 つの組み込み文字変換器が付属しています:

Plains Cree:SRO → 音節文字(crk

標準ローマ字表記(Standard Roman Orthography)からカナダ先住民音節文字への変換。

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

長母音はマクロン/サーカムフレックスを使用します:ê、î、ô、â。変換器はすべての SRO 発音区別符号を処理し、正しい音節文字にマッピングします。完全な Cree パイプラインについては、低リソース言語のサポートを参照してください。

Serbian:ラテン文字 → キリル文字(sr

Serbian 向けの決定論的なラテン文字からキリル文字への変換。

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

二重字(lj → љ、nj → њ、dž → џ)を含む Serbian アルファベットの完全なマッピングを処理します。

Klingon:ローマ字表記 → pIqaD(tlh

Marc Okrand のローマ字表記システムから pIqaD PUA 文字への変換。

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

Sindarin:ラテン文字 → Tengwar(x-elvish-s

トールキンの Sindarin モード Tengwar マッピング。

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

Kryptonian:ラテン文字 → Kryptonian(x-kryptonian

ファンレキシコンの Kryptonian 文字マッピング。

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

変換器のトリガー

言語設定の scripts フィールドを設定します。組み込み変換器の場合、言語コードから自動検出されます:

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

Plains Cree(crk)は自動検出されます。scripts を明示的に設定する必要はありません。


複数文字体系の言語

実際の言語の中には、複数の文字体系が現役で使われているものがあります:

言語文字体系champollion のアプローチ
Serbianラテン文字 + キリル文字文字変換器(sr)— ラテン文字で翻訳し、キリル文字に変換
中国語簡体字 + 繁体字異なるレジスターを持つ別々のロケールコード(zhzh-TW

両方の文字体系が同じ読者に向けられている言語(Serbian)には文字変換器を使用します。文字体系が異なる読者に向けられている言語(中国本土向けの簡体字、台湾・香港向けの繁体字)には、別々のロケールコードを使用します。


正書法に関する注記

レジスターは単なるトーンではありません。LLM を正しい表記規則に誘導する正書法の指示を含んでいます。

敬称・丁寧表現

champollion の組み込みレジスターには、各言語に文化的に適切な敬称が含まれています:

言語敬称レジスター指示
ドイツ語SieUse Sie-form for formal address
フランス語vousUse vous-form
ロシア語выProfessional register with вы-form
トルコ語sizProfessional register with siz-form
韓国語합쇼체Formal Korean (합쇼체)
日本語です/ますPolite professional register (です/ます form)
ポーランド語Pan/PaniProfessional register with Pan/Pani form

ジェンダーインクルーシブな表記

各言語カードには、言語固有のアドバイスを含む gender.inclusiveGuidance フィールドがあります。これはレジストリプリセットとは別に LLM 翻訳プロンプトに注入されるため、ユーザーが選択するフォーマリティプリセットに関わらず一貫して適用されます:

  • フランス語:中黒記法によるインクルーシブ表記(例:"Connecté·e")
  • ドイツ語:コロン記法(例:"Benutzer:innen")
  • スペイン語:ジェンダーニュートラルな言い換えを優先。スラッシュ記法(例:"usuario/a")はフォールバックとして使用

言語カードに固有のガイダンスがない言語(例:韓国語、人工言語)の場合、システムは汎用ルールにフォールバックします:「ジェンダーニュートラルな表現、または利用可能な最もインクルーシブな選択肢を優先する。」

RTL 文字体系の要件

アラビア語、ヘブライ語、ペルシア語、ウルドゥー語のレジスターはすべて右から左への要件を記載しています:Ensure text reads naturally in RTL layout contexts.

レジスターの上書き

すべてのレジスターは設定値です。プロジェクトのスタイルに合わせて上書きできます:

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

完全な設定リファレンスについては、設定を参照してください。


新しい人工言語の追加

手順

  1. BCP-47 私的使用コードを選択するx- プレフィックスを使用します(例:x-dothrakix-valyrian)。

  2. 設定に追加する

{
"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. (オプション)文字変換器を追加する:人工言語がラテン文字以外の表示用文字体系を使用する場合は、lib/scripts.js に変換器を追加し、SCRIPT_CONVERTERS に登録します。

  2. テストするchampollion sync --dry を実行して、ファイルを書き込まずに翻訳をプレビューします。

  3. 品質ゲートを確認する品質ゲートは人工言語に合わせた調整が必要な場合があります。特に、人工言語が PUA 文字を使用する場合は requireNonLatin チェックに注意してください。

:::note 人工言語の品質は LLM の知識に依存します LLM は、学習データで見たことのある人工言語にしか翻訳できません。十分に文書化された人工言語(Klingon、Sindarin、Dothraki)はうまく機能します。マイナーな人工言語や新しく発明された人工言語は、一貫性のない結果を生成する場合があります。品質を向上させるにはコーチングデータを使用してください。 :::


関連情報