14.3. Usando a localização

Em todo seu esplendor, I18N não é específico ao FreeBSD e é uma convenção. Nós incentivamos você a ajudar a serguir esta convenção.

Configurações de localização são baseadas em três termos principais: Código de língua, Código de país, e Codificação. Nomes de locale são construídos a partir dessas partes que seguem:

LanguageCode_CountryCode.Encoding

14.3.1. Códigos de língua e país

A fim do sistema FreeBSD localizar línguas específicas (ou qualquer outra suportada no I18N em sistemas UNIX® like), o usuário precisa procurar pelos códigos para país e língua específicos (códigos de país fala para a aplicação que variação de língua deve ser usada). E também, navegadores web, servidores SMTP/POP, servidores web, etc. Faça decisões baseada nelas. Os seguintes exemplos são de códigos de língua/país:

Código de Língua/País Descrição
en_US Inglês - Estados Unidos
ru_RU Russo para Rússia
zh_TW Tradicional Chinês para Taiwan

14.3.2. Codificações

Algumas línguas usam codificações não-ASCII que são 8-bit, caracteres wide ou multibyte, veja multibyte(3) para mais detalhes. Aplicações mais velhas não os reconhecem e os confundem por caracteres de controle. Aplicações mais novas geralmente reconhecem caracteres 8-bit. Dependendo da implementação, usuários podem necessitar compilar a aplicação com suporte a caracteres wide ou multibyte, ou configura-lo corretamente. Para poder entrar e processar caracteres wide ou multibyte, a Coleção de Ports do FreeBSD fornece cada língua com programas diferentes. Consulte a documentação do I18N no respectivo port do FreeBSD.

Especialmente, o usuário deve olhar a documentação da aplicação para decidir como configura-la corretamente ou para passar valores corretos ao configure/Makefile/compilador.

Algumas coisas que você deve ter sempre em mente são:

Você pode verificar a lista ativa de caracteres configurados em IANA Registry.

Nota: As versões do FreeBSD 4.5 e acima usam prefrivelmente codificações do locale X11-compatível.

14.3.3. Aplicações I18N

No sistema de Ports e Pacotes do FreeBSD, aplicações I18N são nomeadas com I18N em seus nomes para fácil identificação. Entretanto, elas nem sempre suportam a língua necessitada.

14.3.4. Configurando Locale

Geralmente é suficiente exportar o valor do nome do locale como LANG no login da shell. Isto deve ser feito no arquivo ~/.login_conf dos usuários ou no arquivo de inicialização dos usuários da shell em (~/.profile, ~/.bashrc, ~/.cshrc). Não é necessário configurar subconjuntos do locale subsets como o LC_CTYPE, LC_CTIME. Por favor consulte a documentação do FreeBSD sobre línguas-específicas para mais informações.

Você deve configurar as duas seguintes variáveis de ambiente em seus arquivos de configuração:

Isto inclui a configuração shell do usuário, a configuração específica de aplicação, e configuração do X11.

14.3.4.1. Configurando métodos de Locale

Há dois métodos para configurar o locale, e ambos estão descritos abaixo. O primeiro (recomendado) é atribuíndo as variáveis de ambiente em classe de login, e o segundo é adicionando as atribuições da variável de ambiente ao arquivo de inicialização do sistema shell.

14.3.4.1.1. Método de classes de login

Este método permite as variáveis de ambientes necessárias para o nome do locale e o caracter do MIME ser atribuído uma vez para cada shell em vez de adicionar atribuições específicas da shell para cada arquivo de inicialização. Configuração a nível de usuário pode ser feita pelo próprio usuário e configuração a nível de administrador requer privilégios de super usuário.

14.3.4.1.1.1. Configuração a nível de usuário

Aqui está um pequeno exemplo do arquivo .login_conf no diretório home do usuário que tem ambas as variáveis de codificação para Latin-1:

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

Aqui está um exemplo do .login_conf com variáveis configuradas para o chinês tradicional em codificação BIG-5. Observe que há muito mais variáveis configuradas porque alguns programas não respeitam as variáveis do locale corretamente para Chinês, Japonês, e Coreano.

