Índice
$LANG
"
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" em 'multilingualization', 'internationalization', e 'localization' os quais correspondem a M17N, I18N, e L10N. |
O software moderno como o GNOME e o KDE está multi-lingualizado. 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 localização separados. Podem ser seleccionados simplesmente ao definir variáveis de ambiente pertinentes ao locale apropriado.
A representação mais simples dos dados de texto é o ASCII o qual é suficiente para Inglês e usa menos de 127 caracteres (representados em 7 bits). De modo a suportar muitos mais caracteres para o suporte in internacional, foram inventados muitos sistemas de codificação de caracteres. O sistema mais moderno e sensível é o UTF-8 o qual pode lidar com praticamente todos os caracteres conhecidos dos humanos (veja Secção 8.3.1, “Bases de codificação”).
Veja Introdução ao i18n para mais detalhes.
O suporte a hardware internacional é activado com dados de configuração de hardware localizados.
O sistema Debian pode ser configurado para funcionar com muitas disposições
internacionais de teclado usando os pacotes
keyboard-configuration
e
console-setup
.
# dpkg-reconfigure keyboard-configuration # dpkg-reconfigure console-setup
Isto configura o teclado para a consola Linux e o X Window actualiza os
parâmetros de configuração em "/etc/default/keyboard
" e
"/etc/default/console-setup
". Isto também configura o
tipo de letra (font) da consola Linux.
Muitos caracteres não-ASCII incluindo caracteres acentuados usados por muitas linguagens Europeias podem ficar disponíveis com tecla morta, tecla AltGr, e tecla compose.
Para as linguagens Asiáticas, você precisa de um suporte de método de entrada mais complicado como o IBus discutido em seguida.
Entrada multilingue para a aplicação é processada como:
Teclado Aplicação | ^ | | +-> kernel Linux -> Método de entrada -> Gtk, Qt, ou X
A configuração de entrada multilingue para o sistema Debian está
simplificada ao usar a família de pacotes IBus
com o pacote im-config
. A lista de pacotes IBus é a
seguinte.
Tabela 8.1. Lista de suportes a método de entrada com IBus
pacote | popcon | tamanho | locale suportado |
---|---|---|---|
ibus | V:7, I:9 | 2170 | estrutura de método de entrada que usa dbus |
ibus-mozc | V:1, I:1 | 871 | Japonês |
ibus-anthy | V:1, I:3 | 746 | , , |
ibus-kkc | V:0, I:0 | 266 | , , |
ibus-skk | V:0, I:0 | 230 | , , |
ibus-pinyin | V:1, I:2 | 1452 | Chinês (para zh_CN) |
ibus-chewing | V:0, I:0 | 325 | , , (para zh_TW) |
ibus-hangul | V:0, I:1 | 297 | Coreano |
ibus-table | V:1, I:2 | 706 | motor de tabela para IBus |
ibus-table-thai | I:0 | 143 | Thai |
ibus-unikey | V:0, I:0 | 276 | Vietnamita |
ibus-m17n | V:0, I:1 | 163 | Multilingue: Indiano, Árabe e outros |
O método kinput2 e outros métodos de entrada Asiáticos clássicos dependentes do locale ainda existem mas não são recomendados para o ambiente X UTF-8 moderno. As cadeias de ferramentas SCIM e uim são uma aproximação um tanto antiga para o método de entrada internacional para o ambiente X UTF-8 moderno.
Eu acho muito útil o método de entrada de Japonês arrancado sob ambiente
Inglês "en_US.UTF-8
"). Aqui está como eu fiz isto com o
IBus para GNOME3:
Instale o pacote de ferramenta de entrada de Japonês
ibus-anthy
com os seus pacotes recomendados como o
im-config
.
Execute "im-config
" a partir da shell de utilizador e
seleccione "ibus
" como método de entrada.
Seleccione "Definições" → "Teclado" → "Fontes de Entrada" → clique em
"+
" em "Fontes de Entrada" → "Japonês" → "Japonês
(anthy)" e clique "Adicionar".
Seleccione "Japonês" e clique "Adicionar" para suportar a disposição Japonesa de teclado sem conversão de caracteres. (Você pode escolher quantas fontes de entrada desejar.)
Voltar a fazer login na conta do utilizador
Verificar definição por "im-config
".
Configure a fonte de entrada ao clicar com o botão direito no ícone da barra de ferramentas da GUI.
Alterne entre as fontes de entrada instaladas com SUPER-ESPAÇO. (SUPER é normalmente a Tecla Windows.)
Por favor note o seguinte:
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 entrada no menu GUI para im-config(8) está desactivada por predefinição para evitar a desordem.
Se você desejar dar entradas sem ser através do XIM (mecanismo usado pelo
X), regule o valor de "$XMODIFIERS
" para "none" quando
arranca um programa. Este pode ser o caso se você usar a infraestrutura de
entrada de Japonês egg
em
emacs(1),
enquanto desactiva ibus
. A partir da shell, execute como
se segue.
$ XMODIFIERS=none emacs
De modo a ajustar o comando executado pelo menu Debian, coloque configuração
personalizada em "/etc/menu/
" seguindo o método descrito
em "/usr/share/doc/menu/html
".
A consola do Linux apenas pode mostrar caracteres limitados. (Você precisa usar programas de terminal especiais como o jfbterm(1) para mostrar linguagens não-Europeias numa consola não-X.)
O X Window pode mostrar quaisquer caracteres em UTF-8 desde que a font necessária exista. (A codificação dos dados da font original fica ao cuidado do Sistema X Window e é transparente para o utilizador.)
O seguinte foca-se no locale para aplicações que correm sob ambiente X Window iniciado a partir do gdm3(1).
A variável de ambiente "LANG=xx_YY.ZZZZ
" define o locale
para o código de linguagem "xx
", código de país
"yy
", e codificação "ZZZZ
" (veja Secção 1.5.2, “A variável "$LANG
"”).
O sistema Debian actual normalmente define o locale como
"LANG=xx_YY.UTF-8
". Isto usa a codificação UTF-8 com o conjunto de caracteres Unicode. Este sistema de codificação UTF-8 é um sistema de código multibyte e usa pontos de
código inteligentemente. Os dados ASCII, que
consistem apenas em códigos com alcance de 7 bits, são sempre dados UTF-8
válidos consistindo apenas com 1 byte por caractere.
O sistema Debian anterior costumava definir o locale como
"LANG=C
" ou "LANG=xx_YY
" (sem
".UTF-8
").
O conjunto de caracteres ASCII é usado para
"LANG=C
" ou "LANG=POSIX
".
O sistema de codificação tradicional em Unix é usado para
"LANG=xx_YY
".
O sistema de codificação tradicional actual usado para
"LANG=xx_YY
" pode ser identificado ao verificar
"/usr/share/i18n/SUPPORTED
". Por exemplo,
"en_US
" usa codificação "ISO-8859-1
" e
"fr_FR@euro
" usa codificação
"ISO-8859-15
".
![]() |
Dica |
---|---|
Para o significado dos valores de codificação, veja Tabela 11.2, “Lista de valores de codificação e a sua utilização”. |
O conjunto de caracteres Unicode pode representar praticamente todos os caracteres conhecidos dos humanos com um alcance de códigos de 0 até 10FFFF em hexadecimal. O seu armazenamento requer pelo menos 21 bits.
O sistema de codificação de texto UTF-8 encaixa pontos de código Unicode num fluxo de dados de 8 bits sensível compatível com o sistema de processamento de dados ASCII. UTF significa Unicode Transformation Format.
Eu recomendo usar o locale UTF-8 para o seu
ambiente de trabalho, ex. "LANG=en_US.UTF-8
". A primeira
parte do locale determina as mensagens apresentadas pelas aplicações. Por
exemplo, o
gedit(1)
(editor de texto para o ambiente GNOME) sob o locale
"LANG=fr_FR.UTF-8
" pode mostrar e editar dados de texto
em caracteres Chineses enquanto apresenta os menus em Francês, desde que as
fonts e métodos de entrada necessários estejam instalados.
Também recomendo definir o locale usando a variável de ambiente
"$LANG
". Não vejo grande benefício ao definir uma
combinação complicada de variáveis "LC_*
" (veja
locale(1))
sob locale UTF-8.
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.
“texto com dupla citação” não é "ASCII com citação dupla" ‘texto com citação singular’ não é 'ASCII com citação singular'
Quando os dados de texto simples em ASCII são convertidos para UTF-8, fica exactamente com o mesmo conteúdo e tamanho que o original em ASCII. Portanto não se perde nada ao implantar o locale UTF-8.
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 seleccionado. Mais uma vez, você não perde nada ao implantar o locale UTF-8.
Os sistema de codificação não-UTF-8 antigos específicos de marcas tentem a ter diferenças menores mas aborrecidas em alguns caracteres como os gráficos para muitos países. A implantação do sistema UTF-8 pelos Sistemas Operativos modernos praticamente resolveu estes problemas de conflitos de codificação.
De modo ao sistema aceder a um determinado locale, os dados do locale têm de
ser compilados a partir da base de dados de locales. (O sistema Debian
não vem com todos os locales disponíveis
pré-compilados a menos que você instale o pacote
locales-all
.) A lista completa dos locales suportados
disponíveis para compilação está disponível em
"/usr/share/i18n/SUPPORTED
". Isto lista todos os nomes de
locale apropriadamente. O seguinte lista todos os locales UTF-8 disponíveis
já compilados no formato binário.
$ locale -a | grep utf8
A execução do comando seguinte reconfigura o pacote
locales
.
# dpkg-reconfigure locales
Este processo involve 3 passos.
Actualizar a lista de locales disponíveis
Compilá-los num formato binário
Definir o locale predefinido de todo o sistema em
"/etc/default/locale
" para usar com o PAM (veja Secção 4.5, “PAM e NSS”)
A lista dos locale disponíveis deve incluir
"en_US.UTF-8
" e todas as linguagens de interesse com
"UTF-8
".
O locale predefinido recomendado é "en_US.UTF-8
" para
Inglês dos Estados Unidos. Para outras linguagens, por favor certifique-se
de escolher um locale com "UTF-8
". Qualquer uma destas
definições consegue lidar com quaisquer caracteres internacionais.
![]() |
Nota |
---|---|
Apesar da definição de locale para " |
O valor da variável de ambiente "$LANG
" é definido e
alterado por muitas aplicações.
Definido inicialmente pelo mecanismo de login(1) PAM para os programas de consola local do Linux
Definido inicialmente pelo mecanismo PAM do gestor de ecrã para todos os programas do X
Definido inicialmente pelo mecanismo PAM do ssh(1) para os programas de consola remota.
Alterado por algum gestor de ecrã como o gdm3(1) para todos os programas do X
Alterado pelo código de arranque da sessão X via
"~/.xsessionrc
" para todos os programas do X
Alterado pelo código de arranque da shell,
ex. "~/.bashrc
", para todos os programas de consola
![]() |
Dica |
---|---|
É uma boa ideia instalar um locale predefinido para todo o sistema como
" |
Você pode escolher um locale específico apenas sob X Window não relacionado com o seu locale predefinido de todo o sistema usando personalização do PAM (veja xref linkend="_pam_and_nss"/>) como se segue.
Este ambiente deverá disponibilizar-lhe a melhor experiência de ambiente de trabalho com estabilidade. Você tem acesso ao terminal de caracteres funcional com mensagens legíveis mesmo quando o Sistema X Window não está a funcionar. Isto torna-se essencial para linguagens que usam caracteres não-romanos como o Chinês, Japonês e Coreano.
![]() |
Nota |
---|---|
Pode existir outra maneira disponível como o melhoramento do pacote de gestão de sessão X, mas por favor leia o seguinte como o método genérico e básico de definir o locale. Para o gdm3(1), Eu sei que você pode seleccionar da sessão X através do seu menu. |
A seguinte linha define a localização do ficheiro do ambiente de linguagem
no ficheiro do configuração do PAM, como o
"/etc/pam.d/gdm3
.
auth required pam_env.so read_env=1 envfile=/etc/default/locale
Mude isto para o seguinte.
auth required pam_env.so read_env=1 envfile=/etc/default/locale-x
Para Japonês, crie um ficheiro "/etc/default/locale-x
"
com permissões "-rw-r--r-- 1 root root
" contendo o
seguinte.
LANG="ja_JP.UTF-8"
Mantenha o ficheiro "/etc/default/locale
" predefinido
para outros programas com o seguinte.
LANG="en_US.UTF-8"
Esta é a técnica mais genérica para personalizar o locale e faz com que o diálogo de selecção de menu do próprio gdm3(1) fique localizado (traduzido).
Alternativamente para este caso, você pode simplesmente alterar o locale
usando o ficheiro "~/.xsessionrc
".
Para troca de dados entre plataformas (veja Secção 10.1.7, “Dispositivo de armazenamento amovível”), você 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. Você 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 caneta de memória USB sob ambientes de trabalho modernos como o GNOME, você 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 caneta de memória for montada, está activa a montagem com UTF-8. |
![]() |
Nota |
---|---|
Se você está a actualizar 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 os converter para UTF-8. Veja Secçã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 usando
"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 actividades 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, você 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 <nome_do_programa>
A ordem de ordenação do caracteres com o sort(1) é afectada pela escolha de linguagem do locale. Os locales Espanhol e Inglês ordenam de forma diferente.
O formato de data do
ls(1)
é afectado pelo locale. Os formatos de data de "LANG=C ls
-l
" e "LANG=en_US.UTF-8
" são diferentes (veja
Secção 9.2.5, “Amostragem personalizada de hora e data”).
As pontuações numéricas são diferentes para os locales. Por exemplo, em
locale Inglês, mil ponto um é mostrado como "1,000.1
"
enquanto em locale Alemão é mostrado como 1.000,1
". Você
pode ver esta diferença num programa de folha de cálculo.