Internacionalização (informática)
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]
- 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.
- O formato de data e tempo, incluindo diferentes calendários.
- As diferentes formatações de números.
- O fuso horário (UTC) de cada país para coincidir com a língua a ser internacionalizada.
- Os números pré-definidos governamentalmente como: passaportes, RG, CPF.
- Os padrões de números de telefones, endereço e códigos postais internacionais.
- Os pesos e medidas de cada país.
- O tamanho de papéis.
- A moeda local.
- Nomes e títulos locais.
Diferença entre internacionalização e localização
[editar | editar código-fonte]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]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]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]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.
Ver também
[editar | editar código-fonte]Referências
- ↑ GNU gettext (27 de Dezembro 2007). «I18n, L10n, and Such» (em inglês). gnu.org. Consultado em 27 de dezembro de 2007
- ↑ GNU gettext (27 de Dezembro de 2007). «Aspects in Native Language Support» (em inglês). gnu.org. Consultado em 27 de dezembro de 2007
- ↑ Projeto KDE (27 de Dezembro de 2007). «Localização do software KDE versão 3» (em inglês). KDE.org. Consultado em 27 de dezembro de 2007
- ↑ Projeto GNOME (27 de Dezembro de 2007). «Localização do software GNOME» (em inglês). GNOME.org. Consultado em 27 de dezembro de 2007
- ↑ Software Skype (27 de Dezembro de 2007). «Línguas disponíveis do software Skype» (em inglês). Skype.com. Consultado em 27 de dezembro de 2007
- ↑ «Apresentação sobre "Avaliação de Usabilidade: Software para Internacionalização"»
- ↑ Mike Gavaghan (27 de Dezembro de 2007). «End-to-end Internationalization of Web Applications» (em inglês). JavaWorld.com. Consultado em 27 de dezembro de 2007
- ↑ Michael Everson (27 de Dezembro de 2007). «ISO 639 and ISO 639-2: The Code Lists» (em inglês). Evertype.com. Consultado em 27 de dezembro de 2007
- ↑ Brian Cryer (27 de Dezembro de 2007). «Windows Locale Table» (em inglês). Cryer.co.uk. Consultado em 27 de dezembro de 2007
- ↑ a b GNU gettext (27 de Dezembro de 2007). «Gettext with C, C++, Objective C» (em inglês). gnu.org. Consultado em 27 de dezembro de 2007
- ↑ a b GNU gettext (27 de Dezembro de 2007). «Gettext with Python» (em inglês). gnu.org. Consultado em 27 de dezembro de 2007
Bibliografia
[editar | editar código-fonte]- Souphavanh, Anousak e Karoonboonyanan, Theppitak (2005). Free/Open Source Software. Localization 1 ed. EUA.: United Nations Development Programme-Asia Pacific Development Information Programme - (UNDP-APDIP). 58 páginas. ISBN 81-8147-754-5
Ligações externas
[editar | editar código-fonte]- «Common Locale Data Repository» (em inglês)
- «Introdução a i18n de software, pelo Debian» (em inglês)
- «Manual oficial do gettext» (em inglês)
- «Projeto Babelzilla» (em inglês)
- «Localization Blog» (em inglês)
- Especificações W3C:
- «Layout de texto» (em inglês)
- «Navegação direcional» (em inglês)
- «Modo de escrita» (em inglês)