Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: vanessa от Май 13, 2011, 09:39



Название: Локализация ресурсов: rcc ругается.
Отправлено: vanessa от Май 13, 2011, 09:39
имею такой ресурсный файл
Код:
<RCC>
  <qresource>
    <file alias="text/reg.txt">text/reg.txt</file>
    <file alias="text/list.txt">text/list.txt</file>
    <file alias="text/fields.txt">text/fields.txt</file>
    <file alias="text/amVater.txt">text/amVater.txt</file>
 </qresource>

  <qresource lang="ru">
    <file alias="text/reg.txt">text/ru_reg.txt</file>
    <file alias="text/list.txt">text/ru_list.txt</file>
    <file alias="text/fields.txt">text/ru_fields.txt</file>
    <file alias="text/amVater.txt">text/ru_amVater.txt</file>
 </qresource>
 
  <qresource prefix="/translate">
    <file>client_ru.qm</file>
  </qresource>
</RCC>
и вот результат его обработки
Код:
% /usr/bin/rcc -name text text.qrc -o build/qrc_text.cpp
text.qrc: Warning: potential duplicate alias detected: 'reg.txt'
text.qrc: Warning: potential duplicate alias detected: 'list.txt'
text.qrc: Warning: potential duplicate alias detected: 'fields.txt'
text.qrc: Warning: potential duplicate alias detected: 'amVater.txt'
оно вроди только Warning  и все работает как надо но напрягает предупреждение. Как от него избавится ?


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: blood_shadow от Май 13, 2011, 11:09
alias - псевдоним для файла(сокращенное имя которое может использоваться вместо полного пути)
у тебя alias'ы одинаковые "text/reg.txt" для text/reg.txt и text/ru_reg.txt, и для 3 остальных также
сделай примерно так:
Код:
<RCC>
  <qresource>
    <file alias="reg.txt">text/reg.txt</file>
    <file alias="list.txt">text/list.txt</file>
    <file alias="fields.txt">text/fields.txt</file>
    <file alias="amVater.txt">text/amVater.txt</file>
 </qresource>

  <qresource lang="ru">
    <file alias="ru_reg.txt">text/ru_reg.txt</file>
    <file alias="ru_list.txt">text/ru_list.txt</file>
    <file alias="ru_fields.txt">text/ru_fields.txt</file>
    <file alias="ru_amVater.txt">text/ru_amVater.txt</file>
 </qresource>
 
  <qresource prefix="/translate">
    <file>client_ru.qm</file>
  </qresource>
</RCC>


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: vanessa от Май 13, 2011, 11:58
Насколько я понял, прочитав документация в том что алиасы одинаковые и есть вся суть.
Код:
    <file alias="reg.txt">text/reg.txt</file>
    <file alias="ru_reg.txt">text/ru_reg.txt</file>
