QTime to String с AM / PM и установленным переводчиком - PullRequest
0 голосов
/ 21 июня 2019

Это небольшое приложение создает некоторые проблемы:

int main(int argc, char *argv[])
{
  QTranslator* translator = new QTranslator();
  QString langCode = "en_GB";
  translator->load(QString("Core_%1.qm").arg(langCode));
  QCoreApplication::installTranslator(translator);

  auto now = QDateTime::currentDateTime();
  qDebug() << now.toString(tr("Timeformat"));

  return 0
}

Для каждого языка я создаю отдельный Core.qm , содержащий перевод для Timeformat.Это для "en_GB"

<message>
  <source>Timeformat</source>
  <translation>hh:mm ap</translation>
  <comment/>
</message>

И это для "de_DE"

<message>
  <source>Timeformat</source>
  <translation>hh.mm</translation>
  <comment/>
</message>

Настройка языка системы может отличаться от загруженного языкового файла.Если программное обеспечение работает на английском ноутбуке в 13:57 с загруженным Core_de_DE.qm , оно отображает 13.57 .И с загруженным Core_en_GB.qm он показывает 01: 57 вечера .

Но когда программное обеспечение работает на французском ноутбуке с загруженным Core_en_GB.qm (потому что мое Программное обеспечение не имеет французского перевода).Программа покажет 01: 57 ( pm отсутствует).Почему?

1 Ответ

0 голосов
/ 21 июня 2019

Я справился с этим, используя UK Local для каждого toString вызова вместо системного:

//instead of
qDebug() << now.toString(tr("Timeformat"));
// I use now
qDebug() << QLocale("en_GB").toString(now, tr("Timeformat"));
...