このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayer v8 の新機能
Intlayer v8 へようこそ!このリリースでは、自動コンテンツ検出による開発者体験の向上、スキーマ検証によるデータ整合性の確保、辞書管理に対するより細かい制御の提供に注力しています。
目次
リッチコンテンツの進化: Markdown & HTML
Intlayer v8 は、リッチコンテンツの処理方法に大きな改善をもたらしました。HTML ノード(v7 には存在しませんでした)の導入と、Markdown ノード(v7 から存在していましたが、強化されました)との API 統合が行われました。
統合された .use() API
Markdown と HTML ノードの両方に .use() メソッドが導入されました。このメソッドを使用すると、レンダリング時に使用される HTML タグやコンポーネントをカスタマイズできます。
- コンポーネントの置換: HTML タグやカスタムコンポーネントを、自身のフレームワークコンポーネント(例:
<a>をNextLinkに、<CustomCmp>を React コンポーネントに)で簡単に置き換えられます。 - 型安全性: コンポーネントを提供するためのすべての関数は完全に型付けされており、正しいプロップを受け取ることが保証されます。
デフォルトのレンダリング動作
v7 では、プロバイダーが定義されていない場合、Markdown ノードは生の文字列としてレンダリングされ、解析のために外部ライブラリが必要になることがよくありました。
v8 では、Intlayer に独自の内部 Markdown パーサーが含まれています。 デフォルトで、Markdown ノードは外部ライブラリを必要とせずに直接 HTML としてレンダリングされるようになりました。
新しいレンダラーとプロバイダーのユーティリティ
標準の useIntlayer フロー以外でも制御を強化できるように、新しいスタンドアロンのレンダラー関数とコンポーネントが導入されました。
- Markdown:
MarkdownRenderer、useMarkdownRenderer、renderMarkdown。(注:MarkdownProviderは v7 から存在していましたが、これらの新しいツールと統合されました)。 - HTML:
HTMLRenderer、useHTMLRenderer、renderHTML、HTMLProvider。
例: Markdown レンダリングツール
1. コンポーネントの使用:
コードをクリップボードにコピー
2. フックの使用:
コードをクリップボードにコピー
3. ユーティリティ関数の使用:
コードをクリップボードにコピー
1. コンポーネントの使用:
コードをクリップボードにコピー
1. コンポーネントの使用:
コードをクリップボードにコピー
2. フックの使用:
コードをクリップボードにコピー
3. ユーティリティ関数の使用:
コードをクリップボードにコピー
1. サービスの使用:
コードをクリップボードにコピー
1. コンポーネントの使用:
コードをクリップボードにコピー
2. フックの使用:
コードをクリップボードにコピー
3. ユーティリティ関数の使用:
コードをクリップボードにコピー
1. コンポーネントの使用:
コードをクリップボードにコピー
2. フックの使用:
コードをクリップボードにコピー
3. ユーティリティ関数の使用:
コードをクリップボードにコピー
例: HTML レンダリングツール
1. コンポーネントの使用:
コードをクリップボードにコピー
2. フックの使用:
コードをクリップボードにコピー
3. ユーティリティ関数の使用:
コードをクリップボードにコピー
1. コンポーネントの使用:
コードをクリップボードにコピー
1. コンポーネントの使用:
コードをクリップボードにコピー
2. フックの使用:
コードをクリップボードにコピー
3. ユーティリティ関数の使用:
コードをクリップボードにコピー
1. 直接の使用:
Angular では、標準 of [innerHTML] バインディングを使用できます。
コードをクリップボードにコピー
1. コンポーネントの使用:
コードをクリップボードにコピー
2. フックの使用:
コードをクリップボードにコピー
3. ユーティリティ関数の使用:
コードをクリップボードにコピー
1. コンポーネントの使用:
コードをクリップボードにコピー
2. フックの使用:
コードをクリップボードにコピー
3. ユーティリティ関数の使用:
コードをクリップボードにコピー
詳細は HTML コンテンツのドキュメント と Markdown ドキュメント を参照してください。
YAML & Markdown コンテンツファイル (v8.10.0)
.content.md および .content.yaml ファイル拡張子を使用して、コンテンツを直接宣言できるようになりました。これは、長文のコンテンツ、ブログ、ドキュメント、プライバシーポリシーに最適です。
これらのファイルはビジュアルエディター(Visual Editor)から直接編集可能であり、非技術的なチームメンバーにとっても合理化されたワークフローを提供します。
詳細については、YAML コンテンツファイルのドキュメント および Markdown コンテンツファイルのドキュメント を参照してください。
カスタム URL リライト
Intlayer v8 は カスタム URL リライト を導入し、標準の /locale/path 構造と異なるロケール固有のパスを定義できるようになります。これはローカルSEOの改善や、英語以外のユーザーにとってより自然なユーザーエクスペリエンスを提供するための強力な機能です。
v8 の主な強化点:
- Framework Formatters:
nextjsRewrite、svelteKitRewrite、reactRouterRewrite、vueRouterRewrite、solidRouterRewrite、tanstackRouterRewrite、nuxtRewrite、およびviteRewriteを新たに追加し、各ルーターに対して慣用的なパターン構文を提供します。 useRewriteURLフック: クライアントサイドの新しいフックで、ルーターのナビゲーションを発生させることなく、アドレスバーをより見栄えの良いローカライズされた URL に静かに修正します。- 自動 SEO リダイレクト: 組み込みのプロキシが、手で入力されたカノニカルパス(例:
/fr/about)から、より見栄えの良いローカライズ版(例:/fr/a-propos)へ自動的にリダイレクトするようになりました。
設定例:
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
この機能は Intlayer のプロキシを通じて Next.js と Vite でアウト・オブ・ザ・ボックスでサポートされており、TanStack Router、React Router、Vue Router、SvelteKit、Solid Router などの他のルーターにも簡単に統合できます。
詳細と統合ガイドについては、カスタム URL リライトのドキュメント を参照してください。
拡張された挿入値
v8 では、挿入値は文字列や数値に加えて、React 要素(または Vue ノード)を受け取れるようになりました。これにより、リッチでインタラクティブなコンポーネントを挿入テンプレートに直接注入できます。
Intlayer は挿入内の入れ子になった React および Preact のノードを堅牢に処理するようになり、複雑な UI 構造が保持され正しくレンダリングされることを保証します。
例:
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
Unicode CLDR 複数形ルール (v8.8.0)
Unicode CLDR プロジェクトで定義された複数形ルールに基づく新しい plural ノードヘルパーが導入され、複雑な言語のサポートが向上しました。
コードをクリップボードにコピー
その後、フレームワークコンポーネント内で動的にカウントを渡すことができます:
コードをクリップボードにコピー
詳細については、複数形化のドキュメント を参照してください。
コンテンツスキーマ検証
Intlayer v8 では、辞書に対するスキーマ検証が導入されました。Zod を使って設定内に再利用可能なバリデーションスキーマを定義し、それをコンテンツファイルに適用できます。これにより、コンテンツが常に期待される構造に準拠していることが保証され、ビルド時にエラーを検出できます。
1. スキーマの定義
intlayer.config.ts にスキーマを定義します:
コードをクリップボードにコピー
2. 辞書へのスキーマの適用
辞書定義でスキーマキーを参照します:
コードをクリップボードにコピー
コンテンツがスキーマと一致しない場合(例: title が短すぎる)、ビルドプロセスでエラーが発生します。
TypeScript: IntlayerNode プリミティブアクセサー
IntlayerNode 型が更新され、コンテンツノード上で直接 JavaScript のプリミティブメソッドを呼び出せるようになりました。これにより、ローカライズされたコンテンツを、標準の文字列、数値、真偽値、または配列のプリミティブであるかのように直接操作できます。
React、Preact、Solid、Svelte、Vue、および Angular でサポートされています。
文字列の例
コードをクリップボードにコピー
配列の例
コードをクリップボードにコピー
強化された自動コンテンツ検出
v8 では、Intlayer がコンテンツ文字列内の Markdown 構文、HTML タグ、および変数挿入を自動的に検出します。これにより、md()、html()、insert() といったヘルパー関数を省略できることが多くなります。
この挙動はデフォルトで有効です。intlayer.config.ts のグローバル設定または各辞書ごとに、この検出を細かく調整できます。
詳細な制御
特定の変換タイプを有効化または無効化できます:
コードをクリップボードにコピー
v7 の動作(手動でのラッピング):
コードをクリップボードにコピー
v8 の動作(自動検出):
コードをクリップボードにコピー
基になる JSON の結果は同じで、レンダリングに必要な豊富な型情報は保持されます:
コードをクリップボードにコピー
ローカリゼーション: 新しい useIntl フック
React、Next.js、Vue で新しい useIntl() フックが利用可能になりました。これはロケールに紐づいた Intl オブジェクトを提供し、数値や日付などのフォーマットに現在の言語を自動的に使用するため、ロケールを手動で渡す必要がありません。
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
ツール: VSCode 拡張機能の強化
Intlayer の VSCode 拡張機能は v8 で大幅なアップデートを受け、国際化ワークフローを効率化します:
- 起動時間: プロジェクトを開く際のパフォーマンスが改善されます。
- キャッシュ: ほぼ瞬時のバリデーションとオートコンプリートを実現する強化されたキャッシュ層。
- 未使用キー & 重複キー検出: 新機能により、辞書全体で未使用のキーや重複したキーを自動検出し、コンテンツをクリーンで効率的に保つのに役立ちます。
ツール: C++ ウォッチャー & OXC ベースの LSP (v8.12.0)
Intlayer v8.12.0 は、開発者体験に大きな改善をもたらします:
- Parcel Watcher: コンテンツウォッチャーが
chokidarから@parcel/watcherに移行されました。ネイティブの C++ ファイル監視を活用することで、より高速なアップデートと大幅なメモリ消費の削減を実現します。 - 新しい Language Server Protocol (LSP): まったく新しい LSP が利用可能になりました。OXC ベースのパースで構築されており、IDE や AI エージェントが
useIntlayer('my-key')の呼び出しと対応する.contentファイルをシームレスにリンク(およびその逆)できるように支援します。
詳細については、LSP のドキュメント を参照してください。
コンパイラの最適化
Intlayer v8 には Markdown と HTML コンパイラ向けの新しいキャッシング層が導入されました。これにより、同じ設定で同一のコンテンツ文字列は一度だけ解析されるため、再レンダリング時や複数箇所で同じコンテンツを使用する場合のオーバーヘッドが大幅に削減されます。
コードをクリップボードにコピー
コードをクリップボードにコピー
Vue / Svelte の場合は、適切なコンパイラパッケージをインストールする必要があります:
bashコードをコピーコードをクリップボードにコピー
bashコードをコピーコードをクリップボードにコピー
実験的なビルド最適化: Minify & Purge (v8.7.0)
Intlayer v8.7.0 では、本番環境のバンドルを最適化するために設計された、intlayer.config.ts 内の新しい実験的なビルド機能が導入されました:
- 辞書のミニファイ (Minification): 辞書ファイルをミニファイしてサイズを削減します。
- 未使用キーのパージ (Purging): 辞書から未使用の翻訳キーをスキャンして削除し、アクティブなキーを短い文字にリネームします(例:
"products" -> "a","pricing" -> "b")。これにより、バンドルサイズが最大 5% 削減されます。 - TypeScript チェックの無効化: コンパイルステップ中の TypeScript 型チェックを無効にすることで、ビルドを高速化します。
コードをクリップボードにコピー
柔軟性: 統一されたインポートモード
live ブールプロパティは、より包括的な importMode プロパティに置き換えられ、非推奨になりました。これにより、辞書をどのように読み込むか(静的、動的、またはライブ同期)を明示的に定義できるようになります。
モード
static(デフォルト): 辞書はビルド時にバンドルされます。パフォーマンスに最適です。dynamic: 辞書はランタイムで読み込まれます(例: JSON フェッチや suspense 経由)。fetch: 辞書はランタイムで CMS/サーバー から取得され、同期されます。
移行:
テーブルをモーダルで開き、すべてのデータを明確に表示
| v7 設定 | v8 設定 |
|---|---|
live: true | importMode: 'fetch' |
live: false | importMode: 'static'(または 'dynamic') |
注: Intlayer v8 では、importMode プロパティは intlayer.config.ts の build 設定から dictionary 設定へ移動しました。これにより、すべての辞書に対するデフォルトのインポートモードを定義しつつ、各辞書ごとに上書きできるようになります。
グローバル設定 of 例:
コードをクリップボードにコピー
辞書の例:
コードをクリップボードにコピー
辞書の配置制御
v8 では、辞書がどこに存在し、どのように同期されるかを明示的に管理するために location プロパティが導入されました。これはローカルファイルとリモート CMS のコンテンツを組み合わせたハイブリッドなワークフローで特に有用です。
オプション
local: 辞書はローカルにのみ存在します。リモート CMS へはプッシュされません。remote: 辞書はリモートで管理されます。一度 CMS にプッシュされるとローカルのものと切り離されます。リモートの辞書は CMS からプルされます。local_and_remote: 辞書は両方に存在します。ローカルの変更はプッシュされ、リモートの変更はプルされ(同期されます)。
例:
コードをクリップボードにコピー
システム構成の分離
Intlayer v8 では、コンテンツソースの設定を内部システムおよび出力パスの設定から分離します。これにより content プロパティが整理され、ユーザーが管理する設定と Intlayer システムが管理する設定がどれかが明確になります。
次のプロパティは content から intlayer.config.ts の新しい system プロパティに移動されました:
dictionariesDirmoduleAugmentationDirunmergedDictionariesDirtypesDirmainDirconfigDircacheDiroutputFilesPatternWithPath
v7 の動作:
コードをクリップボードにコピー
v8 の動作:
コードをクリップボードにコピー
コンテンツとコードディレクトリの分離
Intlayer v8 は、コンテンツ定義ファイルの設定とコード変換の設定を分離します。これにより、監視とスキャンの対象をより正確に指定でき、ビルドパフォーマンスが向上します。
以前は、.content.* ファイルの監視と useIntlayer 呼び出しのためのコードスキャンの両方に contentDir が使われていました。現在は以下のように分かれています:
contentDir: コンテンツ宣言ファイル専用です。codeDir: 変換が必要なアプリケーションコード専用です(例: トリミング、最適化)。
移行:
以前に contentDir を設定していた場合、Intlayer v8 はそれを codeDir のデフォルトとしても使用しますが、警告をログに出します。設定ファイルで codeDir を明示的に定義するべきです。
v7 の動作:
コードをクリップボードにコピー
v8 の動作:
コードをクリップボードにコピー
フレームワーク: Svelte の改善
Svelte 内の Markdown および HTML コンテンツは、文字列化(stringified)される際に自動的に HTML として解析されるようになりました。これにより Svelte の {@html} 構文と組み合わせて使うのが格段に簡単になり、コンテンツノードをそのまま渡すだけで済みます。
Angular サポート: Vite バンドラー (v8.11.0)
Angular ユーザー向けに、Intlayer は新しいカスタム esbuild プラグインを介して Vite バンドラーをネイティブにサポートするようになり、開発およびビルド時間が短縮されました。
設定の詳細については、Angular 環境のドキュメント を参照してください。
サイトマップ生成 (v8.6.0)
Intlayer は、ロケールとルーティングモードに基づいてサイトマップを自動的に生成するようになりました。これは、TanStack Router などのルーターアーキテクチャにおける SEO 最適化に特に役立ちます:
コードをクリップボードにコピー
v7 からの移行ノート
設定の変更
liveプロパティ: 辞書内のliveプロパティは削除されました。代わりにimportMode: 'fetch'を使用してください。- importMode: 設定内の
build.importModeプロパティは非推奨になりました。代わりにdictionary.importModeを使用してください。 contentDirとcodeDir:contentDirはコンテンツファイル専用になりました。コード変換用に新しくcodeDirプロパティが追加されました。codeDirが設定されていない場合、Intlayer はcontentDirにフォールバックし、警告をログに出力します。- スキーマ検証: 新しい
schema機能を使用するには、プロジェクトにzodがインストールされていることを確認してください。
