Capítulo 22. Localização - Uso e Configuração do i18n/L10n

Esta tradução pode estar desatualizada. Para ajudar com as traduções, acesse a ferramenta de traduções do FreeBSD.

22.1. Sinopse

O FreeBSD é um projeto distribuído com usuários e colaboradores localizados em todo o mundo. Como tal, o FreeBSD suporta a localização em muitos idiomas, permitindo aos usuários visualizar, inserir ou processar dados em idiomas diferentes do inglês. Pode-se escolher entre a maioria dos principais idiomas, incluindo, mas não se limitando a: Chinês, Alemão, Japonês, Coreano, Francês, Russo e Vietnamita.

O termo internacionalização foi encurtado para i18n, que representa o número de letras entre a primeira e a última letra da internacionalização. L10n usa o mesmo esquema de nomes, mas a partir da localização. Os métodos, protocolos e aplicativos i18n/L10n permitem que os usuários usem os idiomas de sua escolha.

Este capítulo discute os recursos de internacionalização e localização do FreeBSD. Depois de ler este capítulo, você saberá:

  • Como os nomes de localidade são construídos.

  • Como definir a localidade para um login shell.

  • Como configurar o console para idiomas diferentes do inglês.

  • Como configurar o Xorg para diferentes idiomas.

  • Como encontrar aplicativos compatíveis com i18n.

  • Onde encontrar mais informações para configurar idiomas específicos.

Antes de ler este capítulo, você deve:

22.2. Usando Localização

As configurações de localização são baseadas em três componentes: o código do idioma, o código do país e a codificação. Nomes de localidade são construídos a partir dessas partes da seguinte maneira:

LanguageCode_CountryCode.Encoding

O LanguageCode e o CountryCode são usados para determinar o país e a variação de linguagem específica. A Idiomas Comum e Códigos de País apresenta alguns exemplos de LanguageCode___CountryCode:

Tabela 1. Idiomas Comum e Códigos de País
LanguageCode_Country CodeDescrição

en_US

Inglês, Estados Unidos

ru_RU

Russo, Rússia

zh_TW

Chinês Tradicional, Taiwan

Uma lista completa de localidades disponíveis pode ser encontrada digitando:

% locale -a | more

Para determinar a configuração atual de localidade:

% locale

Conjuntos de caracteres específicos de idioma, como ISO8859-1, ISO8859-15, KOI8-R e CP437, são descritos em multibyte(3). A lista ativa de conjuntos de caracteres pode ser encontrada no IANA Registry.

Alguns idiomas, como Chinês ou Japonês, não podem ser representados usando caracteres ASCII e requerem uma codificação de idioma estendida usando caracteres wide ou multibyte. Exemplos de codificações de wide ou multibyte incluem EUC e Big5. Aplicativos mais antigos podem confundir essas codificações com caracteres de controle, enquanto aplicativos mais novos geralmente reconhecem esses caracteres. Dependendo da implementação, os usuários podem ser obrigados a compilar um aplicativo com suporte a caracteres wide ou multibyte, ou configurá-lo corretamente.

O FreeBSD usa codificações de locale compatíveis com o Xorg.

O restante desta seção descreve os vários métodos para configurar a localidade em um sistema FreeBSD. A próxima seção discutirá as considerações para encontrar e compilar aplicativos com suporte a i18n.

22.2.1. Definindo a Localidade para o Login Shell

As configurações de localidade são configuradas no ~/.login_conf do usuário ou no arquivo de inicialização do shell do usuário: ~/.profile, ~/.bashrc, or ~/.cshrc.

Duas variáveis de ambiente devem ser definidas:

  • LANG, que define o idioma *

    MM_CHARSET, que define o conjunto de caracteres MIME usado pelos aplicativos

Além da configuração do shell do usuário, essas variáveis também devem ser definidas para configurações específicas de aplicativos e configurações do Xorg.

