本地化属性和注释

Windows Presentation Foundation (WPF) 本地化注释是开发人员提供的 XAML 源代码中的属性,用于提供本地化规则和提示。 WPF 本地化注释包含两组信息:可本地化属性和自由格式本地化注释。 WPF 本地化 API 使用可本地化属性来指示要本地化的资源。 自由格式注释是应用程序作者想要包含的任何信息。

添加本地化注释

如果标记应用程序作者对 XAML 中的特定元素有要求,例如文本长度、字体系列或字号的约束,则可以在 XAML 代码中使用注释将此信息传达给本地化人员。 将注释添加到源代码的过程如下所示:

  1. 应用程序开发人员将本地化注释添加到 XAML 源代码。

  2. 在生成过程中,可以在 .proj 文件中指定是离开程序集中的自由格式本地化注释、去除部分注释,还是去除所有注释。 剥离的注释放置在单独的文件中。 使用标记LocalizationDirectivesToLocFile指定选项,例如:

    <LocalizationDirectivesToLocFile> 价值</LocalizationDirectivesToLocFile>

  3. 可分配的值包括:

    • - 注释和属性都保留在程序集内,不会生成单独的文件。

    • CommentsOnly - 仅去除程序集中的注释并将其放置在单独的 LocFile 中。

    • 全部 - 从程序集中去除注释和属性,并将其放在单独的 LocFile 中。

  4. 从 BAML 提取可本地化资源时,BAML 本地化 API 会遵循可本地化属性。

  5. 本地化注释文件(仅包含自由格式注释)稍后会合并到本地化过程中。

以下示例演示如何向 XAML 文件添加本地化注释。

<TextBlock x:Id = "text01"

FontFamily = "Microsoft Sans Serif"

FontSize = "12"

Localization.Attributes = "$Content (Unmodifiable Readable Text)

FontFamily (Unmodifiable Readable)"

Localization.Comments = "$Content (Trademark)

FontSize (Trademark font size)" >

Microsoft

</TextBlock>

在前面的示例中,Localization.Attributes 节包含本地化属性和本地化.注释部分自由格式注释。 下表显示了特性和注释及其对本地化程序的含义。

本地化属性 含义
$Content (不可修改的可读文本) 无法修改 TextBlock 元素的内容。 本地化人员无法更改“Microsoft”一词。 内容对本地化程序可见(可读)。 内容的类别为文本。
FontFamily (不可修改可读) TextBlock 元素的字体系列属性无法更改,但它对本地化程序可见。
本地化自由格式注释 含义
$Content(商标) 应用程序作者告诉本地化程序 TextBlock 元素中的内容是商标。
FontSize (商标字号) 应用程序作者指示字体大小属性应遵循标准商标大小。

可本地化属性

Localization.Attributes 中的信息包含一系列对:目标值名称和关联的可本地化性值。 目标名称可以是属性名称,也可以是特殊$Content名称。 如果它是属性名称,则目标值是该属性的值。 如果$Content,则目标值为元素的内容。

有三种类型的属性:

  • 类别。 这指定是否应从本地化工具修改值。 请参阅 Category

  • 可读性。 这指定本地化工具是否应读取值(并显示)。 请参阅 Readability

  • 可修改性。 这指定本地化工具是否允许修改值。 请参阅 Modifiability

这些属性可以按空格分隔的任何顺序指定。 如果指定了重复属性,则最后一个属性将替代以前的属性。 例如,Localization.Attributes = “Unmodifiable Modifiable” 将 Modifiability 设置为 Modifiable,因为它是最后一个值。

可修改性和可读性是自我解释的。 Category 属性提供预定义的类别,用于在翻译文本时帮助本地化程序。 类别(如文本、标签和标题)提供有关如何翻译文本的本地化程序信息。 还有特殊类别:None、Inherit、Ignore 和 NeverLocalize。

下表显示了特殊类别的含义。

类别 含义
没有 目标值没有定义的类别。
继承 目标值继承其父级的类别。
忽略 本地化过程中忽略目标值。 忽略仅影响当前值。 它不会影响子节点。
NeverLocalize 当前值无法本地化。 此类别由元素的子级继承。

本地化注释

Localization.Comments 包含与目标值相关的自由格式字符串。 应用程序开发人员可以添加信息,以便向本地化人员提供有关如何翻译应用程序文本的提示。 注释的格式可以是“()”括起来的任何字符串。 使用“\”转义字符。

另请参阅