多言語コンテンツを処理する場合、多くの場合、属性ごとに個別の行ではなく、JSON 列に翻訳を保存する方が効率的です。このアプローチでは、翻訳が 1 つの列に統合され、データの管理と取得が簡素化されます。
翻訳を保存するために JSON 列を使用できるように、翻訳モデルとテーブルを強化します。これには、テーブル スキーマの更新と、JSON データを処理するための Translatable 特性の変更が含まれます。
ステップ 1: 翻訳テーブルの移行を作成する
変換テーブルがまだ存在しない場合は、新しい移行を作成します:
ステップ 2: テーブル構造を定義する
database/migrations で生成された移行ファイルを開きます。新しいテーブルの場合は、次のように定義します:
ステップ 3: 移行を実行する
データベースに移行を適用します:
ステップ 4: 翻訳モデルを作成する
次に、ポリモーフィックな関係を処理するための変換モデルを作成します。
翻訳モデルで、ポリモーフィックな関係を定義します:
複数のモデル間で翻訳処理を再利用できるようにするために、ユーザーが選択したロケールに基づいて翻訳されたコンテンツを自動的にロードする Translateable 特性を作成します。さらに、選択したロケールで利用可能な翻訳がない場合に、デフォルトのロケールからコンテンツをロードするフォールバック メカニズムを追加します。
ステップ 1: JSON 処理を使用して翻訳可能な特性を作成する
ステップ 2: 翻訳可能な特性をモデルに適用する
翻訳サポートが必要なモデルに Translateable 特性を追加します。
翻訳を JSON オブジェクトとして追加します:
翻訳されたモデルを取得する
Post モデルを取得すると、現在のロケールに基づいて翻訳されたコンテンツが自動的に読み込まれるか、必要に応じてデフォルトのロケールに戻ります。
翻訳されたコンテンツをビューに表示する
Blade ビューでは、他のモデル属性と同様に、翻訳されたコンテンツを表示できます。
リーリー
結論
JSON 列を使用して翻訳を保存し、フォールバック メカニズムを実装することで、Laravel アプリケーションでの多言語コンテンツの管理を合理化します。このアプローチにより、翻訳が 1 つの列に統合され、データ処理が簡素化され、コードベースがより保守しやすくなります。ブログ、電子商取引サイト、またはその他の多言語アプリケーションを構築している場合でも、この方法によりスムーズで効率的なユーザー エクスペリエンスが保証されます。楽しんでください!
以上が自動ロードされた翻訳を使用して Laravel でポリモーフィックな翻訳可能モデルを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。