Partilhar via


Usando o redirecionamento de strings do Registro

O armazenamento de cadeias de caracteres codificadas no Registro faz parte de um modelo de localização anterior ao Windows Vista. Não é suportado pelo MUI. No modelo atual, a interface do usuário para o sistema operacional é executada em arquivos de recursos específicos do idioma sobre uma base neutra de idioma. Os componentes do sistema operacional usam o registro de maneira neutra em termos de idioma.

MUI usa apenas cadeias de caracteres de registro redirecionadas definidas por recursos do Win32 PE no arquivo de recurso de idioma 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 recursos.

Observação

Este tópico refere-se apenas aos recursos do Win32 PE. Se estiver a usar recursos que não sejam do Win32 PE, deve fornecer o redirecionamento personalizado das strings do registo, se necessário.

 

Criar um recurso de Language-Neutral

Um aplicativo MUI em execução no Windows Vista e posterior usa um recurso de cadeia de caracteres com neutralidade de idioma para permitir o acesso a cadeias de caracteres específicas do idioma armazenadas em uma tabela de recursos de cadeia de caracteres. O código do aplicativo que lê esses valores do Registro é descrito na seção Carregar um valor do Registro Language-Neutral de Localizando cadeias de caracteres redirecionadas.

Os dados para um valor de registo neutro em termos de idioma têm o formato "@<PE-path>,-<stringID>[;<comment>]", onde:

  • PE-path Especifica 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 fazer a sua referência de string é omitir as informações de 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.
  • stringID Especifica o identificador de recurso numérico do recurso de cadeia de caracteres relevante, que é implementado como qualquer outro recurso de cadeia de caracteres localizável.
  • comment Especifica informações opcionais para depuração ou legibilidade do valor do Registro. As funções da API do Registro ignoram o comentário ao carregar a cadeia de caracteres.

Observação

Os dados para o valor do registo não fazem referência explícita ao ficheiro de recurso específico do idioma. O arquivo correto é determinado em tempo de execução, com base nas preferências atuais de idioma da interface do usuário.

 

Um valor do Registro é inserido sem um espaço entre "," e "-". Um valor de registo correto é:

shell32.dll,-22912

Um valor de registo incorreto é:

shell32.dll, -22912

Um exemplo do Windows Vista é o valor do Registro com os seguintes dados:

@%SystemRoot%\system32\input.dll,-5020

Criar recursos para sequências de atalho

Quando o aplicativo MUI exibe seu nome na interface do shell usuário, uma cadeia de caracteres InfoTip é exibida 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 suportado. Quando os recursos estiverem prontos, a sua aplicação poderá utilizar as cadeias de caracteres conforme descrito na secção Usar Shell API para carregar cadeias de caracteres de atalhos a partir do Registro da secção Localização de cadeias de caracteres redirecionadas.

Preparar recursos para um atalho criado com o Windows Installer

Se utilizar o Windows Installer (MSI) para criar um atalho, os recursos de sequência de caracteres incluem o nome para exibição do 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 e a descrição do atalho 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 em mente os seguintes pontos 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 cadeia de caracteres 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. Estas instruções pressupõem o uso da sintaxe ProfileItems da API de instalação.

  1. Altere o valor InfoTip para apontar para a referência de redirecionamento de cadeia, utilizando o caminho e o identificador de recurso.
  2. Adicione o novo valor DisplayResource nas seções de instalação ProfileItems.

Segue-se um exemplo que mostra a adição da aplicação 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. Esta sintaxe pressupõe o uso do suporte de [StartMenuItems] do Setup, semelhante à sintaxe usada em Syssetup.inf.

[StartMenuItems]
<description> = <binary>,<commandline>,<iconfile>,<iconnum>,<infotip>,<resDLL,resID>

Defina o valor de dica de informação para a referência de cadeia de caracteres "@<path>,-resID".

O nome para 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 de idioma neutro. O valor resDLL especifica o caminho para o arquivo de idioma neutro.

Criar recursos para nomes de tipo de documento amigáveis

Você deve implementar o nome amigável e cadeias de caracteres InfoTip para seu aplicativo como recursos de cadeia de caracteres. Para permitir que nomes de tipo de documento amigáveis reajam ao idioma da interface do usuário, o aplicativo deve registrar os nomes usando o valor FriendlyTypeName sob a chave identificador de programa para o tipo de arquivo. O valor padrão para a 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 do seu aplicativo, consulte Nomes de tipo de documento amigáveis para consulta na seção Registro de Localizando cadeias de caracteres redirecionadas.

O trabalho específico envolve as seguintes etapas:

  1. Implemente o nome amigável e as cadeias de texto de dica informativa como recursos de texto específicos do idioma.
  2. Adicione o valor FriendlyTypeName sob a chave do registro do tipo de documento. Os dados para o valor seguem o padrão "@<path>,-<resID>", onde 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.
  3. 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 ShellVerb cadeias de caracteres de ação

As 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 cadeias de caracteres para verbos comuns shell , pois o shell tem seus próprios padrões habilitados para MUI 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 anteriores ao Windows XP, as cadeias de caracteres para shell verbos no Registro são renderizadas usando a seguinte sintaxe, onde verb especifica o nome real verb :

HKCR\<progid>\shell\<verb>
@ = <friendly-name>

Aqui está um exemplo:

HKCR\Sample.app\shell\Disc
@ = "Disconnect"

No Windows XP e em versões posteriores, pode usar um nível de indireção para fazer com que uma cadeia de caracteres de ação dependa do idioma da interface do utilizador. Esses sistemas operacionais suportam um valor MUIVerb para a definição de uma cadeia de caracteres compatível com MUI. Aqui está um exemplo de uma entrada de 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, Protocole AuxUserType Strings

