Internacionalização: O que pensar?

8

Eu estava ouvindo a palestra de Jon Skeet nos últimos dias do StackOverflow Dev Days e ele despertou minha curiosidade em relação à internacionalização.

Suponha que eu tenha um programa de fabricação de waffles, completo ou ainda em andamento, e queira distribuí-lo para outros países. Com que tipos de coisas eu preciso me preocupar com a internacionalização? Quais são algumas armadilhas não óbvias, mas fáceis?

rlb.usa
fonte
Desculpe pelas três edições, mas por algum motivo a remoção de uma tag substituiu a outra por "java".
ChrisF
Pessoalmente, pensei que a etiqueta jon-skeet era engraçada.
rlb.usa
1
Pode ser engraçado, mas não é particularmente útil
ChrisF

Respostas:

15

A coisa mais óbvia que vem à mente é que seus rótulos provavelmente terão um comprimento diferente da versão em inglês. Isso pode causar estragos no seu layout.

Você pode acabar com acres de espaço em branco ou etiquetas lotadas e até transbordar o espaço disponível.

Você precisa tornar seu layout flexível e fluir, independentemente do tamanho do conteúdo. Ter um layout que possa lidar com diferentes resoluções de tela ajudará bastante a solucionar esse problema.

O outro grande problema é o suporte ao idioma da direita para a esquerda. Isso exigirá novamente que seu layout seja flexível.

Não são apenas os menus e diálogos que precisam ser traduzidos. É toda a documentação de suporte, arquivos de ajuda, dicas de ferramentas e legendas de títulos de janelas também. Geralmente, há muito mais texto do que você imagina em um aplicativo e sempre haverá algumas seqüências de caracteres que foram adicionadas diretamente e não como recursos.

ChrisF
fonte
Sem dúvida, o tamanho das palavras é a parte mais difícil da internacionalização. As palavras técnicas alemãs tendem a ser cerca de 2,5x mais longas do que suas contrapartes em inglês.
Dave Nay
por exemplo, a palavra em inglês "note" pode ser traduzida para "Aufzeichnungen" em alemão. Como empregador anterior, usamos diferentes layouts de CSS, dependendo do idioma que estava sendo exibido. Confira grades CSS como YUI Grids ou BlueprintCSS.
Adrian J. Moreno
POR FAVOR, não se esqueça de traduzir também mensagens de erro!
Andy Canfield
@ Andy - que está implícito no bit "diálogo", mas sim vale a pena mencionar.
ChrisF
10

Fusos horários e formatação de data! Ao lidar com aplicativos em que agendar datas e horas em fusos horários, verifique se você faz as coisas corretamente.

Persista TODOS os valores de data e hora como registros de data e hora, pois representam um único ponto no tempo. Controle ainda mais os fusos horários, pois você precisará das informações do fuso horário para exibir corretamente o registro de data e hora no formato correto para o usuário.

No momento, estou trabalhando em um aplicativo em que um usuário no Japão pode agendar uma data e hora para um usuário executando um aplicativo cliente em Idaho. Certificando-se de que, quando o usuário vê 3:00PMque sabe do 3:00PMque todo mundo está falando.

maple_shaft
fonte
9

Lembre-se de que apenas porque uma pessoa está em um país em particular não significa que ela conhece esse idioma. O idioma e a localização são duas questões diferentes.

Andy Canfield
fonte
1
Os back-ends de idiomas de localização geográfica que são tão populares hoje em dia são uma péssima idéia! Você tenta ser norueguês e morar em uma área de língua francesa de um país de língua predominantemente alemã (Genebra, Suíça). O cabeçalho Accept-Language está lá por uma razão!
l0b0
8

Números. A maior parte da Europa, América do Sul usa vírgula (10,23) como separador decimal, enquanto o restante (Reino Unido, EUA etc.) usa período (10,23).

Lukasz Madon
fonte
4
Sei que este é um link para o Stack Overflow, mas ainda é uma boa prática resumir o conteúdo em sua resposta.
ChrisF
3

