LookMLモデルのローカライズ

多くの場合、モデルのローカライズは、数値形式のローカライズ、ユーザー インターフェース言語の選択と併せて行われます。これらのトピックの詳細については、数値の書式設定のローカライズサポートされているユーザー インターフェース言語のドキュメントをご覧ください。

モデルのローカライズでは、ユーザーの言語 / 地域に応じてモデルのラベルと説明の表示方法をカスタマイズできます。

ローカライズは、地理的位置や言語に基づいていなくてもかまいません。ロケールを使用して、内部ユーザーと外部ユーザー、マネージャーと個々のユーザーなどの他の識別要素を表したり、それに従ってラベルと説明をカスタマイズしたりできます。

現在、モデルのローカライズはプロジェクトのインポートに対応していません。

このページでは、プロジェクトをローカライズする手順について説明します。

Looker のユーザー インターフェースのローカライズや数値形式のローカライズについて詳しくは、サポートされるユーザー インターフェース言語数値形式のローカライズに関するドキュメント ページをご覧ください。

モデルファイルでローカライズされた要素を使用する

モデル内のラベル、グループラベル、および説明をローカライズできます。それには、以下が含まれます。

dimension_group ではローカライズはサポートされていません。代わりに、group_labelgroup_item_label を使用して、ローカライズ可能な独自のディメンション セットを作成します。

プロジェクトにローカライズされた LookML ダッシュボードを作成することもできます。以下のLookMLダッシュボードパラメーターをローカライズできます。

プロジェクト内のローカライズ可能なすべてのフィールドを表示するには、プロジェクトのローカライズ レベルstrict に設定します。この設定により、Looker IDE は、ローカライズは可能だがラベルがない LookML 要素と、ローカライズはできるがロケール文字列ファイルで定義されない LookML モデル内の文字列について、LookML 検証エラーを返します。

ラベルと説明を含むビューファイルの例を次に示します。

