Levei meio dia para (quase) investigar completamente isso, mas acho que descobri como fazer isso e você não vai gostar ...
A solução:
Em poucas palavras,
O KDE usa apenas o QLocale
do QT. Que usa dados codificados em qlocale_data_p.h
, no código da biblioteca principal do QT.
Esses dados aparentemente são gerados manualmente a partir do Common Locale Data Repository do Unicode Consortium, usando vários scripts Python dentro de util/local_database/
do pacote de código-fonte QT. Que em si não é parte do código-fonte, eu tenho certeza. Deixe sozinho, usando qualquer tipo de configuração ou arquivos de dados no seu computador.
Então, a única maneira de fazer isso é ...
- Faça o download dos arquivos CLDR, como um pacote, no link (ou cldr-common- * .zip, ambos parecem conter o mesmo), ou no link e extrair os arquivos XML em
common/main/
.
O Gentoo também tem um pacote chamadoapp-i18n/unicode-cldr
btw. - Adquira o código-fonte principal do QT, por exemplo do repositório da sua distribuição e descompacte-o.
- Use os scripts em
util/local_database/
(comocldr2qlocalexml.py
eqlocalexml2cpp.py
), com o arquivo XML da sua preferência, para gerar novamente a estatísticaqlocale_data_p.h
. - Em seguida, compile e instale o pacote normalmente.
E não se esqueça de recompilar todos os outros pacotes que incluam qlocale_data_p.h
.
Ou, no Gentoo, faça um patch duradouro com:
ebuild $(equery w dev-qt/qtcore:5) prepare
pushd /var/tmp/portage/dev-qt/qtcore-5*/work/ # assuming default Portage build directory
mv qtbase-opensource-src-5.9.3 a
cp -a a b
Agora faça as alterações acima em b
e não em a
.
mkdir -p /etc/portage/patches/dev-qt/$(basename $(dirname $(pwd))) # only for this version
#mkdir -p /etc/portage/patches/dev-qt/qtcore # for all versions
diff -ur a b > /etc/portage/patches/dev-qt/qtcore*/my-locale.patch
rm -rf a b
popd
ebuild $(equery w dev-qt/qtcore:5) clean
# Rebuild all packages that depend on it, just to be sure. May be optional.
emerge -1 dev-qt/qtcore:5 $(equery d dev-qt/qtcore:5 | sed 's/^/=/')
Considerações finais
Para ser franco, não verifiquei se esses scripts Python funcionavam apenas passando um arquivo XML. Naquele momento, eu simplesmente parei de me incomodar e queria matá-lo com fogo . :)
Sealguémquiserrealmentefazerissonaprática,porfavorinforme,eeuatualizareiestaresposta.(Oufaçavocêmesmo,sepuder)
Vejacomochegueilá:
- EuabriacaixadediálogodeconfiguraçãodeformatosdehoradoKDE,clicandocomobotãodireitodomousenorelógiodabarradetarefas.
- Então,com
htop
,encontreiosprocessosiniciadosmaisrecentemente,incluindooóbviokcmshell5formats
. - Usandoorecurso
htop
'l
istdearquivosabertos,filtramospor"formato" e encontrei/usr/lib64/qt5/plugins/kcm_formats.so
. - Com a ajuda do
equery belongs /usr/lib64/qt5/plugins/kcm_formats.so
do Gentoo, consegui identificar o pacotekde-plasma/plasma-desktop
. - Depois de descompactar seu arquivo de origem, eu encontrei rapidamente
kcms/formats/kcmformats.cpp
, cujoaddLocaleToCombo
usou oQLocale
e incluiu<QLocale>
também. - Este
QLocale
pode então ser encontrado comlocate -i QLocale
para residir em/usr/include/qt[5]/QtCore/qlocale.h
. Incluiu algumas enumerações geradas das linguagens, scripts, etc. - Outro
equery belongs /usr/include/qt[5]/QtCore/qlocale.h
me aponta paradev-qt/qtcore/qtcore
e descompacta o arquivo de origem depois ... - … eu já tive uma sensação, que tudo foi gerado com alguma ferramenta. Então eu olhei para
util/
e encontreiutil/local_database/README
afirmando que “local_database é usado para gerar dados qlocale do Common Locale Data Repository (banco de dados para nomes localizados (como formatos de datas, nomes de países, etc.)) . ". - Nunca ouvi falar disso, eu procurei , e é aparentemente pelo Unicode Consortium . O código de
cldr2qlocalexml.py
não era muito útil, como é chamado com o caminho para um diretório contendo as localidades CLDR. Seu resultado é usado paraqlocalexml2cpp.py
, que gera o arquivosrc/corelib/tools/qlocale_data_p.h
, que inclui tabelas enormes codificadas de todos os dados de localidade. E esse arquivo já existia na fonte. Então… sim, é (parcialmente?) Hard-coded.
- Mas os arquivos CLDR XML não foram encontrados em lugar algum. Então eu suponho que apenas usa o
qlocale_data_p.h
previamente preparado. Que não é muito no espírito do código aberto. Mas pelo menos você pode fazer isso sozinho, como descrito acima.