自動ロードされた翻訳を使用して Laravel でポリモーフィックな翻訳可能モデルを構築する

WBOY
リリース: 2024-08-11 18:35:32
オリジナル
575 人が閲覧しました

Building a Polymorphic Translatable Model in Laravel with Autoloaded Translations

多言語コンテンツを処理する場合、多くの場合、属性ごとに個別の行ではなく、JSON 列に翻訳を保存する方が効率的です。このアプローチでは、翻訳が 1 つの列に統合され、データの管理と取得が簡素化されます。

翻訳システムのセットアップ

翻訳を保存するために JSON 列を使用できるように、翻訳モデルとテーブルを強化します。これには、テーブル スキーマの更新と、JSON データを処理するための Translatable 特性の変更が含まれます。

ステップ 1: 翻訳テーブルの移行を作成する

変換テーブルがまだ存在しない場合は、新しい移行を作成します:

リーリー

ステップ 2: テーブル構造を定義する

database/migrations で生成された移行ファイルを開きます。新しいテーブルの場合は、次のように定義します:

リーリー

ステップ 3: 移行を実行する
データベースに移行を適用します:

リーリー

ステップ 4: 翻訳モデルを作成する

次に、ポリモーフィックな関係を処理するための変換モデルを作成します。

リーリー

翻訳モデルで、ポリモーフィックな関係を定義します:

リーリー

JSON ストレージを使用した翻訳可能な特性の実装

複数のモデル間で翻訳処理を再利用できるようにするために、ユーザーが選択したロケールに基づいて翻訳されたコンテンツを自動的にロードする Translateable 特性を作成します。さらに、選択したロケールで利用可能な翻訳がない場合に、デフォルトのロケールからコンテンツをロードするフォールバック メカニズムを追加します。

ステップ 1: JSON 処理を使用して翻訳可能な特性を作成する

リーリー

ステップ 2: 翻訳可能な特性をモデルに適用する
翻訳サポートが必要なモデルに Translateable 特性を追加します。

リーリー

例: 翻訳されたモデルの作成

翻訳を JSON オブジェクトとして追加します:

リーリー

翻訳されたモデルを取得する

Post モデルを取得すると、現在のロケールに基づいて翻訳されたコンテンツが自動的に読み込まれるか、必要に応じてデフォルトのロケールに戻ります。

リーリー

翻訳されたコンテンツをビューに表示する

Blade ビューでは、他のモデル属性と同様に、翻訳されたコンテンツを表示できます。
リーリー

結論

JSON 列を使用して翻訳を保存し、フォールバック メカニズムを実装することで、Laravel アプリケーションでの多言語コンテンツの管理を合理化します。このアプローチにより、翻訳が 1 つの列に統合され、データ処理が簡素化され、コードベースがより保守しやすくなります。ブログ、電子商取引サイト、またはその他の多言語アプリケーションを構築している場合でも、この方法によりスムーズで効率的なユーザー エクスペリエンスが保証されます。

楽しんでください!

以上が自動ロードされた翻訳を使用して Laravel でポリモーフィックな翻訳可能モデルを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!