Nem sempre é tão fácil ... Há muitas coisas a considerar, dependendo da complexidade do software que você está desenvolvendo e para onde você o enviará. Na verdade, pode acabar em qualquer lugar, então o importante é quais locais você vai apoiar oficialmente.

  • Obviamente, há a linguagem das interfaces. Todo o texto que você usa deve ser relativamente fácil de alterar por seu equivalente em outro idioma. Como alguém já apontou, o comprimento dos rótulos variará. Algo escrito em chinês não terá a mesma largura que algo escrito em alemão, por exemplo. Vamos acrescentar que não apenas a interface básica é traduzir, mas todas as bolhas de informações, arquivos de ajuda, se houver, mensagens de erro, talvez não arquivos de log, mas isso depende do aplicativo, eu acho. Se seu aplicativo oferecer suporte a idiomas, seu site também poderá acompanhar.
  • Codificação de caracteres. É bom fornecer muitos idiomas, mas como você vai fazer isso? Se tudo estiver programado com uma codificação de caracteres restrita / básica, você terá problemas com alguns sotaques e com a maioria dos idiomas que não estão usando nossos caracteres. Pense em coreano ou árabe. Eu acho que alguém teria que usar Unicode, tanto quanto possível.
  • Disposição do widget / orientação da janela. Se você optar por dar suporte ao árabe, por exemplo, precisará pensar em uma maneira de mudar suas interfaces mais ou menos. Eles estão lendo da direita para a esquerda; portanto, seria normal ter rótulos no lado direito do elemento que descrevem (caixa de texto para entrada, por exemplo).
  • Formatação numérica. Em alguns locais, existe uma vírgula em vez de um ponto para separar a parte fracionária da parte inteira em um número. Essa é bastante óbvia, mas, dependendo do domínio do aplicativo, pode haver muitas outras coisas a considerar. Existem números negativos entre parênteses ou com um '-' na frente deles? Milhares estão separados ou não, com um espaço ou uma vírgula? A separação dos dígitos sempre é 3 ou o primeiro grupo é 3 e o restante 2? Você está usando números arábicos, indianos ou outros?
  • Formatação de data. É quase tão complicado. Pode ser necessário armazenar os nomes completos dos dias da semana, dos meses do ano e todos eles abreviados também. Que ordem eles estão usando (dia, mês, ano? Mês, dia, ano? Ano, mês, dia? Etc. etc.).
  • Formatação de hora. 24 horas ou 12? ':' ou 'h'? ':' ou '.' por alguns segundos? Não sei muito sobre a formatação da hora, mas acho que há muitas maneiras desconhecidas para exibir a hora.
  • Gráficos! Se você tiver ícones ... Você desejará verificar não apenas se as letras ou palavras nelas ainda são significativas para todos os locais, mas se os símbolos usados ​​também são significativos e ainda estão corretamente orientados. Se uma seta apontada para a esquerda na versão em inglês, você tem chances de apontar para a direita na versão em árabe (mas não necessariamente!). Se você colocar um sinal de parada como um octógono vermelho em seu ícone, as pessoas em alguns locais não terão idéia do que isso serve, ou pior, elas ficarão convencidas de que deve estar fazendo outras coisas além daquilo que você pretendia e programava. .
  • Se você precisar lidar com endereços em seu sistema, eles também ficarão estranhos em alguns lugares. Grandes dores de cabeça se você precisar validá-las.
  • Etc.

Felizmente, existem bibliotecas em muitas línguas para cuidar de boa parte do trabalho. Quando você não tem uma boa biblioteca para fazer isso, provavelmente desejará definir parâmetros para todos os seus locais e defini-los em detalhes usando arquivos XML ou outros tipos de arquivos de configuração (ou em um banco de dados, se você enviar um com o software , ou se você não se importa de adicionar uma pequena pegada).

Joanis
fonte
2

Depende muito da plataforma que você está usando. O .NET suporta arquivos de recursos que podem ser alterados dentro e fora, dependendo da criação do cliente.

Outros problemas que podem ou não ser suportados em sua plataforma incluem a capacidade de reverter a ordem dos rótulos e caixas de texto (algumas culturas preferem que os rótulos estejam à direita). Essas mesmas culturas podem querer que todos os blocos de texto sejam lidos da direita para a esquerda.

Britt Wescott
fonte
2

Não se esqueça dos valores nas tabelas de pesquisa! Nomes de status de pedidos, descrições de tipos, et al.

se você tiver descrições e nomes nas tabelas de pesquisa, por exemplo, {OrderStatusId, OrderStatusName, OrderStatusDescription}, eles também precisarão ser traduzidos.

Steven A. Lowe
fonte
0

Além do exposto, considere os formatos de data, ortografia e controle de orientação da tela. Nos relatórios em que os idiomas são lidos da direita para a esquerda, você precisa se preocupar com a direção do recuo. O fim de semana varia entre os países. Se você estiver exibindo calendários, verifique se os fins de semana são exibidos corretamente. Se você não estiver usando o MS-Windows, verifique os recursos do sistema operacional cliente em relação à manipulação de sequências de intercalação para classificação e como funciona o sistema operacional. As mensagens de erro devem ser traduzidas para os usuários quando o modo não for inglês. No código Para o lado do banco de dados, você precisa selecionar os códigos de caracteres corretos. Isso varia de banco de dados para banco de dados e pode afetar as comparações de datas.

NoChance
fonte