
Eu criei meus próprios locale
s personalizados e os coloquei nos /etc/locale.conf
quais entrarão em vigor com sucesso se eu fizer login em um console virtual (Ctrl+Alt+F2). Na minha sessão do Gnome3, essas variáveis não estão definidas. Para aplicativos de terminal, eu poderia simplesmente colocá-los no, .bashrc
mas isso não me ajudará com aplicativos gráficos como Thunderbird e Pidgin.
Eu tentei seguir estas dicas:Configurações de localidade na inicialização do shell não usadas pela sessão do GNOMEe até emulou o bug emLocal - ArchWikicriando um .pam_environment
arquivo, mas os locale
s ainda são aqueles definidos pelo Gnome3. Existe um diálogo de configuração nas configurações do Gnome, mas só permite definir um conjunto muito limitado de locale
combinações predefinidas e não há como personalizá-las.
Os arquivos relevantes em meu diretório inicial:
user@localhost:~$ ls -lah .dmrc .pam_environment .session .xsession .xsessionrc
lrwxrwxrwx. 1 user user 16 12. Jun 08:57 .dmrc -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 11. Jun 20:23 .pam_environment -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:09 .session -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:07 .xsession -> /etc/locale.conf
lrwxrwxrwx. 1 user user 9 13. Jun 11:22 .xsessionrc -> .xsession
-rw-rw-r--. 1 user user 66 13. Jun 11:13 .profile
user@localhost:~$ cat .profile
source /etc/locale.conf
O conteúdo de /etc/locale.conf
:
LANG="en_US.utf8"
LC_TIME="de_MY.utf8" # NB: de_MY
LC_MONETARY="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
Alguém sabe como definir custom locale
s no Gnome3?
Responder1
Informações básicas
Testei a solução no Fedora 21 com GNOME Shell 3.14.4, mas acredito que possa ser aplicada em outras versões também.
A primeira coisa a entender é que o ambiente de área de trabalho GNOME substitui as definições de localidade de todo o sistema e, portanto, não é afetado pelo /etc/locale.conf
. Além disso, pode haver aplicativos que tenham sua própria configuração de localidade e não usem as configurações do sistema ou do GNOME. Neste guia, descreverei uma maneira de personalizar as configurações de localidade de acordo com suas necessidades e o GNOME e o sistema serão consistentes da perspectiva de localidade.
Verificando o status da localidade atual
Configurações de todo o sistema
DeGuia do Administrador do Sistema Fedora 21:
As configurações de localidade de todo o sistema são armazenadas no
/etc/locale.conf
arquivo, que é lido na inicialização inicial pelosistemademônio. As configurações de localidade definidas/etc/locale.conf
são herdadas por cada serviço ou usuário, a menos que programas individuais ou usuários individuais as substituam.
Para ver o status atual da localidade, podemos executar:
$ localectl status
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
VC Keymap: us
X11 Layout: us
Configurações do GNOME
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
O GNOME tem apenas uma configuração. Ao dar uma rápida olhada nocódigo fonte do gnome-control-centerparece que quando a set_localed_locale()
função é chamada, ela define todas as categorias a seguir (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER) para o mesmo código de idioma definido em org.gnome.system.locale region
.
Misturar diferentes configurações de localidade parece impossível sem criar uma localidade personalizada, mas felizmente não é uma tarefa muito complexa.
Criando localidade personalizada
Acho que a maneira mais fácil de explicar é pelo exemplo. No meu caso específico, eu queria ter um código de idioma personalizado, baseado principalmente em hebraico (ele_IL), mas com LC_NAME, LC_MESSAGES deen_USe LC_TIME (com modificado first_weekday
e first_workday
) dept_GB.
Capturando arquivos de definição de localidade
Você deve ter uma ideia de quais localidades deseja misturar. Primeiro precisamos localizar os arquivos de definição relacionados, que podem ser encontrados em /usr/share/i18n/locales/
. Voltando ao meu exemplo, eu precisava do seguinte:ele_IL,en_USept_GB. Configurei uma pasta de trabalho em minha casa e copiei os arquivos necessários nela:
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
Criando um novo arquivo de definição
Eu decidi ligar para minha localidadehc_ILe leveiele_ILcomo uma base. As linhas a seguir criam um novo arquivo hc_IL
com o conteúdo he_IL
e no caminho substituem todas as ocorrências de uma stringele_ILdentro do arquivo comhc_IL.
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
Modificando o novo arquivo de definição
Agora podemos personalizar o novo local de acordo com nossas necessidades. Abra o arquivo recém-criado ~/custom-locale/hc_IL
com seu editor de texto favorito. eu usovim(possui destaque de sintaxe adequado para arquivos de definição de localidade):
$ vim ~/custom-locale/hc_IL
Para quem ainda não escolheu seu editor favorito evimnão é sua xícara de chá, pode usargedit:)
$ gedit ~/custom-locale/hc_IL
A estrutura do arquivo não é muito complicada. Essencialmente, é construído a partir de seções. Delocalidade(5)páginas de manual:
A definição de localidade possui uma parte para cada categoria de localidade. Cada parte pode ser copiada de outro código de idioma existente ou pode ser definida do zero. Se a categoria precisar ser copiada, a única palavra-chave válida na definição serácópia deseguido pelo nome da localidade que deve ser copiada.
A noção decópia deé muito útil. Isso economiza tempo e o arquivo resultante é claro e conciso. Por exemplo, em vez de copiar seções inteiras, você pode ter:
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
A documentação completa sobre um arquivo de definição de localidade pode ser acessada através de:
$ man 5 locale
Porém, se você deseja apenas criar um código de idioma personalizado, que é uma mistura dos existentes, não há necessidade de entender todos os detalhes.
No meu caso, modifiquei as seguintes categorias e palavras-chave:
LC_IDENTIFICAÇÃO
title "Custom Hebrew locale" source "mydomain.ws" address "http:////www.mydomain.ws" contact "" email "[email protected]" tel "" fax "" language "Hebrew" territory "Israel" revision "1.0" date "2015-04-21"
Observação:Todos "categoria.."linhas noLC_IDENTIFICAÇÃOseção foram modificadas durante a criação do arquivo usando
sed
. Portanto, não precisamos mais tocá-los.LC_TIME
Copiei a seção completa dept_GBe modificou apenas as linhas que indicam o primeiro dia da semana e o primeiro dia útil:
first_weekday 1 first_workday 1
O resto das categorias deixei como estão ou substituí seu conteúdo pelocópia dediretiva como em:
LC_NAME copy "en_US" END LC_NAME
É isso, o arquivo de definição está pronto. Não esqueça de salvar o arquivo :)
Compilar e copiar o novo local
A compilação do novo código de idioma é feita usando o seguinte comando comoraizou usandosudo. Substitua hc_IL
pela sua localidade:
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
Se a compilação for bem-sucedida, os dados de localidade compilados serão adicionados ao arquivo compactado /usr/lib/locale/locale-archive
.
Copie o novo arquivo de definição de código de idioma para o diretório de definições de código de idioma. Substitua hc_IL
pela sua localidade:
$ sudo cp -v hc_IL /usr/share/i18n/locales/
Ativando o novo local
Nesta etapa queremos configurar o sistema e o GNOME para usar o novo código de idioma.
Configurações de todo o sistema
Edite o /etc/locale.conf
arquivo comoraize defina cada linha que começa com LC_
sua nova localidade. Por exemplo:
LANG=en_US.UTF-8
LC_NUMERIC=hc_IL.utf8
LC_TIME=hc_IL.utf8
LC_MONETARY=hc_IL.utf8
LC_PAPER=hc_IL.utf8
LC_MEASUREMENT=hc_IL.utf8
Configurações do GNOME
Para ativar o novo código de idioma no GNOME, execute o seguinte comando. Substitua hc_IL
pela sua localidade:
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
Validando as novas configurações
A última etapa é validar se tudo funciona conforme o esperado. Para recarregar todas as configurações, o mais fácil para mim foi reiniciar.
- Consulte a seção "Verificando o status da localidade atual" para verificar se a configuração do sistema está correta.
Use o GNOME Shell e aplicativos dependentes de localidade (gráficos e console) e verifique se eles se comportam conforme o esperado com a nova localidade. Por exemplo, se você personalizou LC_TIME você pode executar o
date
comando para validar o formato da data:$ date +%x 21/04/15
Observação:Tudo foi testado no Fedora 21 com GNOME 3.14. Outras distribuições Linux podem exigir etapas adicionais ou diferentes.
Por favor, comente se você encontrar algum problema com as instruções.