「Nuxtでプログを構築しよう!!」の最終回。スクラッチで言語切替に挑戦してみた。
「Nuxt でプログを構築しよう!!」の最終回です。言語切替には vue-i18n を利用すると思いますが、今回は自前で言語切替を実装してみたいと思います。言語情報を各コンポーネントから共有するために composables コンポーネントにもチャレンジしたいと思います。
記事の準備
英語の記事は、content/articles/en のフォルダに保存します。日本語の記事は、英語の記事と同じファイル名にして content/articles/ja のフォルダに保存します。
メニュー、メッセージの準備
英語と日本語のメニュー、メッセージを assets フォルダに json 形式で保存します。
composables コンポーネントの作成
言語情報を各コンポーネントから共有するための composables コンポーネントを作成していきます。構造はシンプルで getter,setter で ref で各変数を参照できるようにします。
各コンポーネントから参照できるように plugin に登録します。
合わせて nuxt.config.js に plugin を設定しておきます。
コンポーネントの修正
まずは Menu コンポーネントを修正していきます。i18n-like コンポーネントを import します。
言語切替に合わせてメニュー情報を読み替えるようにします。
同様に Article コンポーネントも修正していきます。
Articles コンポーネントも修正していきます。
これでヘッダーの言語を切り替えるたびに英語記事と日本語記事の切替ができるようになりました。
追記:記事を日本語と英語両方書くのが苦痛になってきたので、言語切替はこのホームページでは今は廃止しました。