Você deve criar recursos de cadeia de caracteres localizáveis para Verb, Protocol, e 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 para Your Verb, não os dois valores de sinalizador.

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 string individual Verb usando HKCR\CLSID\{clsid}\Verb\xxx\LocalizedString.
  • Se CLSID tiver uma ou mais subchaves em HKCR\{progid}\Protocol\Stdfileediting\Verb, defina cada string 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 registar o programa de desinstalação para a aplicação, pode criar valores no registo na subchave do identificador exclusivo para a aplicação sob a chave HKEY\_LOCAL\_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall do registo. Os valores a definir incluem: DisplayName, DisplayVersion, Publisher, ProductID, RegOwner, RegCompany, UrlInfoAbout, HelpTelephone, HelpLink, InstallLocation, InstallSource, InstallDate, Contact, Comments, DisplayIcon, Readme, UrlUpdateInfo.

Observação

Para habilitar a tecnologia MUI para cada valor, você pode acrescentar "_Localized" ao nome do valor.

 

Os componentes do sistema operativo devem fornecer um valor de maneira específica para o DisplayName_Localized MUI. Você deve colocar o nome para 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 ficheiros de som, por exemplo, um evento de Notificação de Novo Correio ou um evento de Alarme de Bateria Crítica. Os nomes dos eventos devem ser exibidos pela interface do usuário e devem oferecer suporte à globalização. Portanto, você deve implementar um recurso de cadeia de caracteres localizável para a descrição de cada descrição de evento. Adicione um novo valor do Registro para cada nome de evento, além do valor padrão codificado.

Faça o seguinte para habilitar um evento sonoro:

  1. Implemente a descrição como um recurso de cadeia de caracteres localizável.
  2. Adicione um novo valor do Registro para o nome para exibição, além do valor padrão codificado. O layout do Registro associado é mostrado abaixo:
HKCR\AppEvents\EventLabels
<event_name>
    (Default) REG_SZ "<description>"
    DispFileName REG_EXPAND_SZ "@<path>,-<resID>"

Se não for possível shell localizar ou recuperar o valor de DispFileName, usará a descrição padrão.

Criar recursos para cadeias de caracteres de layout de teclado

Se seu aplicativo implementa um layout de teclado, ele requer 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 tem uma chave do registro em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts.

Entre os valores para essa chave estão Layout Text, um nome legível por humanos para compatibilidade com versões anteriores, e Layout Display Name. Os dados fornecidos para Layout Display Name devem ser uma referência de cadeia de caracteres do formulário @<path>,-resID, referindo-se a um recurso de cadeia de caracteres localizável associado ao layout do teclado.

Aqui está um exemplo de uma configuração do Registro para o layout de 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 de inserção de objeto OLE

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 Inserir objeto OLE obtém um nome de exibição da chave do Registro HKCR\CLSID\{<GUID>}, onde GUID identifica o identificador de classe de um objeto OLE inserível. O Windows Vista e posteriores implementam esse tipo de objeto de forma localizável, usando um nome de exibição compatível com MUI que permite a personalização para o idioma da interface do usuário. Por outro lado, os sistemas operacionais anteriores ao 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 inseríveis.

 

O valor padrão da chave HKCR\CLSID\{<GUID>} deve manter um nome legível por humanos para compatibilidade com versões anteriores. No entanto, ele também deve definir o valor LocalizedString, no formato "@<path>,-ResID", onde path 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 para o objeto Media Clip 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 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. Ele indica o identificador de cadeia de caracteres armazenado em Mplay32.exe. A cadeia de caracteres com 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 Microsoft Snap-Ins

Você deve criar um recurso de cadeia de caracteres localizável para cada snap-in do Console de Gerenciamento Microsoft (MMC) usado pelo seu aplicativo MUI. Como um snap-in faz parte de um console, ele tem uma interface de usuário e deve ser globalizado para operar em mais de um idioma.

Na maioria das vezes, os snap-ins do MMC levantam os mesmos problemas de globalização e localização que o próprio aplicativo MUI. Um snap-in do MMC deve refletir o seu nome no registo para exibição. A entrada do registo deve incluir uma referência indireta a um recurso localizável em forma de string e uma string literal para compatibilidade com versões anteriores.

Cada snap-in do MMC tem uma chave do registo em HKEY\_LOCAL\_MACHINE\\Software\\Microsoft\\MMC\\SnapIns. Entre os valores para essa chave estão NameString, especificando um nome legível por humanos para compatibilidade com versões anteriores e NameStringIndirect, especificando 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, onde 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 registam outros valores de cadeias do Registro que o MMC não lê. Para obter mais informações sobre como usar esses valores, consulte Registo do Console de Gestão da Microsoft Snap-In Cadeias de Caracteres Não Lidas no Registo em Localizando Cadeias de Caracteres Redirecionadas.

Criar recursos de cadeia de caracteres para um serviço do Windows

Embora um serviço do Windows normalmente tenha pouca ou nenhuma interface de usuário, ele deve exibir um nome compatível com MUI e geralmente fornece uma descrição específica do idioma compatível com MUI. A chave do Registro que descreve um serviço do Windows oferece suporte apenas ao DisplayName valor para o nome do serviço e o Description valor para a descrição do serviço.

As configurações para o serviço do Windows são feitas a partir do aplicativo, conforme descrito em Definir o Nome para Exibição e a Descrição de um Serviço do Windows do Registro em Localizando Cadeias de Caracteres Redirecionadas. Se o seu 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.

Preparação de recursos

Localizando cadeias de caracteres redirecionadas