QTime to String с AM/PM и установленным переводчиком
Это небольшое приложение создает некоторые проблемы:
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 (вечера нет). Почему?
1 ответ
Я подошел к этому, используя UK Local для каждого вызова toString вместо системного:
//instead of
qDebug() << now.toString(tr("Timeformat"));
// I use now
qDebug() << QLocale("en_GB").toString(now, tr("Timeformat"));