LookMLモデルのローカライズ

モデルのローカライズにより、ユーザーのロケールに従ってモデルのラベルと説明を表示する方法をカスタマイズできます。

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

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

  1. ラベル、グループラベル、説明をモデルに追加して、ローカライズする要素を決定します。
  2. ロケール文字列ファイルを作成して、プロジェクトのローカライズ定義を指定します。
  3. プロジェクトのマニフェスト ファイルにローカライズ設定を追加して、プロジェクトのローカライズを有効にします。
  4. ロケールにユーザーを割り当てることで、ユーザーごとに表示内容を決定します。

多くの場合、モデルのローカライズは、数値形式のローカライズユーザー インターフェースの言語の設定を指定する管理者と連携して行われます。

モデル内のラベルと説明のローカライズ

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

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

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

LookML の次の例では、flights ビュー、idcountrynumber_of_engines の各フィールドにラベルが付けられています。country フィールドには説明もあります。

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

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

  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 ペアの左側には、ローカライズ キーがあります。これは、モデルのラベルまたは説明文字列です。キーと値のペアの右側では、そのストリングをLooker UIでどのように表示するかを定義します。

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

この en.strings.json ファイルの例は、ロケールの値が en であるすべてのユーザーに使用されます。次の LookML の例では、en もデフォルトのロケールとして指定されるため、ローカライズするには、このファイルですべての文字列を定義する必要があります。

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

次の表では、ロケールが en に設定されたユーザーが、Looker Explore のデータテーブルで確認できる内容を示します。

Flights Identifier Flights country Flights Location Flights Number of Engines
493 Congo Kisangani, Congo 3
2167 Saudi Arabia Riyadh, Saudi Arabia 3
2657 Austria Vienna, Austria 2
17992 United States Kansas City, MO 2
18893 United States Anchorage, AK 4

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

  • 前述の flights ビューのサンプル LookML では、location ディメンションにラベルがまったく指定されていないため、Looker ではディメンションの名前が大文字で始まる「Location」と表示されます。
  • en.strings.json ファイルで「country」ラベルのローカライズを定義していないため、Looker では、ビューファイルで定義されているように、そのラベルが小文字で始まる「country」と表示されます。

もう 1 つの例として、ロケール の値が es_ES であるすべてのユーザーに使用される es_ES.strings.json ファイルを作成できます。

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

次の表では、ロケールが es_ES に設定されたユーザーが Looker で確認できる内容を示します。

Vuelos Identificador Vuelos country Vuelos Location Vuelos Número de Motores
493 Congo Kisangani, Congo 3
2167 Saudi Arabia Riyadh, Saudi Arabia 3
2657 Austria Vienna, Austria 2
17992 United States Kansas City, MO 2
18893 United States Anchorage, AK 4

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

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

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

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

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

localization_settings: {
  default_locale: en
  localization_level: permissive
}

default_locale

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

デフォルトのロケールストリングファイルにより、モデル内のローカライズされるストリングが決定されます。 ラベルや説明文字列が別のロケール文字列ファイルで定義されていても、デフォルトのロケール文字列ファイルで定義されていない場合、Looker UI ではローカライズされていない文字列が表示されます。

プロジェクトのデフォルトのロケールと、Looker ユーザーのデフォルトのロケールを混同しないでください。Looker 管理者は、インスタンスにデフォルトのロケールを設定できます。デフォルトが設定されていない場合、Looker のデフォルトは en になります。管理者が、ユーザーまたはユーザーが属するユーザー グループロケール の値を明示的に入力していない場合、ユーザーを Looker のデフォルトのインスタンス ロケールに割り当てます。また、管理者がデフォルトのインスタンス ロケールを設定していない場合、ユーザーを en ロケールに割り当てます。

そのため、Looker 管理者がすべての Looker ユーザーに対してロケールの値を設定している場合を除き、プロジェクトの default_locale パラメータをインスタンス(またはen(デフォルトが設定されていない場合)など)、そのロケールの .strings.json ファイル内ですべてのラベルと説明のローカライズを定義します。

localization_level

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

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

ローカライズレベルを strict にしたい場合でも、プロジェクトのローカライズレベルを permissive に設定して、プロジェクトの開発時に検証エラーが発生しないようにすると便利かもしれません。すべてのラベルと説明のローカライズが終了したら、ローカライズ レベルを strict に設定してエラーを表示できます。

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

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

たとえば、es_ES.strings.json ファイルに定義されているラベルと説明をユーザーが確認できるようにするには、Looker 管理者がユーザーのロケール設定を es_ES に設定する必要があります。

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

署名付き埋め込みユーザーに対するロケールの設定

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

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 ロケールのユーザーでは、次の結果を確認できます。

Flights Identifier Flights country Flights From the US?
289 United States Domestic
400 Canada International
493 Congo International
936 United States Domestic

es_ES ロケールのユーザーでは、次の結果を確認できます。

Vuelos Identificador Vuelos País Vuelos ¿De Los Estados Unidos?
289 United States Nacional
400 Canada Internacional
493 Congo Internacional
936 United States Nacional

ロケールが es_ES のユーザーは、「Domestic」と「International」のデータが、それぞれ「Nacional」と「Internacional」にローカライズされることを確認できます。

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

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

en ロケールのユーザーがダッシュボードのそのタイルからデータ探索すると、Explore は Flights From the US? フィールドの値 Domestic でフィルタされ、Explore のデータテーブルに次の結果が含まれるようになります。

Flights Identifier Flights country Flights From the US?
289 United States Domestic
936 United States Domestic

es_ES ロケールのユーザーがダッシュボードのそのタイルからデータ探索すると、Explore は Vuelos ¿De Los Estados Unidos? フィールドの値 Nacional でフィルタされ、Explore のデータテーブルに次の結果が含まれるようになります。

Vuelos Identificador Vuelos País Vuelos ¿De Los Estados Unidos?
289 United States Nacional
936 United States Nacional

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

ビュー、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 できません。