это будет уже два разных файла. Я такое не сам придумал, я его  тут подсмотрел (http://doc.crossplatform.ru/qt/4.6.x/resources.html)


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: blood_shadow от Май 13, 2011, 12:14
Насколько я понял, прочитав документация в том что алиасы одинаковые и есть вся суть.
Код:
    <file alias="reg.txt">text/reg.txt</file>
    <file alias="ru_reg.txt">text/ru_reg.txt</file>
это будет уже два разных файла. Я такое не сам придумал, я его  тут подсмотрел (http://doc.crossplatform.ru/qt/4.6.x/resources.html)


они будут разными не по той причине что alias'ы разные, а по той причине что пути к файлам разные:
text/reg.txt и text/ru_reg.txt в своей же программе ты можешь использовать вместо полного или
относительного пути атрибут alias
называть одним alias'ом разные файлы это абсурд, вот и потому тебе предупреждение выкинули


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: vanessa от Май 13, 2011, 12:20
Цитирую документацию
Цитировать
Некоторые ресурсы, такие как файлы перевода и пиктограммы, нужно изменить на основе пользовательской локали. Это делается добавлением атрибута 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.
alias-ы здесь одикавые, это как понимать прикажете ?


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: blood_shadow от Май 13, 2011, 12:26
см. свой первый пост
Код:
<qresource>
    <file alias="text/reg.txt">text/reg.txt</file>
    <file alias="text/list.txt">text/list.txt</file>
    <file alias="text/fields.txt">text/fields.txt</file>
    <file alias="text/amVater.txt">text/amVater.txt</file>
 </qresource>

  <qresource lang="ru">
    <file alias="text/reg.txt">text/ru_reg.txt</file>
    <file alias="text/list.txt">text/ru_list.txt</file>
    <file alias="text/fields.txt">text/ru_fields.txt</file>
    <file alias="text/amVater.txt">text/ru_amVater.txt</file>
 </qresource>

<file alias="text/reg.txt">text/reg.txt</file> и <file alias="text/reg.txt">text/ru_reg.txt</file> скажешь
элиасы неодинаковые?


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: vanessa от Май 13, 2011, 12:48
Сделал так
Код:
  <qresource>
    <file>text/reg.txt</file>
    <file>text/list.txt</file>
    <file>text/fields.txt</file>
    <file>text/amVater.txt</file>
 </qresource>

  <qresource lang="ru">
    <file alias="text/reg.txt">text/ru_reg.txt</file>
    <file alias="text/list.txt">text/ru_list.txt</file>
    <file alias="text/fields.txt">text/ru_fields.txt</file>
    <file alias="text/amVater.txt">text/ru_amVater.txt</file>
 </qresource>
это точно как в документации но предупреждения остались
сделал еще иначе
Код:
  <qresource prefix="/text">
    <file alias="reg.txt">text/reg.txt</file>
    <file alias="list.txt">text/list.txt</file>
    <file alias="fields.txt" >text/fields.txt</file>
    <file alias="amVater.txt">text/amVater.txt</file>
 </qresource>

  <qresource lang="ru"  prefix="/text">
    <file alias="reg.txt">text/ru_reg.txt</file>
    <file alias="list.txt">text/ru_list.txt</file>
    <file alias="fields.txt">text/ru_fields.txt</file>
    <file alias="amVater.txt">text/ru_amVater.txt</file>
 </qresource>
результат аналогичен предыдущему


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: blood_shadow от Май 13, 2011, 13:14
незнаю как тебе еще объяснить, сделай так:
Код:
<qresource>
    <file>text/reg.txt</file>
    <file>text/list.txt</file>
    <file>text/fields.txt</file>
    <file>text/amVater.txt</file>
 </qresource>

  <qresource lang="ru">
    <file>text/ru_reg.txt</file>
    <file>text/ru_list.txt</file>
    <file>text/ru_fields.txt</file>
    <file>text/ru_amVater.txt</file>
 </qresource>
и предупреждений не должно быть...


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: vanessa от Май 13, 2011, 13:55
Сделал, предупреждений нет но и не работает оно, потому как то место, где я делаю
QFile f(":/text/reg.txt");
походу тоже нужно исправлять соответствующим образом на что оно имя нужного файла в зависимости от локали выбирало. но тогда вся идея, что в документации описана, становится абсурдной..........


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: lit-uriy от Май 13, 2011, 22:02
>>Сделал, предупреждений нет но и не работает оно
И не должно.

blood_shadow, от того что в <qresource> явно нет псевдонимов, это не значит, что они не равны имени файла.

vanessa, пиши тролям в багтрекер, это их касяк с предупреждениями.


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: ритт от Май 14, 2011, 02:50
получатся разные алиасы.
похоже, автор делал правильно, но напоролся на баг рцц...


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: ритт от Май 17, 2011, 10:03
я был прав - оппортунистический баг рцц. скоро исправят.


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: vanessa от Май 17, 2011, 10:20
Не знаю дал ли я полную информацию но багрепорт (http://bugreports.qt.nokia.com/browse/QTBUG-19286) я написал.......


Название: Re: Локализация ресурсов: rcc ругается.
Отправлено: v1ctor от Сентябрь 07, 2011, 16:53
Подскажите, пожалуйста, как определить что писать в lang=" ", а то не знаю как различить между собой zh_CN и zh_TW