view: flights {
  label: "flight_info"
  sql_table_name: flightstats.accidents ;;

  dimension: id {
    label: "id"
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }

  dimension: air_carrier {
    label: "airline"
    type: string
    sql: ${TABLE}.air_carrier ;;
  }

  dimension: country {
    label: "country"
    description: "country_of_departure"
    type: string
    map_layer_name: countries
    sql: ${TABLE}.country ;;
  }

  dimension: number_of_engines {
    label: "number_of_engines"
    type: string
    sql: ${TABLE}.number_of_engines ;;
  }

  dimension: location {
    type: string
    sql: ${TABLE}.location ;;
  }

permissiveローカライズ レベルを使用して、これらの値を文字列ファイルにローカライズします。location ディメンションにはラベルがないため、ローカライズなしのディメンションの表示例がわかります。

ロケールストリングファイルの作成

ロケール文字列ファイルでは、Key-Value ペアを使用してモデルのラベルと説明をロケールごとに定義します。各 Key-Value ペアの左側には、モデルのラベルまたは説明文字列であるローカライズ キーが表示されます。キーと値のペアの右側では、そのストリングをLooker UIでどのように表示するかを定義します。

プロジェクトで使用するロケールごとに、専用の文字列ファイルを作成します。文字列は、プロジェクトごとにロケールごとに 1 つだけ作成する必要があります。デフォルトの言語 / 地域に一致する名前の文字列ファイルが必要です。たとえば、プロジェクトのマニフェスト ファイルdefault_locale: en を指定した場合、モデルに en.strings.json というファイルが必要です。各文字列は、デフォルトの言語 / 地域文字列ファイルで定義する必要があります。定義しないと、ローカライズされません。

モデルのローカライズは、地理的位置や言語に基づく必要はありません。ただし、モデルのローカライズを使用していて、Looker にネイティブにダッシュボードとビジュアリゼーションのユーザー インターフェースも使用する場合は、文字列ファイルのタイトルを Looker のサポートされている言語 / 地域と一致させる必要があります。

以下は、Locale の値が en のすべてのユーザーに対して使用されるサンプル en.strings.json ファイルです。この例では、en もデフォルトの言語 / 地域として指定されているため、ローカライズするには、このファイルですべての文字列を定義する必要があります。

{
  "flight_info": "Flights",
  "id": "Identifier",
  "airline": "Air Carrier",
  "country_of_departure": "Country of Departure",
  "number_engines": "Number of Engines"
}

Looker で en ユーザーが次のように表示されます。

次の点にご注意ください。

  • 上記のビューファイルでは、locationディメンションにラベルがまったく付けられなかったため、Looker ではディメンションの名前を大文字で表記した「&location」と表示されます。
  • en.strings.json ファイルで「country」ラベルのローカライズを定義していないため、Looker ではビューファイルで定義されているとおりにラベルが大文字にせず「&country」と表示されています。

別の例として、Locale の値が es_ES のすべてのユーザーを対象にする es_ES.strings.json ファイルを作成できます。

{
  "flight_info": "Vuelos",
  "id": "Identificador",
  "airline": "Aerolínea",
  "country": "País",
  "country_of_departure": "País de Partida",
  "number_engines": "Número de Motores"
}

Looker で es_ES ユーザーが次のように表示されます。

次の点にご注意ください。

  • 前の例と同様に、上のビューファイルでは location ディメンションにラベルがまったく指定されていないため、Looker はディメンションの名前を大文字で表記して「"Location"」と表示します。
  • en.strings.json ファイルで、デフォルトのロケール文字列ファイルである「country」ラベルのローカライズは定義しませんでした。そのため、es_ES.strings.json ファイルで「国」を定義しても、Looker はこの文字列をローカライズせず、ビューファイルで定義されているとおりにラベル「国」を表示します。

プロジェクトのマニフェスト ファイルにローカライズ設定を追加する

プロジェクトのローカライズを有効にするには、プロジェクトのマニフェスト ファイルに localization_settings パラメータを追加します。

プロジェクトにまだマニフェスト ファイルがない場合、Looker IDE でファイル ブラウザの上部にある + アイコンから作成できます。

マニフェスト ファイルで、ローカライズ設定を追加します。次に例を示します。

localization_settings: {
  default_locale: en
  localization_level: permissive
}

default_locale

default_locale パラメータは、プロジェクト内のデフォルトのロケール文字列ファイルの名前を指定します。

デフォルトのロケール文字列ファイルは、モデルからローカライズする文字列を決定します。ラベルまたは説明文字列が別のロケール文字列ファイルで定義されていても、default ロケール文字列ファイルで定義されていない場合、Looker UI にはローカライズされていない文字列が表示されます。ロケール文字列ファイルの設定について詳しくは、上記のセクションをご覧ください。

プロジェクトのデフォルト ロケールが、Looker ユーザーのデフォルトのロケールと混同されないように注意してください。Looker 管理者はインスタンスのデフォルトの言語 / 地域を設定できます。デフォルトが設定されていない場合、Looker はデフォルトで en に設定されます。ユーザーがユーザーまたはユーザーが属するユーザー グループロケールの値を特に入力しなかった場合、Looker はユーザーをデフォルトのインスタンス ロケールに割り当てます。また、管理者がデフォルトのインスタンス ロケールを設定していない場合、Looker ではユーザーが en ロケールに割り当てられます。

そのため、Looker 管理者がすべての Looker ユーザーの Locale 値を確実に設定しない限り、インスタンスの default_locale パラメータをプロジェクトのデフォルトの言語 / 地域に設定し、その言語 / 地域に対応する .strings.json ですべてのラベルと説明をローカライズする必要があります。

localization_level

プロジェクトのローカライズレベルでは、ローカライズされていない要素をモデルで許可するかどうかを指定します。

  • ローカライズ レベルを strict に設定して、プロジェクト内のすべてのモデル、Explore、ビュー、フィールドで、ローカライズされたラベルをリクエストします。Looker IDE は、ラベルがないこれらの要素、およびデフォルトのロケール文字列ファイルで定義されていないラベルと説明に対して、LookML 検証エラーを返します。
  • ローカライズ レベルを permissive に設定して、ラベルのない要素を許可し、デフォルトのローカライズ文字列ファイルで定義されていないラベルと説明を許可します。

strict のローカライズ レベルをご希望の場合であっても、プロジェクトの作成時に検証レベルのエラーを防ぐため、プロジェクトのローカライズ レベルを permissive に設定しておくと便利です。すべてのラベルと説明のローカライズを終えたら、ローカライズ レベルを strict に設定して、エラーを確認します。

ユーザーをロケールに割り当てる

ロケール文字列ファイルを設定したら、いずれかのロケール文字列ファイルに対応するロケールにユーザーを割り当てることができます。これは、インスタンスユーザー グループ、または個々のユーザーのレベルで、ロケール フィールドまたは locale ユーザー属性を使用して行うことができます。

たとえば、es_ES.strings.json ファイルに定義されているラベルと説明をユーザーが参照できるようにするには、ユーザーの Localees_ES に設定します。

[Locale] 欄でプルダウン メニューから組み込み言語 / 地域を選択するのではなく、このフィールドをクリックして文字列ファイル名を入力すると、作成したカスタム ロケールを入力できます。詳細については、ユーザーのドキュメント ページをご覧ください。

個別またはユーザー グループ レベルでユーザーのロケールを設定していない場合、Looker はユーザーをインスタンスの言語 / 地域に割り当てます。ただし、インスタンスのロケールに対して .strings ファイルが設定されていない場合、それらのユーザーのモデルのローカライズは機能しません。そのため、インスタンスのデフォルト ロケールごとに .strings ファイルを設定する必要があります。詳しくは、default_locale またはロケール文字列ファイルの作成のセクションをご覧ください。

SSO埋め込みユーザーのロケールの設定

SSO 埋め込み URL には、その他のユーザー属性と同様にユーザーのロケール値を含めることができます。SSO 埋め込みに必要な正確な形式は、SSO 埋め込み URL スクリプトの作成に使用したプログラミング言語によって異なりますが、ユーザー属性の名前は locale です。SSO 埋め込み URL と SSO 埋め込み URL の作成用ツールについて詳しくは、シングル サインオン(SSO)埋め込みのドキュメントをご覧ください。

Liquid変数でのロケールの使用

前述したように、モデルのローカライズを使用すると、さまざまなロケールに合わせてモデルのラベルと説明の表示をカスタマイズできます。Liquid 変数にローカライズ キーを含めることもできます。これにより、データ値もローカライズできます。

たとえば、en.strings.json というデフォルトのロケール文字列ファイルで、次のエントリを含むローカライズ キー domesticinternational を作成できます。

{
  "domestic": "Domestic",
  "international": "International"
}

また、es_ES.strings.json ファイルで、次のローカライズ キーのスペイン語バージョンを提供できます。

{
  "domestic": "Nacional",
  "international": "Internacional"
}

そこで、Liquid 変数の domesticinternational のローカライズ キーを使用して、ディメンションの出力をローカライズできます。

dimension: from_US {
    label: "from_us"
    type: string
    sql: CASE
         WHEN ${TABLE}.country = 'United States' THEN '{{ _localization['domestic'] }}'
         ELSE '{{ _localization['international'] }}'
         END;;
  }

en ロケールのユーザーには、次のように表示されます。

es_ES ロケールのユーザーには、次のように表示されます。

ダッシュボード フィルタとダッシュボード要素フィルタで Liquid を使用して、フィルタ内のデフォルト値をローカライズすることもできます。例えば、LookMLダッシュボードに前述のExploreからのタイルがあり、次のように定義されている対象タイルに関するフィルタがあるとします。

filters:
  flights.from_US: "{{ _localization['domestic'] }}"

en ロケールのユーザーがダッシュボードのそのタイルから探索した場合に次のように表示されます。

es_ES 言語 / 地域のユーザーがこのタイルをダッシュボード上で探索すると、次のように表示されます。

ローカライズルールが拡張オブジェクトとリファインオブジェクトに適用される方法を理解する

ローカライズ ルールは、ビュー、Explore、LookML ダッシュボードを拡張する場合や、ビューや Explore を絞り込む場合に適用されます。

オブジェクトを拡張または改良した後に新しいラベルや説明を追加した場合は、ロケール文字列ファイルでローカライズ定義を指定してください。

たとえば、flights ビューがあるとします。


view: flights {
  label: "flight_info"
  sql_table_name: flightstats.accidents ;;
  ...
}

次に、flights ビューを拡張する新しいビューを作成します。

include: "/views/flights.view"

view: flights_enhanced {
  extends: [flights]
  label: "enhanced_flight_info"
}

ロケール文字列ファイルでは、両方のビューラベル文字列("flight_info""enhanced_flight_info")を定義する必要があります。プロジェクトのローカライズ レベルstrict に設定されている場合、新しいラベルや説明が定義されるまでアップデートは commit できません。