Dois métodos estão disponíveis para fazer as atribuições de variáveis necessárias: o método classes de login, que é o método recomendado, e o método arquivo de inicialização. As próximas duas seções demonstram como usar os dois métodos.

22.2.1.1. Método de Classes de Login

Este primeiro método é o método recomendado, pois atribui as variáveis de ambiente necessárias para o nome da localidade e os conjuntos de caracteres MIME para todos os shell possíveis. Essa configuração pode ser executada para cada usuário ou pode ser configurada para todos os usuários pelo superusuário.

Esse exemplo mínimo define as duas variáveis para a codificação Latin-1 no .login_conf do diretório inicial de um usuário individual:

me:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:

Aqui está um exemplo de ~/.login_conf de um usuário que define as variáveis para o Chinês Tradicional na codificação BIG-5. Mais variáveis são necessárias porque alguns aplicativos não respeitam corretamente variáveis de idioma para o Chinês, Japonês e Coreano:

#Users who do not wish to use monetary units or time formats
#of Taiwan can manually change each variable
me:\
	:lang=zh_TW.Big5:\
	:setenv=LC_ALL=zh_TW.Big5,LC_COLLATE=zh_TW.Big5,LC_CTYPE=zh_TW.Big5,LC_MESSAGES=zh_TW.Big5,LC_MONETARY=zh_TW.Big5,LC_NUMERIC=zh_TW.Big5,LC_TIME=zh_TW.Big5:\
	:charset=big5:\
	:xmodifiers="@im=gcin": #Set gcin as the XIM Input Server

Como alternativa, o superusuário pode configurar a localização para todos os usuários do sistema. As seguintes variáveis no /etc/login.conf são usadas para definir a localidade e o conjunto de caracteres MIME:

language_name|Account Type Description:\
	:charset=MIME_charset:\
	:lang=locale_name:\
	:tc=default:

Então, o exemplo anterior do Latin-1 ficaria assim:

german|German Users Accounts:\
	:charset=ISO-8859-1:\
	:lang=de_DE.ISO8859-1:\
	:tc=default:

Veja o login.conf(5) para mais detalhes sobre estas variáveis. Observe que ele já contém a classe russian predefinida.

Sempre que /etc/login.conf for editado, lembre-se de executar o seguinte comando para atualizar o banco de dados de recursos:

# cap_mkdb /etc/login.conf

Para um usuário final, o comando cap_mkdb vai precisar rodar no seu ~/.login_conf para que qualquer mudança tenha efeito.

22.2.1.1.1. Utilitários que Alteram as Classes de Login

Além de editar manualmente o /etc/login.conf, vários utilitários estão disponíveis para definir a localidade de usuários recém-criados.

Ao usar o vipw para adicionar novos usuários, especifique o idioma para definir a localidade:

user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh

Ao usar o adduser para adicionar novos usuários, o idioma padrão pode ser pré-configurado para todos os novos usuários ou especificado para um usuário individual.

Se todos os novos usuários usarem o mesmo idioma, configure defaultclass=language em /etc/adduser.conf.

Para substituir essa configuração ao criar um usuário, insira a localidade necessária neste prompt:

Enter login class: default []:

ou especifique a localidade ao executar o adduser:

# adduser -class language

Se o pw for usado para adicionar novos usuários, especifique a localidade da seguinte forma:

# pw useradd user_name -L language

Para alterar a classe de login de um usuário existente, chpass pode ser usado. Execute-o como superusuário e forneça o nome do usuário para edição como argumento.

# chpass user_name

22.2.1.2. Método de Arquivo de Inicialização do Shell

Esse segundo método não é recomendado, pois cada shell usado requer configuração manual, e cada shell tem um arquivo de configuração diferente e uma sintaxe diferente. Como exemplo, para definir o idioma Alemão para o shell sh, essas linhas podem ser adicionadas ao ~/.profile para definir o shell apenas para esse usuário. Essas linhas também podem ser adicionadas ao /etc/profile ou /usr/shared/skel/dot.profile para definir esse shell para todos os usuários:

