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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Интернационализация  (Прочитано 6253 раз)
pakulo
Гость
« : Апрель 09, 2007, 10:43 »

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

Спасибо.
Записан
-=QT=-
Гость
« Ответ #1 : Апрель 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
Гость
« Ответ #2 : Апрель 09, 2007, 14:10 »

Т.е. как? в текстовом редакторе, который поддерживает кодировку Улыбающийся

Но у меня вопрос стоял немного иначе. Существует ли другой способ реализации интернационализации, кроме того, что я привел.
Записан
bigirbis
Гость
« Ответ #3 : Апрель 09, 2007, 14:25 »

В таком случае можно попробовать создать файл формата: ключ-значение и грузить его в мапу при инициализации приложения...
Записан
pakulo
Гость
« Ответ #4 : Апрель 09, 2007, 16:26 »

Можете поподробнее?
Записан
_govorilka
Гость
« Ответ #5 : Апрель 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
Гость
« Ответ #6 : Апрель 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").

Должно заработать..)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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