步骤 2 - 为其他语言环境创建语言环境包¶
语言环境包是一个 kzb 文件,其中仅包含特定语言环境的资源。使用 Kanzi Engine API,您可以在设置特定语言环境时加载该语言环境使用的应用程序资源。这样可以减小应用程序中 kzb 文件的大小。
在本教程的此步骤中,您首先准备 Kanzi Studio 项目以加载其他语言环境,然后为 Japanese、Chinese 和 Korean 语言环境创建样式和语言环境包。
准备 Kanzi Studio 项目以加载其他语言环境。¶
在本节中,您将修改在教程第一步中创建的 Kanzi Studio 项目:
导入包含其他地区资源的 PO 文件。
您准备项目,以便 LocaleSelector 节点中的 LocaleButton 预设的实例使用自定义属性来控制应用程序的区域设置。
要准备用于加载其他地区的工程:
在 Library > Localization 中,右键单击 Localization Table (Main) 本地化表并选择 Import Localization Table Manually。转到
<KanziWorkspace>/Tutorials/Localization/Assets/Text目录并导入包含 Japanese、Korean 和 Chinese 语言环境文本字符串的ja-JP.po、ko-KR.po和zh-ZH.po文件。Kanzi Studio 创建 PO 文件中指定的语言环境,并将这些 PO 文件中的翻译添加到本地化表中。
创建一个自定义属性类型,您可以使用它来控制应用程序的区域设置:
在 Library 中,按 Alt 并右键单击 Property Types 并选择 Property Type。
在 New Property Type 窗口中,设置:
Name 到 Localization.LocaleID
Category 到 LocaleButton
Data Type 到 Text
Editor 到 Locale selector
单击 Save。
您使用自定义属性类型通过 LocaleSelector 节点中的按钮设置语言环境。
在 Prefabs 中,选择 LocaleButton 预设。在 Properties 中,添加 Localization.LocaleID 属性。
在 Prefabs 中,选择 LocaleButton 预设。在 Toggle Button: Toggled On 触发器中的 Node Components 中,按 Alt 并右键单击 Actions,选择 Set Property 操作,并设置:
Target Item 到 Screen
Target Property 到 Locale
Value From 到 Property
Source Item 到 <Relative> 和 .
通过这种方式,您可以从用于设置语言环境的预设实例中获取 Screen 节点 Locale 属性的值。
Source Property 到 Localization.LocaleID
通过此 Set Property 操作,您可以设置应用程序在用户切换 LocaleButton 预设实例时切换语言环境。该操作从预设实例的 Localization.LocaleID 属性中获取语言环境的值。
在第一个 LocaleButton 预设实例的 LocaleSelector 节点中的 Node Tree:
在 Properties 中,添加 Localization.LocaleID 属性,并将其设置为您希望通过此按钮设置的区域设置。
例如,要设置为默认区域设置,在这种情况下为 English,请选择 Invariant Language (Invariant Country) () 值。
在 Node Components 中,选择 Toggle Button: Toggled On 触发器并按下 Delete 键。
您将替换在每个预设实例中定义触发器切换到的区域设置的触发器,替换为在 LocaleButton 预设中定义的触发器。新触发器从每个预设实例的 Localization.LocaleID 属性中获取区域设置的值。
对 LocaleSelector 节点中的每个 LocaleButton 实例重复上一步骤:
对于设置 Finnish 语言环境的 LocaleButton 预设实例,将 Localization.LocaleID 属性设置为 Finnish (Finland) (fi-FI)。
对于设置 Spanish 语言环境的 LocaleButton 预设实例,将 Localization.LocaleID 属性设置为 Spanish (Spain) (es-ES)。
在 Node Tree 中,按 Alt 并右键单击 LocaleSelector 节点,并选择 Alias。
Kanzi Studio 在 Screen 节点的资源字典中创建到 LocaleSelector 节点的别名。
您使用此别名通过 Kanzi Engine API 访问 LocaleSelector 节点,并向节点添加按钮以从语言环境包中加载语言环境。您将在此步骤的下一部分准备语言环境包。
为其他地区创建样式¶
在本节中,您将为使用包含 Japanese、Chinese 和 Korean 字形的字体的其他语言环境创建样式。
要为其他地区创建样式:
在 Kanzi Studio 主菜单中,选择 File > Import > Import Fonts。在 Import Fonts 对话框中,点击 Browse,选择
<KanziWorkspace>/Tutorials/Localization/Assets/Fonts文件夹,并导入包含 Japanese、Korean 和 Chinese 字形的字体:对于 Japanese,使用 Noto Sans CJK JP。
对于 Korean,使用 Noto Sans CJK KR。
对于 Chinese,使用 Noto Sans CJK SC。
确保您使用的字体提供应用程序中文本所需的字形。使用 FreeType 字体引擎时,您可以为不同的 Unicode 书写系统配置后备 Font Families。请参阅 使用字体后备。
创建设置每个地区的字体的样式:
在 Localization Editor 中,点击 + Add Resource,选择 Create > Named Style,并将其命名为 LocaleStyle。
在 Library > Styles 中,右键单击 LocaleStyle,选择 Duplicate,并根据使用它的区域命名样式。
例如,将样式命名为:
对于 Japanese 区域设置 LocaleStyle-jp
对于 Korean 区域设置 LocaleStyle-kr
对于 Chinese 区域设置 LocaleStyle-zh
在 Library 中,选择一个样式,并在 Properties 中,添加并设置 Font Family 属性为包含该区域设置样式所用字形的字体。
例如:
对于 English、Finnish 和 Spanish 区域设置样式 LocaleStyle,将 Font Family 属性设置为 Noto Sans。
对于 Japanese 区域设置样式 LocaleStyle-jp,将 Font Family 属性设置为 Noto Sans CJK JP。
对于 Korean 区域设置样式 LocaleStyle-kr,将 Font Family 属性设置为 Noto Sans CJK KR。
对于 Chinese 区域设置样式 LocaleStyle-zh,将 Font Family 属性设置为 Noto Sans CJK SC。
在您要应用所创建样式的每个区域设置的 Localization Table 列中,双击 LocaleStyle 单元格并选择要应用于该区域设置的样式。
例如,对于 Japanese 区域设置,选择 LocaleStyle-jp。Finnish 和 Spanish 区域设置使用 LocaleStyle,该区域设置使用默认字体。
在 Node Tree 中,选择 RootPage 节点。在 Properties 中,移除 Font Family 属性,添加 Style 属性,并将其设置为 <ResourceID>,将资源 ID 设置为 LocaleStyle。
您将 RootPage 中的 Font Family 属性设置替换为来自当前选择的语言环境的本地化表的资源。
在 LocaleSelector 节点中的 Node Tree 中,选择 LocaleButton 预设的所有实例。在 Properties 中,添加 Style 属性并将其设置为 LocaleStyle 样式。
通过这种方式,您可以为 English、Finnish 和 Spanish 区域设置的区域名称设置字体系列。
创建地区包¶
地区包是只包含特定地区的资源的 kzb 文件。
在本节中,您将为项目添加 Japanese、Korean 和 Chinese 语言环境的本地化资源,并创建语言环境包。在下一节中,您将使用 Kanzi Engine API 加载语言环境包。
在 <KanziWorkspace>/Tutorials/Localization/Assets/Text 目录中,您可以找到包含在本教程中用于 Kanzi Studio 项目的所有文本字符串的 PO 文件,这些文件已本地化为 Japanese、Korean 和 Chinese。
要创建一个地区包:
创建用于在 LocaleButton 节点中显示语言环境名称的文本资源:
在 Library > Localization 中,双击 Localization Table (Main) 本地化表以在 Localization Editor 中打开它。
单击 + Add Resource,选择 Create > Text,并将新的文本资源命名为 LocaleDisplayName。
在下一步中,您使用 Kanzi Engine API 设置此文本资源,以显示您用于加载该语言环境的 LocaleButton 中的语言环境名称。
在从语言环境包加载资源的每个语言环境的列中,单击 LocaleDisplayName 单元格,并输入您希望在每个语言环境的 LocaleButton 中显示的文本。
由于您要让地区的用户找到其地区,所以使用每个地区的本名。例如:
对于 Japanese,输入 日本語。
对于 Korean,输入 한국어。
对于 Chinese,输入 中文。
在 Localization Table 中,设置您要用于 Japanese、Korean 和 Chinese 区域设置的图像。
例如:
对于 Japanese 区域设置,使用 Image04。
对于 Korean 区域设置,使用 Image05。
对于 Chinese 区域设置,使用 Image06。
在 Localization Table 中,单击 Japanese、Chinese 和 Korean 区域设置的区域名称旁边的
。这样您可以标记要为其创建地区包 kzb 文件的地区,文件仅包含该地区使用的资源。Kanzi Studio 不会将本地化表中标记为地区包的地区的资源导出到主 kzb 文件中。
在 Kanzi Studio 中,选择 File > Export > Export KZB。此命令:
为您在本地化表中标记为语言环境包的每个语言环境创建一个 kzb 文件。当 Kanzi Studio 导出语言环境包时,它会根据所包含资源的语言环境命名 kzb 文件。每个语言环境包文件仅包含该语言环境使用的资源。
创建包含整个 Kanzi Studio 项目的主 kzb 文件,但不包括您在本地化表中标记为语言环境包的语言环境资源。
将语言环境包 kzb 文件存储在
<ProjectName>/Application/bin/Locale_packs目录中,或存储在您在 Project > Properties 中指定位置的Locale_packs目录中,在 Binary Export Directory 属性中。