dictionary.js

dictionary.jsファイルとは何か?どのように使用されるのか?

はじめに

dictionary.jsLingo.devコンパイラーがビルド時に生成するファイルです。アプリケーションの翻訳を実行時に効率的に読み込める形式で保存します。

注意: dictionary.jsファイルへの変更はすべてリポジトリにコミットする必要があります。

ファイル例

これは(非常に最小限の)dictionary.jsファイルの例です:

export default {
  version: 0.1,
  files: {
    "components/hero.tsx": {
      entries: {
        "3/declaration/body/0/argument/1/1": {
          content: {
            en: "Welcome to our app",
            es: "Bienvenido a nuestra aplicación",
          },
          hash: "a1b2c3d4e5f6...",
        },
      },
    },
  },
};

利用可能なプロパティの完全な説明については、スキーマプロパティを参照してください。

ファイルの場所

デフォルトでは、dictionary.jsファイルはコンパイラーの設定(例:vite.config.tsファイル)の場所を基準にしたsrc/lingoディレクトリに出力されます。

この場所のカスタマイズ方法については、コンパイラーオプションを参照してください。

辞書の読み込み

lingo.devパッケージはいくつかのloadDictionary関数を提供しています。これらの関数は、ユーザーの現在のロケール(ロケールクッキーの現在の値に基づく)の辞書を読み込む役割を担っています。

関数のそれぞれのバリエーションは、異なる環境で使用することを意図しています。これはクライアントサイドバージョンの関数を使用する例です:

<LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
  <App />
</LingoProviderWrapper>

辞書を手動で読み込もうとするのではなく、提供された関数のみを使用して辞書を読み込むべきです。

辞書の編集

dictionary.jsファイルは自動生成されますが、編集可能です。例えば、翻訳内容を編集することで、翻訳を手動で変更できます。

ただし、ソースコンテンツが変更された場合、手動編集は上書きされるため、通常はdata-lingo-override属性を使用する方が保守性が高いです。

スキーマプロパティ

このセクションでは、dictionary.jsファイルに含まれるすべてのプロパティについて説明します。

version

互換性チェックと将来の移行のために使用されるスキーマバージョン識別子。

  • 型: number
  • 必須: はい

files

すべての翻訳エントリをソースファイルパスごとに整理するコンテナオブジェクト。各キーはソースルートからの相対パスを表します(例:"components/hero.tsx", "pages/home.jsx")。

  • 型: object
  • 必須: はい

files[filePath].entries

特定のソースファイルで発見されたすべての翻訳エントリのコンテナ。各キーはファイル内の翻訳可能なコンテンツを一意に識別するASTベースの識別子です。

  • 型: object
  • 必須: はい

files[filePath].entries[astKey].content

ロケール識別子を対応する翻訳文字列にマッピングします。プロジェクトで設定されたすべてのロケールの翻訳が含まれています。

  • 型: object
  • 必須: はい

files[filePath].entries[astKey].hash

変更検出とキャッシュ無効化に使用される元のソースコンテンツのSHA-256ハッシュ。ソースコンテンツが変更されると、このハッシュも変更され、エントリの再翻訳がトリガーされます。

  • 型: string
  • 必須: はい