Internacionalização e QUiLoader
-
O lupdate lê os arquivos .ui sem problemas.
Chame o lupdate para cada arquivo ui para gerar os arquivos .ts
-
Um......
Fiquei na dúvida pois a documentação não menciona os arquivos ui.
Aproveitando o gacho, na "documentação":http://qt-project.org/doc/qt-4.8/linguist-programmers.html#creating-translation-files diz que deve-se definir os arquivos de deverão ser gerados, essa definição deve estar no .pro da aplicação.
Sobre isso tenho duas dúvidas. 1 - Usa-se apenas um arquivos para toda a aplicação? 2 - Em um projeto dividido em subdirs, onde devo comolar a definição, ou seja, em qual dos arquivos .pro?Eu pretendo gerar os arquivos .ts com o Qt Creator e não via linha de comando.
-
Eu acho interessante 1 arquivo para cada fonte e não apenas 1.
Em relação aos subdirs, eu colocaria em cada pro os seus .ts correspondentes.O lupdate se chama assim:
lupdate <arquivo de entrada> -ts <arquivo de saida .ts>
Depois, coloca os arquivos .ts no .pro assim:
@
TRANSLATIONS += <arquivo de saida .ts>
@De dentro do QtCreator, quando o formulário estiver aberto, use o menu Tools / External / Linguist para atualizar o .ts
-
Foi o que fiz, mas na hora que eu executo o lupdate pelo Qt Creator (Tools/External/Linguist/lupdate) recebo a seguinte menssagem:
!http://i57.tinypic.com/wlsojm.png(Screen)!
Minha intenção é traduzir as strings do arquivo connecdialog.ui
-
O erro é
@Starting external tool '/opt/Qt/5.3/gcc_64/bin/lupdate' /home/matheus/Dropbox/Projetos/Freedom/TecTracker/TecTracker.pro
lupdate warning: no TS files specified. Only diagnostics will be produced for '/home/matheus/Dropbox/Projetos/Freedom/TecTracker/TecTracker.pro'.Updating 'Core/gui/core_connecdialog_ptBr.ts'...
Found 0 source text(s) (0 new and 0 already existing)'/opt/Qt/5.3/gcc_64/bin/lupdate' finished@
Caso fique ruin para visualizar na imagem.
-
Testei via linha de comando e funcionou mas via Creator dá esse erro.
-
Fiz uns testes aqui, lupdate não encontra o arquivo ui, porque eu não faço uso da variável FORMS no meu arquivo .pro.
Eu não uso FORMS porque como meu projeto é todo baseado em QUiLoader, eu não preciso dos arquivos moc e headers que são gerados a partir da variável FORMS durante a compilação.
Existe alguma forma de contornar isso? Ou ao menos evitar que os arquivos headers e moc do formulário sejam criando quando uso a variável FORMS? -
Achei um "bug cadastrado":https://bugreports.qt-project.org/browse/QTBUG-14056 (já resolvido), mas me deu uma idéia.
Coloque as linhas abaixo no seu .pro.
translateUiHack{
FORMS +=
arquivo1.ui
arquivo2.ui
}TRANSLATIONS = arquivo1.ts
arquivo2.tsPor estar assim, o qmake não usa o FORMS (dentro da estrutura) para rodar o moc, mas o lupdate lê.
-
Ok, funcionou, porém esbarrei e outro problema, Na ferramenta Qt Linguist não permite trazudir os nomes de botões do tipo QDialogButtonBox.
Pesquisei pela nete sobre o assunto, encontrei algumas coisas mas nada muito concreto. -
O nome do controle ou o texto?