Сбой интернационализации ресурса Qt

Вот цитата из Документация 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.

6

Решение

Я не знаю, может быть, это поможет вам. Файл из документации у меня тоже не работает. Но эта работа:

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector