Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: qtnoob1k от Март 10, 2012, 22:44



Название: QSS и смена языка
Отправлено: qtnoob1k от Март 10, 2012, 22:44
Всем привет! Например есть кнопка с QSS:
Код:
QPushButton
{
    border-image: url(:/my/button_en.png);
}
Я бы хотел, что бы при смене языка button_en.png заменялся на button_ru.png. Есть ли в Qt простой способ сделать это?


Название: Re: QSS и смена языка
Отправлено: kambala от Март 11, 2012, 01:06
единственный способ - это руками. хранишь в программе текующую локализацию в виде строки (например en) и все пути к ресурсам делаешь через этот параметр, например
Код
C++ (Qt)
setStyleSheet(QString("...border-image: url(:/my/button_%1.png);...").arg(currentLocale)
при смене языка явно говоришь программе перечитать все ресурсы, зависящие от языка.

только лучше локализованные ресурсы хранить в отдельных папках как по мне, чтоб пути выглядели url(:/my/%1/button.png)


Название: Re: QSS и смена языка
Отправлено: Alex Custov от Март 11, 2012, 02:11
надписи на кнопках всё-таки лучше делать текстом, тогда их можно перевести обычным способом


Название: Re: QSS и смена языка
Отправлено: qtnoob1k от Март 11, 2012, 10:09
единственный способ - это руками. хранишь в программе текующую локализацию в виде строки (например en) и все пути к ресурсам делаешь через этот параметр, например
Код
C++ (Qt)
setStyleSheet(QString("...border-image: url(:/my/button_%1.png);...").arg(currentLocale)
при смене языка явно говоришь программе перечитать все ресурсы, зависящие от языка.
Спасибо, так и сделал, что удивило, что в Qt Creator в редакторе QSS нельзя поставить %. Пишет, что это невалидный код. Поэтому пришлось использовать QString::replace.
Я так понимаю, что если в ресурсы добавить изображений с lang=ru_Ru например, то они подхватятся при загрузке окна? Если так, то может возможно вызвать этот же код динамически? Никто не смотрел, что там внутри вызывается?