LANG=de_DE.ISO8859-1; export LANG
MM_CHARSET=ISO-8859-1; export MM_CHARSET

No entanto, o nome do arquivo de configuração e a sintaxe usada são diferentes para o shell csh. Estas são as configurações equivalentes para o ~/.csh.login, /etc/csh.login, ou /usr/shared/skel/dot.login:

setenv LANG de_DE.ISO8859-1
setenv MM_CHARSET ISO-8859-1

Para complicar, a sintaxe necessária para configurar o Xorg no ~/.xinitrc também depende do shell. O primeiro exemplo é para o shell sh e o segundo é para o shell csh:

LANG=de_DE.ISO8859-1; export LANG
setenv LANG de_DE.ISO8859-1

22.2.2. Configuração do Console

Várias fontes de localização estão disponíveis para o console. Para ver uma lista de fontes disponíveis, digite ls /usr/shared/syscons/fonts. Para configurar a fonte do console, especifique o font_name, sem o sufixo .fnt, em /etc/rc.conf:

font8x16=font_name
font8x14=font_name
font8x8=font_name

O keymap e o screenmap podem ser definidos adicionando o seguinte ao /etc/rc.conf:

scrnmap=screenmap_name
keymap=keymap_name
keychange="fkey_number sequence"

Para ver a lista de screenmaps disponíveis, digite ls /usr/shared/syscons/scrnmaps. Não inclua o sufixo .scm ao especificar screenmap_name. Um screenmap com uma fonte mapeada correspondente geralmente é necessário como uma solução alternativa para expandir o bit 8 para o 9 na matriz de caracteres de fonte de um adaptador VGA para que as letras sejam movidas para fora da área de pseudo-grafia se a fonte da tela usar uma coluna de 8 bits.

Para ver a lista de mapas de teclado disponíveis, digite ls /usr/shared/syscons/keymaps. Ao especificar o keymap_name, não inclua o sufixo .kbd. Para testar os mapas de teclado sem reinicializar o sistema, use kbdmap(1).

A entrada keychange geralmente é necessária para programar as teclas de função para corresponder ao tipo de terminal selecionado, porque as sequências de teclas de função não podem ser definidas no mapa de teclas.

Em seguida, defina o tipo de terminal do console correto em /etc/ttys para todas as entradas do terminal virtual. Tipos de Terminal Definidos para Conjuntos de Caracteres resume os tipos de terminais disponíveis:

Tabela 2. Tipos de Terminal Definidos para Conjuntos de Caracteres
Conjunto de CaracteresTipo de Terminal

ISO8859-1 ou ISO8859-15

cons25l1

ISO8859-2

cons25l2

ISO8859-7

cons25l7

KOI8-R

cons25r

KOI8-U

cons25u

CP437 (VGA padrão)

cons25

US-ASCII

cons25w

Para idiomas com caracteres wide ou multibyte, instale um console para esse idioma a partir da Coleção de Ports do FreeBSD. Os ports disponíveis estão resumidos em Consoles Disponíveis pela Coleção de Ports. Uma vez instalado, consulte o pkg-message dos ports ou as páginas de manual para instruções de configuração e uso.

Tabela 3. Consoles Disponíveis pela Coleção de Ports
IdiomaLocalização do Port

Chinês Tradicional (BIG-5)

chinese/big5con

Chinês/Japonês/Coreano

chinese/cce

Chinês/Japonês/Coreano

chinese/zhcon

Japonês

chinese/kon2

Japonês

japanese/kon2-14dot

Japonês

japanese/kon2-16dot

Se o moused estiver ativado no /etc/rc.conf, uma configuração adicional pode ser necessária. Por padrão, o cursor do mouse do driver syscons(4) ocupa o intervalo 0xd0-0xd3 no conjunto de caracteres. Se o idioma usar esse intervalo, mova o intervalo do cursor adicionando a seguinte linha ao /etc/rc.conf:

