AJUDA COM TROCA DE IDIOMA

THIAGOMANZ 02/03/2011 22:33:08
#367084
Pessoal

Estou querendo fazer o seguinte um sistema com mais de um idioma qdo a pessoa trocar o idioma eu usarei uma rotina para mudar o idioma de todos os campos do programa,porem eu gostaria de fazer o seguinte e peco a ajuda se alguem sabe como fazer...

usarei um BD onde terei uma coluna identificando o nome do campo e outras colunas cada uma referente a um idioma eu pensei em colocar no proprio na coluna do campo o endereco dele ja e utilizar isso em codigo num for exemplo

Colunas
Campo Ingles Portugues
cadastro.txtnome.text New Novo

ai na rotina eu criaria um for que iria ate o final do BD mas ja usaria a coluna campo p identificar e ja alterar os controles

exemplo
ao inves de fazer assim:

cadastro.txtnome.text = [Ô]New[Ô]
cadastro.txttelefone.text = [Ô]12121212[Ô]
cadastro.txtendereço.text = [Ô]hkjhjkhlkj[Ô]
e por ai vai

queria usar um

for i =0 to BD.count-1

e dentro desse for pegar a linha da coluna campo e mover o valor da coluna ingles ou portugues....

next

Deu p entender? rsssss nao sou muito bom p explicar minhas ideias hahahah
Se tiverem outra ideia que possa ser mais pratica e clean pode falar

Abraços






HIDDEN 03/03/2011 09:38:08
#367116
O raciocínio lógico é mais ou menos isso aí que você colocou. Basta agora o trabalho braçal. Mas faço uma sugestão. Não use uma tabela para idiomas, com uma coluna para cada idioma. Assim, a cada idioma, você teria que criar uma coluna. O ideal, na minha opnião, é você criar 2 tabelas, fazendo o relacionamento entre elas. Isso tornaria ilimitado a quantidade de idiomas, sem que você tenha que alterar a tabela (criando a nova coluna) a cada novo idioma.

Tabela 1: Idiomas (1. Codigo, 2. Nome)
Tabela 2: Traduções (1. Codigo do Idioma, 2. Codigo, 3. Campo, 4. Texto)

Exemplo:

Tabela 1:

1033, Inglês (US)
1046, Português (PTBR)

Tabela 2:

1033, 1, cadastro.txtnome, Name
1033, 2, cadastro.txtfone, Phone
1046, 1, cadastro.txtnome, Nome
1046, 2, cadastro.txtfone, Telefone
THIAGOMANZ 05/03/2011 18:36:08
#367342
Achei legal isso mas to com duvida de como por exemplo quero deixar um campo com o caminho do text box

ex:

my.forms.Cadastro.txtname.text

com faço p q o vb entenda qdo eu ler esse campo q ele nao é apenas um dado e sim um caminho de um textbox?

deu p entender?

ai no codigo queria saber como fazer

(valor lido no campo) = [Ô]thiago[Ô] [ô]entre parenteses é o que vou ler do campo do BD
my.forms.Cadastro.txtname.text = [Ô]thiago[Ô] [ô] Como eu gostaria qo vb entendesse o valor do BD assim ele procuraria esse textbox e colocaria o nome [Ô]thiago no exemplo[Ô]




HIDDEN 07/03/2011 21:48:36
#367489
Não faz muito sentido você buscar um controle texto para traduzir. Acho que o mais normal seria alterar a propriedade Caption de um controle label. A forma mais fácil seria você criar uma matriz de controles. Por exemplo, Labe1(0), Label1(1), Label1(2),... Label1(n). Relacione, no seu banco de dados, o código do campo a ser traduzido com o índice do Label...

Mas, se contudo, darei uma dica caso você queira proceder da maneira que colocou. Para transformar um texto do banco de dados em um controle de formulário, tente a seguinte abordagem:


Public Function MacroObjectControl(ByVal sControlName As String) As Object
Dim oControlTemp As Object
Set MacroObjectControl = Nothing
For Each oControlTemp In VB.Screen.ActiveForm.Controls
If (UCase(Trim(oControlTemp.Name)) = UCase(Trim(sControlName))) Then Exit For
Next oControlTemp
Set MacroObjectControl = oControlTemp
End Function


Usando a função:

Dim oCtrl As TextBox [ô]ou: Dim oCtrl As Object / Dim oCtrl As Control
Set oCtrl = MacroObjectControl(SeuRecordset!CampoNomeControle)
MsgBox oCtrl.Text

TECLA 07/03/2011 22:48:38
#367496
Não esqueçam da classe SYSTEM.GLOBALIZATION do .NET Framework.
Ela foi criada exatamente para este propósito.
Globalizando sua aplicação - por Macoratti
THIAGOMANZ 13/03/2011 01:20:19
#367887
na verdade o q preciso e q uma string seka executada como um comando para um objeto na tela ex

dim campotexto as string
campotexto = [Ô]my.forms.Cadastro.txtNome.text[Ô]

agora quero q o campo txtnome receba o texto q eu quiser atraves dessa string

campotexto = [Ô]Thiago[Ô] que teria q ser o mesmo que:
my.forms.Cadastro.txtNome.text = [Ô]Thiago[Ô]

Abraços
Tópico encerrado , respostas não são mais permitidas