Internacionalização (informática)

 Nota: Se procura por Internacionalização em um contexto geral, veja Internacionalização.

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

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

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

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

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

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

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

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

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]

Identificação Região
ar-AE  Emirados Árabes Unidos
ar-BH  Bahrein
ar-DZ  Argélia
ar-EG  Egito
ar-IL  Israel
ar-IQ  Iraque
ar-JO Jordânia
ar-KW Kuwait
ar-LB Líbano
ar-LY  Líbia
ar-MA  Marrocos
ar-MR  Mauritânia
ar-OM Omã Omã
ar-PS  Palestina
ar-QA  Catar
ar-SA Arábia Saudita
ar-SD Sudão
ar-SO Somália
ar-SY Síria Síria
ar-TD Chade
ar-TN  Tunísia
ar-YE  Iêmen
Identificação Região
bn-BD  Bangladesh
bn-IN  Índia
bn-SG Singapura Singapura
Identificação Região
ch-GU Guam
ch-MP Marianas Setentrionais
Identificação Região
zh-CN  China
zh-HK  Hong Kong
zh-MO Macau
zh-SG Singapura Singapura
zh-TW Taiwan
Identificação Região
ko-KP Coreia do Norte
ko-KR Coreia do Sul Coreia do Sul
Identificação Região
hr-BA  Bósnia e Herzegovina
hr-HR  Croácia
Identificação Região
da-DK  Dinamarca
da-GL Gronelândia
Identificação Região
fr-AD  Andorra
fr-BE  Bélgica
fr-BF  Burquina Fasso
fr-BI  Burundi
fr-BJ  Benim
fr-CA  Canadá
fr-CD  República Democrática do Congo
fr-CF República Centro-Africana
fr-CG República do Congo
fr-CH Suíça
fr-CI Costa do Marfim
fr-CM Camarões
fr-DJ Djibouti
fr-FR  França
fr-GA Gabão
fr-GB  Reino Unido
fr-GF Guiana Francesa
fr-GN Papua-Nova Guiné
fr-GP Guadalupe
fr-HT Haiti
fr-IT  Itália
fr-KM Comores
fr-LB Líbano
fr-LU  Luxemburgo
fr-MC Mónaco
fr-MG  Madagáscar
fr-ML Mali
fr-MQ Martinica
fr-NC  Nova Caledônia
fr-PF Polinésia Francesa
fr-PM São Pedro e Miquelão
fr-RE  Reunião
fr-RW Ruanda
fr-SC Seicheles
fr-TD Chade
fr-TG Togo
fr-VU  Vanuatu
fr-WF  Wallis e Futuna
fr-YT Mayotte
Identificação Região
el-CY  Chipre
el-GR  Grécia
Identificação Região
en-AN  Antilhas Holandesas
en-AI  Anguila
en-AS  Samoa Americana
en-AU  Austrália
en-BB  Barbados
en-BM  Bermudas
en-BN  Brunei
en-BS  Bahamas
en-BW Botswana
en-BZ  Belize
en-CA  Canadá
en-CK Ilhas Cook
en-CM Camarões
en-DM República Dominicana
en-ER Eritreia
en-ET  Etiópia
en-FJ Fiji
en-FK Ilhas Malvinas
en-FM Estados Federados da Micronésia
en-GB  Reino Unido
en-GD Granada
en-GH Gana
en-GI Gibraltar
en-GM Gâmbia
en-GU Guam
en-GY Guiana
en-IE  Irlanda
en-IL  Israel
en-IO  Território Britânico do Oceano Índico
en-JM  Jamaica
en-KE  Quênia
en-KI  Kiribati
en-KN  São Cristóvão e Neves
en-KY Ilhas Caimã
en-LC Santa Lúcia
en-LR Libéria
en-LS Lesoto
en-MP Marianas Setentrionais
en-MS Monserrate
en-MT  Malta
en-MU Ilhas Maurícias
en-MW Malawi
en-NA Namíbia
en-NF Ilha Norfolk
en-NG Nigéria
en-NR Nauru
en-NU Niue
en-NZ  Nova Zelândia
en-PG Papua-Nova Guiné
en-PH Filipinas
en-PK Paquistão
en-PN  Pitcairn
en-PR  Porto Rico
en-PW  Palestina
en-RW Ruanda
en-SB Ilhas Salomão
en-SC Seicheles
en-SG Singapura Singapura
en-SH Santa Helena, Ascensão e Tristão da Cunha
en-SL Serra Leoa
en-SO Somália
en-SZ Essuatíni
en-TC  Turcas e Caicos
en-TK  Toquelau
en-TO Tonga
en-TT Trinidad e Tobago
en-UG Uganda
en-US  Estados Unidos
en-VC São Vicente e Granadinas
en-VG Ilhas Virgens Britânicas
en-VI Ilhas Virgens Americanas
en-VU  Vanuatu
en-WS Samoa
en-ZA África do Sul
en-ZM  Zâmbia
en-ZW  Zimbabwe
Identificação Região
ga-GB  Reino Unido
ga-IE  Irlanda
Identificação Região
it-CH Suíça
it-HR  Croácia
it-IT  Itália
it-SI  Eslovênia
it-SM  San Marino
Identificação Região
ln-CD  República Democrática do Congo
ln-CG República do Congo
Identificação Região
ms-BN  Brunei
ms-MY  Malásia
ms-SG Singapura Singapura
Identificação Região
nl-AN  Antilhas Holandesas
nl-AW  Aruba
nl-BE  Bélgica
nl-NL  Países Baixos
nl-SR Suriname
Identificação Região
pt-AO  Angola
pt-BR  Brasil
pt-CV Cabo Verde Cabo Verde
pt-GW Guiné-Bissau
pt-MZ  Moçambique
pt-PT Portugal Portugal
pt-ST  São Tomé e Príncipe
pt-TL Timor-Leste
Identificação Região
ro-MD  Moldávia
ro-RO Roménia
Identificação Região
sr-BA  Bósnia e Herzegovina
sr-YU  Sérvia e Montenegro
Identificação Região
hi-IN  Índia
hi-PK Paquistão
Identificação Região
es-AR  Argentina
es-BO  Bolívia
es-CL  Chile
es-CO  Colômbia
es-CR Costa Rica
es-CU  Cuba
es-DO República Dominicana
es-EC Equador
es-ES Espanha
es-GQ Guiné Equatorial
es-GT  Guatemala
es-HN Honduras
es-MX  México
es-NI Nicarágua
es-PA  Panamá
es-PE  Peru
es-PR  Porto Rico
es-PY  Paraguai
es-SV El Salvador
es-US  Estados Unidos
es-UY Uruguai
es-VE  Venezuela
Identificação Região
sv-FI  Finlândia
sv-SE  Suécia
Identificação Região
sw-KE  Quênia
sw-TZ Tanzânia
Identificação Região
ss-SZ Essuatíni
ss-ZA África do Sul
Identificação Região
ta-IN  Índia
ta-LK Sri Lanka
ta-SG Singapura Singapura
Identificação Região
de-AT  Áustria
de-BE  Bélgica
de-CH Suíça
de-DE  Alemanha
de-DK  Dinamarca
de-LI  Liechtenstein
de-LU  Luxemburgo
Identificação Região
tn-BW Botswana
tn-ZA África do Sul
Identificação Região
tr-BG  Bulgária
tr-CY  Chipre
tr-TR  Turquia
Identificação Região
hu-HU  Hungria
hu-SI  Eslovênia
Identificação Região
ur-IN  Índia
ur-PK Paquistão


Funcionamento da tradução

Ver artigo principal: Gettext
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

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

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

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

Referências

  1. GNU gettext (27 de Dezembro 2007). «I18n, L10n, and Such» (em inglês). gnu.org. Consultado em 27 de dezembro de 2007 
  2. GNU gettext (27 de Dezembro de 2007). «Aspects in Native Language Support» (em inglês). gnu.org. Consultado em 27 de dezembro de 2007 
  3. 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 
  4. Projeto GNOME (27 de Dezembro de 2007). «Localização do software GNOME» (em inglês). GNOME.org. Consultado em 27 de dezembro de 2007 
  5. 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 
  6. «Apresentação sobre "Avaliação de Usabilidade: Software para Internacionalização"» 
  7. 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 
  8. 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 
  9. Brian Cryer (27 de Dezembro de 2007). «Windows Locale Table» (em inglês). Cryer.co.uk. Consultado em 27 de dezembro de 2007 
  10. 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 
  11. 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

  • 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  !CS1 manut: Nomes múltiplos: lista de autores (link)

Ligações externas

Wikcionário
Wikcionário
O Wikcionário tem os verbetes international e locales.
  • «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) 
  • Portal das tecnologias de informação