Internacionalização (software)
Origem: Wikipédia, a enciclopédia livre.
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.
Internacionalização também é escrita acronimamente como i18n, vindo da palavra inglesa internacionalization, onde se tomam a primeira e a última letra e o número de letras que contém a palavra; o mesmo é feito com localization escrito como L10n[1].
Índice |
[editar] Fundamentos
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 sub-tí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.
[editar] Diferença entre internacionalização e localização
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 lingüí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.
[editar] Importância da localização
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.
[editar] Dificuldades
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].
[editar] Localização de softwares
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 à uma referência nativamente equivalente, que idealmente não mude o sentido da indicação.
[editar] Problemas com padrões da internet
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.
[editar] Conceito de Locale
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]:
[editar] Funcionamento da tradução
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.
[editar] Programação
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.
[editar] Tradução
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[12]:
#: 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[13]:
#: 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.
Notas e Referências
- ↑ GNU gettext (27-12). I18n, L10n, and Such (inglês). gnu.org. Página visitada em 27-12-2007.
- ↑ GNU gettext (27-12). Aspects in Native Language Support (inglês). gnu.org. Página visitada em 27-12-2007.
- ↑ Projeto KDE (27-12). Localização do software KDE versão 3 (inglês). KDE.org. Página visitada em 27-12-2007.
- ↑ Projeto GNOME (27-12). Localização do software GNOME (inglês). GNOME.org. Página visitada em 27-12-2007.
- ↑ Software Skype (27-12). Línguas disponíveis do software Skype (inglês). Skype.com. Página visitada em 27-12-2007.
- ↑ Apresentação sobre "Avaliação de Usabilidade: Software para Internacionalização" (português).
- ↑ Mike Gavaghan (27-12). End-to-end Internationalization of Web Applications (inglês). JavaWorld.com. Página visitada em 27-12-2007.
- ↑ Michael Everson (27-12). ISO 639 and ISO 639-2: The Code Lists (inglês). Evertype.com. Página visitada em 27-12-2007.
- ↑ Brian Cryer (27-12). Windows Locale Table (inglês). Cryer.co.uk. Página visitada em 27-12-2007.
- ↑ GNU gettext (27-12). Gettext with C, C++, Objective C (inglês). gnu.org. Página visitada em 27-12-2007.
- ↑ GNU gettext (27-12). Gettext with Python (inglês). gnu.org. Página visitada em 27-12-2007.
- ↑ GNU gettext (27-12). Gettext with C, C++, Objective C (inglês). gnu.org. Página visitada em 27-12-2007.
- ↑ GNU gettext (27-12). Gettext with Python (inglês). gnu.org. Página visitada em 27-12-2007.
[editar] Bibliografia
- Souphavanh, Anousak e Karoonboonyanan, Theppitak. Free/Open Source Software: Localization. 1ª.ed. EUA.: United Nations Development Programme-Asia Pacific Development Information Programme - (UNDP-APDIP), 2005. 58 p. ISBN 81-8147-754-5
[editar] Veja também
- Internacionalização
- Código postal
- Tradução
- Softwares populares multi-línguas: