Pergunta

Eu acredito que muitos de nós já trabalhou em um projeto onde não só a interface do usuário, mas também de dados tem de ser apoiada em diferentes idiomas. Tais como: - ser capaz de fornecer e armazenar uma tradução para o que estou escrevendo aqui, por exemplo.

Além do mais, eu também acredito muitos de nós têm alguns eventos desencadeada em tempo (como quando expirar o acesso de membros), onde a localização do usuário deve ser levado em conta para calcular, como, meia-noite de acordo com o fuso horário certo.

Finalmente, há também a necessidade de apoiar Direito de interfaces de usuário Esquerda accoring a certas línguas e o uso de codificações diferentes ao ler arquivos de dados apresentados (texto de análise e dados do Excel, por exemplo)

Atualmente eu estou armazenando todas as minhas traduções para todas as minhas entidades em uma única tabela (não tão prático, pois é muito difícil de encontrar-se ao fazer consultas SQL para analisar um problema), estabelecendo traduções UI principalmente em conjuntos de satélite e não apoiar nem fusos horários nem direito ao design esquerdo.

Quais são suas experiências ao lidar com estes desafios?

[Edit]

Eu assumo a maioria das pessoas acha que este nível de exigência multiculture é como construir um projeto enorme. Por uma questão de fato, se você tihnk sobre uma pesquisa online onde:

  1. As respostas coletadas apenas até meia-noite
  2. definição Questionário e parte as respostas vêm de um arquivo de texto (Em qualquer idioma), bem como traduções
  3. Perguntas e opções de resposta devem ser exibido em vários idiomas, de acordo com quem está acessando
  4. Os relatórios também tem que ser mostrado e gerada em vários diferente línguas

Como se pode ver, não temos de ir muito longe em um aplicativo para ter este tipo de requisitos.

[Edit2]

Só descobri a minha pergunta é uma duplicata

i18n em seus projetos

A primeira resposta (quando ordenação por voto) é tão compreheensive eu tenho que pegar pelo menos uma parte dela implementado algum dia.

Foi útil?

Solução

Seja muito cauteloso. Pelo que você diz sobre o i18n características que você está tentando implementar, gostaria de saber se você está mais abrangente.

aplicações web

Observe que o menino grande (por exemplo, eBay, amazon.com, yahoo, bbc) realmente entregar aplicativos separados em cada idioma que eles querem apoio. Cada uma dessas aplicações web consomem um conjunto comum de serviços. Não se surpreenda se as necessidades de negócios dos dois países diferentes que, mesmo falam a mesma língua (por exemplo, Reino Unido e EUA) são suficientes diferente que você precisa de um aplicativo separado para cada um.

Por outro lado, pode ser necessário para tornar-se como o próximo amazon.com. É difícil para entregar uma aplicação web de sucesso em um idioma, muito menos muitos. Você não deve ter medo de favorecer uma população de usuários (por exemplo, os alto-falantes de idiomas asiáticos) sobre os outros, se isso faz sentido para as necessidades de negócios de seu aplicativo web.

Outras dicas

Vá devagar.

Pense tudo através, então realmente pensar sobre o que você está fazendo de novo. Tenha em mente que quanto mais você adicionar (como direita para a esquerda) quanto mais o ciclo de QA será.

A peça principal para o seu quebra-cabeça será extensivo uso de interfaces no lado do código, e quer uma fonte de dados que é passada através de um tradutor para qualquer línguas precisam de ser apoiados, ou fontes de dados separados para cada idioma.

Os problemas de tempo pode ser manipulado pelas interfaces, porque provavelmente você vai querer as coisas funcionem da mesma forma, mas diferem nos detalhes de implementação. Em grande medida, um processo de pensamento semelhante pode ser aplicado para a criação da interface quando ajustando-o para suportar idiomas diferentes. Quando você começar a ele, esfola é exatamente esta, onde o ser conteúdo pele é a interface, eo olhar / sensação é a implementação.

Do que os usuários precisam. Por exemplo, a maioria programador entender Inglês, não há sentido de traduzir mensagens neste site. Se muitos de seus usuários precisar de uma tradução, adicionar uma nova coluna tabela com o ID de idioma e outra coluna para ligar uma linha traduzido ao seu original. Se o seu auditiva alvo contém os usuários do Oriente Médio, implementar direita para a esquerda. Se precisão tempo acabou crítica a uma hora, adicionar uma coluna de fuso horário para a tabela de usuário, e assim por diante.

Se você estiver em * NIX, use gettext . A maioria das linguagens que eu usei ter algum nível de apoio; do PHP é muito bom, por exemplo.

vou descrever o que foi feito no meu projeto (não era minha arquitetura original, mas eu gostei de qualquer maneira)

O fornecimento de Apoio à Tradução

O texto que precisa ser traduzido foram divididos em três categorias diferentes:

  1. text Erro: erros como que acontecem nas profundezas da camada de negócios aplicação
  2. UI Texto: texto que é mostrado na interface do usuário (etiquetas, botões, títulos grade, menus)
  3. definido pelo usuário texto: texto que precisa ser traduzível acordo com as preferências do usuário final (que é - o usuário cria uma pergunta em uma pesquisa e ele também pode criar uma versão traduzida desse levantamento)

Para cada cathegory diferente do esquema usado para fornecer serviço de tradução é diferente - assim que nós temos:

  1. Erro Texto: Uma biblioteca com funções estáticas que arquivos de recursos de acesso
  2. UI Texto: A "ajudante" classe que, ligada ao mecanismo de exibição, fornece traduções de montagens remotas
  3. texto definido pelo utilizador: Uma tabela na base de dados que fornece traduções (de acordo com typeid da entidade e objeto ID traduzido) e está ligada à entidade através de uma relação de 1 x N

Eu não, no entanto, atacaram os outros problemas óbvios, como lidar com fusos horários, diferentes layouts e tradução de imagem (se isso é realmente necessário). Alguém tem abordado este problema de uma maneira diferente?

Alguém já abordou os outros problemas i18n?

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