本地化消息字符串

清单中指定的每个消息字符串都必须引用清单 本地化 部分中的字符串。 本地化部分包含你支持的每个区域设置的字符串表节。

以下示例演示如何定义字符串表。 必须指定字符串的 ID 属性。 使用 ID 特性的值引用清单中的字符串。 属性包含本地化字符串。

<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 文件

  1. 创建一个创建法语消息字符串的消息文本文件。 有关创建消息文本文件的详细信息,请参阅 消息文本文件。 在消息文本文件中指定的消息标识符必须与为清单中的相同字符串生成的消息编译器生成的资源标识符匹配。 若要确定用于清单中字符串的资源标识符,请参阅编译清单时消息编译器生成的 .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>
    .
    
    
  2. 运行以下命令以创建包含本地化字符串的资源 DLL。 messages.mc 文件是在步骤 1 中创建的消息文本文件。

    mc -u -U messages.mc
    
    rc -r messages.rc
    
    link -dll -noentry -out:messages.dll messages.res
    
  3. 在包含提供程序的文件夹中,为支持的每个区域设置创建一个子文件夹。 子文件夹的名称必须是该区域设置的语言名称。 例如,对于 0x0409,请使用 en-US 作为文件夹名称。

  4. 创建一个 .rcconfig 文件,用于告知Muirct.exe工具要将消息字符串资源从可执行文件和资源 DLL 拆分。 下面是一个 .rcconfig 文件示例。

    <localization>
          <resources>
                <win32Resources fileType="Application">
                      <neutralResources>
                      </neutralResources>
                      <localizedResources>
                            <resourceType typeNameId="#11"/>
                      </localizedResources>
                </win32Resources>
          </resources>
    </localization>
    
  5. 运行以下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
    
  6. 运行以下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
    
  7. 将 provider.exe.ln 重命名为 provider.exe。