mousechar_start=3

22.2.3. Configuração do Xorg

O O sistema X Window descreve como instalar e configurar o Xorg. Ao configurar localizações no Xorg, fontes adicionais e métodos de entrada estão disponíveis na Coleção de Ports do FreeBSD. Configurações específicas de i18n para aplicações como fontes e menus podem ser tunadas em ~/.Xresources e devem permitir que os usuários visualizem o idioma selecionado nos menus das aplicações gráficas.

O protocolo X Input Method (XIM) é um padrão Xorg para inserir caracteres não Ingleses. Métodos de Entrada Disponíveis resume os métodos de entrada de aplicações que estão disponíveis na Coleção de Ports do FreeBSD. Aplicativos adicionais Fcitx e Uim também estão disponíveis.

Tabela 4. Métodos de Entrada Disponíveis
IdiomaMétodo de Entrada

Chinês

chinese/gcin

Chinês

chinese/ibus-chewing

Chinês

chinese/ibus-pinyin

Chinês

chinese/oxim

Chinês

chinese/scim-fcitx

Chinês

chinese/scim-pinyin

Chinês

chinese/scim-tables

Japonês

japanese/ibus-anthy

Japonês

japanese/ibus-mozc

Japonês

japanese/ibus-skk

Japonês

japanese/im-ja

Japonês

japanese/kinput2

Japonês

japanese/scim-anthy

Japonês

japanese/scim-canna

Japonês

japanese/scim-honoka

Japonês

japanese/scim-honoka-plugin-romkan

Japonês

japanese/scim-honoka-plugin-wnn

Japonês

japanese/scim-prime

Japonês

japanese/scim-skk

Japonês

japanese/scim-tables

Japonês

japanese/scim-tomoe

Japonês

japanese/scim-uim

Japonês

japanese/skkinput

Japonês

japanese/skkinput3

Japonês

japanese/uim-anthy

Coreano

korean/ibus-hangul

Coreano

korean/imhangul

Coreano

korean/nabi

Coreano

korean/scim-hangul

Coreano

korean/scim-tables

Vietnamita

vietnamese/xvnkb

Vietnamita

vietnamese/x-unikey

22.3. Encontrando Aplicações i18n

Aplicações i18n são programadas usando kits i18n em bibliotecas. Isso permite que os desenvolvedores escrevam um arquivo simples e traduzam menus e textos exibidos para cada idioma.

A Coleção de Ports do FreeBSD contém muitos aplicativos com suporte embutido para caracteres wide ou multibyte para vários idiomas. Tais aplicativos incluem i18n em seus nomes para fácil identificação. No entanto, eles nem sempre suportam o idioma necessário.

Alguns aplicativos podem ser compilados com o conjunto de caracteres específico. Isso geralmente é feito no Makefile do port ou passando um parâmetro para o configure. Consulte a documentação i18n no código fonte do respectivo port do FreeBSD para obter mais informações sobre como determinar o parâmetro do configure necessário ou o Makefile do port para determinar quais opções de compilação para usar ao compilar o port.

22.4. Configuração de Localização para Idiomas Específicos

Esta seção fornece exemplos de configuração para definir a localização de um sistema FreeBSD para o idioma Russo. Em seguida, ele fornece alguns recursos adicionais para definir a localização com outros idiomas.

22.4.1. Idioma Russo (Codificação KOI8-R)

Esta seção mostra as configurações específicas necessárias para definir a localização de um sistema FreeBSD para o idioma Russo. Consulte Usando Localização para obter uma descrição mais completa de cada tipo de configuração.

Para definir esta localidade para o login shell, adicione as seguintes linhas ao ~/.login_conf de cada usuário:

me:My Account:\
	:charset=KOI8-R:\
	:lang=ru_RU.KOI8-R:

