Drupalで多言語機能を利用して、複数言語に対応したサイトを構築する方法


Drupalを利用するメリットの1つとして「多言語対応」がよく挙げられます。
過去に記事にした「Drupalとは何か。その特徴と魅力を1記事でまとめて解説します」でも、Drupalを選ぶメリットとして「グローバルにビジネス展開するのに必須な多言語対応」が備わっている点をあげました。
大企業や国際機関など、日本以外のユーザーにもサイトを閲覧してほしい場合は、多言語化が必須です。
Drupalは90ヶ国以上の言語に対応していて、なおかつ世界中でグローバル展開をしている大企業や国際機関・教育機関でも実際に利用されています。
対応している言語の数や実績から見ても、安心して使える機能になっています。
今回はDrupalの標準機能を使って、具体的にどのように多言語対応するのかまとめます。
Drupalの多言語対応がどこまでできるのか、実際にどのような手順で対応するのか気になる方はぜひご覧ください。
Drupalの多言語対応
多言語対応といっても考えられる方法はいくつかあります。
「思っていた機能と違った」とならないためにも、まずはDrupalの多言語対応がどのようなものなのか軽く見ていきましょう。
Drupalの多言語対応は、言語ごとにコンテンツを用意して行う
Drupalの多言語対応は「日本語ではこのコンテンツを表示する」「英語ではこのコンテンツを表示する」という風に、言語ごとにコンテンツや文字列を設定します。
そして条件に合わせて、サイト閲覧者に適切な言語を表示させます。
コンテンツの場合は、自由にコンテンツを用意できます。
ただ翻訳するだけではなくて「ローカライゼーション(言語に合わせてコンテンツの内容を変える)」ことも可能ですし、言語に合わせて画像を変えたりもできます。
機械的に翻訳するのではなく、翻訳したコンテンツを管理者が作成する
「翻訳」と聞くと、日本語を入力すると自動で英語や中国語などのコンテンツが生成されると想像する方もいるかもしれません。 しかし、Drupalの多言語対応はあくまで翻訳したコンテンツを管理者が自ら作成するものになっています。
言語の判定は選択可能
サイト閲覧者の言語判定に関しては、設定画面から選択して設定します。
細かい設定方法は後で説明しますが、URLに応じて言語を変更する方法やブラウザの言語設定に従って言語を変更する方法など、多言語対応で思いつく言語の判定方法はだいたい用意されています。
多言語対応に必要なモジュールの有効化
実際に多言語対応をするときは、公式が用意している「Interface Translation」と「Configuration Translation」「Content Translation」という3つのコアモジュールを使用します。
これら3つのモジュールは、それぞれ下記の通りできることが少しずつ違います。
モジュール | できること |
---|---|
Interface Translation | Drupalやコアモジュール、テーマに組み込まれているテキストを翻訳する |
Configuration Translation (Config Translation) |
設定画面で入力した内容を翻訳できるようにする |
Content translation | ノードなどのエンティティに入力された内容(記事本文やタイトル)を翻訳できるようにする |
3つともDrupalインストール時に一緒に入っていて、「Interface Translation」に関してはデフォルトで有効化されています。
残りの2つがデフォルトでは無効になっているので、多言語対応したい場合は有効にしましょう。
Drushで有効化する場合
#「Configuration Translation」モジュールの有効化
drush en config_translation
#「Content Translation」モジュールの有効化
drush en content_translation
Drushのインストール方法は過去に記事にしているので、気になる方はそちらもご覧ください。
ただ、今回はモジュールの有効化のみなので、Drushがなくても 管理画面から有効化すればOKです。
参考:ターミナルからDrupalを操作する「Drush」コマンドのインストール方法や基本的な使い方
管理画面から有効化する場合
管理画面から有効化する場合は、管理画面の[機能拡張]をクリックして、モジュール一覧の中から2つを探します。
チェックを入れてページ最下部の「インストール」をクリックすれば完了です。
多言語対応のための初期設定
サイトで使用する言語の追加
モジュールは有効化できたので、次は実際にサイトで使用する言語を追加します。
管理画面の[環境設定]→[言語]をクリックして言語設定画面に移動します。
ここではインストールされている言語が一覧で表示されます。 デフォルトでは日本語(インストール時に選択したデフォルト言語)のみが一覧に表示されていて、「言語を追加」ボタンから言語を追加できます。
追加すると、言語一覧に選択した言語が表示されます。
インターフェーステキスト言語の判定
言語画面で[判定と選択]タブをクリックすると、サイトに訪れたユーザーの言語をどのように判定するのか設定する画面が表示されます。
使用したい「検出方法」にチェックを入れて保存すれば、その条件で検出されるようになります。
- URLに応じて変更する(「/」なら日本語、「/en」なら英語のような形)
- リクエストやセッションパラメータから自動で判断する
- ユーザーの優先言語に従う
- ブラウザの言語設定に従う
- ユーザーが選択して、選択した言語に従う
また、「設定」ボタンがある項目に関してはそこからさらに細かい設定画面に移動できます。 例えば「URL」の「設定」ボタンを押した場合は、言語判定用のURLの指定ができます。
あとは追加された言語に対して、各モジュールの設定をしたり、翻訳対応をします。
「Interface Translation」でモジュールやテーマのテキストを翻訳する
「Interface Translation」モジュールを使うと、Drupal本体やモジュール・テーマなどに組み込まれているテキストを翻訳できます。
管理画面のバーなど、ログインしないと表示されない部分も対象になっています。
設定方法は、管理画面の[環境設定]→[ユーザーインターフェイスの翻訳]を選択して翻訳画面を開きます。
1番左に元の文字列が表示されるので、右側に翻訳を書いていきます。
これだけで、言語が切り替わったときに自動で文字列が置き換わるようになります。
ちなみにこの翻訳設定は、[インポート]や[エクスポート]タブでそれぞれインポート・エクスポートができます。
「Configuration Translation」で管理画面で入力した文字列の翻訳をする
「Configuration Translation」を使うと、たとえば「コンテンツタイプ」の名前や説明などの管理画面で設定した文字列を翻訳できます。
例えばコンテンツタイプの場合は、一覧画面から「フィールドの管理」の右側にある矢印をクリックして表示されるメニュー内に「翻訳」が追加されています。
これをクリックすると、コンテンツタイプの翻訳画面が表示されます。
あとは翻訳したい言語の「編集」ボタンをクリックして、翻訳文を入力して「翻訳を保存」をクリックすれば設定完了です。
「Content Translation」で多言語対応のコンテンツを作成する
実際にサイトを運営していくと、どんどんコンテンツの更新をしていきますが、多言語サイトでは1つのお知らせを追加したいときに「日本語」「英語」「中国語」など必要な言語分のコンテンツを用意して、閲覧しているユーザーの言語に合わせて適切なお知らせを表示させる必要があります。
「Content Translation」を使えば、そのような言語ごとのコンテンツ管理ができます。
ちなみに、とりあえず急ぎで日本語(デフォルト言語)だけ追加しておいて、あとから翻訳を追加するといった運用も可能です。
その場合、翻訳が追加されるまでの間はどの言語のユーザーにも日本語(デフォルト言語)の文章が表示されてしまうので注意が必要ですが、実際に運用していると急ぎで公開しないといけない状況もあります。
すべての翻訳文を絶対に用意しないと公開できないわけではないとだけ覚えておきましょう。
デフォルト言語でコンテンツを作成する
まずはデフォルト言語でコンテンツを作成します。
ほとんどの場合は日本語がデフォルトになっているはずなので、日本語でコンテンツを作成します。
コンテンツを翻訳する
コンテンツの一覧ページの「編集」右にある矢印を押すと表示されるメニューの中に[翻訳]があるので、それをクリックします。
翻訳の画面に移動すると、デフォルト言語以外の翻訳ステータスが「利用不可」になっています。
一番右の「追加」ボタンを押せば、その言語のコンテンツ編集画面が表示されます。
あとはその言語のコンテンツを入力します。
これで保存すれば翻訳完了で、設定した「インターフェーステキスト言語の判定」に合わせて、翻訳された言語のコンテンツが表示されます。
ただし、対象言語を翻訳していなくて「利用不可」の状態になっている場合はデフォルト言語のコンテンツが表示されます。
翻訳ボタンが表示されない場合は
もし「翻訳」ボタンが表示されない場合は、管理画面の[環境設定]→[コンテンツの言語と翻訳]を確認します。
ここでコンテンツのどの部分を言語ごとに別で用意できるようにするか設定できます。
「コンテンツ」にチェックが入っているか確認して、入っていなければチェックを入れて保存しましょう。
これでコンテンツに「翻訳」ボタンが表示されているはずです。
まとめ
CMSに標準で備わっている機能で、ここまでの多言語対応が可能です。
特にコンテンツの多言語化に関しては、最初に設定したら終わりではなく、多言語対応のサイトを運用している間はずっと付きまとってくる問題です。
そのため、「管理のしやすさ」「手間のかからなさ」「操作の分かりやすさ」などが非常に重要になってきます。
他のCMSでも多言語対応は可能ですが、たとえばWordPressの場合は2022年8月現在だとサードパーティ製のプラグインを使用する必要があります(今後のアップデートで公式で実装予定)。
サードパーティ製のプラグインだと、やはり使い勝手がCMS本体と微妙に違っていたり、WordPress本体のアップデートに追いついていなくて、本体のアップデートができない事態になる可能性があります。
やはり公式がサポートしていて、長年の実績があるのは安心感があります。
多言語対応のサイトを作成したい場合は、ぜひDrupalを検討してみてはいかがでしょうか。

モチヤスタッフ
Drupalなど技術に関する投稿をモチヤのスタッフが行っています。
最新の関連記事
-
Drupal Drupalで本番環境とステージング環境の管理や切り替えが簡単にできる「Workspaces」の使い方
モチヤスタッフ
- Drupal11
- 拡張機能
- 新機能
-
Drupal Drupalのレシピ機能(Recipes)でサイトの設定や機能を追加する方法
モチヤスタッフ
- Composer
- Drupal11
- ワークフロー
- Lando
-
Drupal Drupal 11で追加された新機能まとめ
モチヤスタッフ
- Drupal11
- 拡張機能
- 新機能
- Drupal Tips
-
Drupal Drupalのフォームをリッチに!select2を使ってみた
苅田 ハユセ
- CMS
- web制作
- サイトビルディング