#Usários que não desejam usar unidades monetárias ou formato de hora
#de Taiwan podem manualmente mudar cada variável
me:\
    lang=zh_TW.Big5:\
    lc_all=zh_TW.Big:\
    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=xcin": #Setting the XIM Input Server

Veja Configuração a nível de administrador e login.conf(5) para mais detalhes.

14.3.4.1.1.2. Configuração a nível de administrador

Verifique que a classe do login do usuário em /etc/login.conf configura a língua correta. Certifique-se que estas configurações aparecem no /etc/login.conf:

nome__da_língua:título_da_conta:\
    :charset=MIME_charset:\
    :lang=nome_do_locale:\
    :tc=default:

Então baseando em nosso exemplo anterior usando Latin-1, isto deveria ficar assim:

german:Conta de usuários alemães:\
    :charset=ISO-8859-1:\
    :lang=de_DE.ISO8859-1:\
    :tc=default:

Modificando classes de login com o vipw(8)

Use o vipw para adicionar novos usuários, e veja que foi criado uma entrada como esta:

usuário:senha:1111:11:língua:0:0:Nome do usuário:/home/usuário:/bin/sh

Modificando claases de login com o adduser(8)

Use o adduser para adicionar novos usuários, e faça o seguinte:

  • Configure defaultclass = língua em /etc/adduser.conf. Mantenha em mente que você deve colocar uma classe padrão para todos usuários de outras línguas neste caso.

  • Um variante alternativo é respondendo a língua específica cada vez

    Enter login class: default []:
    
    aparece no adduser(8).

  • Outra alternativa é usar o seguinte para cada usuário de língua diferente que você deseja adicionar:

    # adduser -class língua
    

Modificando classes de login com o pw(8)

Se você usa o pw(8) para adicionar novos usuários, rode-o dessa forma:

# pw useradd nome_do_usuário -L língua

14.3.4.1.2. Método do arquivo de inicialização da shell

Nota: Este método não é recomendado porque ele requer configurações diferentes para cada possível programa shell escolhido. Use o Método de classes de Login em vez disso.

Para adicionar o nome do locale e a configuração do caracter MIME, basta configurar duas variáveis de ambiente mostradas abaixo nos arquivos de inicialização de shell /etc/profile e/ou /etc/csh.login. Nós iremos usar a língua alemã como exemplo abaixo:

In /etc/profile:

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

Ou em /etc/csh.login:

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