Para configurar o console, adicione as seguintes linhas ao /etc/rc.conf:

keymap="ru.utf-8"
scrnmap="utf-82cp866"
font8x16="cp866b-8x16"
font8x14="cp866-8x14"
font8x8="cp866-8x8"
mousechar_start=3

Para cada entrada ttyv em /etc/ttys, use cons25r como o tipo de terminal.

Para configurar a impressão, é necessário um filtro de saída especial para converter de KOI8-R para CP866, pois a maioria das impressoras com caracteres Russos vem com a página de código de hardware CP866. O FreeBSD inclui um filtro padrão para este propósito, /usr/libexec/lpr/ru/koi2alt. Para usar este filtro, adicione esta entrada ao /etc/printcap:

lp|Russian local line printer:\
	:sh:of=/usr/libexec/lpr/ru/koi2alt:\
	:lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:

Consulte printcap(5) para obter uma explicação mais detalhada.

Para configurar o suporte a nomes de arquivos Russos em sistemas de arquivos montados do MS-DOS™, inclua -L e o nome da localidade ao adicionar uma entrada ao /etc/fstab:

/dev/ad0s2      /dos/c  msdos   rw,-Lru_RU.KOI8-R 0 0

Consulte mount_msdosfs(8) para mais detalhes.

Para configurar fontes Russas no Xorg, instale o pacote x11-fonts/xorg-fonts-cyrillic. Em seguida, verifique a seção "Files" em /etc/X11/xorg.conf. A seguinte linha deve ser adicionada antes de qualquer outra entrada FontPath:

FontPath   "/usr/local/lib/X11/fonts/cyrillic"

Fontes Cirílicos adicionais estão disponíveis na Coleção de Ports.

Para ativar um teclado Russo, adicione o seguinte à seção "Keyboard" do /etc/xorg.conf:

Option "XkbLayout"   "us,ru"
Option "XkbOptions"  "grp:toggle"

Certifique-se de que XkbDisable esteja comentado nesse arquivo.

Para grp:toggle use Right Alt, para grp:ctrl_shift_toggle use Ctrl+Shift. Para grp:caps_toggle use CapsLock. A antiga função CapsLock ainda está disponível no modo LAT apenas usando Shift+CapsLock. grp:caps_toggle não funciona no Xorg por alguma razão desconhecida.

Se o teclado tiver as teclas "Windows™" e algumas teclas não alfabéticas mapeadas incorretamente, adicione a seguinte linha ao /etc/xorg.conf:

Option "XkbVariant" ",winkeys"

O teclado Russo XKB pode não funcionar com aplicativos não localizados. Aplicativos minimamente localizados devem chamar uma função XtSetLanguageProc (NULL, NULL, NULL); no início do programa.

Veja http://koi8.pp.ru/xwin.html para mais instruções sobre como definir a localização em aplicações Xorg. Para mais informações gerais sobre a codificação KOI8-R, consulte http://koi8.pp.ru/.

22.4.2. Recursos Específicos de Idioma Adicionais

Esta seção lista alguns recursos adicionais para a configuração de outras localidades.

Chinês Tradicional para Taiwan

O projeto FreeBSD-Taiwan tem um HOWTO em Chinês para o FreeBSD em http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/.

Localização do Idioma Grego

Um artigo completo sobre o suporte Grego no FreeBSD está disponível aqui, somente em Grego, como parte da documentação oficial do FreeBSD em Grego.

Localização do Idioma Japonês e Coreano

Para Japonês, consulte http://www.jp.FreeBSD.org/ e, para Coreano, consulte http://www.kr.FreeBSD.org/.

Documentação do FreeBSD em Outros Idiomas

Alguns colaboradores do FreeBSD traduziram partes da documentação do FreeBSD para outros idiomas. Elas estão disponíveis através de links no site do FreeBSD ou em /usr/shared/doc.


Última alteração em: 9 de março de 2024 por Danilo G. Baio