Apesar de praticamente não saber nada sobre como a localização é implementada no Linux, eu tentei o meu melhor para entender isso.
Breve Descrição
/usr/lib/locale/locale-archive
locale-archive é um arquivo mapeado na memória gerado por locale-gen(8) que invoca localedef(1) . Mapeado na memória significa que, uma vez criado e chamado por um programa, só é carregado uma vez na memória. Como todos os conjuntos de idiomas definidos em /etc/locale.gen são predefinidos e o próprio arquivo é altamente estático, não há necessidade de ter várias vezes na memória. Assim, toda vez que é chamado por outro programa, o processo é apontado para o arquivo já carregado na memória, portanto, somando-se à memória virtual do programa. Desta forma, não apenas a pegada de memória física do processo é reduzida, mas também cada sistema relativo à localização é acelerado. (nenhum disco I / O adicional necessário!)
Além disso, parece funcionar como uma espécie de arquivo de localidade de failback contendo todos os idiomas do sistema. Além disso, o arquivo é muito usado por softwares escritos com a glibc.
/usr/share/locale/$LOCALE_DIR/LC_MESSAGES/$PROGRAM.mo
A internacionalização ( i18n, 18 chars between 'i' and 'n' ) do software no Linux pode ser obtida usando o GNU-gettext.
- Quando um programa é escrito, todas as instruções de impressão são adaptadas para usar a função
gettext()do GNUs envolvendo a string que precisa ser impressa. - Em seguida,
xgettext(1)itera sobre a origem, criando.pot (Portable Object Template Files)em seu caminho. - O tradutor humano pode usar
msginit(1)para analisá-lo em.po (Portable Object)arquivos, geralmente representando um catálogo de mensagens. Então todas as cordas são traduzidas manualmente. - Depois disso,
msgfmt(1)é usado para compilar o arquivo.poeditado em arquivos binários.mo (Message Object). Estes podem ser enviados junto com o pacote de software.
Ao instalar um pacote em um sistema, /usr/share/locale/<locale_dir>/LC_MESSAGES/ é preenchido com $PROGRAM.mo arquivos. Quando, e. invocando wget, sua LANG env-variable apontará wget para usar sua configuração de localidade atual, o que resulta em wget incluindo as traduções pré-compiladas corretas por meio de ponteiros para a leitura .mo binary .
Detalhes adicionais e fontes
Para arquivo de localidade:
Mapeamento de memória: Centos-Mailing-List
Métodos Sub-pacotes I18N: Documentação do Fedora em diferentes compilações de arquivo de localidade
Considere também as páginas de manual para locale(1), localedef(1) e locale-gen(8) .
Para arquivos .mo :
Processo de criação de arquivos .mo : Wikipedia no Gettext
Formato de arquivo GNU MO: explicação e formato binário
Considere também as páginas de manual para xgettext(1), msginit(1) e msgfmt(1) .
Veja também as variáveis ENV LC_MESSAGE e LOCPATH .
Estou certo de que isso apenas arranhou a superfície deste vasto tópico. No entanto, espero que isso seja suficiente para você começar.