O SUSE Linux é amplamente internacionalizado e pode ser modificado para satisfazer as necessidades locais de maneira flexível. Em outras palavras, a internacionalização (I18N) permite localizações específicas (L10N). As abreviações I18N e L10N são derivadas das primeiras e últimas letras das palavras e, no meio, está o número de letras omitidas.
As configurações são feitas com variáveis LC_ definidas no arquivo /etc/sysconfig/language. Estas referem-se não somente ao suporte ao idioma nativo, mas também às categorias Mensagens (Idioma), Conjunto de Caracteres, Ordem de Classificação, Hora e Data, Números e Moeda. Cada uma dessas categorias pode ser definida diretamente com sua própria variável ou indiretamente com uma variável master no arquivo language (consulte a página de manual local).
RC_LC_MESSAGES, RC_LC_CTYPE, RC_LC_COLLATE, RC_LC_TIME, RC_LC_NUMERIC, RC_LC_MONETARY
Essas variáveis são passadas para o shell sem o prefixo RC_ e representa as categorias listadas. Os perfis shell de referência estão listados abaixo. A configuração atual pode ser exibida com o comando locale.
RC_LC_ALLEsta variável, se definida, sobregrava os valores das variáveis já mencionadas.
RC_LANG
Se nenhuma das variáveis anteriores for definida, este é o fallback. Por padrão, o SUSE Linux apenas define RC_LANG. Isto facilita o processo para que os usuários informem seus próprios valores.
ROOT_USES_LANG
Uma variável yes ou no. Se for definida como no, root sempre funcionará no ambiente POSIX.
As variáveis podem ser definidas com o editor sysconfig do YaST (consulte a Seção 8.3.1, “Mudando a configuração do sistema usando o Editor sysconfig do YaST”). O valor de tal variável contém o código do idioma, código do país, codificação e modificador. Os componentes individuais são conectados por caracteres especiais:
LANG=<language>[[_<COUNTRY>].<Encoding>[@<Modifier>]]
Você deve sempre definir os códigos do idioma e do país juntos. As configurações do idioma seguem o padrão ISO 639 disponível em http://www.evertype.com/standards/iso639/iso639-en.html e http://www.loc.gov/standards/iso639-2/. Os códigos de país estão listados na variável ISO 3166 disponível em http://www.din.de/gremien/nas/nabd/iso3166ma/codlstp1/en_listp1.html.
Só faz sentido definir valores para os quais os arquivos de descrição utilizáveis podem ser encontrados em /usr/lib/locale. Arquivos de descrição adicionais podem ser criados de arquivos em /usr/share/i18n utilizando o comando localedef. Os arquivos de descrição fazem parte do pacote glibc-i18ndata. Um arquivo de descrição para en_US.UTF-8 (para inglês e Estados Unidos) pode ser criado com:
localedef -i en_US -f UTF-8 en_US.UTF-8
LANG=en_US.UTF-8
Esta é a configuração padrão se Inglês americano for selecionado durante a instalação. Se você selecionou outro idioma, aquele idioma será habilitado, mas ainda com o UTF-8 como a codificação de caractere.
LANG=en_US.ISO-8859-1
Este define o idioma para inglês, país para Estados Unidos e a definição de caractere para ISO-8859-1. Esta definição de caractere não suporta o sinal de Euro, mas às vezes pode ser útil para programas que não foram atualizados para suportar UTF-8. A string que define o conjunto de caracteres (ISO-8859-1 neste caso) é então avaliada por programas como o Emacs.
LANG=en_IE@euro
O exemplo acima inclui explicitamente o sinal de Euro em uma configuração de idioma. Falando estritamente, esta configuração é atualmente obsoleta, porque o UTF-8 também cobre o símbolo de Euro. Ela é útil apenas se um aplicativo não suportar o UTF-8, mas o ISO-8859-15.
O SuSEconfig lê as variáveis em /etc/sysconfig/language e grava as mudanças necessárias em /etc/SuSEconfig/profile e /etc/SuSEconfig/csh.cshrc. /etc/SuSEconfig/profile é lido ou originado por /etc/profile. /etc/SuSEconfig/csh.cshrc é originado por /etc/csh.cshrc. Isso torna as configurações disponíveis em todo o sistema.
Os usuários podem anular os padrões do sistema editando o seu ~/.bashrc de acordo. Por exemplo, se você não quiser usar o en_US global de sistema para mensagens de programa, inclua LC_MESSAGES=es_ES, então as mensagens serão exibidas em espanhol.
Se você não estiver satisfeito com padrões de sistema locais, mude as configurações em ~/.i18n. As entradas em ~/.i18n substituem padrões de sistema de /etc/sysconfig/language. Use os mesmos nomes de variáveis mas sem os prefixos de namespace RC_, por exemplo, use LANG em vez de RC_LANG.
Arquivos na categoria Mensagens são, como regra, armazenados somente no diretório do idioma correspondente (como en) para ter um fallback. Se você definir LANG para en_US e o arquivo de mensagem em /usr/share/locale/en_US/LC_MESSAGES não existir, ele voltará para /usr/share/locale/en/LC_MESSAGES.
Uma cadeia de fallback também pode ser definida, por exemplo, de bretão para francês ou galego para espanhol ou português:
LANGUAGE="br_FR:fr_FR"
LANGUAGE="gl_ES:es_ES:pt_PT"
Se desejado, use as variantes norueguesas Nynorsk e Bokmål (com fallback adicional para não):
LANG="nn_NO"
LANGUAGE="nn_NO:nb_NO:no"
ou
LANG="nb_NO"
LANGUAGE="nb_NO:nn_NO:no"
Observe que em norueguês, LC_TIME também é tratado de maneira diferente.
Um problema que pode surgir é um separador usado para delimitar grupos de dígitos não ser reconhecido corretamente. Isso acontece se LANG for definido para um código de idioma com somente duas letras, como de, mas o arquivo de definição que o glibc utiliza está localizado em /usr/share/lib/de_DE/LC_NUMERIC. Por isso, LC_NUMERIC deve ser definido para de_DE para tornar a definição de separador visível para o sistema.
The GNU C Library Reference Manual, Capítulo “Locales and Internationalization”. Ele está incluído em glibc-info.
Markus Kuhn, UTF-8 and Unicode FAQ for Unix/Linux, atualmente em http://www.cl.cam.ac.uk/~mgk25/unicode.html.
Unicode-Howto, de Bruno Haible: /usr/share/doc/howto/en/html/Unicode-HOWTO.html.