Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O armazenamento de cadeias de caracteres codificadas no registro faz parte de um modelo de localização pré-Windows Vista. Não há suporte para MUI. No modelo atual, a interface do usuário para o sistema operacional é executada em arquivos de recurso específicos do idioma, sobre uma base neutra de idioma. Os componentes do sistema operacional usam o Registro de maneira neutra em linguagem.
O MUI usa apenas cadeias de caracteres de registro redirecionadas definidas pelos recursos do Win32 PE no arquivo de recurso de linguagem base. O redirecionamento é definido separadamente, por exemplo, em um arquivo .inf. Esse tipo de armazenamento permite que o carregador de recursos selecione os recursos de idioma corretos automaticamente durante o carregamento do módulo de recurso.
Observação
Este tópico pertence somente aos recursos do Win32 PE. Se estiver utilizando recursos PE não Win32, você deve fornecer o redirecionamento personalizado da string do registro, se necessário.
Criar um recurso de Language-Neutral
Um aplicativo MUI executando no Windows Vista e versões posteriores utiliza um recurso de cadeia de caracteres neutro em relação à linguagem para permitir o acesso a cadeias de caracteres específicas do idioma armazenadas em uma tabela de recursos. O código do aplicativo que lê esses valores do registro é descrito na seção Carregar um Valor de Registro Language-Neutral de Localizar Cadeias de Caracteres Redirecionadas.
Os dados de um valor de registro neutro em linguagem têm o formato "@<PE-path>,-<stringID>[;<comment>]", em que:
-
PE-pathespecifica o caminho do executável. Você pode especificar o caminho usando uma variável de ambiente, como %ProgramFiles%, para dar suporte à implantação. Uma alternativa para criar sua referência de string é omitir as informações do caminho do arquivo. Nesse caso, seu aplicativo deve ter alguns meios, por exemplo, outro valor do Registro, para comunicar seu próprio diretório de instalação. -
stringIDespecifica o identificador de recurso numérico do recurso de cadeia de caracteres relevante, que é implementado da mesma forma que qualquer outro recurso de cadeia de caracteres localizável. -
commentespecifica informações opcionais para facilitar a depuração ou tornar legível o valor do registro. As funções de API do Registro ignoram o comentário ao carregar a cadeia de caracteres.
Observação
Os dados do valor do Registro não fazem referência explícita ao arquivo de recurso específico do idioma. O arquivo correto é determinado em runtime, com base nas preferências atuais da linguagem de interface do usuário.
Um valor do Registro é inserido sem um espaço entre o "," e "-". Um valor correto do Registro é:
shell32.dll,-22912
Um valor incorreto do Registro é:
shell32.dll, -22912
Um exemplo do Windows Vista é o valor do registro com os seguintes dados:
@%SystemRoot%\system32\input.dll,-5020
Criar recursos para cadeias de caracteres de atalho
Quando o aplicativo MUI exibe seu nome na interface do shell usuário, um texto InfoTip é exibido para o ícone do aplicativo. Você deve criar recursos de cadeia de caracteres para o nome de exibição do aplicativo e a cadeia de caracteres InfoTip associada para cada idioma com suporte. Quando os recursos estiverem prontos, seu aplicativo poderá usar a API Shell conforme descrito na seção Use a API para Carregar Cadeias de Caracteres de Atalho do Registro de Localizar Cadeias de Caracteres Redirecionadas.
Preparar recursos para um atalho criado com o Windows Installer
Se você usar o MSI (Windows Installer) para criar um atalho, os recursos de cadeia de caracteres incluirão o nome de exibição de atalho e a descrição. Na tabela de atalho MSI, a DLL do recurso é referenciada nas colunas apropriadas e os identificadores de recurso para o nome de exibição do atalho e a descrição são usados nas colunas de identificador de recurso correspondentes.
Para que o atalho do aplicativo funcione corretamente com a tecnologia de recursos MUI, tenha os seguintes pontos em mente ao preparar as cadeias de caracteres de atalho:
- Use variáveis de ambiente ou um caminho relativo para registrar a DLL. Você pode especificar @%systemroot%\system32\shell32.dll desde que o tipo de cadeia de caracteres do Registro seja REG_EXPAND_SZ. O identificador de recurso de string para "Documento de Texto" no Shell32.dll é 12345.
- Não use espaços ao redor dos símbolos "" e "-". Um exemplo correto é "shell32.dll,-22912".
- Não use um nome de arquivo curto. Esse tipo de nome não funciona com o carregador de recursos.
Preparar recursos para um atalho usando o formato INF
Se você usar o formato de arquivo INF para criar cadeias de caracteres de atalho, o arquivo de recurso deverá fazer as seguintes configurações do Registro. Essas instruções pressupõem o uso da sintaxe ProfileItems da API de Instalação.
- Altere o valor do InfoTip para apontar à referência de redirecionamento da cadeia de caracteres, utilizando o caminho e o identificador de recurso.
- Adicione o novo valor DisplayResource nas seções de instalação do ProfileItems.
Veja a seguir um exemplo mostrando a adição do aplicativo Calculadora ao menu Iniciar :
[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 a sintaxe mostrada abaixo ao usar INF para adicionar itens, por exemplo, uma pasta grupo de acesso, ao menu Iniciar . Essa sintaxe pressupõe o uso do suporte [StartMenuItems] da Instalação, semelhante à sintaxe usada em Syssetup.inf.
[StartMenuItems]
<description> = <binary>,<commandline>,<iconfile>,<iconnum>,<infotip>,<resDLL,resID>
Defina o valor da dica de informações como a referência de cadeia de caracteres "@<path>,-resID".
O nome de exibição é determinado pelos valores resDLL e resID . O valor resID especifica o identificador de recurso para um recurso de cadeia de caracteres associado ao arquivo neutro de linguagem. O valor resDLL especifica o caminho para o arquivo neutro do idioma.
Criar recursos para nomes de tipo de documento amigáveis
Você deve implementar nomes amigáveis e InfoTips para seu aplicativo como recursos de strings. Para permitir que nomes de tipo de documento amigáveis reajam à linguagem de interface do usuário, o aplicativo deve registrar os nomes usando o valor FriendlyTypeName na chave do identificador do programa para o tipo de arquivo. O valor padrão da chave do identificador do programa deve ser mantido para manter a compatibilidade com versões anteriores. Para obter informações sobre como acessar os nomes a partir do seu aplicativo, consulte a seção Nomes de Tipos de Documentos Favoráveis à Consulta no Registro de Localizar Cadeias de Caracteres Redirecionadas.
O trabalho específico envolve as seguintes etapas:
- Implemente o nome amigável e as cadeias de caracteres infotip como recursos de cadeia de caracteres específicos do idioma.
- Adicione o valor FriendlyTypeName na chave de registro do tipo de documento. Os dados do valor seguem o padrão "
@<path>,-<resID>", em que o caminho indica o executável e resID é o identificador de recurso de um recurso de cadeia de caracteres localizável associado a esse executável. - Especifique o valor do registro InfoTip de acordo com o formato "
@<path>,-<resID>".
O exemplo a seguir mostra as configurações do Registro para um arquivo .txt:
HKCR\.txt
@="txtfile"
"Content Type"="text/plain"
HKCR\txtfile
@="Text Document"
"FriendlyTypeName" = "@%systemroot%\system32\shell32.dll,-12345"
"InfoTip" = "@%systemroot%\system32\shell32.dll,-12346"
Fornecer recursos para strings de ação ShellVerb
Cadeias de caracteres de ação para determinados verbos, por exemplo, "open" e "edit", são mostradas no menu pop-up exibido quando o usuário clica com o botão direito do mouse em um arquivo no Windows Explorer. Seu aplicativo não precisa especificar strings para verbos comuns shell, pois o shell possui padrões habilitados para MUI próprios para esses verbos. No entanto, você deve fornecer recursos de cadeia de caracteres localizáveis para cadeias de caracteres que representam verbos incomuns.
Em sistemas operacionais XP pré-Windows, as cadeias de caracteres para shell verbos no registro são renderizadas usando a seguinte sintaxe, em que verb especifica o nome real verb :
HKCR\<progid>\shell\<verb>
@ = <friendly-name>
Veja um exemplo:
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
No Windows XP e posterior, você pode usar um nível de indireção para fazer com que uma string de ação dependa do idioma da interface do usuário. Esses sistemas operacionais dão suporte a um valor MUIVerb para definição de uma cadeia de caracteres compatível com MUI. Aqui está um exemplo de uma entrada do registro para um incomum verb:
HKCR\Sample.app\shell\Disc
@ = "Disconnect"
"MUIVerb" = "@%systemroot%\system32\sample.exe,-9875"
Seu aplicativo MUI também deve ser capaz de registrar o valor padrão antigo como uma cadeia de caracteres localizável, conforme mostrado abaixo:
HKCR\Sample.app\shell\Disc
@ = "@%systemroot%\system32\sample.exe,-9875"
Observação
O registro do valor padrão antigo não é recomendado porque requer uma configuração diferente no Windows XP e posterior da configuração usada em sistemas operacionais anteriores.
Criar recursos para Verb, Protocol e cadeias de caracteres AuxUserType
Você deve criar recursos de cadeia de caracteres localizáveis para Verb, Protocol e cadeias de caracteres AuxUserType. Use as seguintes configurações do 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"
...
O valor especificado para LocalizedString contém ou substitui apenas o valor de Your Verb, e não os dois valores de flag.
Aqui está um resumo para ajudá-lo a garantir as configurações corretas do Registro:
- Se CLSID tiver uma chave HKCR\CLSID\{clsid}\Insertable, defina o valor CLSID padrão usando HKCR\CLSID\{clsid}\LocalizedString.
- Se CLSID tiver uma ou mais subchaves em HKCR\CLSID\{clsid}\Verb, defina cada cadeia de caracteres individual Verb usando HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString.
- Se CLSID tiver uma ou mais subchaves em HKCR\{progid}\Protocol\Stdfileediting\Verb, defina cada cadeia de caracteres individual Verb usando HKCR\{progid}\Protocol\Stdfileediting\Verb\xxx\LocalizedString.
- Se CLSID tiver uma ou mais subchaves AuxUserType listadas em HKCR\CLSID\{clsid}\AuxUserType, defina cada entrada AuxUserType usando HKCR\CLSID\{clsid}\AuxUserType\xxx\LocalizedString.
Criar um recurso para o programa de desinstalação
Para registrar o programa de desinstalação para o aplicativo, você pode criar valores de registro na subchave do identificador exclusivo para o aplicativo na chave HKEY\_LOCAL\_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall do Registro. Os valores a serem definidos incluem: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, CommentsDisplayIcon, Readme, UrlUpdateInfo.
Observação
Para habilitar a tecnologia MUI para cada valor, você pode acrescentar "_Localized" ao nome do valor.
Os componentes do sistema operacional devem fornecer um valor para DisplayName_Localized de uma maneira específica do MUI. Você deve colocar o nome de exibição em uma DLL, como Res.dll, como um recurso de cadeia de caracteres, supondo que o identificador seja 1245. Em seguida, o aplicativo pode registrar o nome de exibição como DisplayName_Localized com o valor "@\res.DLL,-1245". Todas as outras configurações do Registro devem ser mantidas como estão, incluindo o valor original para DisplayName.
Criar recursos para eventos sonoros
O Windows associa determinados eventos a arquivos de som, por exemplo, um evento new mail notification ou um evento de alarme de bateria crítico. Os nomes de evento devem ser exibidos pela interface do usuário e devem dar suporte à globalização. Portanto, você deve implementar um recurso de cadeia de caracteres localizável para a descrição de cada descrição do evento. Adicione um novo valor de registro para cada nome de evento, além do valor padrão codificado em código.
Faça o seguinte para habilitar um evento de som:
- Implemente a descrição como um recurso de cadeia de caracteres localizável.
- Adicione um novo valor de registro para o nome de exibição, além do valor padrão codificado em código. O layout do Registro associado é mostrado abaixo:
HKCR\AppEvents\EventLabels
<event_name>
(Default) REG_SZ "<description>"
DispFileName REG_EXPAND_SZ "@<path>,-<resID>"
Se shell não conseguir encontrar ou recuperar o valor de DispFileName, usará a descrição padrão.
Criar recursos para cadeias de caracteres de layout de teclado
Se o aplicativo implementar um layout de teclado, ele exigirá um recurso de cadeia de caracteres localizável para o nome do layout para exibição de tela, por exemplo, em listas de layouts de teclado. Cada layout de teclado possui uma chave de Registro em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts.
Entre os valores dessa chave estão Layout Text, um nome legível para compatibilidade com versões anteriores e Layout Display Name. Os dados fornecidos Layout Display Name devem ser uma referência de texto do tipo @<path>,-resID, referindo-se a um recurso de texto localizável associado ao layout do teclado.
Aqui está um exemplo de uma configuração do Registro para o layout do teclado espanhol:
HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\
0000040a
Layout Text REG_SZ "Spanish"
Layout Display Name REG_EXPAND_SZ "@%SystemRoot%\system32\input.dll,-5020"
Representar cadeias de diálogo comuns do objeto OLE Insert
Você pode implementar o nome de exibição de um objeto inserível OLE como um recurso de cadeia de caracteres localizável associado ao código que implementa esse objeto. A caixa de diálogo OLE Insert Object obtém um nome de exibição da chave do Registro HKCR\CLSID\{<GUID>}, em que o GUID identifica o identificador de classe de um objeto OLE inserível. O Windows Vista e posteriormente implementam esse tipo de objeto de maneira localizável, usando um nome de exibição compatível com MUI que permite a personalização para a linguagem de interface do usuário. Por outro lado, os sistemas operacionais pré-Windows Vista implementam o nome de exibição para esse tipo de objeto usando o valor padrão da chave do Registro correspondente. Normalmente, esse nome é um nome em inglês (Estados Unidos) ou um nome no idioma padrão da interface do usuário do sistema.
Observação
Nem todos os objetos que correspondem a subchaves da chave do Registro são inseriveis.
O valor padrão da chave HKCR\CLSID\{<GUID>} deve manter um nome legível para compatibilidade com versões anteriores. No entanto, ele também deve definir o valor LocalizedString, no formato "@<path>,-ResID", em que o caminho identifica o arquivo executável que implementa o objeto. O valor ResID especifica o identificador de recurso da string localizável para o nome de exibição.
Por exemplo, o script de registro do objeto Clipe de Mídia inserível inclui as seguintes linhas:
HKCR,"CLSID\%CLSID_Media_Clip%",,,"%default description%"
HKCR,"CLSID\%CLSID_Media_Clip%","LocalizedString",,"@%systemroot%\system32\mplay32.exe,-9217"
A primeira linha fornece compatibilidade com versões anteriores colocando uma cadeia de caracteres de texto simples no registro como um nome de exibição padrão. A segunda linha fornece acesso ao nome de exibição compatível com MUI. Indica o identificador de cadeia de caracteres armazenado em Mplay32.exe. A cadeia de caracteres com o identificador 9217 em Mplay32.exe pode ser associada a valores de recurso de cadeia de caracteres para qualquer número de idiomas. Seu nome em inglês (Estados Unidos) é "Media Clip".
Criar recursos de cadeia de caracteres para o Console de Gerenciamento da Microsoft Snap-Ins
Você deve criar um recurso de cadeia de caracteres localizável para cada snap-in do Microsoft Management Console (MMC) usado pelo aplicativo MUI. Como um snap-in faz parte de um console, ele tem uma interface do usuário e deve ser globalizado para operar em mais de um idioma.
Na maioria das vezes, os snap-ins do MMC geram os mesmos problemas de globalização e localização que o próprio aplicativo MUI. Um snap-in do MMC deve refletir seu nome no Registro para exibição. A entrada do Registro deve incluir uma referência indireta a um recurso de cadeia de caracteres localizável e uma cadeia de caracteres literal para compatibilidade com versões anteriores.
Cada snap-in do MMC tem uma chave do Registro em HKEY\_LOCAL\_MACHINE\\Software\\Microsoft\\MMC\\SnapIns. Entre os valores dessa chave estão NameString, especificando um nome legível para compatibilidade com versões anteriores e NameStringIndirectespecificando uma referência indireta a um recurso de cadeia de caracteres localizável. Para NameStringIndirect, você deve fornecer uma referência de cadeia de caracteres do formulário "@<path>,-resID", representando um recurso de cadeia de caracteres localizável.
Por exemplo, você pode fazer a seguinte configuração para Mymmc.dll, em que 12345 é o identificador do recurso de cadeia de caracteres correspondente que contém o nome localizável do snap-in:
NameStringIndirect=@%systemroot%@c:\windir\system32\mymmc.dll,-12345
Alguns snap-ins registram outros valores de cadeia de caracteres do Registro que o MMC não lê do registro. Para obter mais informações sobre como usar esses valores, consulte Registrar o Console de Gerenciamento da Microsoft Snap-In Cadeias de Caracteres Não Lidas do Registro em Localizar Cadeias de Caracteres Redirecionadas.
Criar recursos de cadeia de caracteres para um serviço Windows
Embora um serviço Windows normalmente tenha pouca ou nenhuma interface do usuário, ele deve exibir um nome compatível com MUI e geralmente fornece uma descrição específica da linguagem em conformidade com MUI. A chave do Registro que descreve um serviço Windows dá suporte apenas ao valor do DisplayName nome do serviço e ao Description valor da descrição do serviço.
As configurações do serviço Windows são feitas a partir do aplicativo, conforme descrito em Definir o Nome de Exibição e a Descrição de um Serviço windows do Registro em Localizar Cadeias de Caracteres Redirecionadas. Se o aplicativo não definir os valores do Registro para a interface do usuário do serviço, os valores no registro permanecerão definidos como English, mesmo que a interface do usuário esteja em outro idioma.
Tópicos relacionados