Data Standard 附带的对话框和选项卡自动支持十二种不同的语言。
这些语言的文本字符串在 XML 文件中定义。这些文件位于以下位置:
C:\ProgramData\Autodesk\<Vault 版本>\Extensions\DataStandard\<本地化文件夹>
其中 <语言代码> 是语言的文件夹名称(例如 en-US、de-DE、it-IT)。
这些文件可以扩展以支持自定义 Data Standard 对话框中的不同语言。
Vault Client
默认情况下,用于 Data Standard 用户界面字符串和特性转换的语言与安装的 Vault Client 相同。但是,可以通过修改位于以下位置的 DSLanguages.xml 文件替代该语言:
C:\ProgramData\Autodesk\<Vault 版本>\Extensions\DataStandard\Vault。
正确设置 DSLanguages.xml:手动将数据库语言更改为服务器语言(例如 en-US)。将语言代码 ID=UI 留空:此操作可使 Vault 客户端基于活动语言包从源读取特性标签、消息和标题(例如,从 de-DE\UIString.xml 读取值)。
<Language_Code ID="DB">en-US</Language_Code> <Language_Code ID="UI"></Language_Code>
更改类别值 - UIStrings.xml:当客户端语言与服务器语言不同时,系统不会显示类别组合框 VDS 对话框中的类别名称。因此,我们建议将 UIStrings.xml 中的类别名称更改为采用 Vault 服务器语言的类别名称。请参见下图:
CAD
对于 Inventor 和 AutoCAD,系统将自动确定语言,因此无法进行设置。Data Standard 会尝试使用 CAD 应用程序所使用的相同语言。如果 CAD 应用程序使用 Data Standard 不支持的语言,则会回退到英文版本。
Vault 数据库语言与 CAD 应用程序不相关,因为 Data Standard 使用映射的特性(Inventor iProperty、AutoCAD DWG 特性和块属性)。
示例:UIStrings.xml
<?xml version="1.0" encoding="utf-8"?> <UIStrings LanguageCode="en-US"> <!--Labels used in XAMLs--> <UIString ID="LBL1">Folder</UIString> <UIString ID="LBL2">Title</UIString> <UIString ID="LBL3">Description</UIString> ... </UIStrings>
该 XML 文件包含 <UIStrings> 元素,其 LanguageCode 属性用于指定语言。<UIStrings> 元素是一系列 <UIString> 元素的集合。属性 ID 必须是唯一的。对于您自己的字符串,Autodesk 建议您使用前缀(例如,ID="MYPREFIX_LBL1")。该元素的值为文本字符串。
如何使用用户界面字符串
通过使用以下表达式,可将用户界面字符串用于不同的 Data Standard 组件:
例如,<Label Content="{Binding UISTring[LBL2]}"/>
以上示例会在 UIStrings.xml(基于使用的语言)中查找 ID 为 LBL2 的 <UIString>,返回 Title 字符串,并在对话框中将此显示为标签。
MenuDefinitions.xml 文件:$UIString[<ID>]。在 VDS 2017 中,MNU 文件被替换为 MenuDefinitions.xml 文件。
可以将其用于菜单项定义的变量 Description、Hint、Label 和 NavigationTypes。有关详细信息,请参见 MenuDefinitions.xml 文件。
请注意,对于 Vault Client Data Standard,标签提取自 $UIString[<ID>],后者具有到“系统名称”的映射。若要查看用户定义特性的系统名称,请在“Vault 管理”>“行为”>“特性”>“创建/编辑特性”中将“系统名称”列添加到栅格。
对于 Data Standard for Inventor 和 Data Standard for AutoCAD,标签提取自 $UIString[<ID>],后者具有到自定义 iProperty (Inventor)、自定义文件特性 (AutoCAD) 或块属性名称 (AutoCAD) 的映射。利用本地化的名称,可以实现动态替代标签。
UIString 示例:
<!--In case of Vault, use system name of the property which is usually a GUID. --> <UIString ID ="7b6a617f-bf95-426f-a2fl-b4d0e9eec0a3">Zeichnungs-Titel</UIString>
适用于 en-US 的动态类别栅格中的结果,对于使用 de-DE 启动的客户端:
示例:PropertyTranslations.xml
<?xml version="1.0" encoding="utf-8"?> <PropertyTranslations LanguageCode="en-US"> <PropertyTranslation Name="NAME">Name</PropertyTranslation> <PropertyTranslation Name="TITLE">Title</PropertyTranslation> <PropertyTranslation Name="DESCRIPTION">Description</PropertyTranslation> ... </PropertyTranslations>
该 XML 文件包含 <PropertyTranslations> 元素,其 LanguageCode 属性用于指定语言。<PropertyTranslations> 元素是一系列 <PropertyTranslation> 元素的集合。属性的 Name 必须是唯一的。该元素的值是 Vault 特性的显示名称。
如何使用特性转换
在 XAML 和 PowerShell 文件中,可以通过 Prop[<特性名称>] 表达式访问 Vault 特性。无需使用固定的特性名称,而是使用以下语法:
例如:<TextBox Text="{Binding Prop[_XLTN_DESCRIPTION].Value}"/>
以上示例中的 prefix_XLTN_ 会在 PropertyTranslations.xml 中查找具有名称 DESCRIPTION 的 <PropertyTranslation> 元素,并将完整表达式 _XLTN_DESCRIPTION 替换为值 Description。然后,文本框的内容将绑定到 Vault 特性 Description。