67 lines
2.4 KiB
C++
67 lines
2.4 KiB
C++
#include "app/translations.h"
|
|
#include "core/config.h"
|
|
#include "core/input.h"
|
|
|
|
#include <QGuiApplication>
|
|
#include <QLocale>
|
|
#include <QQmlComponent>
|
|
#include <QQmlEngine>
|
|
#include <QTest>
|
|
#include <QTranslator>
|
|
#include <memory>
|
|
|
|
using namespace docview;
|
|
|
|
class TranslationsTest : public QObject {
|
|
Q_OBJECT
|
|
private slots:
|
|
void compiledCatalogIsEmbedded();
|
|
void japaneseDiagnosticsAndQtButtons();
|
|
};
|
|
|
|
void TranslationsTest::compiledCatalogIsEmbedded()
|
|
{
|
|
QTranslator catalog;
|
|
QVERIFY(catalog.load(QStringLiteral(":/i18n/docview_ja.qm")));
|
|
QCOMPARE(catalog.translate("Commands", "コマンドを入力してください"), QStringLiteral("コマンドを入力してください"));
|
|
QCOMPARE(catalog.translate("Archive", "アーカイブを読み取れません。"), QStringLiteral("アーカイブを読み取れません。"));
|
|
}
|
|
|
|
void TranslationsTest::japaneseDiagnosticsAndQtButtons()
|
|
{
|
|
ApplicationTranslations translations;
|
|
ConfigManager config;
|
|
QVERIFY(!config.loadData("[ui]\nfont_size = 'large'\n"));
|
|
QVERIFY2(config.lastError().contains(QStringLiteral("2行、ui.font_size")), qPrintable(config.lastError()));
|
|
QVERIFY(config.lastError().contains(QStringLiteral("数値")));
|
|
QVERIFY(CommandRegistry::parse(":page wrong").error.contains(QStringLiteral("整数")));
|
|
|
|
QQmlEngine engine;
|
|
QQmlComponent component(&engine);
|
|
component.setData(R"(
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
Item {
|
|
width: 400; height: 300
|
|
Dialog { id: dialog; standardButtons: Dialog.Open | Dialog.Cancel }
|
|
readonly property string openText: dialog.standardButton(Dialog.Open).text
|
|
readonly property string cancelText: dialog.standardButton(Dialog.Cancel).text
|
|
}
|
|
)", QUrl("qrc:/translation-test.qml"));
|
|
std::unique_ptr<QObject> object(component.create());
|
|
QVERIFY2(object, qPrintable(component.errorString()));
|
|
QCOMPARE(object->property("openText").toString().remove('&'), QStringLiteral("開く"));
|
|
QCOMPARE(object->property("cancelText").toString().remove('&'), QStringLiteral("キャンセル"));
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
// The product's Japanese initial language must not depend on an English host.
|
|
QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
|
|
QGuiApplication application(argc, argv);
|
|
TranslationsTest test;
|
|
return QTest::qExec(&test, argc, argv);
|
|
}
|
|
|
|
#include "test_translations.moc"
|