From Mageia wiki
Jump to: navigation, search


Drakconf multiflag.png
Outros idiomas
Deutsch ; English ; Français ; Nederlands ; português brasileiro ;
Sinopse:
Muitas vezes há uma grande confusão e uso indevido dos termos i18n e l10n.

Eles estão relacionados, mas não têm o mesmo significado; eles se referem a diferentes níveis de implementação e especialização, portanto, o entendimento adequado é importante para ver exatamente onde um problema ou necessidade de desenvolvimento se encaixa..

O que essas siglas significam

Bem, o que essas siglas estranhas realmente significam? Na verdade, são abreviações compostas da primeira e da última letra de uma palavra, e no meio, há o número de letras.

  • i18n = Internationalization: i, depois 18 letras, depois n
  • l10n = Localization: l, depois 10 letras, depois n

Não é a mesma coisa?

Então, você pode perguntar, internacionalização e localização não são a mesma coisa? Na verdade, não.

Há muita confusão; em parte, porque os conceitos são relativamente novos; em parte também por razões históricas. Historicamente, o suporte em computadores além do inglês somente foi feito, pelo menos no começo, como várias soluções ad-hoc, que se encaixavam em um único idioma apenas. Então você tinha aquele SO localizado para, digamos, francês, e aquela outra versão para espanhol; e eles podem muito bem ser incompatíveis mesmo que ambos os idiomas possam realmente compartilhar um conjunto de caracteres comum (e um bem simples).

Dito de outra forma, historicamente o l10n foi feito antes de pensar no i18n.

Mas, conceitualmente, o i18n deve vir primeiro; já que a internacionalização é o processo de garantir que um pedaço de software seja realmente flexível o suficiente e pronto para suportar múltiplas localidades potenciais em primeiro lugar. Nenhuma linguagem real está envolvida no processo i18n; um aplicativo pode muito bem nunca ser traduzido, mas se for adequadamente internacionalizado, então traduzi-lo é bem fácil (e, mais importante, não requer nenhuma habilidade de desenvolvimento ou informática, apenas conhecimento da linguagem de destino). Internacionalização, então, é tornar o software amigável à localidade.

A localização, por outro lado, é toda sobre (principalmente, veja abaixo) traduzir para um idioma real e dado. A localização, por si só, não requer que a internacionalização seja feita, no entanto, se o aplicativo não foi internacionalizado primeiro, isso significa que o processo de localização envolveria modificações de nível bem baixo no código-fonte do aplicativo; isto é, habilidades de desenvolvimento. Antigamente (velhos tempos, a maioria de vocês não sabe; sorte sua) a localização era feita às vezes "simplesmente" editando o código-fonte e alterando as strings de texto na fonte. Isso leva a dois (ou mais) binários diferentes; isto é, dois (ou mais) produtos diferentes para dar suporte, com versões diferentes, rastreamento de bugs, etc. Às vezes até incompatíveis entre si. E, se você quisesse portar o aplicativo para outro idioma, isso tinha que ser feito tudo de novo (e decidir de qual versão divergir). Além disso, nunca houve uma visão geral generalizável adequada do problema; se a localização para um novo idioma com algumas necessidades específicas fosse solicitada, isso poderia quebrar tudo porque não havia sido planejado.

Então, l10n sem i18n é ruim, muito ruim. Espero que, hoje em dia, e particularmente no mundo do software livre, isso seja incomum. Em nosso mundo de software livre, temos frameworks de internacionalização muito bons, construídos no núcleo dos toolkits comuns (um toolkit é um conjunto de ferramentas e tijolos a partir dos quais os desenvolvedores constroem aplicativos). Esses frameworks são genéricos o suficiente para suportar e abranger todos os sistemas de escrita humana atualmente em uso.

Os dois conceitos de i18n e l10n são duas camadas diferentes. Eles são interconectados, mas estão em níveis diferentes - ou seja, envolvem pessoas diferentes, com habilidades diferentes. É importante saber disso, pois relatar um problema no nível errado não ajudará a resolvê-lo.

