Pergunta

Eu tenho que construir uma aplicação gráfica no Windows Mobile, e gostaria que ele seja usuário pode escolher o idioma que quer, ou aplicativo para escolher o idioma automaticamente. I considere o uso de várias DLLs que contêm os recursos apenas necessários.

1) Qual é a) forma preferencial (padrão? Para obter o aplicativo escolher o idioma de recursos adequada automaticamente, sem a intervenção do usuário? Quaisquer amostras?

2) Quais são as minhas opções para permitir o controle de usuário / aplicação que língua ele deve exibir?

3) Se possível, como faço para criar uma dll que contêm vários recursos de idioma e, em seguida, escolher dinamicamente o idioma?

Foi útil?

Solução

Para # 1, você pode usar o GetSystemDefaultLangID função para obter o identificador de idioma para a máquina.

Para # 2, você poderia listar idiomas que suportam e quando o usuário seleciona um, escreva a seleção em um arquivo de texto ou de registro (existe um registro no Windows Mobile?). Na inicialização, use a função em # 1 somente se não houver nenhuma seleção no arquivo ou registro.

Para # 3, a nossa forma de fazer isso é ter uma DLL de recursos por idioma, cada um dos quais contém os mesmos IDs de recursos. Depois de descobrir a língua, carregar a DLL para que a linguagem eo resto simplesmente funciona.

Outras dicas

Re 1:. A sugestão GetSystemDefuaultLangID anterior é uma boa

Re 2: Você pode perguntar como um primeiro passo para a sua instalação. Ou você pode empacotar diferentes instaladores para cada idioma.

Re 3: Em teoria, o método DLL mencionado acima soa muito bem, no entanto, na prática, não funcionou muito bem em tudo para mim pessoalmente.

Um método melhor é cercar todas as cordas em seu programa com: Localize ou NoLocalize.

MessageBox(Localize("Hello"), Localize("Title"), MB_OK);
RegOpenKey(NoLocalize("\\SOFTWARE\\RegKey"), ...);

Localize é apenas uma função que converte seu texto Inglês para um idioma selecionado. NoLocalize não faz nada.

Você quer cercar suas cordas com estes valores, porque embora você pode construir um par de scripts úteis em sua linguagem de script de escolha.

1) Um script que procura por todo o Localize (" prefixos e gera um arquivo .ini com pares de valores de nome inglês = otherlangauge. Se o arquivo ini saída já contém um mapeamento você não adicioná-lo novamente. Você nunca re-criar o arquivo ini completamente, seu script apenas adiciona os que faltam cada vez que você executar o seu script.

2) Um script que procura todas as cordas e garante que eles são cercados por qualquer Localize ( "ou NoLocalize (". Se não lhe diz que cordas você ainda precisa de localizar.

A razão # 2 é importante é porque você precisa ter certeza de todas as suas cordas são realmente conscientemente marcado como necessitando de localização ou não. Caso contrário, é absolutamente impossível ter certeza de que a localização adequada.

A razão para # 1 em vez de carregamento de uma DLL é porque ele tem nenhum trabalho para manter esta solução e você pode adicionar novas strings que precisam ser traduzidos na mosca.

Você enviar os arquivos ini que estão de saída com o seu programa. Você também dar a esses arquivos ini aos seus tradutores para que possam converter os ingleses = pares otherlanguage. Quando eles enviá-lo de volta para você, você simplesmente substituir o seu check-in arquivo .ini com o dado pelo seu tradutor. Executando o seu roteiro como mencionado no nº 1 será re-adicionar quaisquer traduções ausentes se houver foram feitas enquanto o tradutor estava traduzindo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top