O Multilingualization (M17N) ou Suporte de Linguagem Nativa para um software de aplicação é feito em 2 passos.
Internationalization (I18N): Para fazer com que o software lide potencialmente com múltiplos locales.
Localization (L10N): Tornar o software útil num locale específico.
|
Dica |
|---|---|
|
Existem 17, 18 ou 10 letras entre "m" e "n", "i" e "n", ou "l" e "n" na multi-linguagem, internacionalização e localização, que correspondem a M17N, I18N e L10N. Consulte Internacionalização e localização para obter detalhes. |
O comportamento dos programas que suportam a internacionalização é
configurado pela variável de ambiente "$LANG" para
suportar a localização. O suporte de funcionalidades dependentes da
configuração regional pela biblioteca libc requer a
instalação dos pacotes locales ou
locales-all. O pacote locales
necessita de ser inicializado corretamente.
Se nem o pacote locales nem o pacote
locales-all estiverem instalados, o suporte a
funcionalidades regionais perde-se e o sistema utiliza mensagens em inglês
dos EUA e trata os dados como ASCII.
Este comportamento é o mesmo que "$LANG" é definido por
"LANG=", "LANG=C", ou
"LANG=POSIX".
O software moderno como o GNOME e o KDE são multilingue. Eles são
internacionalizados ao fazê-los lidar com dados UTF-8 e localizados ao disponibilizar as suas mensagens
traduzidas através da infraestrutura gettext(1). As
mensagens traduzidas podem ser disponibilizadas em pacotes de configuração
local independentes.
O atual sistema GUI de área de trabalho Debian normalmente define a
configuração regional sob o ambiente GUI como
"LANG=xx_YY.UTF-8". Aqui, "xx" são
códigos de idioma ISO 639 e
"YY" são códigos de
país ISO 3166. Estes valores são definidos pela caixa de diálogo
GUI de configuração do ambiente de trabalho e alteram o comportamento do
programa. Veja Seção 1.5.2, “A variável "$LANG"”
A representação mais simples dos dados de texto é o ASCII, que é suficiente para o inglês e utiliza menos de 127 caracteres (representáveis com 7 bits).
Mesmo o Inglês simples pode conter caracteres não-ASCII, ex. as marcas de citação esquerda e direita ligeiramente curvas não estão disponíveis em ASCII.
“double quoted text” is not "double quoted ASCII" ‘single quoted text’ is not 'single quoted ASCII'
A fim de suportar mais caracteres, foram utilizados muitos conjuntos de caracteres e sistemas de codificação para suportar muitas línguas (ver Tabela 11.2, “Lista de valores de codificação e a utilização deles”).
O conjunto de caracteres Unicode pode representar praticamente todos os caracteres conhecidos pelo ser humano com uma gama de pontos de código de 21 bits (ou seja, de 0 a 10FFFF em notação hexadecimal).
O sistema de codificação de texto UTF-8 adapta os pontos de código Unicode a um fluxo de dados de 8 bits sensato, compatível sobretudo com o sistema de processamento de dados ASCII. Este facto torna o UTF-8 a escolha mais moderna e preferida. UTF significa Unicode Transformation Format (Formato de Transformação Unicode). Quando os dados de texto simples ASCII são convertidos para UTF-8, têm exatamente o mesmo conteúdo e tamanho que o ASCII original. Por isso, não perde nada ao implementar a configuração regional UTF-8.
Sob a configurações regionais UTF-8 com programa
de aplicação compatível, pode apresentar e editar dados de texto em qualquer
língua estrangeira desde que as fontes e os métodos de introdução
necessários estejam instalados e ativados. Por exemplo, sob a configuração
regional "LANG=fr_FR.UTF-8", o
gedit(1) (editor de texto para o ambiente de trabalho
GNOME) pode mostrar e editar dados de texto em caracteres chineses enquanto
apresenta menus em francês.
|
Dica |
|---|---|
|
Tanto a nova configuração regional padrão " |
|
Nota |
|---|---|
|
Alguns programas consomem mais memória após suportarem I18N. Isto é porque estão codificados para usar UTF-32(UCS4) internamente para suportar Unicode para optimização de velocidade e consomem 4 bytes por cada caractere ASCII independentemente do locale selcionado. Mais uma vez, não perde nada ao implantar o locale UTF-8. |
Para que o sistema aceda a uma determinada configuração regional, os dados dessa localização devem ser compilados a partir da base de dados das configurações regionais.
O pacote locales não
vem com dados de localidade pré-compilados. É necessário configurá-lo como:
# dpkg-reconfigure locales
Este processo involve 2 passos.
Selecione todas as configurações regionais necessárias para serem compiladas no formato binário. (Certifique-se de que inclui pelo menos uma configuração UTF-8)
Definir a configuração regional predefinida de todo o sistema em
"/etc/default/locale" para usar com o PAM (veja Seção 4.5, “PAM e NSS”).
O valor da configuração regional por defeito do sistema definido em
"/etc/default/locale" pode ser substituído pela
configuração GUI para aplicações GUI.
|
Nota |
|---|---|
|
O sistema de codificação tradicional atual pode ser identificado por
" |
O pacote locales-all vem com dados de regionais
pré-compilados para todos os dados de região. Uma vez que não cria o
ficheiro "/etc/default/locale", poderá ter de instalar
também o pacote locales.
|
Dica |
|---|---|
|
O pacote |
Para troca de dados entre plataformas (veja Seção 10.1.7, “Aparelho de armazenamento amovível”), pode precisar de montar algum
sistema de ficheiros com codificações particulares. por exemplo, o
mount(8) para sistema de
ficheiros vfat assume CP437 se usado
sem opção. Precisa de fornecer uma opção explícita de montagem para usar
UTF-8 ou CP932 para
os nomes dos ficheiros.
|
Nota |
|---|---|
|
Quando se monta automaticamente uma Memória flash USB sob ambientes de trabalho modernos como o GNOME, pode fornecer tal opção de montagem ao clicar com o botão direito no ícone no ambiente de trabalho, clique no separador "Drive", clique para expandir "Definições" e insira "utf8" nas "Opções de montagem:". Não próxima vez que esta memória flash USB for montada, está activa a montagem com UTF-8. |
|
Nota |
|---|---|
|
Se está a atualizar o sistema ou a mover os discos de um sistema antigo não-UTF-8, os nomes de ficheiros com caracteres não-ASCII podem ser codificados com as codificações históricas e obsoletas como a ISO-8859-1 ou eucJP. por favor procure a ajuda de ferramentas de conversão de texto para convertê-los para UTF-8. Veja Seção 11.1, “Ferramentas de conversão de dados em texto”. |
O Samba usa Unicode para os clientes mais
recentes (Windows NT, 200x, XP) mas usa CP850
para os clientes mais antigos (DOS e Windows 9x/Me) por predefinição. Esta
predefinição para os clientes mais antigos pode ser alterada a usar
"dos charset" no ficheiro
"/etc/samba/smb.conf" por exemplo para CP932 para Japonês.
Existem traduções para muitas das mensagens de texto e documentos que são mostrados no sistema Debian, tais como as mensagens de erro, as saídas normais dos programas, os menus e os manuais. A cadeia de ferramentas de comandos gettext(1) do GNU é usada como a ferramenta backend para a maioria das atividades de tradução.
Sob "Tarefas" → "Localização" o aptitude(8) disponibiliza
uma lista extensa de pacotes binários úteis que adicionam mensagens
localizadas às aplicações e fornecem documentação traduzida.
Por exemplo, pode obter as mensagens localizadas para os manuais ao instalar
o pacote manpages-LANG. Para ler o
manual em linguagem Italiana para o nome_do_programa a
partir de "/usr/share/man/it/", execute o seguinte.
LANG=it_IT.UTF-8 man programname
O GNU gettext pode acomodar uma lista prioritária de idiomas de tradução com
a variável de ambiente $LANGUAGE. Por exemplo:
$ export LANGUAGE="pt:pt_BR:es:it:fr"
Para mais informações, consulte info gettext e leia a
secção "A variável LANGUAGE".
A ordem de ordenação dos caracteres com sort(1) e
ls(1) é afetada pelas configurações regionais. Exportando
LANG=en_US.UTF-8 ordena pelo dicionário
A->a->B->b...->Z->z, enquanto a exportação
de LANG=C.UTF-8 ordena na ordem binária
A->B->...->Z->a->b... do dicionário.
O formato de data de ls(1) é afetado pela configuração
regional (ver Seção 9.3.4, “Amostragem personalizada de hora e data”).
O formato de data de date(1) é afetado pela configuração
regional. Por exemplo:
$ unset LC_ALL $ LANG=en_US.UTF-8 date Thu Dec 24 08:30:00 PM JST 2023 $ LANG=en_GB.UTF-8 date Thu 24 Dec 20:30:10 JST 2023 $ LANG=es_ES.UTF-8 date jue 24 dic 2023 20:30:20 JST $ LC_TIME=en_DK.UTF-8 date 2023-12-24T20:30:30 JST
As pontuações numéricas são diferentes consoante as configurações
locais. Por exemplo, na configuração regional Inglês, mil virgula um é
mostrado como "1,000.1" enquanto na configuração regional
Alemão é mostrado como 1.000,1". Pode ver esta diferença
num programa de folha de cálculo.
Cada caraterística pormenorizada da variável de ambiente
"$LANG" pode ser substituída pela definição das variáveis
"$LC_*". Estas variáveis de ambiente podem ser
substituídas novamente pela definição da variável
"$LC_ALL". Veja a página de manual do
locale(7) para mais detalhes. A não ser que tenha uma
razão forte para criar configurações complicadas, por favor mantenha-se
afastado delas e use apenas a variável "$LANG" definida
para uma das configurações regionais UTF-8.
O sistema do teclado pode ser configurado em diferentes disposições do sistema.
Kernel Linux: keyboard(5)
Servidor X: setxkbmap(1),
xkeyboard-config(5), variável de ambiente
XMODIFIERS
GUI de ambiente de trabalho: Estrutura de Método de Entrada:
ibus, fcitx5
Aplicação: variáveis de ambiente para definir a sua fonte de entrada:
GTK_IM_MODULE, QT_IM_MODULE,
QT_IM_MODULES, ...
A estrutura de método de entrada (IM) consiste de:
Motor de método de entrada (IME): Método de entrada atual
Configuração: Lida com a configuração para IBus e outros serviços tais como plugins de IME
Painel: Interface de utilizador como uma barra de linguagem e tabela de seleção de candidado
Entrada multi-linguagem para a aplicação é processada mais ou menos como:
Keyboard UI panel Configuration Application
| ^ | | ^ ^
v | v v | |
Linux kernel -> Input method engine (IME) -+-> Gtk, Qt ---+ |
| ^ | |
| | +-> X11, Wayland -+
v |
IME plugin (ibus-mozc, ...)
O sistema Debian pode ser configurado para funcionar com muitas disposições
internacionais de teclado ao usar o pacote
keyboard-configuration .
# dpkg-reconfigure keyboard-configuration
Para a consola Linux e o sistema X Window, isto atualiza os parâmetros de
configuração em "/etc/default/keyboard". Muitos
caracteres não-ASCII incluindo caracteres acentuados usados por muitas
línguas Europeias podem ser disponibilizados com a tecla dead, a tecla
AltGr, e a tecla compose.
|
Nota |
|---|---|
|
Se o ibus estiver ativo, a sua configuração clássica do teclado X através do
|
Ao contrário do protocolo X Window, o protocolo núcleo do Wayland nem sequer
suporta a entrada de caracteres acentuados. Compositores Populares do
Wayland, como o Mutter para GNOME ou KWin para KDE, implementam protocolos de extensão como
o text-input-unstable-v3 para a entrada de texto (veja
"Protocolos Wayland atuais e
o seu estado de suporte").
O protocolo text-input-unstable-v3 funciona bem com
métodos de entrada para Wayland (veja "Análise retrospetiva de projeto de
método de entrada de Wayland").
A maioria das aplicações GUI são compiladas com bibliotecas GUI como a GTK
ou Qt que suportam este text-input-unstable-v3.
Motores de Método de Entrada (IME) Populares, com o IBus ou Fcitx (versão
5), podem trabalhar com este
text-input-unstable-v3.
As IMEs suportam entrada de texto para muitas linguagens com plugins.
Os IMEs recentes integram funcionalidades de "X Keyboard Extensão (XKB)" como a
setxkbmap anteriormente fornecida pelo X Window para
suportar entrada de texto de caracteres acentuados para linguagens Europeias
para o Wayland.
Para GNOME, o "ibus" é o IME predefinido o qual é
instalado automaticamente via a sua dependência de pacote.
A maioria das funcionalidades de entrada de teclado de multi-linguagem podem ser configuradas em "Definições do GNOME" ou "Ajustes do GNOME".
Algumas funcionalidades de entrada de teclado multi-linguagem podem precisar
de ser configuradas a partir do comando ibus-setup(1).
A entrada de teclado emoji está disponível ao
teclar "SUPER-." (Em simultâneo teclar Windows e teclas
de ponto) seguido de uma palavra chave para cada emoji e teclas de ESPAÇO.
A lista do IBus e dos seus pacotes plugin é a seguinte.
Tabela 8.1. Lista do IBus e dos seus pacotes plugin
| pacote | popcon | tamanho | locale suportado |
|---|---|---|---|
| ibus | V:213, I:252 | 1828 | estrutura de método de entrada que usa dbus |
| ibus-mozc | V:2.1, I:3.8 | 978 | Japonês |
| ibus-anthy | V:0.5, I:1.2 | 8958 | Japonês |
| ibus-skk | V:0.04, I:0.14 | 242 | Japonês |
| ibus-kkc | V:0.03, I:0.18 | 211 | Japonês |
| ibus-libpinyin | V:1.2, I:5.1 | 2767 | Chinês (para zh_CN) |
| ibus-chewing | V:0.19, I:0.90 | 288 | Chinês (para zh_TW) |
| ibus-libzhuyin | V:0.00, I:0.11 | 41009 | Chinês (para zh_TW) |
| ibus-rime | V:0.26, I:0.49 | 78 | Chinês (para zh_CN/zh_TW) |
| ibus-cangjie | V:0.02, I:0.12 | 235 | Chinês (para zh_HK) |
| ibus-hangul | V:0.3, I:2.0 | 264 | Coreano |
| ibus-libthai | V:0.00, I:0.05 | 84 | Thai |
| ibus-table-thai | I:0.05 | 59 | Thai |
| ibus-unikey | V:0.20, I:0.43 | 286 | Vietnamita |
| keyman | I:0.10 | 507 | Multi-linguagem: plugin Keyman para mais de 2000 idiomas |
| ibus-table | V:0.08, I:1.00 | 2271 | tabela de plugins para IBus |
| ibus-m17n | V:0.3, I:2.0 | 373 | Multilingue: Indiano, Árabe e outros |
A estrutura de método de entrada Fcitx (versão
5) é popular com os utilizadores Chineses e compatível com
"ibus".
A lista do "fcitx5" e dos seus pacotes plugin é a
seguinte.
Tabela 8.2. Lista do Fcitx5 e dos seus pacotes plugin
| pacote | popcon | tamanho | locale suportado |
|---|---|---|---|
| fcitx5 | V:7, I:12 | 761 | estrutura de método de entrada compatível com "ibus" |
| fcitx5-mozc | V:1.0, I:1.6 | 1260 | Japonês |
| fcitx5-anthy | V:0.06, I:0.20 | 808 | Japonês |
| fcitx5-skk | V:0.05, I:0.14 | 369 | Japonês |
| fcitx5-kkc | V:0.00, I:0.06 | 416 | Japonês |
| fcitx5-chinese-addons | I:9.0 | 17 | Chinês (meta-pacote para zh_*) |
| fcitx5-pinyin | V:3.8, I:9.4 | 1044 | Chinês (para zh_CN) |
| fcitx5-chewing | V:0.2, I:1.0 | 217 | Chinês (para zh_TW) |
| fcitx5-zhuyin | I:0.06 | 41051 | Chinês (para zh_TW) |
| fcitx5-rime | V:0.44, I:0.84 | 371 | Chinês (para zh_CN/zh_TW) |
| fcitx5-table-cangjie-large | I:0.12 | 1292 | Chinês (para zh_HK) |
| fcitx5-hangul | V:0.09, I:0.23 | 235 | Coreano |
| fcitx5-libthai | I:0.05 | 119 | Thai |
| fcitx5-table-thai | I:0.08 | 34 | Thai |
| fcitx5-unikey | V:0.08, I:0.20 | 588 | Vietnamita |
| fcitx5-m17n | V:0.12, I:0.51 | 259 | Multilingue: Indiano, Árabe e outros |
| fcitx5-table | V:0.4, I:9.2 | 520 | tabela de plugins para fcitx5 |
| fcitx5-keyman | V:0.03, I:0.04 | 235 | Multi-linguagem: plugin Keyman para mais de 2000 idiomas |
Acho muito útil o método de entrada de Japonês começado sob ambiente Inglês
"en_US.UTF-8"). Aqui está como fiz isto com o IBus:
Instale o pacote de ferramenta de entrada em japonês
ibus-mozc (ou ibus-anthy).
Genérico: Execute ibus-setup(1) → selecione "Método de
Entrada" → clique "Adicionar" → "Japonês" → "Mozc (ou
Anthy)" → clique "Adicionar"
GNOME: Selecione "Definições" → "Teclado" → "Fontes de Entrada" → clique
"+" em "Fontes de Entrada" → "Japonês" → "Mozc (ou
Anthy)" → clique "Adicionar"
Pode escolher tantas fontes de entrada quantas desejar.
Voltar a fazer login na conta do utilizador.
Configure cada fonte de entrada clicando com o botão direito do rato no ícone da barra de ferramentas GUI.
Alterne entre as fontes de entrada instaladas com SUPER-ESPAÇO. (SUPER é normalmente a Tecla Windows.)
|
Dica |
|---|---|
|
Se pretender aceder ao ambiente de teclado só com o alfabeto com o teclado
físico japonês no qual shift- |
Para o Wayland:
O pacote im-config não faz nada e pode ser removido em
segurança.
Provavelmente não vai precisar de definir variáveis de ambiente excepto para compatibilidade com coisas antigas, etc.
Se precisar de definir variáveis de ambiente, crie um ficheiro como
"~/.config/environment.d/50-input-method.conf "para as
definir.
Para X Window:
Instalar o pacote im-config.
A entrada do menu GUI para im-config(8) é "Input method"
(Método de entrada).
Em alternativa, execute "im-config" a partir da shell do
utilizador.
O im-config(8) comporta-se de modo diferente se o comando
for executado pelo root ou não.
im-config(8) activa o melhor método de entrada do sistema
e é predefinido sem qualquer acção do utilizador.
A consola do Linux apenas pode mostrar caracteres limitados. (Precisa usar
programas de terminal especiais como o jfbterm(1) para
mostrar linguagens não-Europeias numa consola não GUI.)
O ambiente GUI (Capítulo 7, Sistema GUI (interface gráfica de utilizador)) pode apresentar quaisquer caracteres em UTF-8, desde que as fontes necessárias estejam instaladas e ativadas. (A codificação dos dados originais do tipo de letra é tratada e transparente para o utilizador.)
O sistema Debian pode ser configurado para funcionar com muitas disposições
internacionais de consola ao usar o pacote console-setup.
# dpkg-reconfigure console-setup
Para a consola Linux e o sistema X Window, isto atualiza os parâmetros de
configuração em "/etc/default/console-setup" para mostrar
muitos caracteres não-ASCII incluindo caracteres acentuados usados por
muitas línguas Europeias que podem ser disponibilizados.
Existem vários componentes para configurar a consola de caracteres e as
funcionalidades do sistema ncurses(3).
O ficheiro "/etc/terminfo/*/*"
(terminfo(5))
A variável de ambiente "$TERM"
(term(7))
setterm(1), stty(1),
tic(1) e toe(1)
Se a entrada terminfo para o xterm não
funcionar com um xterm não Debian, mude o seu tipo e
terminal, "$TERM", de "xterm" para uma
das versões de funcionalidades limitadas como o
"xterm-r6" quando iniciar sessão num sistema Debian
remotamente. Veja "/usr/share/doc/libncurses5/FAQ" para
mais. O "dumb" é o denominador comum mais baixo para
"$TERM".
Em localizações ao leste da Asia, o desenhar de caixa, os caracteres Gregos e Cirílicos podem aparecer mais largos que o desejado e causarem o desalinhamento do resultado do terminal (veja Standard Unicode Annex #11, 4.2 Caracteres Ambíguos).
Pode contornar este problema:
gnome-terminal: Preferências → Perfis → nome do
perfil → Compatibilidade → Caracteres de Largura Ambígua →
Estreito
ncurses: Define ambiente export
NCURSES_NO_UTF8_ACS=0.