Como utilizar uma DLL de satélite para fins de localização

Traduções de Artigos Traduções de Artigos
Artigo: 188659 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo demonstra como utilizar uma DLL de satélite para fornecer a localização de dinâmica para uma aplicação do Visual Basic 6.0.

Mais Informação

Visual Basic permite-lhe utilizar ficheiros de recursos para ajudar a localizar uma aplicação. Localização é o processo de adaptar um programa para um mercado internacional específico, que inclui a personalizar a interface de utilizador e funcionalidades da aplicação. Embora seja possível utilizar ficheiros de recursos separado dentro de uma aplicação, não é recomendável porque os ficheiros de recursos são compilados numa aplicação e terá de criar e redistribuir um executável novo com cada alteração ao ficheiro de recursos.

Com a utilização de uma DLL de satélite, uma aplicação pode facilmente direccionar vários idiomas. Para isto ocorrer, terá de colocar todos os recursos que seja exclusivos para o idioma para uma DLL separado. Quando a aplicação for iniciada, a aplicação detectará a definição regional está a ser utilizada pelo computador e, em seguida, irá carregar a DLL adequada. Simplesmente compilar e distribuir uma DLL adicional, que contém o ficheiro próprio recurso único, é mais fácil suportar idiomas adicionais.

Como funciona uma DLL de satélite

Para tornar um satélite DLL funcione correctamente, a aplicação tem de determinar a localização (definição) do computador que estiver a utilizar. Quando o aplicativo é iniciado pela primeira vez, determina o ID de região do sistema operativo chamando GetUserDefaultLCID. A aplicação utiliza este ID de região para carregar uma DLL que contém o número de ID de região específico como parte do respectivo nome. Se a aplicação localizar a DLL, a aplicação utilizará os recursos contidos a DLL. Se a aplicação não encontrar a DLL, as predefinições de aplicação para o idioma foi compilado com.

A diferença entre as DLLs é nos ficheiros de recurso único, que são utilizados para o idioma específico que está a ser o destino. Que contém o mesmo código e a mesma interface básica, a aplicação principal pode utilizar qualquer das DLLs. Cada satélite DLL deve ter o nome de uma forma semelhante e padrão. Para o exemplo abaixo, "TestSat" + LocaleID da região é utilizado, em que duas LocaleID é apresentados da seguinte forma:
   409 : LocaleID for English (United States)
   40C : LocaleID for French (Standard)
				
A DLL de satélite inglês no exemplo abaixo vai ter o nome "TestSat409.DLL" e a DLL de satélite francês terá o nome "TestSat40C.DLL". A aplicação de teste contém o código necessário para determinar o local está a ser executado no e como carregar o satélite DLL adequado.

Os passos de exemplo abaixo mostram como criar um satélite simples DLL, como para determinar a região uma aplicação está em execução no e como criar e carregar os recursos adequados.

