Internacionalização e QUiLoader



  • Pelo que li na documentação, o utilitário lupdate que gera os arquivos TS necessários para a internacionalização precisa ler os arquivos headers ou sources onde estão as strings a serem internacionalizadas. Mas, e no caso de Widgets dinâmicos, ou seja, aquelas gerados dinamicamente com QUiLoader? Nesses casos não existe código em C++ do widget, apenas o arquivo .ui que será interpretado dinamicamente e que tem o formato XML. Como fazer a internacionalização?



  • O lupdate lê os UI's. sem problemas.

    Chame o lupdate para cada arquivo ui para gerar os arquivos .ts



  • 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.ts

    Por 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?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.