I18N

Internacionalização é o processo (ou o conceito do processo) para tornar um aplicativo "internacional"; isto é, torná-lo capaz de oferecer suporte a praticamente qualquer idioma ou configuração local na Terra.

Ele sempre envolve mudanças no código fonte, ou seja, envolve desenvolvedores (que também precisam ter conhecimento da problemática do i18n). Existem vários aspectos do i18n, alguns mais complexos do que outros:

  • capacidade de exibir/imprimir texto
    • suporte para qualquer fonte complexa
    • suporte para normalização de caracteres
    • suporte para substituição e renderização de glifos (não há equivalência entre caractere e glifo; em vez disso, algumas sequências de caracteres (podem ser uma sequência de apenas um no caso simples) produzem algumas sequências de glifos (podem ser uma sequência de um no caso simples)
    • suporte para reordenação de glifos (a exibição nem sempre está na mesma ordem que a fala/escrita lógica)
    • suporte para renderização bidirecional (da esquerda para a direita e da direita para a esquerda)
  • capacidade de manipular texto
    • suporte para manipulações de strings de texto em programas
    • suporte para seleção de mouse, cortar e colar, etc. (observe que você seleciona glyphs na tela, mas o buffer seleciona texto (caracteres) => substituição complexa envolvida)
    • utilitários de conversão de conjuntos de caracteres (porque temos que lidar com o legado pré-Unicode)
    • pesquisando texto (grep, etc)
    • classificação de texto dependendo de regras complexas
  • capacidade de inserir texto
    • suporte para definir layouts de teclado
    • suporte para conexão com aplicativos de entrada para casos complexos onde um mapeamento de teclado não é suficiente)
  • capacidade de manipular/renderizar data/hora
    • formato de exibição/entrada
    • definindo o primeiro dia da semana
    • definindo fusos horários
    • definindo calendários não gregorianos
    • funções para converter entre diferentes formatos/calendários
  • capacidade de definir e lidar com configurações locais
    • diferentes unidades (km/milhas °C/°F, etc.), monetárias, etc
    • diferentes maneiras de formatar/exibir números

L10N

Localização é o processo (ou o conceito do processo) para tornar um aplicativo "localizado"; ou seja, funcionar para um determinado contexto local e concreto, adaptado ao usuário.

Não envolve nenhuma alteração no código-fonte; os desenvolvedores não estão envolvidos (bem, só um pouco, só para adicionar o primeiro gancho; quando uma linguagem está disponível, um desenvolvedor tem que colocá-la em uma lista, dar acesso à equipe l10n, etc).

O L10n visa fornecer o conteúdo para preencher os contêineres criados pelo processo i18n.

Os vários aspectos são:

  • traduzir dados de texto traduzíveis (esse é o mais famoso)
  • fornecer dados de texto localizados exclusivos (não uma tradução de um existente, mas um independente), se apropriado
  • corretores ortográficos (veja abaixo)
  • layouts de teclado
  • métodos de entrada (veja abaixo)
  • regras de classificação

Elas não envolvem desenvolvedores, como eu disse Bem, em alguns casos pode haver algum desenvolvimento envolvido; é para algumas coisas altamente específicas, como a criação de um novo corretor ortográfico, exclusivo para uma linguagem ou família de linguagens, ou um programa de método de entrada (mas corretores ortográficos genéricos e métodos de entrada também existem, onde você só precisa fornecer dados l10n).

Resumidamente

  • l10n: Os problemas de l10n dizem respeito apenas aos tradutores de um determinado idioma; ninguém mais se importa ou pode fazer nada a respeito; somente os tradutores daquele idioma específico podem corrigi-lo.
  • i18n: Os problemas do i18n são um problema na infraestrutura do i18n; eles podem impactar muitos idiomas (mesmo que apenas um realmente perceba os sintomas), mas os tradutores não podem fazer nada para resolvê-los, apenas os desenvolvedores podem.