このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "Solid の useIntlayer API の使用法を直接プロパティアクセスに更新"v8.9.02026/5/4
- "LocaleSwitcher、SEO、メタデータの更新"v7.3.112025/12/7
- "履歴の初期化"v5.5.102025/6/29
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayer を使って Nuxt と Vue のウェブサイトを翻訳する | 国際化(i18n)
目次
代替手段ではなく Interlayer を使用する理由
「@nuxtjs/i18n」や「i18next」などの主要なソリューションと比較して、Intlayer は次のような統合された最適化を備えたソリューションです。
Intlayer は、多言語ルーティング、ロケール検出用のミドルウェア、サイトマップ、および国際化のスケーリング (i18n) に必要なすべての機能を提供することにより、Nuxt と完全に連携するように最適化されています。
大量の JSON ファイルをページにロードするのではなく、必要なコンテンツのみをロードします。 Intlayer は、バンドルとページのサイズを最大 50% 削減するのに役立ちます。
アプリケーションのコンテンツのスコープを設定すると、大規模なアプリケーションの メンテナンスが容易になります。コンテンツ コードベース全体を確認するという精神的な負担を負うことなく、単一の機能フォルダーを複製または削除できます。さらに、Intlayer は完全に型指定されており、コンテンツの正確性を保証します。
コンテンツを同じ場所に配置すると、大規模言語モデル (LLM) によって 必要なコンテキストが削減されます。 Intlayer には、翻訳の欠落をテストする CLI、LSP、MCP などのツール スイートも付属しています。および agent skills により、AI エージェントの開発者エクスペリエンス (DX) がさらにスムーズになります。
AI プロバイダーの費用で、選択した LLM を使用して CI/CD パイプラインで自動化を変換します。 Intlayer は、コンテンツ抽出を自動化する コンパイラー と、バックグラウンドでの翻訳を支援する Web プラットフォーム も提供します。
大量の JSON ファイルをコンポーネントに接続すると、パフォーマンスと反応性の問題が発生する可能性があります。 Intlayer は、ビルド時のコンテンツの読み込みを最適化します。
Intlayer は単なる i18n ソリューションではなく、自己ホスト型 ビジュアル エディター と 完全な CMS を提供します。 リアルタイムで多言語コンテンツを管理できるようになり、翻訳者、コピーライター、その他のチーム メンバーとのコラボレーションがシームレスになります。コンテンツはローカルおよび/またはリモートに保存できます。
NuxtアプリケーションでIntlayerをセットアップするステップバイステップガイド
GitHubのアプリケーションテンプレートを参照してください。
依存関係のインストール
npmを使って必要なパッケージをインストールします:
bashコードをコピーコードをクリップボードにコピー
--interactiveフラグはオプションです。AI エージェントの場合はintlayer-cli initを使用してください。このコマンドは環境を検出し、必要なパッケージをインストールします。例えば:
bashコードをコピーコードをクリップボードにコピー
プロジェクトの設定
アプリケーションの言語を設定するための設定ファイルを作成します。
intlayer.config.tsコードをコピーコードをクリップボードにコピー
import { Locales, type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // 他のロケールをここに追加 ], defaultLocale: Locales.ENGLISH, }, }; export default config;この設定ファイルを通じて、ローカライズされたURL、ミドルウェアのリダイレクション、クッキー名、コンテンツ宣言の場所と拡張子、Intlayerのコンソールログの無効化などを設定できます。利用可能なパラメータの完全なリストについては、設定ドキュメントを参照してください。
Nuxt設定にIntlayerを統合する
Nuxtの設定にintlayerモジュールを追加します:
nuxt.config.tsコードをコピーコードをクリップボードにコピー
nuxt-intlayerモジュールは、Intlayer と Nuxt の統合を自動的に処理します。コンテンツ宣言のビルドを設定し、開発モードでファイルを監視し、ロケール検出のためのミドルウェアを提供し、ローカライズされたルーティングを管理します。コンテンツを宣言する
翻訳を格納するためのコンテンツ宣言を作成および管理します:
コンテンツ宣言は、
contentDirディレクトリ(デフォルトは./src)に含まれている限り、アプリケーションのどこにでも定義できます。また、コンテンツ宣言ファイルの拡張子(デフォルトは.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml})に一致している必要があります。詳細については、コンテンツ宣言ドキュメントを参照してください。
コード内でIntlayerを利用する
useIntlayerコンポーザブルを使って、Nuxtアプリケーション全体でコンテンツ辞書にアクセスします:components/HelloWorld.vueコードをコピーコードをクリップボードにコピー
Intlayerでのコンテンツアクセス
IntlayerはコンテンツにアクセスするためのさまざまなAPIを提供しています:
コンポーネントベースの構文(推奨):
<myContent />または<Component :is="myContent" />の構文を使用して、コンテンツを Intlayer ノードとしてレンダリングします。これは Visual Editor および CMS とシームレスに統合されます。文字列ベースの構文:
{{ myContent }}を使用して、Visual Editor のサポートなしにプレーンテキストとしてコンテンツをレンダリングします。生の HTML 構文:
<div v-html="myContent" />を使用して、Visual Editor のサポートなしに生の HTML としてコンテンツをレンダリングします。分割代入構文:
useIntlayerコンポーザブルはコンテンツを含む Proxy を返します。この Proxy はリアクティビティを保ちながらコンテンツにアクセスするために分割代入可能です。const content = useIntlayer("myContent");を使用し、{{ content.myContent }}/<content.myContent />としてレンダリングします。- または、
const { myContent } = useIntlayer("myContent");を使用してコンテンツを分割代入し、{{ myContent }}/<myContent/>としてレンダリングします。
コンテンツの言語を変更する
コンテンツの言語を変更するには、
useLocaleコンポーザブルが提供するsetLocale関数を使用します。この関数により、アプリケーションのロケールを設定し、それに応じてコンテンツを更新できます。NuxtLinkを使用して言語を切り替えるコンポーネントを作成します。ロケール切り替えにボタンではなくリンクを使うことは、SEOやページの発見性向上のベストプラクティスです。これにより、検索エンジンがすべてのローカライズされたページをクロールしインデックス化できます。components/LocaleSwitcher.vueコードをコピーコードをクリップボードにコピー
NuxtLinkを適切なhref属性(getLocalizedUrl経由)と共に使用することで、検索エンジンがページのすべての言語バリアントを検出できるようになります。これは、検索エンジンクローラーが追跡しない可能性のあるJavaScriptのみのロケール切り替えよりも望ましい方法です。次に、
app.vueを設定してレイアウトを使用します:app.vueコードをコピーコードをクリップボードにコピー
アプリケーションにローカライズされたルーティングを追加する
nuxt-intlayerモジュールを使用すると、Nuxtはローカライズされたルーティングを自動的に処理します。これは、ページのディレクトリ構造に基づいて各言語のルートを自動的に作成します。例:
plaintextコードをコピーコードをクリップボードにコピー
ローカライズされたページを作成するには、単に
pages/ディレクトリに Vue ファイルを作成します。以下に2つの例を示します。ホームページ (
pages/index.vue):pages/index.vueコードをコピーコードをクリップボードにコピー
アバウトページ (
pages/about.vue):pages/about.vueコードをコピーコードをクリップボードにコピー
注意:
useHeadは Nuxt で自動インポートされます。コンテンツの値には.value(リアクティブ)または.raw(プリミティブ文字列)を用途に応じて使用できます。nuxt-intlayerモジュールは自動的に以下を行います:- ユーザーの優先ロケールを検出
- URL を介したロケール切り替えの処理
- 適切な
<html lang="">属性の設定 - ロケールクッキーの管理
- ユーザーを適切なローカライズされた URL にリダイレクト
ローカライズされたリンクコンポーネントの作成
アプリケーションのナビゲーションが現在のロケールを尊重するようにするために、カスタムの
Linksコンポーネントを作成できます。このコンポーネントは内部URLに自動的に現在の言語をプレフィックスとして付加し、これはSEOおよびページの発見性に不可欠です。components/Links.vueコードをコピーコードをクリップボードにコピー
次に、このコンポーネントをアプリケーション全体で使用します:
layouts/default.vueコードをコピーコードをクリップボードにコピー
NuxtLinkをローカライズされたパスで使用することで、以下を保証できます:- 検索エンジンがすべての言語バージョンのページをクロールおよびインデックスできる
- ユーザーがローカライズされたURLを直接共有できる
- ブラウザの履歴がロケール接頭辞付きURLで正しく動作する
メタデータとSEOの処理
Nuxtは
useHeadコンポーザブル(自動インポート)を通じて優れたSEO機能を提供します。Intlayerを使って、.rawまたは.valueアクセサを用いてプリミティブな文字列値を取得し、ローカライズされたメタデータを扱うことができます:pages/about.vueコードをコピーコードをクリップボードにコピー
あるいは、Vueのリアクティビティなしでコンテンツを取得するために
import { getIntlayer } from "intlayer"関数を使用することもできます。コンテンツ値へのアクセス方法:
- プリミティブな文字列値(非リアクティブ)を取得するには
.rawを使用 - リアクティブな値を取得するには
.valueを使用 - Visual Editorサポートのために
<content.key />コンポーネント構文を使用
対応するコンテンツ宣言を作成します:
pages/about-page.content.tsコードをコピーコードをクリップボードにコピー
import { t, type Dictionary } from "intlayer"; const aboutPageContent = { key: "about-page", content: { metaTitle: t({ en: "About Us - My Company", fr: "À Propos - Ma Société", es: "Acerca de Nosotros - Mi Empresa", }), metaDescription: t({ ja: "私たちの会社とミッションについて詳しく知る", en: "Learn more about our company and our mission", fr: "En savoir plus sur notre société et notre mission", es: "Conozca más sobre nuestra empresa y nuestra misión", }), title: t({ ja: "私たちについて", en: "About Us", fr: "À Propos", es: "Acerca de Nosotros", }), }, } satisfies Dictionary; export default aboutPageContent;- プリミティブな文字列値(非リアクティブ)を取得するには
ナビゲーション付きレイアウトの作成
オプションNuxtのレイアウトを使うと、ページの共通構造を定義できます。ロケールスイッチャーとナビゲーションを含むデフォルトレイアウトを作成しましょう:
layouts/default.vueコードをコピーコードをクリップボードにコピー
Linksコンポーネント(以下に示す)は、内部ナビゲーションリンクが自動的にローカライズされることを保証します。
Gitの設定
Intlayerによって生成されたファイルは無視することを推奨します。これにより、Gitリポジトリへの不要なコミットを防ぐことができます。
これを行うには、.gitignoreファイルに以下の指示を追加してください。
コードをクリップボードにコピー
VS Code拡張機能
Intlayerでの開発体験を向上させるために、公式のIntlayer VS Code拡張機能をインストールできます。
この拡張機能は以下を提供します:
- 翻訳キーのオートコンプリート。
- 欠落している翻訳のリアルタイムエラー検出。
- 翻訳されたコンテンツのインラインプレビュー。
- 翻訳を簡単に作成・更新できるクイックアクション。
拡張機能の使い方の詳細については、Intlayer VS Code拡張機能のドキュメントを参照してください。
さらに進む
さらに進めるには、ビジュアルエディターを実装するか、CMSを使用してコンテンツを外部化することができます。
よくある質問
現実的な選択肢は 2 つあります:
@nuxtjs/i18n: 確立されたモジュールで、vue-i18n上に構築されており、ロケールファイルはページごとに読み込まれ、設定面が広いです。vue-i18nにはメッセージをネームスペース化する方法がないため、すべてのページが他のすべてのページのメッセージをバンドルし、アプリがページを追加するにつれてそのバンドルは増え続けます。Intlayer: 最も高度なソリューションです。コードベースのどこにでもコンテンツを宣言でき(各コンポーネントの隣またはセントラライズ)、ビルド時にコンパイルされ、完全に型付けされ、ロケール対応ルーティング、AI 翻訳、ビジュアルエディタ、CMS を備えています。
違いはコンテンツがどこに存在するかです。@nuxtjs/i18n は locales/*.json ファイルに集約しますが、Intlayer はそれをレンダリングするコンポーネントの隣に配置するため、ページはそれが使用するエントリのみを配信し、機能フォルダは 1 つの単位で移動または削除できます。Intlayer を選ぶ理由と Vue i18n ベンチマークを参照してください。
はい、2 つのパスがあります。@nuxtjs/i18n 移行ガイドでコンテンツを段階的に移行できます。または、現在の API を完全に保つことができます:互換性アダプタは vue-i18n と同じ API を公開しますが、Intlayer 辞書によって提供されるため、インポートは変わりますがコンポーネントコードは変わりません。
はい。sync JSON プラグインは /messages/{locale}/{namespace}.json ファイルを信頼できるソースとして保持し、双方向で Intlayer 辞書を生成します。sync PO プラグインは gettext カタログに対して同じことを行い、ロケールごとのファイルでは 1 つのファイルにロケールをグループ化する代わりに言語別にコンテンツを分割できます。
いいえ。npx intlayer extract を実行すると、Intlayer はソースファイルを読み取り、ユーザーに見える文字列を抽出し、各ファイルの隣に .content ファイルを書き込むため、カタログに 1 つずつ文字列をコピーする代わりに diff をレビューします。extract コマンドを参照してください。
完全に自動化されたパイプラインの場合、Intlayer Compiler は JSX、TSX、Vue、Svelte ソース上でビルド時に同じことを行い、変更のたびに辞書を生成するため、手動で保守するキーはありません。静的分析によって機能するため、実行時にのみ存在する文字列は到達不可能なままで、ユーザーに見えるテキストをアプリケーションロジックから区別するために少数のアノテーションが必要です。
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はハードコードされた文字列にフラグを立て、静的辞書キーと未使用コンテンツのさらなるルールがあります。
