Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El almacenamiento de cadenas codificadas de forma rígida en el registro forma parte de un modelo de localización de Windows Vista anterior. No es compatible con MUI. En el modelo actual, la interfaz de usuario del sistema operativo se ejecuta en archivos de recursos específicos del lenguaje sobre una base independiente del idioma. Los componentes del sistema operativo usan el Registro de forma independiente del lenguaje.
MUI solo usa cadenas de registro redirigidas definidas por recursos de Win32 PE en el archivo de recursos del idioma base. El redireccionamiento se define por separado, por ejemplo, en un archivo .inf. Este tipo de almacenamiento permite al cargador de recursos seleccionar automáticamente los recursos de idioma correctos durante la carga del módulo de recursos.
Nota:
Este tema solo pertenece a los recursos de Win32 PE. Si usa recursos que no son de Win32 PE, debe proporcionar redirección de cadena del Registro personalizada, si es necesario.
Creación de un recurso de Language-Neutral
Una aplicación MUI que se ejecuta en Windows Vista y versiones posteriores usa un recurso de cadena independiente del lenguaje para permitir el acceso a cadenas específicas del idioma almacenadas en una tabla de recursos de cadena. El código de aplicación que lee estos valores del Registro se describe en la sección Cargar un valor del Registro Language-Neutral de Localización de cadenas redirigidas.
El dato para un valor independiente del idioma del Registro tiene el formato "@<PE-path>,-<stringID>[;<comment>]
", donde:
-
PE-path
especifica la ruta de acceso del ejecutable. Puede especificar la ruta de acceso mediante una variable de entorno, como %ProgramFiles%, para admitir la implementación. Una alternativa para hacer referencia a la cadena de texto es dejar fuera la información de la ruta de acceso del archivo. En este caso, la aplicación debe tener algunos medios, por ejemplo, otro valor del Registro, para comunicar su propio directorio de instalación. -
stringID
especifica el identificador numérico de recursos del recurso de cadena pertinente, que se implementa igual que cualquier otro recurso de cadena localizable. -
comment
especifica información opcional para la depuración de errores y legibilidad del valor del Registro. Las funciones de API del Registro omiten el comentario al cargar la cadena.
Nota:
Los datos del valor del registro no hacen referencia explícita al archivo de recursos específico del idioma. El archivo correcto se determina en tiempo de ejecución, en función de las preferencias actuales del idioma de la interfaz de usuario.
Se escribe un valor del Registro sin un espacio entre "," y "-". Un valor correcto del Registro es:
shell32.dll,-22912
Un valor del Registro incorrecto es:
shell32.dll, -22912
Un ejemplo de Windows Vista es el valor del Registro con los datos siguientes:
@%SystemRoot%\system32\input.dll,-5020
Crear recursos para cadenas de atajos
Cuando la aplicación MUI muestra su nombre en la shell interfaz de usuario, se muestra una cadena de información para el icono de la aplicación. Debe crear recursos de cadena para el nombre visible de la aplicación y la cadena de información contextual asociada para cada uno de los idiomas admitidos. Cuando los recursos estén listos, su aplicación puede usar las cadenas tal como se describe en la sección Uso de la API para cargar cadenas de acceso directo desde el Registro en Localización de cadenas redirigidas.
Preparar recursos para un acceso directo creado con Windows Installer
Si utiliza Windows Installer (MSI) para crear un acceso directo, los recursos de cadenas incluyen el nombre que se muestra y la descripción del acceso directo. En la tabla de accesos directos de MSI, se hace referencia al archivo DLL de recursos en las columnas adecuadas y se utilizan los identificadores de recursos para el nombre para mostrar del acceso directo y la descripción en las columnas correspondientes de identificadores de recursos.
Para que el acceso directo de la aplicación funcione correctamente con la tecnología de recursos MUI, tenga en cuenta los siguientes puntos al preparar las cadenas de acceso directo:
- Use variables de entorno o una ruta de acceso relativa para registrar el archivo DLL. Puede especificar @%systemroot%\system32\shell32.dll siempre que el tipo de cadena del Registro sea REG_EXPAND_SZ. El identificador de recurso de cadena de "Documento de texto" en Shell32.dll es 12345.
- No use espacios alrededor de los símbolos "," y "-". Un ejemplo correcto es "shell32.dll,-22912".
- No use un nombre de archivo corto. Este tipo de nombre no funciona con el cargador de recursos.
Preparación de recursos para un acceso directo mediante el formato INF
Si usa el formato de archivo INF para crear cadenas de acceso directo, el archivo de recursos debe realizar la siguiente configuración del Registro. En estas instrucciones se presupone el uso de la sintaxis ProfileItems de la Setup API.
- Cambie el valor de InfoTip para que apunte a la referencia de redirección de cadenas mediante la ruta de acceso y el identificador de recurso.
- Agregue el nuevo valor DisplayResource en las secciones Instalación de ProfileItems.
A continuación se muestra un ejemplo que muestra la adición de la aplicación Calculadora al menú Inicio :
[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
Use la sintaxis que se muestra a continuación al usar INF para agregar elementos, por ejemplo, una carpeta Grupo de acceso, al menú Inicio . Esta sintaxis asume el uso del soporte de [StartMenuItems] desde la Instalación, similar a la sintaxis utilizada en Syssetup.inf.
[StartMenuItems]
<description> = <binary>,<commandline>,<iconfile>,<iconnum>,<infotip>,<resDLL,resID>
Establezca el valor infotip a la referencia de cadena "@<path>,-resID
".
El nombre para mostrar viene determinado por los valores resDLL y resID . El valor resID especifica el identificador de recurso de un recurso de cadena asociado al archivo idioma-neutral. El valor resDLL especifica la ruta de acceso al archivo independiente del idioma.
Crear recursos para nombres amigables de tipo de documento
Debe implementar cadenas de nombre descriptivo e InfoTip para su aplicación como recursos de cadena. Para permitir que los nombres amigables de tipo de documento se adapten al idioma de la interfaz de usuario, la aplicación debe registrar los nombres con el valor FriendlyTypeName en la clave del identificador de programa para el tipo de archivo. El valor predeterminado de la clave de identificador del programa debe conservarse para mantener la compatibilidad con versiones anteriores. Para obtener información sobre cómo acceder a los nombres desde su aplicación, consulte la sección Nombres de tipo de documento amigables para consultas en el Registro en Ubicación de cadenas redirigidas.
El trabajo específico implica los pasos siguientes:
- Implemente el nombre descriptivo y las cadenas de herramienta de información como recursos de cadena dependientes del idioma.
- Agregue el valor FriendlyTypeName bajo la clave del registro del tipo de documento. Los datos del valor siguen el patrón "
@<path>,-<resID>
", donde ruta de acceso indica el ejecutable y resID es el identificador de recurso de una cadena localizable asociada a ese ejecutable. - Especifique el valor del registro InfoTip en el formato "
@<path>,-<resID>
".
En el ejemplo siguiente se muestra la configuración del Registro para un archivo .txt:
HKCR\.txt
@="txtfile"
"Content Type"="text/plain"
HKCR\txtfile
@="Text Document"
"FriendlyTypeName" = "@%systemroot%\system32\shell32.dll,-12345"
"InfoTip" = "@%systemroot%\system32\shell32.dll,-12346"
Proporcionar recursos para ShellVerb cadenas de acción
Las cadenas de acción de determinados verbos, por ejemplo, "open" y "edit", se muestran en el menú emergente que se muestra cuando el usuario hace clic con el botón derecho en un archivo en el Explorador de Windows. La aplicación no tiene que especificar cadenas para verbos comunes shell, ya que shell tiene valores predeterminados habilitados para MUI para estos verbos. Sin embargo, debe proporcionar recursos de cadena localizables para las cadenas que representan verbos poco comunes.
En los sistemas operativos anteriores a Windows XP, las cadenas de shell verbos del Registro se representan mediante la sintaxis siguiente, donde verb especifica el nombre real verb :
HKCR\<progid>\shell\<verb>
@ = <friendly-name>
Este es un ejemplo:
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
En Windows XP y versiones posteriores, puedes usar un nivel de direccionamiento indirecto para que una cadena de acción dependa del lenguaje de la interfaz de usuario. Estos sistemas operativos admiten un valor MUIVerb para la definición de una cadena compatible con MUI. Este es un ejemplo de una entrada del Registro para un verb poco común.
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
"MUIVerb" = "@%systemroot%\system32\sample.exe,-9875"
La aplicación MUI también debe poder registrar el valor predeterminado anterior como una cadena localizable, como se muestra a continuación:
HKCR\Sample.app\shell\Disc
@ = "@%systemroot%\system32\sample.exe,-9875"
Nota:
No se recomienda el registro del valor predeterminado anterior porque requiere una configuración diferente en Windows XP y versiones posteriores de la configuración usada en sistemas operativos anteriores.
Crear recursos para Verb, Protocol y las cadenas AuxUserType
Debe crear recursos de cadena localizables para Verb, Protocol y las cadenas AuxUserType. Use la siguiente configuración del Registro:
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"
...
El valor especificado para LocalizedString solo contiene o reemplaza el valor de Your Verb, no los dos valores de marca.
Este es un resumen que le ayudará a garantizar la configuración correcta del Registro:
- Si CLSID tiene una clave HKCR\CLSID\{clsid}\Insertable, defina el valor CLSID predeterminado mediante HKCR\CLSID\{clsid}\LocalizedString.
- Si CLSID tiene una o varias subclaves en HKCR\CLSID\{clsid}\Verb, defina cada cadena individual Verb mediante HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString.
- Si CLSID tiene una o varias subclaves en HKCR\{progid}\\Protocol\Stdfileediting\Verb, defina cada cadena individual Verb mediante HKCR\{progid}\Protocol\Stdfileediting\Verb\xxx\LocalizedString.
- Si CLSID tiene una o varias subclaves AuxUserType enumeradas en HKCR\CLSID\{clsid}\AuxUserType, defina cada entrada AuxUserType mediante HKCR\CLSID\{clsid}\AuxUserType\xxx\LocalizedString.
Crear un recurso para el programa de desinstalación
Para registrar el programa de desinstalación de la aplicación, puede crear valores del Registro en la subclave de identificador único para la aplicación bajo la clave del Registro HKEY\_LOCAL\_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
. Los valores que se van a establecer incluyen: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, , CommentsDisplayIcon, Readme, UrlUpdateInfo.
Nota:
Para habilitar la tecnología MUI para cada valor, puede anexar "_Localized" al nombre del valor.
Los componentes del sistema operativo deben proporcionar un valor para DisplayName_Localized
de manera específica para MUI. Debe colocar el nombre de visualización en un archivo DLL, como Res.dll, como un recurso de cadena, asumiendo que el identificador sea 1245. A continuación, la aplicación puede registrar el nombre para mostrar como DisplayName_Localized
con el valor "@\res.DLL,-1245". Todas las demás configuraciones del Registro deben conservarse tal como están, incluido el valor original de DisplayName.
Crear recursos para eventos de sonido
Windows asocia determinados eventos con archivos de sonido, por ejemplo, un evento de notificación de correo nuevo o un evento de alarma de batería crítica. La interfaz de usuario debe mostrar los nombres de evento y debe admitir la globalización. Por lo tanto, debe implementar un recurso de cadena localizable para la descripción de cada descripción del evento. Agregue un nuevo valor del Registro para cada nombre de evento, además del valor predeterminado codificado de forma rígida.
Haga lo siguiente para habilitar un evento de sonido:
- Implemente la descripción como un recurso de cadena localizable.
- Agregue un nuevo valor del Registro para el nombre para mostrar, además del valor predeterminado codificado de forma rígida. A continuación se muestra el diseño del Registro asociado:
HKCR\AppEvents\EventLabels
<event_name>
(Default) REG_SZ "<description>"
DispFileName REG_EXPAND_SZ "@<path>,-<resID>"
Si shell no puede encontrar o recuperar el valor de DispFileName, usa la descripción predeterminada.
Crear recursos para cadenas de diseño de teclado
Si la aplicación implementa un diseño de teclado, requiere un recurso de cadena localizable para el nombre del diseño de la pantalla, por ejemplo, en listas de diseños de teclado. Cada diseño de teclado tiene una clave del Registro en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts
.
Entre los valores de esa clave se encuentran Layout Text
, un nombre legible para la compatibilidad con versiones anteriores y Layout Display Name
. Los datos proporcionados para Layout Display Name
deben ser una referencia de cadena del formulario @<path>,-resID
, haciendo referencia a un recurso de cadena localizable asociado al diseño del teclado.
Este es un ejemplo de una configuración del Registro para el diseño de teclado español:
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
0000040a
Layout Text REG_SZ "Spanish"
Layout Display Name REG_EXPAND_SZ "@%SystemRoot%\system32\input.dll,-5020"
Representar cadenas de diálogo comunes de objeto de inserción OLE
Puede implementar el nombre visible de un objeto insertable OLE como una cadena de recurso localizable asociada al código que implementa ese objeto. El cuadro de diálogo Objeto de inserción OLE obtiene un nombre para mostrar de la clave del Registro HKCR\CLSID\{<GUID>}, donde GUID identifica el identificador de clase de un objeto OLE insertable. Windows Vista y versiones posteriores implementan este tipo de objeto de forma localizable, usando un nombre para mostrar compatible con MUI que permite personalizar el idioma de la interfaz de usuario. En contraste, los sistemas operativos anteriores a Windows Vista implementan el nombre para mostrar de este tipo de objeto utilizando el valor predeterminado de la clave del Registro correspondiente. Normalmente, este nombre es un nombre inglés (Estados Unidos) o un nombre en el idioma predeterminado de la interfaz de usuario del sistema.
Nota:
No todos los objetos que corresponden a subclaves de la clave del Registro se pueden insertar.
El valor predeterminado de la clave HKCR\CLSID\{<GUID>} debe conservar un nombre legible para la compatibilidad con versiones anteriores. Sin embargo, también debe definir el valor LocalizedString, en el formato "@<path>,-ResID
", donde la ruta de acceso identifica el archivo ejecutable que implementa el objeto. El valor ResID especifica el identificador de recurso de la cadena localizable para el nombre visible.
Por ejemplo, el script de registro para el objeto Media Clip insertable incluye las siguientes líneas:
HKCR,"CLSID\%CLSID_Media_Clip%",,,"%default description%"
HKCR,"CLSID\%CLSID_Media_Clip%","LocalizedString",,"@%systemroot%\system32\mplay32.exe,-9217"
La primera línea proporciona compatibilidad con versiones anteriores colocando una cadena de texto simple en el registro como un nombre para mostrar predeterminado. La segunda línea proporciona acceso al nombre para mostrar compatible con MUI. Indica el identificador de cadena almacenado en Mplay32.exe. La cadena con el identificador 9217 en Mplay32.exe se puede asociar a valores de recursos de cadena para cualquier número de idiomas. Su nombre inglés (Estados Unidos) es "Media Clip".
Crear recursos de cadena para la consola de administración de Microsoft Snap-Ins
Debe crear un recurso de cadena localizable para cada extensión de Microsoft Management Console (MMC) usada por la aplicación MUI. Dado que un complemento forma parte de una consola, tiene una interfaz de usuario y debe globalizarse para funcionar en más de un idioma.
Por lo general, los complementos MMC generan los mismos problemas de globalización y localización que la propia aplicación MUI. Un complemento MMC debe reflejar su nombre en el Registro para que se pueda mostrar. La entrada del Registro debe incluir una referencia indirecta a un recurso de cadena localizable y una cadena literal para la compatibilidad con versiones anteriores.
Cada complemento MMC tiene una clave del Registro en HKEY\_LOCAL\_MACHINE\\Software\\Microsoft\\MMC\\SnapIns
. Entre los valores de esa clave se encuentran NameString
, especificando un nombre legible para la compatibilidad con versiones anteriores y NameStringIndirect
, especificando una referencia indirecta a un recurso de cadena localizable. Para NameStringIndirect
, debe proporcionar una referencia de cadena del formato "@<path>,-resID
", que representa un recurso de cadena localizable.
Por ejemplo, puede establecer la siguiente configuración para Mymmc.dll, donde 12345 es el identificador del recurso de cadena correspondiente que contiene el nombre localizable del complemento:
NameStringIndirect=@%systemroot%@c:\windir\system32\mymmc.dll,-12345
Algunos complementos registran otros valores de cadena del Registro que MMC no lee del registro. Para obtener más información sobre el uso de estos valores, vea Register Microsoft Management Console Snap-In Strings Not Read from the Registry in Localización de cadenas redirigidas.
Crear recursos de cadena para un servicio de Windows
Aunque un servicio de Windows normalmente tiene poca o ninguna interfaz de usuario, debe mostrar un nombre compatible con MUI y normalmente proporciona una descripción específica del idioma compatible con MUI. La clave del Registro que describe un servicio de Windows solo admite el DisplayName
valor del nombre del servicio y el Description
valor de la descripción del servicio.
La configuración del servicio de Windows se realiza desde la aplicación, como se describe en Establecer el nombre para mostrar y la descripción de un servicio de Windows desde el Registro en buscar cadenas redirigidas. Si la aplicación no establece los valores del Registro para la interfaz de usuario del servicio, los valores del Registro permanecen establecidos en English, incluso si la interfaz de usuario está en otro idioma.
Temas relacionados