本地化菜单命令

你可以为菜单和工具栏命令提供本地化文本,方法是为 VSPackage 创建本地化 的 .vsct 文件和本地化 的 .resx 文件,然后更新项目文件以合并更改。

有关如何本地化安装体验的信息,请参阅 本地化 VSIX 包

本地化命令名称

在 VSPackages 中,菜单命令和工具栏按钮在 .vsct 文件中定义。

  1. 解决方案资源管理器中,将 .vsct 文件的名称filename.vsct 更改为 filename.en-US.vsct

  2. 为每个本地化语言创建 filename.en-US.vsct 的副本

    为每个复制 文件名命名。{Locale}.vsct,其中 {Locale} 是特定的区域性名称。 有关区域性名称值的列表,请参阅 Microsoft 分配的区域设置 ID。

    这些 文件名。Locale.vsct 文件将包含包的本地化菜单文本。

  3. 打开每个 文件名。locale.vsct 文件以本地化文本。

    1. 根据特定语言修改 ButtonText 元素值。

    2. 如果将提供本地化的图标,请修改 位图 值以指向目标文件。

      以下示例显示了用于打开家庭树资源管理器工具窗口的命令的英语和西班牙语按钮文本。

      [FamilyTree.en-US.vsct]

    <Button guid="guidLocalizedPackageCmdSet" id="cmdidFamilyTree" priority="0x0100" type="Button">
      <Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1"/>
      <Icon guid="guidImages" id="bmpPic2" />
      <Strings>
        <CommandName>cmdidFamilyTree</CommandName>
        <ButtonText>Family Tree Explorer</ButtonText>
      </Strings>
    </Button>
    

    [FamilyTree.es-ES.vsct]

    <Button guid="guidLocalizedPackageCmdSet" id="cmdidFamilyTree" priority="0x0100" type="Button">
      <Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1"/>
      <Icon guid="guidImages" id="bmpPic2" />
      <Strings>
        <CommandName>cmdidFamilyTree</CommandName>
        <ButtonText>Explorar el arbol genealogico</ButtonText>
      </Strings>
    </Button>
    

本地化其他文本资源

除命令名称以外的文本资源在 resource (.resx) 文件中定义。

  1. 将 VSPackage.resx 重命名VSPackage.en-US.resx

  2. 为每个本地化语言创建 VSPackage.en-US.resx 文件的副本

    为每个副本 命名 VSPackage.{Locale}.resx,其中 {Locale} 是特定的区域性名称。

  3. 将 Resources.resx 重命名Resources.en-US.resx

  4. 为每个本地化语言创建 Resources.en-US.resx 文件的副本

    为每个复制 资源命名。{Locale}.resx,其中 {Locale} 是特定的区域性名称。

  5. 打开每个 .resx 文件,根据特定的语言和区域性修改字符串值。 以下示例显示了工具窗口标题栏的本地化资源定义。

    [Resources.en-US.resx]

    <data name="ToolWindowTitle" xml:space="preserve">
      <value>Family Tree Explorer</value>
    </data>
    

    [Resources.es-ES.resx]

    <data name="ToolWindowTitle" xml:space="preserve">
      <value>Explorador del arbol genealogico</value>
    </data>
    

将本地化资源合并到项目中

必须修改 assemblyinfo.cs 文件和项目文件以合并本地化的资源。

  1. 在解决方案资源管理器的“属性”节点中,在编辑器中打开 assemblyinfo.csassemblyinfo.vb

  2. 添加以下条目。

    [assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
    

    这会将美国英语设置为默认语言。

  3. 卸载项目。

  4. 在编辑器中打开项目文件。

  5. 在根Project元素中,添加一个PropertyGroupUICulture元素,其中包含与默认语言匹配的元素。

    <PropertyGroup>
      <UICulture>en-US</UICulture>
    </PropertyGroup>
    

    这将美国英语设置为 Windows Presentation Foundation (WPF) 控件的默认 UI 区域性。

  6. ItemGroup找到包含元素的EmbeddedResource元素。

  7. EmbeddedResource调用 VSPackage.en-US.resx 的元素中,将ManifestResourceName元素LogicalName替换为设置为VSPackage.en-US.Resources的元素,如下所示:

    <EmbeddedResource Include="VSPackage.en-US.resx">
      <MergeWithCTO>true</MergeWithCTO>
      <LogicalName>VSPackage.en-US.Resources</LogicalName>
    </EmbeddedResource>
    
  8. 对于每个本地化语言,请复制EmbeddedResource元素,VsPackage.en-US并将副本的 Include 属性和 LogicalName 元素设置为目标区域设置。

  9. 对于每个本地化 VSCTCompile 元素,请添加一个 ResourceName 指向 Menus.ctmenu的元素,如以下示例所示:

    <ItemGroup>
      <VSCTCompile Include="LocalizedPackage.es-ES.vsct">
        <ResourceName>Menus.ctmenu</ResourceName>
      </VSCTCompile>
    </ItemGroup>
    
  10. 保存项目文件并重新加载项目。

  11. 生成项目。

    这将为每个语言创建一个主程序集和资源程序集。 有关本地化部署过程的信息,请参阅 本地化 VSIX 包