Internacionalização (software)

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Globe of letters.svg

Internacionalização e localização, em informática, são processos de desenvolvimento e/ou adaptação de um produto, em geral softwares de computadores, para uma língua e cultura de um país. A internacionalização de um produto não fabrica o produto novamente, somente adapta as mensagens do sistema à língua e à cultura locais. Isto é importante porque permite que o desenvolvedor de software respeite as particularidades de cada língua e cultura de cada país.

Nomenclatura[editar | editar código-fonte]

Internacionalização também é escrita acronimamente como i18n, vindo da palavra inglesa internationalization, onde se tomam a primeira e a última letra e o número de letras entre elas; o mesmo é feito com localization escrito como L10n.[1] O suporte de algumas línguas pelo sistema informático relaciona-se como um problema entre localização (L10n), depois multilinguísticas (m17n), até internacionalização (i18n).

  • Um sistema informático localizado foi adaptado ou convertido para utilização num locale específico.
  • Um sistema multilinguístico dá suporte a várias línguas ou locales instalados mas guarda esses dados como dados.
  • Um sistema internacionalizado compreende um suporte a um leque grande de locales (ou para usuários de outras línguas), permitindo que várias línguas, conjuntos de codificação de textos, visualização, e interfaces do usuário todos funcionem naturalmente.

Fundamentos[editar | editar código-fonte]

Os pontos fundamentais para internacionalização e localização incluem [2]

  1. A língua, contendo a codificação do texto em diferentes sistemas de escrita (Alfabetos), diferentes sistemas numerais, scripts da esquerda-para-direita e scripts da direita-para-esquerda (por exemplo, para língua hebraica). Os sistemas atuais utilizam Unicode para solucionar problemas de codificação de caracteres. Contendo também a representação gráfica do texto, o áudio e os subtítulos para vídeos.
  2. O formato de data e tempo, incluindo diferentes calendários.
  3. As diferentes formatações de números.
  4. O fuso horário (UTC) de cada país para coincidir com a língua a ser internacionalizada.
  5. Os números pré-definidos governamentalmente como: passaportes, RG, CPF.
  6. Os padrões de números de telefones, endereço e códigos postais internacionais.
  7. Os pesos e medidas de cada país.
  8. O tamanho de papéis.
  9. A moeda local.
  10. Nomes e títulos locais.

Diferença entre internacionalização e localização[editar | editar código-fonte]

Página principal do site da Wikipédia em língua hebraica.

A diferença entre internacionalização e localização é somente fundamental. A internacionalização é uma adaptação de um produto para melhoramento e a localização é uma adição de características específicas de uma região. Os dois são evidentemente complementares.

Alguns dos elementos específicos da localização são: tradução linguística, suporte a várias línguas, suporte a caracteres das línguas da Ásia oriental, símbolos, métodos de ordenação de listas, valores culturais e contexto social.

No desenvolvimento de software, depois de internacionalizado um produto, o termo localização se refere ao processo necessário para o produto internacionalizado esteja também pronto para mercados específicos.

Por esta razão pode-se falar que um produto internacionalizado satisfaz a comunidade internacional, mas não para um mercado específico. A preparação para um mercado específico é chamado de localização.

Importância da localização[editar | editar código-fonte]

Tela de um computador com vários programas traduzidos para língua italiana.

Atualmente, as pessoas que queiram usar computadores devem primeiramente aprender o inglês. Em um país com baixas taxas de alfabetização obstrui o acesso às tecnologias de informação e de comunicações, especialmente para pessoas com baixa renda e as comunidades rurais que não têm o mesmo acesso à instrução. A localização traz inúmeros benefícios como a redução significativamente a quantidade de treinamento necessária para os usuários finais para usar um sistema de computador, facilitando a introdução da informática em pequenas e médias empresas, permitindo que empregados trabalhem inteiramente na sua língua nativa e facilitando o desenvolvimento dos sistemas e para controlar bases de dados de nomes e de dados locais da língua, facilitando a decentralização dos dados em níveis provinciais e de distrito.

O mesmo aplica-se às companhias de serviço público (eletricidade, água, telefone), que desenvolverão as bases de dados locais da língua, desse modo reduzindo custos e dando o serviço melhor aos cidadãos, permitindo que os cidadãos comuniquem-se com o e-mail em sua própria língua, fornecendo a indústria local dos projetos, fontes adequadas aquela região e ajudando universidades a treinarem mais engenheiros de software.

Dificuldades[editar | editar código-fonte]