Passos para criar a aplicação de teste

  1. Crie um projecto EXE padrão novo no Visual básico 6.0. É criado o Form1 por predefinição.
  2. Adicione um módulo padrão ao projecto seleccionando Adicionar módulo no menu Project.
  3. Adicione um botão de comando ao Form1.
  4. Adicione o seguinte código à secção Declarations do Form1:
          Private Sub Command1_Click()
             MsgBox "Command Button was Clicked", vbOKOnly, "Satellite Test"
          End Sub
    
          Private Sub Form_Load()
    
          ' When this application launches, the code attempts
          ' to find a local satellite DLL that will contain all the
          ' resources.
    
             If (LoadLocalizedResources) Then
    
                ' Pull a string resource out of a local resource
                ' object for demonstration purposes.
                Command1.Caption = GetString(101)
             End If
         End Sub
    					
  5. Adicione o seguinte código ao Module1:
          Option Explicit
    
          ' This module contains all the code necessary for the application
          ' to use a satellite DLL for localization purposes.
    
          ' Please refer to the MSDN for more information regarding the APIs
          ' used in this example.
    
          Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
    
          ' Object reference to the DLL that contains the resources
          ' to be loaded.
          Private clsSatellite As Object
    
          Public Function LoadLocalizedResources() As Boolean
             Dim lLocalID As String
    
             ' Find the LocalID.
             lLocalID = Hex(GetUserDefaultLCID)
    
             ' Load the Satellite DLL that contains the local
             ' resource object to be used. If CreateObject
             ' fails, there is no local version of the
             ' resources.
    
             On Error GoTo NoLocalResource
    
             ' Create a local object containing resources.
             Set clsSatellite = CreateObject("TestSat" & lLocalID & _
                ".clsResources")
    
             ' Return true, then read local resources.
             LoadLocalizedResources = True
          Exit Function
    
          NoLocalResource:
    
             ' There is no local satellite DLL. As a result, false is returned.
    
             LoadLocalizedResources = False
    
          End Function
    
          ' GetString will access the object and return the string
          ' resources specific to the region. For this example, only
          ' basic error handling is implemented.
    
          Public Function GetString(StringIndex As Long) As String
    
           ' Make sure there is a resource object.
             If Not (clsSatellite Is Nothing) Then
                ' Get the resource from the resource object.
                GetString = clsSatellite.GetResourceString(StringIndex)
             Else
               ' For this example, if there is no resource
               ' object something is still returned.
               GetString = "Error : No Local Data"
             End If
          End Function
    					
  6. Guarde e compilar o projecto (Project1.Exe).

Passos para criar DLLs de satélite

  1. Crie um novo projecto de DLL de ActiveX no Visual Basic 6.0. Aula1 é criado por predefinição.
  2. No menu Project, seleccione Propriedades do projeto1. Definir o nome do projecto para "TestSat409."
  3. Mude o nome Aula1 para clsResources.
  4. Cole o código seguinte no clsResources:
          Public Function GetResourceString(ResourceIndex As Long) As String
             GetResourceString = LoadResData(ResourceIndex, 6)
          End Function
    
    					
  5. Inicie o Visual Basic 6.0 Resource Editor suplemento.
  6. No Editor de recursos, seleccione 'Editar tabelas de cadeia'.
  7. Uma nova tabela de cadeia será criada, com um recurso em branco (101). Introduza algum texto de exemplo num recurso (por exemplo, "idioma inglês").
  8. Feche o editor de cadeia e guarde o ficheiro de recursos como "TestSat409.Res".
  9. Guardar o projecto e efectue a DLL de ActiveX.
  10. Efectue os passos 1 a 9 novamente, mas desta vez altere o nome do projecto para "TestSat40C", guarde o ficheiro de recursos como "TestSat40C.Res" e modificar a cadeia contida no passo 7 para "Idioma francês". Para este teste específico, guarde cada DLL de satélite na sua própria pasta, colocando o ficheiro de recursos e DLL de ActiveX na sua própria pasta.

Passos para as DLL de satélite de teste

  1. A partir do painel de controlo do Windows, seleccione definições regionais.
  2. Seleccione "Inglês (Estados Unidos)." O sistema pode lhe para reiniciar o computador se outra região originalmente tiver sido seleccionada.
  3. Execute o projecto de teste (Project1.exe). A legenda do botão de comando deve ter a cadeia de recurso "Inglês" utilizado para a DLL de ActiveX primeiro.
  4. A partir do painel de controlo do Windows, seleccione definições regionais novamente.
  5. Seleccione Francês (padrão). Se estiver a utilizar o Windows 95 ou Windows 98 tem de reiniciar o computador.
  6. Execute o projecto de teste (Project1.exe). A legenda do botão de comando deve ter a "Francês" cadeia de recurso utilizado para a segunda DLL de ActiveX.
  7. Para fins de teste, mude o nome a Test40C.dll. Volte a executar o projecto de teste (Project1.Exe). Botão de comando deve ter o valor predefinido legenda "Command1". Isto acontece porque a aplicação não conseguiu localizar um satélite localizada DLL a utilizar. Como resultado, a aplicação utilizada a legenda predefinidos do botão de comando.

Propriedades

Artigo: 188659 - Última revisão: 13 de julho de 2004 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palavras-chave: 
kbmt kbhowto KB188659 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 188659

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com