模型本地化通常与数字格式本地化和界面语言选择同时出现。如需详细了解这些主题,请访问本地化数字格式和支持的界面语言文档页面。
借助模型本地化功能,您可以根据用户的语言区域自定义模型的标签和说明的显示方式。
无需基于地理位置或语言进行本地化。您可以使用语言区域来表示其他差异化因素,例如内部用户和外部用户,或者经理与个人贡献者,然后相应地自定义标签和说明。
模型本地化目前与项目导入不兼容。
本页面介绍将项目本地化的步骤:
- 通过向模型添加标签、组标签和说明,确定哪些元素需要本地化。
- 通过创建语言区域字符串文件,为您的项目提供本地化定义。
- 通过向项目的清单文件添加本地化设置,为您的项目启用本地化功能。
- 通过将用户分配到语言区域来确定不同用户的显示方式。
如需详细了解如何本地化 Looker 界面或本地化数字格式,请访问支持的界面语言和本地化数字格式文档页面。
在模型文件中使用本地化元素
您可以将模型中的标签、组标签和说明本地化,包括:
- 字段、模型、探索或视图一级的
label
label
,适用于 Looker 扩展框架中的应用- 探索级别字段中的
group_label
- 字段级别的
group_item_label
- 探索级别字段中的
description
dimension_group
不支持本地化。不过,您可以使用 group_label
和 group_item_label
自行创建一组可本地化的维度。
您还可以在项目中创建本地化的 LookML 信息中心。以下 LookML 信息中心参数可以本地化:
title
description
text
(note
参数的子参数,除了type: text
元素之外,可应用于所有信息中心元素类型)comparison_label
single_value_title
如需查看项目中所有可本地化的字段,您可以将项目的本地化级别设置为 strict
。使用此设置时,对于可本地化但没有标签的任何 LookML 元素,以及 LookML 模型中可本地化但语言区域字符串文件中未定义的任何字符串,Looker IDE 都会返回 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
维度没有标签,因此我们能够展示未本地化的维度如何显示。
创建语言区域字符串文件
语言区域字符串文件使用键值对来定义每个语言区域中模型的标签和说明的显示方式。每个键值对的左侧都会显示本地化键,该键表示您的模型中的标签或说明字符串。您可以在键值对的右侧定义该字符串在 Looker 界面中的显示方式。
为项目所需的每个语言区域创建一个专用字符串文件。您应该为项目中的每个语言区域仅创建一个字符串文件。必须有一个与默认语言区域相匹配的字符串文件。例如,如果您在项目的清单文件中指定了 default_locale: en
,则模型中必须包含一个名为 en.strings.json
的文件。每个字符串都必须在默认语言区域字符串文件中定义,否则系统不会进行本地化。
模型本地化不必基于地理位置或语言。不过,如果您使用的是模型本地化,并且还想使用 Looker 的本地化信息中心和可视化界面,则必须将字符串文件的标题与 Looker 的受支持的语言区域代码相匹配。
下面是一个示例 en.strings.json
文件,可供 Locale 值为 en
的所有用户使用。在此示例中,en
还被指定为默认语言区域,因此此文件中的所有字符串都必须进行定义,才能进行本地化。
{
"flight_info": "Flights",
"id": "Identifier",
"airline": "Air Carrier",
"country_of_departure": "Country of Departure",
"number_engines": "Number of Engines"
}
en
用户在 Looker 中看到的内容如下所示:
请注意以下几点:
- 在上面的视图文件中,我们没有为
location
维度提供标签,因此 Looker 显示了维度的名称,大写形式为“Location”。 - 我们没有在
en.strings.json
文件中为“国家/地区”标签定义本地化,因此 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"
}
es_ES
用户在 Looker 中看到的内容如下所示:
请注意以下几点:
- 与上个示例一样,在上述的视图文件中,我们没有为
location
维度提供标签,因此 Looker 显示维度的名称(大写):“位置”。 - 我们没有在
en.strings.json
文件(我们默认的语言区域字符串文件)中为“国家/地区”标签定义本地化。因此,即使我们确实在es_ES.strings.json
文件中定义了“国家/地区”,但 Looker 不会本地化此字符串,而是按照其视图文件中的定义显示标签“国家/地区”。
将本地化设置添加到项目的清单文件中
要为您的项目启用本地化功能,请将 localization_settings
参数添加到项目的清单文件中。
如果您的项目还没有清单文件,您可以通过 Looker IDE 中文件浏览器顶部的 + 图标创建一个。
在清单文件中,添加本地化设置。示例如下:
localization_settings: {
default_locale: en
localization_level: permissive
}
default_locale
default_locale
参数指定项目中默认语言区域字符串文件的名称。
默认语言区域字符串文件决定了模型中的哪些字符串已本地化。即使标签或说明字符串是在其他语言区域字符串文件中定义的,如果未在默认语言区域字符串文件中定义,Looker 界面也会显示未本地化的字符串。如需详细了解如何设置语言区域字符串文件,请参阅上文。
项目的默认语言区域不要与 Looker 用户的默认语言区域混淆。您的 Looker 管理员可以为您的实例设置默认语言区域。如果未设置默认值,Looker 将默认为 en
。如果管理员没有为用户所属的用户或用户群组输入 Locale 值,Looker 会将该用户分配到默认实例语言区域。此外,如果管理员未设置默认实例语言区域,Looker 会将用户分配到 en
语言区域。
因此,除非您确定 Looker 管理员将为所有 Looker 用户设置 Locale 值,否则应将项目的 default_locale
参数设置为实例的默认语言区域(如果尚未设置,则设置为 en
),并在 .strings.json
文件中为该语言区域定义所有标签和说明的本地化。
localization_level
项目的本地化级别指定模型中是否允许使用未本地化的元素:
- 将本地化级别设置为
strict
,要求为项目中的所有模型、探索、视图和字段创建本地化标签。对于没有标签的任何元素,以及默认语言区域字符串文件中定义的任何标签和说明,Looker IDE 都会返回 LookML 验证错误。 - 将本地化级别设置为
permissive
以允许没有标签的元素,以及默认本地化字符串文件中未定义的标签和说明。
即使您的确需要 strict
本地化级别,您在开发项目时也可能需要将项目的本地化级别设为 permissive
,以防止出现验证错误。完成所有标签和说明的本地化后,您可以将本地化级别设置为 strict
以查看任何错误。
将用户分配到语言区域
设置语言区域字符串文件后,您可以将用户分配到与某个语言区域字符串文件对应的语言区域。您可以使用语言区域字段或 locale
用户属性,在实例、用户群组或个人用户级别执行此操作。
例如,如果您希望用户查看 es_ES.strings.json
文件中定义的标签和说明,您的 Looker 管理员应将用户的语言区域设置为 es_ES
:
您可以在语言区域字段中输入使用字符串文件创建的自定义语言区域,只需点击该字段,然后输入字符串文件名即可,而无需从下拉菜单中选择内置语言区域。如需了解详情,请参阅用户文档页面。
如果未为个人或用户群组设置语言区域,Looker 会将用户分配到实例语言区域。但是,如果没有为实例语言区域设置
.strings
文件,这些用户将不能使用模型本地化。因此,应为每个实例的默认语言区域设置一个.strings
文件。如需了解详情,请参阅default_locale
或创建语言区域字符串文件部分。
为 SSO 嵌入用户设置语言区域
您可以在 SSO 嵌入网址中添加用户的语言区域值,就像添加任何其他用户属性一样。SSO 嵌入所需的确切格式取决于用于构建 SSO 嵌入网址脚本的编程语言,但用户属性的名称为 locale
。要详细了解 SSO 嵌入网址和用于构建 SSO 嵌入网址的工具,请参阅单点登录 (SSO) 嵌入文档页面。
在 Liquid 变量中使用语言区域
如上所述,模型本地化可让您自定义针对不同语言区域的模型标签和说明的显示。但您也可以将本地化键添加到液体变量中,这样就可以对数据值进行本地化。
例如,在名为 en.strings.json
的默认语言区域字符串文件中,我们可以使用以下条目创建本地化键 domestic
和 international
:
{
"domestic": "Domestic",
"international": "International"
}
然后,在 es_ES.strings.json
文件中,我们可以提供以下本地化密钥的西班牙语版本:
{
"domestic": "Nacional",
"international": "Internacional"
}
然后,我们可以使用 Liquid 变量中的 domestic
和 international
本地化键来本地化维度的输出:
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
语言区域的用户会看到以下内容:
您还可以在信息中心和信息中心元素过滤条件中使用“液体”来本地化过滤条件中的默认值。例如,如果 LookML 信息中心有一个来自上述“探索”的图块,并且该图块上有一个过滤器,其定义如下:
filters:
flights.from_US: "{{ _localization['domestic'] }}"
使用 en
语言区域的用户在信息中心内通过该图块探索时会看到以下内容:
使用 es_ES
语言区域的用户在信息中心内通过这个图块探索时会看到以下内容:
了解本地化规则如何应用于扩展对象和优化对象
请注意,当您扩展视图、“探索”或 LookML 信息中心,以及优化视图或“探索”时,系统会应用本地化规则。
如果您在扩展或优化对象后添加了新的标签或说明,则应在语言区域字符串文件中提供本地化定义。
例如,如果我们有一个 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
,那么只有在定义新标签或说明后,我们才能提交任何更新。