2013-12-16 23 views
6

Ecco la citazione dal Qt documentation:Qt internazionalizzazione risorsa non riesce

Alcune risorse bisogno di cambiare in base locale dell'utente, come ad esempio file di traduzione o icone. Questo viene fatto aggiungendo un attributo lang a il tag qresource, specificando una stringa locale appropriata. Per esempio:

<qresource> 
    <file>cut.jpg</file> 
</qresource> 
<qresource lang="fr"> 
    <file alias="cut.jpg">cut_fr.jpg</file> 
</qresource> 

Se locale dell'utente è il francese (cioè, QLOCALE :: sistema() Nome() restituisce "fr_FR".),: /cut.jpg diventa un riferimento all'immagine cut_fr.jpg . Per vengono utilizzate altre impostazioni locali, cut.jpg.

Provo a fare questo e fallisco. Ecco una parte del mio file * .qrc:

<qresource> 
    <file>HtmlTemplates/angle.html</file> 
    <file>HtmlTemplates/bottom.html</file> 
    <file>HtmlTemplates/top.html</file> 
</qresource> 
<qresource lang="en"> 
    <file alias="HtmlTemplates/angle.html">HtmlTemplates/en/angle.html</file> 
    <file alias="HtmlTemplates/bottom.html">HtmlTemplates/en/bottom.html</file> 
    <file alias="HtmlTemplates/top.html">HtmlTemplates/en/top.html</file> 
</qresource> 

Come si vede, segue esattamente lo stesso modello come l'esempio nel manuale. Tuttavia, cercando di compilare questo file cede questo:

..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'angle.html' 
..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'bottom.html' 
..\Blinky_2.0\resources.qrc: Warning: potential duplicate alias detected: 'top.html' 

E se cerco di modificare il file * .qrc in QtCreator, si resetta ad uno stato sbagliato cancellare i lang attributi:

<qresource prefix="/"> 
    <file>HtmlTemplates/angle.html</file> 
    <file>HtmlTemplates/bottom.html</file> 
    <file>HtmlTemplates/top.html</file> 
    <file alias="HtmlTemplates/angle.html">HtmlTemplates/en/angle.html</file> 
    <file alias="HtmlTemplates/bottom.html">HtmlTemplates/en/bottom.html</file> 
    <file alias="HtmlTemplates/top.html">HtmlTemplates/en/top.html</file> 
</qresource> 

Quindi sono costretto a scorrere le risorse per diverse impostazioni locali nel mio codice. Mi manca qualcosa o si tratta di un bug Qt? La versione di Qt è 4.8.4, la versione di QtCreator è 2.8.1.

risposta

1

Non so, forse questo ti aiuterà. File dalla documentazione non funziona anche per me. Ma questo lavoro:

<RCC> 
    <qresource prefix="/" lang="en"> 
     <file alias="tr.png">triangle_en.png</file> 
    </qresource> 
    <qresource prefix="/" lang="uk"> 
     <file alias="tr.png">triangle.png</file> 
    </qresource> 
</RCC> 

Ho usato il designer per Windows. Designer vedi solo tr.png (triangle.png). Default Build Environment è LANGUAGE = uk. Dopo la modifica su LANGUAGE = it in Qt Creator, il programma ha iniziato a mostrare triangle_en.png.

Io uso Qt 5.0.2 e Qt Creator 2.8.1.