本地化消息字符串
在清单中指定的每个消息字符串都必须引用清单 本地化 部分中的字符串。 本地化部分包含你支持的每个区域设置的字符串表部分。
以下示例演示如何定义字符串表。 必须指定字符串的 ID 和 值 属性。 使用 id 属性的值引用清单中的字符串。 value 属性包含本地化字符串。
<instrumentationManifest
xmlns="http://schemas.microsoft.com/win/2004/08/events"
xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<instrumentation>
<events>
<provider name="Microsoft-Windows-SampleProvider"
guid="{1db28f2e-8f80-4027-8c5a-a11f7f10f62d}"
symbol="PROVIDER_GUID"
resourceFileName="<path to the exe or dll that contains the metadata resources>"
messageFileName="<path to the exe or dll that contains the string resources>"
message="$(string.ProviderName)">
. . .
</provider>
</events>
</instrumentation>
<localization>
<resources culture="en-US">
<stringTable>
<string id="ProviderName" value="Sample Provider"/>
<string id="PathNotFound" value="The path %1 was not found."/>
</stringTable>
</resources>
</localization>
</instrumentationManifest>
应为支持的每种语言创建多语言用户界面 (MUI) 文件,而不是将本地化字符串添加到清单。 使用消息文本文件指定本地化字符串。
以下过程介绍如何为英语和法语创建 MUI 文件。
为英语和法语创建 MUI 文件
创建创建法语消息字符串的消息文本文件。 有关创建消息文本文件的详细信息,请参阅 消息文本文件。 在消息文本文件中指定的消息标识符必须与消息编译器为清单中的相同字符串生成的资源标识符匹配。 若要确定用于清单中字符串的资源标识符,请参阅编译清单时消息编译器生成的 .h 文件。
LanguageNames=(French=0x40C:MSG0040C) ; // The following are message definitions. MessageId=0x00000065 SymbolicName=MSG_ProviderName Language=French <FRENCH STRING GOES HERE> . MessageId=0x00000066 SymbolicName=MSG_PathNotFound Language=French <FRENCH STRING GOES HERE> .
运行以下命令以创建包含本地化字符串的资源 DLL。 messages.mc 文件是在步骤 1 中创建的消息文本文件。
mc -u -U messages.mc rc -r messages.rc link -dll -noentry -out:messages.dll messages.res
在包含提供程序的文件夹中,为你支持的每个区域设置创建一个子文件夹。 子文件夹的名称必须是该区域设置的语言名称。 例如,对于0x0409,请使用 en-US 作为文件夹名称。
创建一个 .rcconfig 文件,该文件告知Muirct.exe工具你想要从可执行文件和资源 DLL 拆分消息字符串资源。 下面是一个示例 .rcconfig 文件。
<localization> <resources> <win32Resources fileType="Application"> <neutralResources> </neutralResources> <localizedResources> <resourceType typeNameId="#11"/> </localizedResources> </win32Resources> </resources> </localization>
运行以下Muirct.exe命令,从提供程序可执行文件中拆分英语字符串。
muirct -q split.rcconfig -v 2 -x 0x0409 -g 0x0409 provider.exe provider.exe.ln en-US\provider.exe.mui muirct -c provider.exe.ln -e en-US\provider.exe.mui
运行以下Muirct.exe命令,从资源 DLL 中拆分法语字符串。 创建 MUI 文件后,删除非特定语言文件 (fr-FR\messages.dll) 。
muirct -q split.rcconfig -v 2 -x 0x040C -g 0x0409 messages.dll fr-FR\messages.dll fr-FR\provider.exe.mui muirct -c provider.exe.ln -e fr-FR\provider.exe.mui
将 provider.exe.ln 重命名为 provider.exe。