Esta resposta demonstrará como personalizar totalmente uma localidade, usando opcionalmente uma localidade existente como base. O tipo de localidade que será usado nesta resposta é o i18n
type; Esse tipo de localidade estará implícito em todas as menções à palavra "locale" no corpo da resposta.
Encontre um guia
A primeira coisa que você precisa para personalizar uma localidade é conhecer o formato da localidade. Este editor de local da web tem uma descrição abrangente de cada campo em uma localidade, apesar de não ser utilizável por qualquer pessoa em um direito -way maneira. Este será o guia para usar.
Ferramentas necessárias
As únicas ferramentas de que você precisa para trabalhar com localidades são
- Um editor de texto. Qualquer coisa serve, embora o VIM seja excelente.
- Um conversor de texto para unicode. Seria mais esperado que você não tivesse um, por isso vou fornecer-lhe um simples. Leia a próxima subseção para obtê-lo.
Eu recomendo que você crie um diretório e salve tudo relacionado ao trabalho que você fará no local.
Conversor de texto para unicode (encodestr)
NOTA: se você estiver usando caracteres não comuns , você pode ter problemas com o script que eu escrevo abaixo; talvez você queira 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 é certo, porque é um. Este guia assume 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, conceda a permissão de execução do arquivo - isso será útil. Você pode fazer isso usando o nautilus ou executando a partir do terminal o seguinte comando, no diretório em que você salvou o script: chmod +x encodestr
.
Agora você pode testar esse script executando no mesmo diretório: ./encodestr hello
. Você deve obter uma saída igual a <U0068><U0065><U006C><U006C><U006F>
.
Modificar uma localidade existente
Modificar uma localidade existente é o caso mais fácil, pois, idealmente, você escolherá uma localidade que atenda às suas necessidades quase que totalmente, e nesse caso você precisará fazer apenas pequenas modificações. Para adaptá-lo, você pode usar o guia para saber quais das seções são as que deseja alterar e como alterá-las. Todos os locais instalados residem em /usr/share/i18n/locales
, porém o guia contém praticamente todos os locais já criados.
No entanto, a primeira coisa que você notará quando abrir uma localidade é que você lerá palavras em inglês tanto quanto códigos <UXXXX>
estranhos. Você precisará ser capaz de criar esses códigos - é aqui que o script encodestr
vem.
Quando você sabe quais seções você tem que mudar, você precisa conhecer cada campo contido na seção.
Por exemplo, a seção
LC_TIME
contém o campot_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 que valores o campo aceita .
Por exemplo, o campo
t_fmt
aceita texto e as comuns variáveis strfmt .
Quando você souber o que escrever nos campos que deseja modificar, execute o texto no script encodestr
para obter seu equivalente codificado.
NOTA: Nem todos os campos precisam ser codificados, use uma localidade existente como referência, se necessário.
Por exemplo, se você quiser ter o formato de hora
Time: %T
no campot_fmt
, execute./encodestr "Time: %T"
; isso retornará<U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
e você terá a linhat_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
em sua localidade (em sua respectiva seção, é claro).
Depois de ter modificado todos os campos desejados, você precisará continuar instalando o código de 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 sua localidade personalizada 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 outras localidades sem os métodos copiar e colar . Você só precisa seguir este formato:
LC_SECTION
copy "locale"
END LC_SECTION
Em que LC_SECTION
é a seção que você deseja modificar e locale
é a localidade da qual você deseja copiar essa seção.
Por exemplo, se você quiser copiar o formato de horário na localidade em inglês, você terá esse texto seu arquivo de localidade personalizado:
LC_TIME
copy "en_GB"
END LC_TIME
E isso economiza muito trabalho e garante que qualquer alteração feita na localidade referenciada seja espelhada para a sua.
Instalando sua localidade personalizada
As etapas que mostrarei abaixo podem não ser ideais, mas funcionam.
-
Compile sua localidade. 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
, em quecustom
é o nome da sua localidade. -
Copie sua localidade para o diretório
/usr/share/i18n/locales/
. Você definitivamente precisará de privilégios sudo para fazer isso, e você pode fazê-lo com o comandosudo cp locale /usr/share/i18n/locales/
ondelocale
é o nome do arquivo da sua localidade personalizada. -
Especifique sua localidade em
/var/lib/locales/supported.d/
. Por exemplo, crie um nome de arquivo/var/lib/locales/supported.d/asd
e adicione a linhacustom UTF-8
, em que custom é o nome da sua localidade. -
Execute o comando magic. Na verdade, não sei exatamente o que esse comando faz, mas é crucial. Execute
sudo locale-gen
. É mais provável que gere referências aos locais disponíveis onde necessário. -
Diga ao seu sistema para usar a localidade. Se você quiser que o código do idioma seja usado em todo o sistema, modifique o arquivo
/etc/environment
. Se não, você pode modificar seu arquivo~/.profile
, ou qualquer outro que seja originado na inicialização. Se você não sabe o que significa este último, não se preocupe, apenas use o arquivo~/.profile
. Para saber o que você precisa escrever, primeiro execute o comandolocale
. Ele deve emitir uma lista com itens comoLANGUAGE
,LC_MESSAGES
,LC_CTYPE
e muitos outros. Você escreverá, para cada uma das seções desejadas (listadas pelo comando anterior), em linhas separadas, issoSECTION="locale"
ondeSECTION
é a seção elocale
o nome da sua localidade personalizada.
Por exemplo, se você quiser usar o formato de horário da Holanda, mas o idioma inglês, escreva:
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
NOTA: Se você quiser usar uma localidade para cada configuração de local, escreva LC_ALL="locale"
em que locale
é o nome da sua localidade personalizada. Se você quiser usar uma localidade para tudo, menos para o idioma, poderá escrever LANG="locale"
e (em outra linha, é claro) LANGUAGE="locale":XX
, em que XX
é o código de duas letras para o 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, sua localidade deverá estar em uso. Você pode testar isso executando o comando locale
novamente.
Por favor, comente sobre inconsistências ou declarações falsas neste guia!