Локализация команд меню
Вы можете предоставить локализованный текст для команд меню и панели инструментов, создав локализованные VSCT-файлы и локализованные RESX-файлы для VSPackage, а затем обновив файлы проекта, чтобы включить изменения.
Сведения о локализации процесса установки см. в разделе "Локализация пакетов VSIX".
Локализация имен команд
В VSPackage команды меню и кнопки панели инструментов определяются в VSCT-файле .
В Обозреватель решений измените имя VSCT-файла с filename.vsct на filename.en-US.vsct.
Создайте копию filename.en-US.vsct для каждого локализованного языка.
Назовите имя каждого файла копирования .{ Locale}.vsct, где {Locale} — это определенное имя языка и региональных параметров. Список значений имен языка и региональных параметров см. в разделе Идентификаторы языкового стандарта, назначенные корпорацией Майкрософт.
Имя файла. Файлы locale.vsct будут содержать локализованный текст меню для пакета.
Откройте каждое имя файла. Locale.vsct-файл для локализации текста.
Измените значения элементов ButtonText соответствующим образом для конкретного языка.
Если вы предоставите локализованные значки, измените значения растрового изображения , чтобы указать на целевые файлы.
В следующем примере показан текст кнопки "Английский" и "Испанский" для команды, чтобы открыть окно инструментов "Дерево семьи" Обозреватель.
[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>
Локализация других текстовых ресурсов
Текстовые ресурсы, отличные от имен команд, определяются в файлах ресурсов (RESX).
Переименуйте VSPackage.resx в VSPackage.en-US.resx.
Создайте копию ФАЙЛА VSPackage.en-US.resx для каждого локализованного языка.
Назовите каждую копию VSPackage.{ Locale}.resx, где {Locale} — это определенное имя языка и региональных параметров.
Переименуйте Resources.resx в Resources.en-US.resx.
Создайте копию файла Resources.en-US.resx для каждого локализованного языка.
Имя каждого копирования Resources.{ Locale}.resx, где {Locale} — это определенное имя языка и региональных параметров.
Откройте каждый 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 и файл проекта, чтобы включить локализованные ресурсы.
На узле "Свойства" в Обозреватель решений откройте assemblyinfo.cs или assemblyinfo.vb в редакторе.
Добавьте следующую запись.
[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
Это задает английский язык США как язык по умолчанию.
Выгрузите проект.
Откройте файл проекта в редакторе.
В корневом
Project
элементе добавьтеPropertyGroup
элемент с элементомUICulture
, соответствующим языку по умолчанию.<PropertyGroup> <UICulture>en-US</UICulture> </PropertyGroup>
Это задает язык и региональные параметры пользовательского интерфейса по умолчанию для элементов управления Windows Presentation Foundation (WPF).
ItemGroup
Найдите элемент, содержащийEmbeddedResource
элементы.В элементе, вызывающем
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>
Для каждого локализованного языка скопируйте
EmbeddedResource
элемент дляVsPackage.en-US
и задайте атрибут Include и элемент LogicalName копии в целевой языковой стандарт.Для каждого локализованного
VSCTCompile
элемента добавьте элемент, указывающийResourceName
наMenus.ctmenu
элемент, как показано в следующем примере:<ItemGroup> <VSCTCompile Include="LocalizedPackage.es-ES.vsct"> <ResourceName>Menus.ctmenu</ResourceName> </VSCTCompile> </ItemGroup>
Сохраните файл проекта и перезагрузите проект.
Выполните сборку проекта.
Это создает основную сборку и сборки ресурсов для каждого языка. Сведения о локализации процесса развертывания см. в разделе "Локализация пакетов VSIX"