Lingo.dev + XLIFF

Lingo.dev CLIはXLIFF(XML Localization Interchange File Format)ファイルを翻訳する際に、ドキュメント構造、翻訳ユニット、ワークフロー状態を保持します。CLIはXLIFF 1.2と2.0の両形式をサポートし、ソース言語のメタデータを維持し、ファイル/グループ/ユニット階層を保持し、XML機密コンテンツのためのCDATAセクションを処理し、プロフェッショナルな翻訳ワークフローやCATツールと統合します。

クイックセットアップ

XLIFFファイル用の設定:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja"]
  },
  "buckets": {
    "xliff": {
      "include": ["localization/[locale].xliff"]
    }
  }
}

注意: [locale]は設定内でそのまま残しておくべきプレースホルダーであり、CLI実行時に実際のロケールに置き換えられます。

XLIFFファイルの翻訳

npx lingo.dev@latest i18n

コンテンツを翻訳しながら、XLIFF構造、翻訳状態、およびプロフェッショナルな翻訳ワークフローのメタデータを保持します。

XLIFFファイル構造

XLIFF 1.2フォーマット

<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
  <file original="app.strings" source-language="en" target-language="es" datatype="plaintext">
    <header></header>
    <body>
      <trans-unit id="welcome" resname="welcome.message">
        <source>Welcome to our application</source>
        <target state="translated">Bienvenido a nuestra aplicación</target>
      </trans-unit>
      <trans-unit id="login" resname="auth.login">
        <source>Log In</source>
        <target state="new"></target>
      </trans-unit>
    </body>
  </file>
</xliff>

XLIFF 2.0フォーマット

<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0" srcLang="en">
  <file id="messages">
    <unit id="welcome">
      <segment>
        <source>Welcome to our application</source>
      </segment>
    </unit>
    <group id="auth">
      <unit id="login">
        <segment>
          <source>Log In</source>
        </segment>
      </unit>
    </group>
  </file>
</xliff>

キー生成

XLIFFキーは決定論的にURLエンコーディングで生成されます:

XLIFF 1.2キー

  • resname属性、次にid、次にソーステキストに基づく
  • シンプルな形式: welcome.message, auth.login

XLIFF 2.0キー

  • 階層的なパス構造: resources/{fileId}/{groupPath}{unitId}/source
  • URLエンコードされたパス: resources%2Fmessages%2Fauth%2FgroupUnits%2Flogin%2Fsource
  • グループはgroupUnitsセパレータでネストされたパスを作成

XLIFF固有の機能

翻訳状態

<!-- XLIFF 1.2 ターゲット状態 -->
<target state="new">未翻訳コンテンツ</target>
<target state="translated">翻訳済みコンテンツ</target>
<target state="reviewed">レビュー済み翻訳</target>
<target state="final">最終承認済み翻訳</target>

翻訳状態は処理中に保持され、更新されます。

ソース言語メタデータ

<!-- XLIFF 1.2 -->
<file source-language="en-US" target-language="es-ES">

<!-- XLIFF 2.0 -->
<xliff srcLang="en-US" trgLang="es-ES">

ソース言語情報は自動的に保持され、更新されます。

CDATAセクション

<source><![CDATA[<tags>や"特殊"文字を含むコンテンツ]]></source>

CDATAセクションはXML敏感文字を含むコンテンツに対して自動的に使用されます。

グループ構成

<!-- XLIFF 2.0 論理的な構成のためのグループ -->
<group id="navigation">
  <unit id="home"><segment><source>Home</source></segment></unit>
  <unit id="settings"><segment><source>Settings</source></segment></unit>
</group>

階層的なグループ構造は保持され、キーパスに反映されます。

高度な設定

複数のXLIFFファイル

"xliff": {
  "include": [
    "localization/app_[locale].xliff",
    "localization/ui_[locale].xliff"
  ]
}

ファイル拡張子

"xliff": {
  "include": [
    "translations/[locale].xliff",
    "translations/[locale].xlf"
  ]
}

.xliff.xlfの両方の拡張子がサポートされています。

翻訳ユニットのロック

"xliff": {
  "include": ["localization/[locale].xliff"],
  "lockedKeys": ["app.version", "build.number"]
}

プロフェッショナル翻訳ワークフロー

XLIFFファイルは以下と完全に統合されます:

  • CAT(コンピュータ支援翻訳)ツール
  • 翻訳管理システム(TMS)
  • プロフェッショナル翻訳者のワークフロー
  • 品質保証プロセス
  • 翻訳メモリシステム

CLIは迅速なローカライゼーションのためにAI駆動の翻訳を可能にしながら、すべてのワークフローメタデータを保持します。