Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Хранение жестко закодированных строк в реестре является частью модели локализации до Windows Vista. Он не поддерживается MUI. В текущей версии модели пользовательский интерфейс операционной системы использует файлы ресурсов, специфичные для языка, на языково-нейтральной основе. Компоненты операционной системы используют реестр на нейтральном языке.
MUI использует только перенаправленные строки реестра, определенные ресурсами PE Win32 в файле ресурсов базового языка. Перенаправление определяется отдельно, например, в INF-файле. Этот тип хранилища позволяет загрузчику ресурсов автоматически выбирать правильные языковые ресурсы во время загрузки модуля ресурсов.
Замечание
Этот раздел относится только к ресурсам Среды предустановки Win32. При использовании ресурсов PE, отличных от Win32, при необходимости необходимо предоставить настраиваемое перенаправление строк реестра.
Создание ресурса Language-Neutral
Приложение MUI, работающее на Windows Vista и более поздних версиях, использует языконезависимый ресурс строки для обеспечения доступа к строкам, хранящимся в таблице строковых ресурсов. Код приложения, считывающий эти значения из реестра, описан в разделе "Загрузка значения реестра Language-Neutral" в разделе "Поиск перенаправленных строк".
Данные для значения реестра, нейтрального на языке, имеют формат "@<PE-path>,-<stringID>[;<comment>]", где:
-
PE-pathуказывает путь исполняемого файла. Путь можно указать с помощью переменной среды, например %ProgramFiles%, для поддержки развертывания. Альтернативой для создания строковой ссылки является пропуск информации о пути к файлу. В этом случае приложение должно иметь некоторые средства, например другое значение реестра, чтобы сообщить о своем собственном каталоге установки. -
stringIDзадает числовый идентификатор ресурса соответствующей строки, который реализуется так же, как и любой другой локализуемый строковый ресурс. -
commentуказывает необязательные сведения для отладки или удобочитаемости значения реестра. Функции API реестра игнорируют комментарий при загрузке строки.
Замечание
Данные для значения реестра не имеют явной ссылки на файл ресурсов для конкретного языка. Правильный файл определяется во время выполнения на основе текущих языковых настроек пользовательского интерфейса.
Значение реестра вводится без пробела между "," и "-". Правильное значение реестра:
shell32.dll,-22912
Неправильное значение параметра в системном реестре:
shell32.dll, -22912
Примером из Windows Vista является значение реестра со следующими данными:
@%SystemRoot%\system32\input.dll,-5020
Создание ресурсов для строк ярлыков
Когда приложение MUI отображает свое имя в пользовательском shell интерфейсе, для значка приложения отображается строка InfoTip. Необходимо создать строковые ресурсы для отображаемого имени приложения и связанной строки InfoTip для каждого поддерживаемого языка. Когда ресурсы будут готовы, ваше приложение сможет использовать строки, как описано в разделе Использовать Shell API для загрузки строк ярлыков из реестра в Определение перенаправленных строк.
Подготовка ресурсов для ярлыка, созданного установщиком Windows
При использовании установщика Windows (MSI) для создания ярлыка строковые ресурсы включают отображаемое имя и описание ярлыка. В таблице ярлыков MSI библиотека DLL ресурсов упоминается в соответствующих столбцах, а идентификаторы ресурсов для отображаемого имени ярлыка и описания используются в соответствующих столбцах идентификаторов.
Чтобы ярлык приложения правильно работал с технологией ресурсов MUI, при подготовке сочетания клавиш следует учитывать следующие моменты:
- Используйте переменные среды или относительный путь для регистрации библиотеки DLL. Можно указать @%systemroot%\system32\shell32.dll, если тип строки реестра REG_EXPAND_SZ. Строковый идентификатор ресурса для текстового документа в Shell32.dll равен 12345.
- Не используйте пробелы вокруг символов "" и "-". Правильный пример — "shell32.dll,-22912".
- Не используйте короткое имя файла. Этот тип имени не работает с загрузчиком ресурсов.
Подготовка ресурсов для создания ярлыка с помощью формата INF
Если вы используете формат INF-файла для создания ярлыков, файл ресурсов должен сделать следующие настройки реестра. Эти инструкции предполагают использование синтаксиса ProfileItems API установки.
- Измените значение InfoTip, чтобы указать ссылку на перенаправление строки, используя путь и идентификатор ресурса.
- Добавьте новое значение DisplayResource в разделы установки ProfileItems.
Ниже приведен пример добавления приложения Калькулятора в меню "Пуск ".
[CalcInstallItems]
"Name" = %Calc_DESC%
"CmdLine" = 11, calc.exe
"SubDir" = %Access_GROUP%
"WorkingDir" = 11
"InfoTip" = "@%systemroot%\system32\shell32.dll,-22531"
"DisplayResource" = "%systemroot%\system32\shell32.dll",22019
Используйте приведенный ниже синтаксис при использовании INF для добавления элементов, например папки группы доступа, в меню "Пуск ". Этот синтаксис предполагает использование поддержки [StartMenuItems] из программы установки, аналогично синтаксису, используемому в Syssetup.inf.
[StartMenuItems]
<description> = <binary>,<commandline>,<iconfile>,<iconnum>,<infotip>,<resDLL,resID>
Установите значение infotip на строковую ссылку "@<path>,-resID".
Отображаемое имя определяется значениями resDLL и resID . Значение resID указывает идентификатор ресурса для строкового ресурса, связанного с файлом, нейтральным языком. Значение resDLL указывает путь к файлу, нейтральному языку.
Создание ресурсов для понятных имен типов документов
Необходимо реализовать понятное имя и строки InfoTip для вашего приложения в виде строковых ресурсов. Чтобы разрешить понятным именам типов документов реагировать на язык пользовательского интерфейса, приложение должно зарегистрировать имена с помощью значения FriendlyTypeName в ключе идентификатора программы для типа файла. Значение по умолчанию для ключа идентификатора программы должно храниться для обеспечения обратной совместимости. Сведения о доступе к именам из приложения см. в разделе "Имена типов документов, удобных для запроса в реестре" из Поиск перенаправленных строк.
Конкретная работа включает в себя следующие действия:
- Реализуйте удобочитаемое имя и строки InfoTip в виде языковых ресурсов строки.
- Добавьте значение FriendlyTypeName в ключ реестра типов документов. Данные для значения соответствуют шаблону "
@<path>,-<resID>", где путь указывает исполняемый файл и resID является идентификатором ресурса локализуемой строки, связанного с этим исполняемым файлом. - Укажите значение реестра InfoTip в соответствии с форматом "
@<path>,-<resID>".
В следующем примере показаны параметры реестра для файла .txt:
HKCR\.txt
@="txtfile"
"Content Type"="text/plain"
HKCR\txtfile
@="Text Document"
"FriendlyTypeName" = "@%systemroot%\system32\shell32.dll,-12345"
"InfoTip" = "@%systemroot%\system32\shell32.dll,-12346"
Предоставление ресурсов для ShellVerb строк действий
Строки действий для определенных глаголов, например "open" и "edit", отображаются во всплывающем меню при щелчке правой кнопкой мыши файла в проводнике Windows. Вашему приложению не нужно указывать строки для общих shell глаголов, так как shell для этих глаголов имеет собственные MUI по умолчанию. Однако следует предоставить локализуемые строковые ресурсы для строк, представляющих необычные глаголы.
В операционных системах до Windows XP строки для shell глаголов в реестре отображаются с помощью следующего синтаксиса, в котором verb указывает фактическое verb имя.
HKCR\<progid>\shell\<verb>
@ = <friendly-name>
Ниже приведен пример:
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
В Windows XP и более поздних версиях можно использовать уровень косвенного обращения, чтобы строка действия зависела от языка пользовательского интерфейса. Эти операционные системы поддерживают значение MUIVerb для определения строки, совместимой с MUI. Ниже приведен пример записи реестра для редкого verb.
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
"MUIVerb" = "@%systemroot%\system32\sample.exe,-9875"
Приложение MUI также должно зарегистрировать старое значение по умолчанию как локализованную строку, как показано ниже:
HKCR\Sample.app\shell\Disc
@ = "@%systemroot%\system32\sample.exe,-9875"
Замечание
Регистрация прежнего значения по умолчанию не рекомендуется, так как для этого требуется настройка, отличающаяся от настройки, используемой в более ранних операционных системах, начиная с Windows XP и более поздних версий.
Создание ресурсов для Verb, Protocol и строк AuxUserType
Необходимо создать локализуемые строковые ресурсы для Verb, Protocol и AuxUserType. Используйте следующие параметры реестра:
HKCR\CLSID\{<Your_CLSID>}\Verb\<number> @="<Your Verb>, <menu_flag>, <verb_flag>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID"
...
HKCR\CLSID\{<Your_CLSID>}\AuxUserType\<number>
@="<Your Short Name>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID1"
...
HKCR\<Your_Name>\protocol\StdFileEditing\verb\<number>
@="<Your Verb>"
"LocalizedString"="@<resDLLpath\resDLL.DLL>,-resStrID"
...
Значение, указанное только для LocalizedString, содержит или заменяет значение Your Verb, но не двух значений флага.
Ниже приведены сводки, которые помогут вам обеспечить правильные параметры реестра:
- Если CLSID имеет ключ HKCR\CLSID\{clsid}\Insertable, определите значение CLSID по умолчанию с помощью HKCR\CLSID\{clsid}\LocalizedString.
- Если CLSID имеет один или несколько подразделов в разделе HKCR\CLSID\{clsid}\,Verb определите каждую отдельную Verb строку с помощью HKCR\CLSID\{clsid}\Verb\\xxx\LocalizedString.
- Если у CLSID имеется один или несколько подразделов в HKCR\{progid}\Protocol\Stdfileediting\Verb, определите каждую отдельную строку Verb с помощью HKCR\{progid}\Protocol\Stdfileediting\Verb\xxx\LocalizedString.
- Если CLSID содержит один или несколько перечисленных вложенных ключей AuxUserType в разделе HKCR\CLSID\{clsid}\AuxUserType, определите каждую запись AuxUserType с помощью HKCR\CLSID\{clsid}\AuxUserType\xxx\LocalizedString.
Создайте ресурс для программы удаления
Чтобы зарегистрировать программу удаления для приложения, можно создать значения реестра в подразделе уникального идентификатора для приложения в разделе HKEY\_LOCAL\_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall реестра. Значения для набора: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, Comments, DisplayIcon, Readme, UrlUpdateInfo.
Замечание
Чтобы включить технологию MUI для каждого значения, можно добавить "_Localized" в имя значения.
Компоненты операционной системы должны предоставить значение DisplayName_Localized специфичным для Мультиязыкового пользовательского интерфейса способом. Отображаемое имя следует поместить в библиотеку DLL, например Res.dll, как строковый ресурс, при условии, что идентификатор должен быть 1245. Затем приложение может зарегистрировать отображаемое имя как DisplayName_Localized со значением "@\res.DLL,-1245". Все остальные параметры реестра должны храниться так же, как они есть, включая исходное значение для DisplayName.
Создание ресурсов для аудио-событий
Windows связывает некоторые события с звуковыми файлами, например событие "Новое уведомление почты" или событие "Критическое событие сигнализации батареи". Имена событий должны отображаться пользовательским интерфейсом и должны поддерживать глобализацию. Поэтому следует реализовать локализуемый строковый ресурс для описания каждого описания события. Добавьте новое значение реестра для каждого имени события в дополнение к жестко закодированному значению по умолчанию.
Выполните следующие действия, чтобы включить звуковое событие:
- Реализуйте описание как локализуемый строковый ресурс.
- Добавьте новое значение реестра для отображаемого имени в дополнение к жестко закодированному значению по умолчанию. Ниже показан связанный макет реестра:
HKCR\AppEvents\EventLabels
<event_name>
(Default) REG_SZ "<description>"
DispFileName REG_EXPAND_SZ "@<path>,-<resID>"
shell Если значение DispFileName не удается найти или получить, используется описание по умолчанию.
Создавайте ресурсы для строк布局 клавиатуры
Если приложение реализует раскладку клавиатуры, для имени макета экрана требуется локализуемый строковый ресурс, например в списках раскладок клавиатуры. У каждого макета клавиатуры есть ключ реестра под HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts.
Среди значений этого ключа — Layout Text, читаемое человеком имя для обратной совместимости, и Layout Display Name. Данные, предоставленные для Layout Display Name, должны быть строковой ссылкой вида @<path>,-resID, указывающей на локализуемый ресурс строки, связанный с раскладкой клавиатуры.
Ниже приведен пример параметра реестра для испанского макета клавиатуры:
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
0000040a
Layout Text REG_SZ "Spanish"
Layout Display Name REG_EXPAND_SZ "@%SystemRoot%\system32\input.dll,-5020"
Представление общих диалоговых строк объекта OLE Insert
Отображаемое имя вставленного объекта OLE можно реализовать как локализуемый строковый ресурс, связанный с кодом, реализующим этот объект. Диалоговое окно "Объект вставки OLE" получает отображаемое имя из раздела реестра HKCR\CLSID\{<GUID}, где GUID> определяет идентификатор класса вставленного объекта OLE. Windows Vista и более поздних версий реализуют этот тип объекта в локализуемом режиме, используя отображаемое имя, совместимое с MUI, которое позволяет настраивать язык пользовательского интерфейса. В отличие от этого, операционные системы до Windows Vista определяют имя, отображаемое для этого типа объекта, используя значение по умолчанию соответствующего ключа реестра. Обычно это имя — либо имя на английском (США), либо имя на языке интерфейса системы по умолчанию.
Замечание
Не все объекты, соответствующие подразделам ключа реестра, могут быть вставлены.
Значение по умолчанию ключа HKCR\CLSID\{<GUID>} должно хранить удобочитаемое пользователем имя для обратной совместимости. Однако он также должен определить значение LocalizedString в формате "@<path>,-ResID", где путь определяет исполняемый файл, реализующий объект. Значение ResID указывает идентификатор ресурса локализуемой строки для отображаемого имени.
Например, скрипт регистрации для вставленного объекта Media Clip содержит следующие строки:
HKCR,"CLSID\%CLSID_Media_Clip%",,,"%default description%"
HKCR,"CLSID\%CLSID_Media_Clip%","LocalizedString",,"@%systemroot%\system32\mplay32.exe,-9217"
Первая строка обеспечивает обратную совместимость путем размещения простой текстовой строки в реестре в качестве отображаемого имени по умолчанию. Вторая строка предоставляет доступ к отображаемого имени, совместимого с MUI. Он указывает идентификатор строки, хранящийся в Mplay32.exe. Строка с идентификатором 9217 в Mplay32.exe может быть связана со строковыми значениями ресурсов для любого числа языков. Его английское (Соединенные Штаты) название — "Media Clip".
Создание строковых ресурсов для консоли управления Майкрософт Snap-Ins
Необходимо создать локализуемый строковый ресурс для каждой оснастки консоли управления Майкрософт (MMC), используемой приложением MUI. Так как оснастка является частью консоли, она имеет пользовательский интерфейс и должна быть глобализирована для работы на нескольких языках.
В большинстве случаев оснастки MMC порождают те же проблемы глобализации и локализации, которые возникают в самом приложении MUI. Оснастка MMC должна отражать своё имя в реестре Windows для отображения. Запись реестра должна включать как непрямую ссылку на локализуемый ресурс строки, так и литеральную строку для обратной совместимости.
Каждая оснастка MMC содержит раздел реестра под HKEY\_LOCAL\_MACHINE\\Software\\Microsoft\\MMC\\SnapIns. Среди значений этого ключа указаны NameString, чтобы обозначить имя, удобочитаемое для обратной совместимости, и NameStringIndirect, чтобы указать непрямую ссылку на локализуемый ресурс строк. Для NameStringIndirect необходимо предоставить строковую ссылку в формате "@<path>,-resID", представляющую локализуемый ресурс строки.
Например, можно задать следующий параметр для Mymmc.dll, где 12345 — это идентификатор соответствующего строкового ресурса, содержащего локализуемое имя дополнения:
NameStringIndirect=@%systemroot%@c:\windir\system32\mymmc.dll,-12345
Некоторые оснастки регистрируют другие значения строк реестра, которые MMC не считывает из реестра. Дополнительные сведения об использовании этих значений см. в разделе "Регистрация консоли управления Майкрософт" Snap-In строк, не считываемых из реестра в поиске перенаправленных строк.
Создание строковых ресурсов для службы Windows
Хотя служба Windows обычно имеет мало или нет пользовательского интерфейса, она должна отображать имя, совместимое с MUI, и обычно предоставляет описание языка, совместимого с MUI. Ключ реестра, описывающий службу Windows, поддерживает только DisplayName для имени службы и Description для описания службы.
Параметры службы Windows создаются из приложения, как описано в разделе "Задание отображаемого имени и описания службы Windows" из реестра в разделе "Поиск перенаправленных строк". Если приложение не задает значения реестра для пользовательского интерфейса службы, значения в реестре остаются равными English, даже если пользовательский интерфейс находится на другом языке.
Связанные темы