Alternativamente, você pode adicionar as instruções acima ao /usr/share/skel/dot.profile (similar ao que foi usado acima no /etc/profile), ou /usr/share/skel/dot.login (similar ao que foi usado acima no /etc/csh.login.

Para o X11:

No $HOME/.xinitrc:

LANG=de_DE.ISO8859-1; export LANG

Or:

setenv LANG de_DE.ISO8859-1

Dependendo de sua shell (veja acima).

14.3.5. Configuração do Console

Para todos os caracteres C chars configurados, configure as fontes corretas do console no /etc/rc.conf para a língua em questão com:

font8x16=nome_da_fonte
font8x14=nome_da_fonte
font8x8=nome_da_fonte

O nome_da_fonte aqui é pego do diretório /usr/share/syscons/fonts, sem o sufixo .fnt.

Também tenha certeza de ter configurado corretamente o keymap e screenmap para o seu caracter C char único configurado através do /stand/sysinstall. Dentro do sysinstall, escolha Configure, depois Console. Alternativamente, você pode adicionar o seguinte ao /etc/rc.conf:

scrnmap=nome_da_screenmap
keymap=nome_da_keymap
keychange="sequência de número_fkey"

O screenmap_name aqui é pego do diretório /usr/share/syscons/scrnmaps, sem o sufixo .scm. O screenmap com a correspondente fonte mapeada é necessária como correção para expandir 8 bit para 9 bit em fontes de adaptadores VGA com matrix de caracteres em área de gráficos pseudos, ex. para mover letras fora da área se a fonte da tela usar uma coluna de 8 bit.

Se você tem o daemon moused habilitado setando o seguinte em seu /etc/rc.conf:

moused_enable="YES"

então examina a informação do cursor do mouse no próximo parágrafo.

Por padrão o cursor do mouse do driver syscons(4) ocupa uma escala 0xd0-0xd3 na configuração de caracter. Se sua língua usa esta escala, você precisa mover a escala do cursor para fora dela. Para habilitar a correção disso para versões do FreeBSD antes da 5.0, insira a seguinte linha em sua configuração do kernel:

options        SC_MOUSE_CHAR=0x03

Para versões do FreeBSD 4.4 e acima, insira a seguinte linha no /etc/rc.conf:

mousechar_start=3

O nome_da_keymap aqui é pego do diretório /usr/share/syscons/keymaps, sem o sufixo .kbd. Se você não tem certeza que keymap usar, você pode usar o kbdmap(1) para testar keymaps sem rebootar.

O keychange é normalmente necessário para teclas de função de programas para achar o tipo de terminal selecionado porque as seqüências de teclas de funções não podem ser definidas no mapa de teclado.

Esteja certo também de ter configurado corretamente o tipo de terminal de console em /etc/ttys para todas entradas ttyv*. As correspondências pré definidas atuais são:

Configuração de caracter Tipo de terminal
ISO-8859-1 ou ISO-8859-15 cons25l1
ISO-8859-2 cons25l2
ISO-8859-7 cons25l7
KOI8-R cons25r
KOI8-U cons25u
CP437 (padrão VGA) cons25
US-ASCII cons25w

Para línguas de caracteres wide ou multibyte, use o port do FreeBSD correto em seu diretório /usr/ports/língua. Alguns ports aparecem como console enquanto o sistema os enxerga como uma vtty serial, daqui você deve reservar bastante vtty's para o X11 e o console pseudo-serial. Aqui está a lista parcial de aplicações para usar outras línguas no console:

Língua Localização
Chinês tradicional(BIG-5) chinese/big5con
Japonês japanese/ja-kon2-* or japanese/Mule_Wnn
Coreano korean/ko-han

14.3.6. Configuração do X11

Embora o X11 não faça parte do projeto FreeBSD, nós inclímos alguma informação aqui para os usuários do FreeBSD. Para mais detalhes, consulte o XFree86™ site web ou qualquer servidor X11 que você usa.

No ~/.Xresources, você pode adicionalmente ajustar aplicações específicas a configuração I18N (ex., fontes, menus, etc.).

14.3.6.1. Mostrando fontes

Instale o servidor X11 TrueType® Common (x11-servers/XttXF86srv-common) e instale as fontes de língua TrueType. Configurando o locale correto, deve permitir você visualizar sua língua selecionada nos menus e semelhantes.

14.3.6.2. Colocando caractéres não-inglês

O protocolo de método de entrada do X11 (XIM) é um padrão novo para todos clientes X11. Todas aplicações do X11 devem ser escritas como clientes XIM que fazem entrada do servidor XIM. Há diversos servidores XIM disponíveis para diferentes línguas.

14.3.7. Configuração de impressora

Alguns caracteres C chars únicos configurados são geralmente códigos de hardware nas impressoras. Caracter wide ou multibyte configurados requerem configuração especial e nós recomendamos usar o apsfilter. Você pode também converter o documento para PostScript® ou formato PDF usando convertor de língua específica.

14.3.8. Kernel e Sistema de arquivos

O FreeBSD fast filesystem (FFS) é limpo 8-bit, então ele pode ser usado com qualquer caracter único C chars configurado (veja multibyte(3)), mas não há nenhum nome de caracter configurado armazenado no sistema de arquivos; ex., é 8-bitcrú e não sabe nada sobre a ordem de codificação. Oficialmente, o FFS não suporta nenhuma forma de caracteres wide ou multibyte configurados ainda. Porém, alguns caracteres wide ou multibyte tem configurados patches independentes para o FFS habilitando o suporte. São somente soluções importáveis provisórias ou hacks e nós decidimos não incluí-las na árvore de código fonte. Consulte web sites de línguas respectivas para mais informações e arquivos de patch.

O sistema de arquivos MS-DOS® do FreeBSD tem a habilidade configurável de converter-se entre o MS-DOS, o caracter Unicode configurado e escolher a configuração de caracter no sistema de arquivos do FreeBSD. Veja mount_msdos(8) para detalhes.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.