Вот цитата из Документация Qt:
Некоторые ресурсы необходимо изменить в зависимости от локали пользователя, например
файлы перевода или значки. Это делается путем добавления атрибута lang в
тег qresource, указывающий подходящую строку локали. Например:<qresource> <file>cut.jpg</file> </qresource> <qresource lang="fr"> <file alias="cut.jpg">cut_fr.jpg</file> </qresource>
Если языковой стандарт пользователя — французский (т.е. QLocale :: system (). Name () возвращает
«fr_FR»),: /cut.jpg становится ссылкой на изображение cut_fr.jpg. За
в других местах используется cut.jpg.
Я пытаюсь сделать это, и у меня ничего не получается. Вот часть из моего * .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>
Как видите, он следует точно такой же схеме, что и пример в руководстве.
Однако, попытка скомпилировать этот файл приводит к этому:
..\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'
И если я пытаюсь изменить файл * .qrc в QtCreator, он сбрасывает его в неправильное состояние, удаляя lang
атрибуты:
<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>
Поэтому я вынужден перебирать ресурсы для разных локалей в моем коде. Я что-то упустил или это ошибка Qt? Версия Qt 4.8.4, версия QtCreator 2.8.1.
Я не знаю, может быть, это поможет вам. Файл из документации у меня тоже не работает. Но эта работа:
<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>
Я использовал конструктор для окон. Дизайнер видит только tr.png (triangle.png). Средой сборки по умолчанию является LANGUAGE = ик. После пересадки на ЯЗЫК = еп в Qt Creator программа начала показывать triangle_en.png.
Я использую Qt 5.0.2 и Qt Creator 2.8.1.
Других решений пока нет …