Uma das grandes dificuldades das equipes do desenvolvimento é a necessidade que alguém compreenda línguas estrangeiras e culturas e tenha algum conhecimento técnico; tal pessoa pode ser difícil de encontrar. Outra dificuldade é a duplicação de esforços para a manutenção e atualização rotineira das mensagens do sistema em paralelo ao desenvolvimento do software e da inclusão de novas características, consequentemente, criação de novas mensagens a serem traduzidas. Por exemplo, se uma mensagem indicada ao usuário em uma de diversas línguas for modificada, todas as versões traduzidas devem ser mudadas. Há bibliotecas de software que ajudam a minimizar este problema, como o gettext.

O software de código-fonte aberto pode geralmente ser livremente modificado e redistribuido, por isso é mais apto a internacionalização. A maioria dos softwares proprietários está somente disponível nas línguas consideradas economicamente viáveis. O projeto KDE é feito sob software livre e está traduzido para mais de 90 línguas,[3] o GNOME, também software livre, é traduzido para mais de 100 línguas,[4] já os softwares comerciais como o Skype não tem traduções mais do que em 30 línguas.[5]

Localização de softwares[editar | editar código-fonte]

Programas em língua chinesa dentro do sistema operacional Ubuntu.

Localização é uma tarefa multifunção, que tem por objetivo traduzir os conteúdos de texto de um software ou de um site, adaptando a tradução para a cultura do país ao qual se destina, considerando costumes, religião, sistemas de pesos e medidas, moeda, padronização de data e hora, legislação e outras variáveis que possam afetar o produto. A Localização envolve também atividades que requerem profundos conhecimentos de Tecnologia de Informação, em consonância com padrões internacionais convencionados pela Globalização. A localização de software é um processo de traduzir as mensagens que os usuários finais irão visualizar e de adaptá-las a fim de que sirvam uma cultura estrangeira. Este processo é um trabalho intensivo e requer frequentemente esforços significativos das equipes de desenvolvimento. Há ferramentas que podem simplificar o processo de localização. Vários projetos de software comerciais e de software livre começam sem a implementação da localização, ou para cortar custos ou para reduzir esforços já que para se fazer a internacionalização de um software é necessário que o tradutor ou localizador conheça e utilize o software e também, que domine a língua e conheça detalhes do país originário da língua a traduzir.

A localização de softwares também pode adaptar o software de uma cultura a outra. Durante a localização, algumas referências a história ou à cultura são substituídas a uma referência nativamente equivalente, que idealmente não mude o sentido da indicação.

Problemas com padrões da internet[editar | editar código-fonte]

De acordo com as normas da internet softwares modernos são mais aptos a integrar componentes de internacionalização devido suas tecnologias mais modernas como navegador web, aplicações para servidor e banco de dados. É nas relações destes componentes que as deficiências nos padrões se tornam mais aparentes. Por exemplo, não há nenhum mecanismo padronizado para o HTTP indicar os caracteres de codificação utilizados nos índices de formulários HTML.[6] Embora haja alguns mecanismos específicos de navegadores que podem indicar os caracteres, não há nada especificado pelos padrões da W3C. Houve somente uma intenção de solucionar este problema[7] em 2004.

Conceito de Locale[editar | editar código-fonte]

Em informática, o conceito de locale é um grupo de parâmetros que define uma língua, levando em conta suas variantes específicas, a qual o usuário final define sua língua nativa, e é ela que irá aparecer no software usado. Normalmente um identificador locale está no formato de identificação da língua (em minúsculo) e um identificador de região (em maiúsculo).

Abaixo as línguas comumente utilizadas em relação aos países:[8] [9]


Funcionamento da tradução[editar | editar código-fonte]

Processo do andamento interno do GNU gettext para a tradução da mensagem.

O gettext é uma biblioteca de internacionalização criada pelo Projeto GNU parte do GNU Translation Project, é usada para escrever as mensagens de programas em multi-línguas, utilizada por vários importantes programas para tradução de seus softwares. Veja Lista de softwares que usam gettext.

Programação[editar | editar código-fonte]

O código fonte é primeiro modificado para as chamadas do GNU gettext. Isto é, para a maioria das linguagens de programação, é feito uma encapsulação das strings e o gettext irá chamar qual strings o usuário irá visualizar. Esta função é usualmente modificada para _ (underline), veja por exemplo o código em C:[10]

printf("My name is %s.", myname);

é escrito assim:

printf(_("My name is %s."), myname);

