Esta resposta demonstrará como personalizar totalmente um código de idioma, opcionalmente usando um código de idioma existente como base. O tipo de localidade que será usado nesta resposta é o i18n
tipo; esse tipo de local será implícito em todas as menções à palavra "local" no corpo da resposta.
Encontre um guia
A primeira coisa que você precisa para personalizar um código de idioma é conhecer o formato do código de idioma. Esse editor de local da web possui uma descrição abrangente de todos os campos em um local, apesar de não ser utilizável por ninguém de maneira imediata. Este será o guia para usar.
Ferramentas necessárias
As únicas ferramentas necessárias para trabalhar com localidades são
- Um editor de texto. Qualquer um servirá, embora o VIM seja excelente.
- Um conversor de texto para unicode. Seria de se esperar que você não tivesse um, por isso fornecerei um simples. Leia a próxima subseção para obtê-lo.
Eu recomendo que você crie um diretório e salve nele tudo relacionado ao trabalho que você fará no local.
Conversor de texto para unicode (encodestr)
NOTA: se você estiver usando caracteres não comuns, poderá ter problemas com o script que escrevo abaixo; convém dar uma olhada nos scripts alternativos vinculados por nass .
Salve o seguinte código em um arquivo. Este arquivo será identificado pelo seu sistema como um script python, o que é bom porque é um. Este guia pressupõe que você chamou o script encodestr
.
#!/usr/bin/python
def encode(string):
newstring = str()
for ch in string:
newstring += "<U%04X>" % ord(ch)
return newstring
if __name__ == '__main__':
import sys
print encode(sys.argv[1])
Depois de salvá-lo, dê permissão para a execução do arquivo - isso será útil. Você pode fazer isso usando Nautilus, ou pela execução de um terminal o seguinte comando no diretório em que você salvou o script: chmod +x encodestr
.
Agora você pode testar esse script em execução no mesmo diretório: ./encodestr hello
. Você deve obter uma saída igual a <U0068><U0065><U006C><U006C><U006F>
.
Modificar um código de idioma existente
Modificar um código de idioma existente é o caso mais fácil, pois, idealmente, você escolherá um código de idioma que atenda quase totalmente às suas necessidades; nesse caso, você precisará fazer apenas pequenas modificações. Para adaptá-lo, você pode usar o guia para saber quais seções são as que você deseja alterar e como pode alterá-las. Todos os códigos de idioma instalados residem /usr/share/i18n/locales
, no entanto, o guia contém praticamente todos os códigos de idioma já criados.
No entanto, a primeira coisa que você notará ao abrir um código de idioma é ler palavras em inglês tanto quanto <UXXXX>
códigos estranhos . Você precisará criar esses códigos - é aqui que o encodestr
script vem.
Quando você sabe quais seções você deve alterar, precisa conhecer cada campo contido na seção.
Por exemplo, a LC_TIME
seção contém o campo t_fmt
e muitos outros. Cada campo tem sua própria descrição no guia .
Agora que você sabe quais campos modificar, use o guia novamente para descobrir quais valores o campo aceita.
Por exemplo, o campo t_fmt
aceita texto e as variáveis strfmt comuns .
Quando você souber o que escrever nos campos que deseja modificar, execute o texto através do encodestr
script para obter seu equivalente codificado.
NOTA: Nem todos os campos precisam ser codificados; use um código de idioma existente como referência, se necessário.
Por exemplo, se você deseja ter o formato da hora Time: %T
no t_fmt
campo, execute ./encodestr "Time: %T"
; isso retornará <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
e, assim, você terá a linha t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
em sua localidade (na respectiva seção, é claro).
Depois de modificar todos os campos que você deseja, será necessário continuar com a instalação do código do idioma no sistema, para que ele possa ser usado. Prossiga para a seção de instalação para isso.
Criando uma localidade do zero
Ao contrário de modificar um, o outro método que você pode usar para criar seu código de idioma personalizado está trabalhando nele do zero. Isso não é muito difícil se - novamente - você usar o guia . Aqui está uma dica útil: você pode copiar seções de outros locais sem os métodos reais de copiar e colar . Você apenas precisa seguir este formato:
LC_SECTION
copy "locale"
END LC_SECTION
Onde LC_SECTION
está a seção que você deseja modificar e locale
o local do qual você deseja copiar essa seção.
Por exemplo, se você deseja copiar o formato da hora no código do idioma inglês, você terá este texto como seu arquivo de código do idioma personalizado:
LC_TIME
copy "en_GB"
END LC_TIME
Isso economiza muito trabalho e garante que qualquer alteração feita no local de referência seja refletida no seu.
Instalando seu Código de Idioma Customizado
Os passos que vou mostrar abaixo podem não ser ótimos, mas funcionam.
Compile seu código de idioma. Não entre em pânico! Isso não leva tempo. Basta executar o comando sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
onde custom
está o nome do seu código do idioma.
Copie seu código do idioma para o /usr/share/i18n/locales/
diretório Definitivamente, você precisará de privilégios sudo para fazer isso, e pode fazê-lo com o comando sudo cp locale /usr/share/i18n/locales/
onde locale
está o nome do arquivo do seu código do idioma personalizado.
Especifique seu código de idioma em /var/lib/locales/supported.d/
. Por exemplo, crie um nome de arquivo /var/lib/locales/supported.d/asd
e adicione a linha custom UTF-8
, em que custom é o nome do seu código do idioma.
Execute o comando mágico. Na verdade, eu não sei exatamente o que esse comando faz, mas é crucial. Corra sudo locale-gen
. É mais provável que gere referências aos locais disponíveis, quando necessário.
Diga ao seu sistema para usar o código do idioma. Se você deseja que o código do idioma seja usado em todo o sistema, modifique o /etc/environment
arquivo. Caso contrário, você pode modificar seu ~/.profile
arquivo ou qualquer outro que seja originado na inicialização. Se você não sabe o que significa este último, não se preocupe, basta usar o ~/.profile
arquivo. Para saber o que você precisa escrever nele, primeiro execute o locale
comando. Deve emitir uma lista com itens como LANGUAGE
, LC_MESSAGES
, LC_CTYPE
e muitos outros. Você escreverá, para cada uma das seções que desejar (listadas pelo comando anterior), em linhas separadas, SECTION="locale"
onde SECTION
é a seção e locale
o nome do seu código de idioma personalizado.
Por exemplo, se você deseja usar o formato de hora da Holanda, mas o idioma inglês, escreva:
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
NOTA: Se você deseja usar um código de idioma para cada configuração de código de idioma, escreva LC_ALL="locale"
onde locale
é o nome do código de idioma personalizado. Se você deseja usar um código de idioma para tudo, menos para o idioma, você pode escrever LANG="locale"
e (em outra linha, é claro) LANGUAGE="locale":XX
onde XX
está o código de duas letras do idioma desejado.
Por exemplo, se você quiser usar o idioma holandês e o idioma inglês, poderá usar:
LANG="nl_NL"
LANGUAGE="nl_NL:en"
Você terminou
Na próxima vez que você fizer login, seu código de idioma deverá estar em uso. Você pode testar isso executando o locale
comando novamente.
Por favor, comente sobre inconsistências ou declarações falsas neste guia!
πμ
, ele gera<U00CF><U0080><U00CE><U00BC>
, em vez dos caracteres esperados<U03C0><U03BC>
. Aqui está um link que funciona.custom UTF-8
a/usr/share/i18n/SUPPORTED
antes que eu pudesse corrersudo locale-gen
. Caso contrário, não estaria na lista.Não tem certeza do tipo de personalização que deseja, mas você pode definir algumas variáveis de localidade usando o seu
~/.locale
. Por exemplo, para receber mensagens em inglês, mas com horário alemão e os gostos que eu usoTambém é possível gerar localidades personalizadas. Veja, por exemplo, este guia para datas.
fonte
en_US
paraLC_NUMERIC
ede_DE
paraLC_MONETARY
eLC_MEASUREMENT
lhe dá outros efeitos colaterais? Consulte também o novo link para gerar um código de idioma pessoal.