Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: pakulo от Апрель 09, 2007, 10:43



Название: Интернационализация
Отправлено: pakulo от Апрель 09, 2007, 10:43
Доброго времени суток,
В программе нужно реализовать поддержку разных языков. В QT есть встроенные для этого функции. Но меня они несколько не устраивают. Возможно можно выйти как-то с этого положения.
1. Можно ли что бы файл локали хранился не в бинарном виде?
2. Можно что бы название файла было не qm?
Вот например в Опере очень грамотно и красиво все реализовано. Подскажите, каким образом там реализовано Интернационализацию.

Спасибо.


Название: Интернационализация
Отправлено: -=QT=- от Апрель 09, 2007, 12:06
Может быть я не прав, но как вы представляете редактирование строковых значений в текстовом файле для кодировки UTF-8 ?

"\320\241\321\202\321\200\320\276\320\272\320\260 \321\200\321\203\321\201\321\201\320\272\320\270\321\205 \320\261\321\203\320\272\320\262 \320\262 \320\272\320\276\320\264\320\270\321\200\320\276\320\262\320\272\320\265 UTF-8"

Эта строка но только в кодировке 1251

"Строка русских букв в кодировке UTF-8"


Название: Интернационализация
Отправлено: pakulo от Апрель 09, 2007, 14:10
Т.е. как? в текстовом редакторе, который поддерживает кодировку :)

Но у меня вопрос стоял немного иначе. Существует ли другой способ реализации интернационализации, кроме того, что я привел.


Название: Интернационализация
Отправлено: bigirbis от Апрель 09, 2007, 14:25
В таком случае можно попробовать создать файл формата: ключ-значение и грузить его в мапу при инициализации приложения...


Название: Интернационализация
Отправлено: pakulo от Апрель 09, 2007, 16:26
Можете поподробнее?


Название: Интернационализация
Отправлено: _govorilka от Апрель 09, 2007, 16:51
Цитата: "-=QT=-"
Может быть я не прав, но как вы представляете редактирование строковых значений в текстовом файле для кодировки UTF-8 ?

"\320\241\321\202\321\200\320\276\320\272\320\260 \321\200\321\203\321\201\321\201\320\272\320\270\321\205 \320\261\321\203\320\272\320\262 \320\262 \320\272\320\276\320\264\320\270\321\200\320\276\320\262\320\272\320\265 UTF-8"

Эта строка но только в кодировке 1251

"Строка русских букв в кодировке UTF-8"


Возьму нормальный блокнот. Под винду использую ListEdit (http://freeware32.ru/index.php?program=151&name=ListEdit)


Название: Интернационализация
Отправлено: vregess от Апрель 11, 2007, 06:50
Цитата: "pakulo"
Можете поподробнее?


Ну вот на пример, так можно:

Делаешь  QSettings, в нем пары ключ-значение, ключ - англ. фраза, значение не англ. фраза.
В приложении читаешь такой файл.... ну и все:
Код:

QSettings s(...);
QMap<QString,QString> trans;
trans=getTranslation(s);
...
QLabel *label=new QLabel(trans["Hello"]);
....
QMap<QString,QString> Class::getTranslatin(const QSettings &s)
{
  QString tmp;
  QMap<QString,QString> result;
  QStringList list=s.allKeys();
  QListIterator<QString> it(list);

  while(it.hasNext()){
    tmp=it.next();
    result.insert(tmp,s.value(tmp));
  }

  return result;
}



Вместо trans["Hello"], лучше использовать trans.value("Hello").

Должно заработать..)