Russian Qt Forum
Ноябрь 22, 2024, 20:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Локализация ресурсов: rcc ругается.  (Прочитано 10587 раз)
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  и все работает как надо но напрягает предупреждение. Как от него избавится ?
Записан
blood_shadow
Гость
« Ответ #1 : Май 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>
Записан
vanessa
Гость
« Ответ #2 : Май 13, 2011, 11:58 »

Насколько я понял, прочитав документация в том что алиасы одинаковые и есть вся суть.
Код:
    <file alias="reg.txt">text/reg.txt</file>
    <file alias="ru_reg.txt">text/ru_reg.txt</file>
это будет уже два разных файла. Я такое не сам придумал, я его тут подсмотрел
Записан
blood_shadow
Гость
« Ответ #3 : Май 13, 2011, 12:14 »

Насколько я понял, прочитав документация в том что алиасы одинаковые и есть вся суть.
Код:
    <file alias="reg.txt">text/reg.txt</file>
    <file alias="ru_reg.txt">text/ru_reg.txt</file>
это будет уже два разных файла. Я такое не сам придумал, я его тут подсмотрел


они будут разными не по той причине что alias'ы разные, а по той причине что пути к файлам разные:
text/reg.txt и text/ru_reg.txt в своей же программе ты можешь использовать вместо полного или
относительного пути атрибут alias
называть одним alias'ом разные файлы это абсурд, вот и потому тебе предупреждение выкинули
Записан
vanessa
Гость
« Ответ #4 : Май 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-ы здесь одикавые, это как понимать прикажете ?
Записан
blood_shadow
Гость
« Ответ #5 : Май 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> скажешь
элиасы неодинаковые?
Записан
vanessa
Гость
« Ответ #6 : Май 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>
результат аналогичен предыдущему
« Последнее редактирование: Май 13, 2011, 12:53 от vanessa » Записан
blood_shadow
Гость
« Ответ #7 : Май 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>
и предупреждений не должно быть...
Записан
vanessa
Гость
« Ответ #8 : Май 13, 2011, 13:55 »

Сделал, предупреждений нет но и не работает оно, потому как то место, где я делаю
QFile f(":/text/reg.txt");
походу тоже нужно исправлять соответствующим образом на что оно имя нужного файла в зависимости от локали выбирало. но тогда вся идея, что в документации описана, становится абсурдной..........
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #9 : Май 13, 2011, 22:02 »

>>Сделал, предупреждений нет но и не работает оно
И не должно.

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

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

Юра.
ритт
Гость
« Ответ #10 : Май 14, 2011, 02:50 »

получатся разные алиасы.
похоже, автор делал правильно, но напоролся на баг рцц...
Записан
ритт
Гость
« Ответ #11 : Май 17, 2011, 10:03 »

я был прав - оппортунистический баг рцц. скоро исправят.
Записан
vanessa
Гость
« Ответ #12 : Май 17, 2011, 10:20 »

Не знаю дал ли я полную информацию но багрепорт я написал.......
Записан
v1ctor
Гость
« Ответ #13 : Сентябрь 07, 2011, 16:53 »

Подскажите, пожалуйста, как определить что писать в lang=" ", а то не знаю как различить между собой zh_CN и zh_TW
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.