このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "Solid の useIntlayer API の使用法を直接プロパティアクセスに更新"v8.9.02026/5/4
- "initコマンドを追加"v7.5.92025/12/30
- "初期履歴"v7.1.102025/11/20
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayerを使ってSvelteKitのウェブサイトを翻訳する | 国際化(i18n)
目次
代替手段ではなく Interlayer を使用する理由
「svelte-i18n」や「i18next」などの主要なソリューションと比較して、Intlayer は次のような統合された最適化を備えたソリューションです。
Intlayer は、多言語ルーティング、SSR サポート、およびスケーリング国際化 (i18n) に必要なすべての機能を提供することにより、SvelteKit と完全に連携するように最適化されています。
大量の JSON ファイルをページにロードするのではなく、必要なコンテンツのみをロードします。 Intlayer は、バンドルとページのサイズを最大 50% 削減するのに役立ちます。
アプリケーションのコンテンツのスコープを設定すると、大規模なアプリケーションの メンテナンスが容易になります。コンテンツ コードベース全体を確認するという精神的な負担を負うことなく、単一の機能フォルダーを複製または削除できます。さらに、Intlayer は完全に型指定されており、コンテンツの正確性を保証します。
コンテンツを同じ場所に配置すると、大規模言語モデル (LLM) によって 必要なコンテキストが削減されます。 Intlayer には、翻訳の欠落をテストする CLI、LSP、MCP などのツール スイートも付属しています。および agent skills により、AI エージェントの開発者エクスペリエンス (DX) がさらにスムーズになります。
AI プロバイダーの費用で、選択した LLM を使用して CI/CD パイプラインで自動化を変換します。 Intlayer は、コンテンツ抽出を自動化する コンパイラー と、バックグラウンドでの翻訳を支援する Web プラットフォーム も提供します。
大量の JSON ファイルをコンポーネントに接続すると、パフォーマンスと反応性の問題が発生する可能性があります。 Intlayer は、ビルド時のコンテンツの読み込みを最適化します。
Intlayer は単なる i18n ソリューションではなく、自己ホスト型 ビジュアル エディター と 完全な CMS を提供します。 リアルタイムで多言語コンテンツを管理できるようになり、翻訳者、コピーライター、その他のチーム メンバーとのコラボレーションがシームレスになります。コンテンツはローカルおよび/またはリモートに保存できます。
SvelteKitアプリケーションでIntlayerをセットアップするステップバイステップガイド
Application Template を GitHub で参照してください。
まずは新しいSvelteKitプロジェクトを作成しましょう。以下は最終的に作成する構成です:
コードをクリップボードにコピー
依存関係をインストール
npm を使用して必要なパッケージをインストールしてください:
bashコードをコピーコードをクリップボードにコピー
--interactiveフラグはオプションです。AI エージェントの場合はintlayer-cli initを使用してください。このコマンドはあなたの環境を検出し、必要なパッケージをインストールします。例えば:
bashコードをコピーコードをクリップボードにコピー
- intlayer: コアとなるi18nパッケージ。
- svelte-intlayer: Svelte/SvelteKit向けのコンテキストプロバイダーとストアを提供します。
- vite-intlayer: コンテンツ宣言をビルドプロセスに統合するViteプラグイン。
プロジェクトの設定
プロジェクトのルートに設定ファイルを作成します:
intlayer.config.tsコードをコピーコードをクリップボードにコピー
Intlayer を Vite 設定に統合する
vite.config.tsを更新して、Intlayer プラグインを含めます。このプラグインは、コンテンツファイルのトランスパイルを処理します。vite.config.tsコードをコピーコードをクリップボードにコピー
コンテンツを宣言する
srcフォルダ内の任意の場所(例:src/lib/contentまたはコンポーネントの隣)にコンテンツ宣言ファイルを作成します。これらのファイルは、各ロケールに対してt()関数を使用してアプリケーション用の翻訳可能なコンテンツを定義します。Intlayerをコンポーネントで利用する
これで、任意の Svelte コンポーネントで
useIntlayer関数を使用できます。これはロケールが変更されると自動的に更新されるリアクティブストアを返します。この関数は現在のロケール (SSR とクライアント側のナビゲーション の両方) を自動的に尊重します。注記:
useIntlayerは Svelte store を返すため、リアクティブ値にアクセスするには$プレフィックスを使用する必要があります (例:$content.title)。src/lib/components/Component.svelteコードをコピーコードをクリップボードにコピー
ルーティングの設定
オプション以下の手順は、SvelteKit でロケールベースのルーティングをセットアップする方法を示しています。これにより、URL にロケールプレフィックス (例:
/en/about,/fr/about) を含めることができ、SEO とユーザー体験が向上します。bashコードをコピーコードをクリップボードにコピー
サーバーサイドのロケール検出を処理する
SvelteKit では、SSR 時に正しいコンテンツをレンダリングするため、サーバーはユーザーのロケールを認識する必要があります。
hooks.server.tsを使用して、URL またはクッキーからロケールを検出します。src/hooks.server.tsを作成または変更します:src/hooks.server.tsコードをコピーコードをクリップボードにコピー
次に、リクエストイベントからユーザーのロケールを取得するヘルパーを作成します:
src/lib/getLocale.tsコードをコピーコードをクリップボードにコピー
getLocaleFromStorageはあなたの設定に応じて、ヘッダーまたはクッキーからロケールをチェックします。詳細は Configuration を参照してください。localeDetector関数はAccept-Languageヘッダーを処理し、最適なマッチを返します。ロケールが設定されていない場合、404エラーを返したいです。これを簡単にするために、ロケールが有効かどうかをチェックする
match関数を作成できます:/src/params/locale.tsコードをコピーコードをクリップボードにコピー
Note:
src/app.d.tsにロケール定義が含まれていることを確認してください:typescriptコードをコピーコードをクリップボードにコピー
+layout.svelteファイルの場合、i18n に関連しない静的コンテンツのみを保持するために、すべてを削除できます:src/+layout.svelteコードをコピーコードをクリップボードにコピー
次に、
[[locale=locale]]グループの下に新しいページとレイアウトを作成します:src/routes/[[locale=locale]]/+layout.tsコードをコピーコードをクリップボードにコピー
src/routes/[[locale=locale]]/+layout.svelteコードをコピーコードをクリップボードにコピー
src/routes/[[locale=locale]]/+page.tsコードをコピーコードをクリップボードにコピー
src/routes/[[locale=locale]]/+page.svelteコードをコピーコードをクリップボードにコピー
国際化されたリンク
オプションSEO のため、ルートをロケール接頭辞を付けることが推奨されます (例:
/en/about,/fr/about)。このコンポーネントは現在のロケールで自動的にリンクに接頭辞を付けます。src/lib/components/LocalizedLink.svelteコードをコピーコードをクリップボードにコピー
SvelteKit の
gotoを使用する場合、同じロジックをgetLocalizedUrlと共に使用してローカライズされた URL にナビゲートできます:typescriptコードをコピーコードをクリップボードにコピー
コンポーネントのコンテンツを抽出する
オプション既存のコードベースがある場合、数千のファイルを変換するのは時間がかかることがあります。
src/lib/components/LanguageSwitcher.svelteコードをコピーコードをクリップボードにコピー
バックエンドプロキシを追加する
オプションSvelteKitアプリケーションにバックエンドプロキシを追加するには、
vite-intlayerプラグインが提供するintlayerProxy関数を使用できます。このプラグインは、URL、クッキー、およびブラウザーの言語設定に基づいて、ユーザーに最適なロケールを自動的に検出します。Intlayer v9以降、
intlayerProxy()はintlayer()プラグインに直接バンドルされ、routing.enableProxyオプション(デフォルトでtrue)を通じてデフォルトで有効になります。以下に示すように個別に登録することはオプションになりました — これは後方互換性のためと、プラグインの順序を制御する必要があるセットアップのために保持されています。routing.enableProxy: falseを設定してオプトアウトできます。v9リリースノートを参照してください。vite.config.tsコードをコピーコードをクリップボードにコピー
intlayer editor / CMS を設定する
オプションintlayer エディターをセットアップするには、intlayer エディターのドキュメントに従う必要があります。
intlayer CMSをセットアップするには、intlayer CMSドキュメントに従う必要があります。
intlayer editor selector を視覚化するには、intlayer のコンテンツ内でコンポーネント構文を使用する必要があります。
Component.svelteコードをコピーコードをクリップボードにコピー
コンポーネントのコンテンツを抽出する
オプション既存の codebase がある場合、数千のファイルを変換するのに時間がかかる可能性があります。
このプロセスを容易にするために、Intlayerは、コンポーネントを変換しコンテンツを抽出するための コンパイラ / エクストラクタ を提案しています。
セットアップするには、
intlayer.config.tsファイルにcompilerセクションを追加します。intlayer.config.tsコードをコピーコードをクリップボードにコピー
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... 他の構成 compiler: { /** * コンパイラを有効にするかどうかを指定します。 */ enabled: true, /** * 出力ファイルのパスを定義します。 */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * 変換後にコンポーネントを保存するかどうかを指定します。これにより、コンパイラを一度だけ実行してアプリを変換し、その後削除することができます。 */ saveComponents: false, /** * 辞書キーの接頭辞 */ dictionaryKeyPrefix: "", }, }; export default config;コンポーネントを変換してコンテンツを抽出するためにエクストラクタを実行します
bashコードをコピーコードをクリップボードにコピー
Since v9, the
intlayerCompileris included in theintlayerplugin. So you don't need to add it manually.babel.config.jsコードをコピーコードをクリップボードにコピー
bashコードをコピーコードをクリップボードにコピー
Git Configuration
Intlayerによって生成されたファイルを無視することをお勧めします。
コードをクリップボードにコピー
さらに進む
- ビジュアルエディター: UIから直接翻訳を編集するために、Intlayer Visual Editorを統合します。
- CMS: コンテンツ管理を外部化するために、Intlayer CMSを使用します。
よくある質問
svelte-i18nとtypesafe-i18n: ストアベースのメッセージカタログで、load 関数に手動で配線します。Paraglide: コンパイルされたメッセージと強力な型付けの仕組みを備え、メッセージレイヤーのみに焦点を当てています。Intlayer: 最も高度なソリューションです。コードベースのどこにでもコンテンツを宣言でき(各コンポーネントの隣またはセントラライズ)、ビルド時にコンパイルされます。ロケール対応ルーティング、サーバーサイドロケール検出、AI 翻訳、ビジュアルエディタ、CMS を備えています。
SvelteKit ではサーバーサイドの部分に違いが現れます。hooks でのロケール検出、ローカライズされたリンク、エディタ統合がライブラリに付属しており、プロジェクトごとに組み立てる必要がありません。Intlayer を選ぶ理由と Svelte i18n ベンチマークを参照してください。
ほぼ可能です。Svelte I18n 移行ガイドに従ってコンテンツを移動してください。段階的に移行することもできます。sync JSON プラグインは既存の JSON カタログを信頼できるソースとして保ち、それらから Intlayer 辞書を生成するため、両方のレイヤーが同期を保ちながらコンポーネントを 1 つずつ移動できます。
はい。sync JSON プラグインは /messages/{locale}/{namespace}.json ファイルを信頼できるソースとして保ち、双方向で Intlayer 辞書を生成します。sync PO プラグインは gettext カタログに対して同じことを行い、ロケールごとのファイルでは 1 つのファイルにロケールをグループ化する代わりに言語ごとにコンテンツを分割できます。
いいえ。npx intlayer extract を実行すると、Intlayer はコンポーネントを読み込み、ユーザーに見える文字列を抽出し、各コンポーネントの隣に .content ファイルを書き込むため、文字列をカタログに 1 つずつコピーする代わりに diff をレビューできます。このガイドのステップ 12 でそれについて説明しています。
完全に自動化されたパイプラインの場合、Intlayer Compilerはビルド時に同じことを行います。変更のたびに JSX、TSX、Vue、Svelte ソースをスキャンし、辞書を生成し、hot module replacement を通じて同期を保つため、手動で保守するキーはまったくありません。
コンパイラをオンにする前に知っておく価値のある 2 つの制限があります。静的分析によって機能するため、API エラーコードや CMS フィールドなど、実行時にのみ存在する文字列は到達不可能です。また、className="active" やステータスコードなどのアプリケーションロジックからユーザーに見える文字列を区別する必要があり、大規模なコードベースではいくつかのアノテーションが必要です。extract コマンドはあなたをループに保つことでその両方を回避します。
5 つのピース、すべてオプションです:
- VS Code 拡張機能:
useIntlayerキーからそれを宣言するコンテンツファイルにジャンプし、コンポーネントからコンテンツを抽出し、コマンドパレットまたは専用の Intlayer タブからビルド、fill、test、push、pull を実行します。 - LSP サーバー: LSP を話す任意のエディタで同じ認識を提供し、定義へのジャンプ、すべての参照を検索、翻訳値のホバープレビュー、キーとフィールドのオートコンプリート、キーがどこにも宣言されていない場合の警告があります。また、
i18next、react-i18next、next-intl、use-intl呼び出しを解決し、移行中に役立ちます。 - MCP サーバー: Intlayer ドキュメントと CLI を Cursor、VS Code、Claude Desktop、Claude Code、ChatGPT に公開し、アシスタントが推測する代わりに現在のドキュメントから回答でき、
intlayer fillなどのコマンドを自分で実行できます。 - エージェントスキル:
intlayer-config、intlayer-cli、intlayer-contentなどの焦点を絞ったスキル、およびフレームワークごとに 1 つ、エージェントにルーティング設定とコンテンツノードタイプを教えます。 - ESLint プラグイン:
no-raw-textはハードコードされた文字列にフラグを立て、静的辞書キーと未使用コンテンツのさらなるルールがあります。
