crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Динамический перевод, QTranslate
RazrFalcon
  опции профиля:
сообщение 10.9.2011, 0:54
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Обычный перевод:
tr("Some Text");
Мне нужно:
QString str("some text");
tr(str);


Возможно такое сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 10.9.2011, 7:42
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


http://doc.qt.nokia.com/4.7/internationali...ll-literal-text
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 10.9.2011, 12:12
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Что то я не пойму как его использовать <_<
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 11.9.2011, 0:33
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


"tr(str);" не прокатит, tr работает двояко, во время работы программы это функция. Но когда создается файл переводов, "tr" это маркер, если строка обрамлена им она попадает в ts-файл. В данном случае в перевод попадет именно строка "str".

Я не совсем понимаю в чем проблема?

Если нужен статический текст, то так:
  QString str = tr("some text");
  foo(str);
  bar(str);


Если надо динамически строить строку, то используй QString::arg. На вроде:
QString errStr;
if (errNo == 1)
    errStr = tr("File '%1' not found").arg(fileName);
else
    errStr = tr("Unknown error");

showErrorMsg(tr("Error in the program:\n%1.").arg(errStr));


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 11.9.2011, 1:45
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Проблема в том, что у меня этих "some text" может быть больше сотни разных. Вот я и думаю как лучше всего это реализовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.9.2011, 8:44
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(RazrFalcon @ 11.9.2011, 4:45) *
Проблема в том, что у меня этих "some text" может быть больше сотни разных. Вот я и думаю как лучше всего это реализовать.
ну в реальной программе всегда так, проблема всё-таки не ясна
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 11.9.2011, 13:37
Сообщение #7


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Есть QStringList, в нем содержатся строки на английском. Нужно перевести их на русский. Я представлял себе это так:
QStringList translatedOutList;
for (int i = 0; i < outList.count(); ++i) {
  translatedOutList.append(tr(outList.at(i)));
}

Такое возможно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 12.9.2011, 11:00
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(RazrFalcon @ 11.9.2011, 14:37) *
Есть QStringList, в нем содержатся строки на английском. Нужно перевести их на русский. Я представлял себе это так:
QStringList translatedOutList;
for (int i = 0; i < outList.count(); ++i) {
  translatedOutList.append(tr(outList.at(i)));
}

Такое возможно?


А откуда берутся английские строки? Что это за строки?

В общем случае такое не возможно. Ведь переводит человек, и он может сделать перевод только для текста который есть и который он может увидеть. А если английский текст - это произвольный текст полученный во время работы программы, кто будет делать его перевод?

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 12.9.2011, 15:29
Сообщение #9


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Моя прога :lol:
Я уже понял что через стандартный QTranslator такого не добьешься. Пошел искать обходные пути.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 24.4.2024, 15:40