
Contentfulの 「Locale」(多言語設定)機能を解説します。
Contentfulを使用したサービスのグローバル展開において欠かせない「Locale(ロケール)」機能。
この記事では、Localeの基本概念から設定・変更方法までを解説します。
Localeとは?
Contentfulを使ってグローバル向けのWebサイトやアプリケーションを構築する場合、 複数の言語や地域に対応したコンテンツ管理 が必要になります。そんなときに使えるのが「Locale(ロケール)」機能です。
Localeの基本概念と役割
Contentfulにおける「Locale」とは、複数の言語や地域向けにコンテンツをローカライズするための仕組みです。簡単に言えば、同じコンテンツを異なる言語や地域向けに管理できる ようにする機能と考えることができます。
例えば、日本向けと英語圏向けのWebサイトを運営する場合、同じ製品情報や記事を日本語と英語の両方で提供したいケースがあります。Localeを使えば、コンテンツの構造(コンテンツモデル)はそのままに、言語ごとに異なるテキストや画像を管理できる ようになります。
ContentfulにおけるLocaleの位置づけ
Contentfulでは、Localeは「環境(Environment)レベルのエンティティ」として扱われます。つまり、各Environmentごとに独自のLocaleセットを持つことができます。これにより、開発環境と本番環境で異なるLocale設定を試すことも可能です。
各Spaceには必ず1つ以上のLocaleが存在し、スペース作成時には自動的にデフォルトLocaleが設定されます(en-US
)。このデフォルトLocaleは、Contentfulダッシュボード上でデフォルト表示されるほか、特定のAPIで「Localeを指定しないクエリ」を実行した際にも使用されます。
Localeの設定は、適切な権限を持つユーザーが、ContentfulダッシュボードまたはContent Management API(CMA=書き込み権限の管理API)を通じて行うことができます。
ISOコードとLocaleの関係
ContentfulのLocaleは、国際標準化機構(ISO)が定めた言語コードを使用して識別されます。
例えば...
en-US
:アメリカ英語ja-JP
:日本語(日本)de-DE
:ドイツ語(ドイツ)fr-FR
:フランス語(フランス)
これらのコードは通常、「言語コード-国コード」の形式で表されます。言語コードは ISO 639-1、国コードは ISO 3166-1 に基づいています。
Contentfulでは、これらの標準的なISOコードを使用することで、異なるシステムやプラットフォーム間での互換性を確保しています。また、Content Management APIを使用すれば、標準のISOコード以外にカスタムLocaleコードを作成することも可能です。
デフォルトLocaleの意味と働き
Spaceを作成すると、自動的に1つのデフォルトLocaleが設定されます。このデフォルトLocaleは下記のような特性を持ちます:
-
基準となるコンテンツ:多くの場合、デフォルトLocaleのコンテンツが他の言語に翻訳される元となります。
-
フォールバックの基点:他のLocaleでコンテンツが未入力の場合、デフォルトLocaleの内容が表示されることがあります(フォールバック設定による)。
-
必須入力バリデーションの対象:通常、デフォルトLocaleのフィールドは必須入力とし、他のLocaleはオプションとする運用が一般的です。
デフォルトLocaleは後から変更することも可能ですが、他のLocaleがフォールバックとして参照している場合は変更できないなどの制限があります。
Locale設定変更のあれこれ
既存Localeの編集
既存のLocale設定を変更したい場合は、以下の手順で行います。
管理画面からの編集手順
- Contentfulダッシュボードにログイン
- 画面上部の「Settings」をクリックし、ドロップダウンメニューから「Locales」を選択。「Locales」ページが表示される。
- 編集したいLocaleを選択。
- 必要なフィールドやLocaleオプションを編集。
- 変更を適用するには「Save」ボタンをクリック。
編集可能な項目と制限
Localeの編集では、以下の項目を変更することができます:
- フォールバックLocale:このLocaleのフィールドが空の場合に表示される代替ロケールを設定できます。
- Locale設定:
- Enable this locale in response:Content Delivery APIとContent Preview APIのレスポンスにこのLocaleを含めるかどうか
- Enable editing for this locale:エディタでこのLocaleを表示し、Content Management APIで有効にするかどうか
- Allow required fields to be empty for this locale:必須フィールドでもこのLocaleでは空値を許可するかどうか(Localeベースの公開では利用不可)
ただし、編集には以下のような制限があります:
- 他のLocaleがフォールバックとして参照しているLocaleのコードや名前は変更できません。
- デフォルトLocaleに対する特定の制限があります(後述)。
デフォルトLocaleの変更
デフォルトになっているLocaleを選択し、言語を変更することで可能です。
注意点
デフォルトLocaleのコードと名前は、他Localeがそれをフォールバックとして指定していない場合に限り編集することができます。つまり、他Localeのフォールバック設定を先に変更してから、デフォルトLocaleを編集する必要があります。
また、エントリーレベルのローカライゼーションを使用している場合は、言語コード(例:en-US
)ではなく「Default (default)」などのカスタムLocale名に変更することが推奨されています。これにより、特定の言語に依存しないコンテンツ管理が可能になります。
Locale削除の条件と制限
不要になったロケールを削除することも可能ですが、注意すべき点として デフォルトLocaleは削除できません。 デフォルトLocaleを削除したい場合は、先に別のLocaleをデフォルトに設定する必要があります。
また、削除するLocaleに関連付けられたコンテンツは完全に失われるため、削除前にコンテンツのバックアップや移行を検討してください。
よくある質問
複数Localeのうち1つのみのバリデーションは可能ですか?
例えばen, ja, krの3つのLocaleが有効化されたフィールドがあったとして、「どれか1つのLocaleが入力されていれば、バリデーションを通過させる」といった設定はできません。
デフォルトLocaleのみを許可するか、デフォルト以外のLocaleで個別に、「空欄を許容する」設定のみが可能です。
日本語Localeをデフォルトにすべきですか?
ケースバイケースです。例えばSpace間の記事移行の際は、初期設定(en-US)が自動的に選ばれ、それ以外は手動で両Space間のLocaleを合わせる必要があったりと、日本語の場合でもen-USを維持するほうが便利なケースがあります。
Localeを増やすと、エントリー数にカウントされますか?
カウントされません。複数Localeが有効化されていても、1エントリーは1つとしてカウントされます。
まとめ
ContentfulのLocale機能は、グローバルなコンテンツ戦略を実現するための強力なツールです。うまく活用することで、多言語サイトの展開や他国拠点との連携をスムーズに進めることができます。
Localeの利用に関してご不明点がある方は、ぜひクラスメソッドにお問い合わせください。