2013-12-16 6 views
6

Hier ist das Zitat aus den Qt documentation:Qt Ressource Internationalisierung nicht

Einige Ressourcen ändern müssen, basierend auf dem Gebietsschema des Benutzers, wie Übersetzungsdateien oder Symbole. Dies geschieht durch Hinzufügen eines Lang-Attributs zu dem Qresource-Tag, das eine geeignete Gebietsschema-Zeichenfolge angibt. Zum Beispiel:

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

Wenn das Gebietsschema des Benutzers ist Französisch (dh QLocale :: system() name() "fr_FR" zurückgibt.): /cut.jpg ein Verweis auf das cut_fr.jpg Bild wird . Für andere Locales wird cut.jpg verwendet.

Ich versuche, dies zu tun, und ich scheitere. Hier ist ein Teil von meiner * .qrc Datei:

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

Wie Sie sehen, es folgt genau das gleiche Muster wie das Beispiel im Handbuch. jedoch diese Datei zu kompilieren versuchen, ergibt dies:

..\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' 

Und wenn ich versuche, die * .qrc Datei in QtCreator zu ändern, setzt er es zu einem falschen Zustand Löschen der lang Attribute:

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

Ich bin gezwungen, Ressourcen für verschiedene Gebietsschemas in meinem Code zu durchlaufen. Fehle ich etwas oder ist das ein Qt-Bug? Qt-Version ist 4.8.4, QtCreator-Version ist 2.8.1.

Antwort

1

Ich weiß nicht, vielleicht wird dir das helfen. Die Datei aus der Dokumentation funktioniert auch nicht für mich. Aber diese Arbeit:

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

Ich verwendete Designer für Windows. Designer siehe nur tr.png (dreieck.png). Standard Build Environment ist LANGUAGE = uk. Nach dem Wechsel zu LANGUAGE = de in Qt Creator begann das Programm, triangle_en.png anzuzeigen.

Ich benutze Qt 5.0.2 und Qt Creator 2.8.1.