em outras linguagens também segue o mesmo padrão, veja em linguagem Python:[11]

print("My name is %s." % myname)

é escrito assim:

print(_("My name is %s.") % myname)

Outras linguagens também possuem a funcionalidade do gettext como: C++, Objective-C, Shell script, bash, LISP, Smalltalk, Java, awk, Pascal, wxWidgets, Tcl, Perl, PHP e outras mais.

Tradução[editar | editar código-fonte]

Para a tradução da string acima é necessário junto ao programa um arquivo com extensão .po, ou um template, que contenha uma lista de todas as frases e palavras que precisam ser traduzidas no código fonte. Dentro do arquivo .po de um programa escrito em C é necessário conter:[10]

# : src/name.c:36
msgid "My name is %s."
msgstr "Meu nome é %s."

Nos exemplos acima, a primeira linha mostra o caminho para qual arquivo (src/name.c) e para qual linha (linha 36) a frase terá que ser traduzida.

O mesmo pode ser feito com outras linguagens, o padrão também é seguido alterando somente a extensão do arquivo fonte, veja em Python:[11]

# : src/name.py:36
msgid "My name is %s."
msgstr "Meu nome é %s."

Em um software que contenha várias linguagens de programação, as mensagens de tradução funcionam normalmente, basta somente referenciar o nome do arquivo fonte correspondente a linha, como exemplificado nos exemplos acima.

Para a tradução das frases da língua nativa do programa para a língua que deseja traduzir é necessário um programa que edite arquivos .po e depois de traduzidas as mensagens é necessário ter um compilador para gerar o arquivo .mo, os programas mais comuns são o próprio gettext, para KDE existe o Kbabel e para multiplataformas tem o Poedit, estes programas fazem com que as strings de tradução estajam alinhadas no arquivo, facilitando a localização das frases que não foram traduzidas ou com tradução incompletas.

Programas como Gedit, Kate ou Bloco de notas também funcionam para traduzir os programas, atrapalhando somente na visualização.

Babelzilla[editar | editar código-fonte]

A comunidade Babelzilla é dedicada a prover locales para extensões feitas para programas da família Mozilla baseados em Gecko, como o Firefox e o Thunderbird. Os desenvolvedores disponibilizam suas extensões no Web Translation System - WTS (Sistema de Tradução na Web) e então tradutores voluntários em todo o mundo fornecem os locales, constituindo-se em uma plataforma de tradução simultânea que permite a atualização das traduções sempre que os programadores acrescentarem novas línguas.

A página www.babelzilla.org é constituída pelo Web Translation System - WTS (Sistema de Tradução na Web), por um fórum, glossário, wiki tutorial e outras ferramentas para comunicação da comunidade de desenvolvedores e tradutores.

Notas e Referências

  1. GNU gettext (27-12). I18n, L10n, and Such (em inglês) gnu.org. Visitado em 27 de dezembro de 2007.
  2. GNU gettext (27-12). Aspects in Native Language Support (em inglês) gnu.org. Visitado em 27 de dezembro de 2007.
  3. Projeto KDE (27-12). Localização do software KDE versão 3 (em inglês) KDE.org. Visitado em 27 de dezembro de 2007.
  4. Projeto GNOME (27-12). Localização do software GNOME (em inglês) GNOME.org. Visitado em 27 de dezembro de 2007.
  5. Software Skype (27-12). Línguas disponíveis do software Skype (em inglês) Skype.com. Visitado em 27 de dezembro de 2007.
  6. Apresentação sobre "Avaliação de Usabilidade: Software para Internacionalização" (em português).
  7. Mike Gavaghan (27-12). End-to-end Internationalization of Web Applications (em inglês) JavaWorld.com. Visitado em 27 de dezembro de 2007.
  8. Michael Everson (27-12). ISO 639 and ISO 639-2: The Code Lists (em inglês) Evertype.com. Visitado em 27 de dezembro de 2007.
  9. Brian Cryer (27-12). Windows Locale Table (em inglês) Cryer.co.uk. Visitado em 27 de dezembro de 2007.
  10. a b GNU gettext (27-12). Gettext with C, C++, Objective C (em inglês) gnu.org. Visitado em 27 de dezembro de 2007.
  11. a b GNU gettext (27-12). Gettext with Python (em inglês) gnu.org. Visitado em 27 de dezembro de 2007.

Bibliografia[editar | editar código-fonte]

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]

Wikcionário
O Wikcionário possui o verbete international ou locales.