Move i18n example to qttools

Move i18n example out of qtbase. In qttools, it can use lrelease,
avoiding the need to store .qm files in the repository.

Change-Id: I8ba36a1372c2a743b809e3f7ea95a67825558f41
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
Kai Köhne 2022-10-28 16:24:15 +02:00
parent 7a6f43b7c2
commit b77da049bc
40 changed files with 0 additions and 1240 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,16 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\example tools/i18n
\title I18N Example
\ingroup examples-widgets-tools
\brief The Internationalization (I18N) example demonstrates Qt's support for translated
text. Developers can write the initial application text in one language, and
translations can be provided later without any modifications to the code. It also
demonstrates how to detect the system language settings and show the UI in the appropriate
language.
\image i18n-example.png
*/

View File

@ -3,9 +3,6 @@
qt_internal_add_example(completer)
qt_internal_add_example(customcompleter)
if(QT_FEATURE_translation)
qt_internal_add_example(i18n)
endif()
qt_internal_add_example(regularexpression)
qt_internal_add_example(settingseditor)
qt_internal_add_example(styleplugin)

View File

@ -1,63 +0,0 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.16)
project(i18n LANGUAGES CXX)
set(CMAKE_AUTOMOC ON)
if(NOT DEFINED INSTALL_EXAMPLESDIR)
set(INSTALL_EXAMPLESDIR "examples")
endif()
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/tools/i18n")
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
qt_add_executable(i18n
languagechooser.cpp languagechooser.h
main.cpp
mainwindow.cpp mainwindow.h
)
set_target_properties(i18n PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
)
target_link_libraries(i18n PUBLIC
Qt::Core
Qt::Gui
Qt::Widgets
)
# Resources:
set(i18n_resource_files
"translations/i18n_ar.qm"
"translations/i18n_cs.qm"
"translations/i18n_de.qm"
"translations/i18n_el.qm"
"translations/i18n_en.qm"
"translations/i18n_eo.qm"
"translations/i18n_fr.qm"
"translations/i18n_it.qm"
"translations/i18n_jp.qm"
"translations/i18n_ko.qm"
"translations/i18n_no.qm"
"translations/i18n_ru.qm"
"translations/i18n_sv.qm"
"translations/i18n_zh.qm"
)
qt_add_resources(i18n "i18n"
PREFIX
"/"
FILES
${i18n_resource_files}
)
install(TARGETS i18n
RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
)

View File

@ -1,27 +0,0 @@
QT += widgets
requires(qtConfig(listwidget))
HEADERS = languagechooser.h \
mainwindow.h
SOURCES = languagechooser.cpp \
main.cpp \
mainwindow.cpp
RESOURCES += i18n.qrc
TRANSLATIONS += translations/i18n_ar.ts \
translations/i18n_cs.ts \
translations/i18n_de.ts \
translations/i18n_el.ts \
translations/i18n_en.ts \
translations/i18n_eo.ts \
translations/i18n_fr.ts \
translations/i18n_it.ts \
translations/i18n_jp.ts \
translations/i18n_ko.ts \
translations/i18n_no.ts \
translations/i18n_ru.ts \
translations/i18n_sv.ts \
translations/i18n_zh.ts
# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/i18n
INSTALLS += target

View File

@ -1,18 +0,0 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>translations/i18n_ar.qm</file>
<file>translations/i18n_cs.qm</file>
<file>translations/i18n_de.qm</file>
<file>translations/i18n_el.qm</file>
<file>translations/i18n_en.qm</file>
<file>translations/i18n_eo.qm</file>
<file>translations/i18n_fr.qm</file>
<file>translations/i18n_it.qm</file>
<file>translations/i18n_jp.qm</file>
<file>translations/i18n_ko.qm</file>
<file>translations/i18n_no.qm</file>
<file>translations/i18n_ru.qm</file>
<file>translations/i18n_sv.qm</file>
<file>translations/i18n_zh.qm</file>
</qresource>
</RCC>

View File

@ -1,139 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "languagechooser.h"
#include "mainwindow.h"
#include <QCoreApplication>
#include <QCheckBox>
#include <QDialogButtonBox>
#include <QDir>
#include <QGridLayout>
#include <QGroupBox>
#include <QPushButton>
#include <QTranslator>
LanguageChooser::LanguageChooser(const QString &defaultLang, QWidget *parent)
: QDialog(parent, Qt::WindowStaysOnTopHint)
{
groupBox = new QGroupBox("Languages");
QGridLayout *groupBoxLayout = new QGridLayout;
const QStringList qmFiles = findQmFiles();
for (int i = 0; i < qmFiles.size(); ++i) {
const QString &qmFile = qmFiles.at(i);
QCheckBox *checkBox = new QCheckBox(languageName(qmFile));
qmFileForCheckBoxMap.insert(checkBox, qmFile);
connect(checkBox, &QCheckBox::toggled,
this, &LanguageChooser::checkBoxToggled);
if (languageMatch(defaultLang, qmFile))
checkBox->setCheckState(Qt::Checked);
groupBoxLayout->addWidget(checkBox, i / 2, i % 2);
}
groupBox->setLayout(groupBoxLayout);
buttonBox = new QDialogButtonBox;
showAllButton = buttonBox->addButton("Show All",
QDialogButtonBox::ActionRole);
hideAllButton = buttonBox->addButton("Hide All",
QDialogButtonBox::ActionRole);
connect(showAllButton, &QAbstractButton::clicked, this, &LanguageChooser::showAll);
connect(hideAllButton, &QAbstractButton::clicked, this, &LanguageChooser::hideAll);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(groupBox);
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);
setWindowTitle("I18N");
}
bool LanguageChooser::languageMatch(QStringView lang, QStringView qmFile)
{
//qmFile: i18n_xx.qm
const QStringView prefix{ u"i18n_" };
const int langTokenLength = 2; /*FIXME: is checking two chars enough?*/
return qmFile.mid(qmFile.indexOf(prefix) + prefix.length(), langTokenLength) == lang.left(langTokenLength);
}
bool LanguageChooser::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::Close) {
MainWindow *window = qobject_cast<MainWindow *>(object);
if (window) {
QCheckBox *checkBox = mainWindowForCheckBoxMap.key(window);
if (checkBox)
checkBox->setChecked(false);
}
}
return QDialog::eventFilter(object, event);
}
void LanguageChooser::closeEvent(QCloseEvent * /* event */)
{
QCoreApplication::quit();
}
void LanguageChooser::checkBoxToggled()
{
QCheckBox *checkBox = qobject_cast<QCheckBox *>(sender());
MainWindow *window = mainWindowForCheckBoxMap.value(checkBox);
if (!window) {
QTranslator translator;
const QString qmFile = qmFileForCheckBoxMap.value(checkBox);
if (translator.load(qmFile))
QCoreApplication::installTranslator(&translator);
else
qWarning("Unable to load %s", qPrintable(QDir::toNativeSeparators(qmFile)));
window = new MainWindow;
window->setPalette(colorForLanguage(checkBox->text()));
window->installEventFilter(this);
mainWindowForCheckBoxMap.insert(checkBox, window);
}
window->setVisible(checkBox->isChecked());
}
void LanguageChooser::showAll()
{
for (auto it = qmFileForCheckBoxMap.keyBegin(); it != qmFileForCheckBoxMap.keyEnd(); ++it)
(*it)->setChecked(true);
}
void LanguageChooser::hideAll()
{
for (auto it = qmFileForCheckBoxMap.keyBegin(); it != qmFileForCheckBoxMap.keyEnd(); ++it)
(*it)->setChecked(false);
}
QStringList LanguageChooser::findQmFiles()
{
QDir dir(":/translations");
QStringList fileNames = dir.entryList(QStringList("*.qm"), QDir::Files,
QDir::Name);
for (QString &fileName : fileNames)
fileName = dir.filePath(fileName);
return fileNames;
}
QString LanguageChooser::languageName(const QString &qmFile)
{
QTranslator translator;
if (!translator.load(qmFile)) {
qWarning("Unable to load %s", qPrintable(QDir::toNativeSeparators(qmFile)));
return {};
}
return translator.translate("MainWindow", "English");
}
QColor LanguageChooser::colorForLanguage(const QString &language)
{
size_t hashValue = qHash(language);
int red = 156 + (hashValue & 0x3F);
int green = 156 + ((hashValue >> 6) & 0x3F);
int blue = 156 + ((hashValue >> 12) & 0x3F);
return QColor(red, green, blue);
}

View File

@ -1,49 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef LANGUAGECHOOSER_H
#define LANGUAGECHOOSER_H
#include <QDialog>
#include <QHash>
#include <QStringList>
QT_BEGIN_NAMESPACE
class QAbstractButton;
class QCheckBox;
class QDialogButtonBox;
class QGroupBox;
QT_END_NAMESPACE
class MainWindow;
class LanguageChooser : public QDialog
{
Q_OBJECT
public:
explicit LanguageChooser(const QString &defaultLang = QString(), QWidget *parent = nullptr);
protected:
bool eventFilter(QObject *object, QEvent *event) override;
void closeEvent(QCloseEvent *event) override;
private slots:
void checkBoxToggled();
void showAll();
void hideAll();
private:
static QStringList findQmFiles();
static QString languageName(const QString &qmFile);
static QColor colorForLanguage(const QString &language);
static bool languageMatch(QStringView lang, QStringView qmFile);
QGroupBox *groupBox;
QDialogButtonBox *buttonBox;
QAbstractButton *showAllButton;
QAbstractButton *hideAllButton;
QHash<QCheckBox *, QString> qmFileForCheckBoxMap;
QHash<QCheckBox *, MainWindow *> mainWindowForCheckBoxMap;
};
#endif

View File

@ -1,17 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include <QApplication>
#include <QLocale>
#include "languagechooser.h"
#include "mainwindow.h"
int main(int argc, char *argv[])
{
Q_INIT_RESOURCE(i18n);
QApplication app(argc, argv);
LanguageChooser chooser(QLocale::system().name());
chooser.show();
return app.exec();
}

View File

@ -1,66 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#include "mainwindow.h"
#include <QAction>
#include <QCoreApplication>
#include <QGroupBox>
#include <QListWidget>
#include <QMenuBar>
#include <QRadioButton>
#include <QStatusBar>
#include <QVBoxLayout>
static const char * const listEntries[] = {
QT_TRANSLATE_NOOP("MainWindow", "First"),
QT_TRANSLATE_NOOP("MainWindow", "Second"),
QT_TRANSLATE_NOOP("MainWindow", "Third"),
nullptr
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
centralWidget = new QWidget;
setCentralWidget(centralWidget);
createGroupBox();
listWidget = new QListWidget;
for (const char *entry : listEntries)
listWidget->addItem(tr(entry));
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(groupBox);
mainLayout->addWidget(listWidget);
centralWidget->setLayout(mainLayout);
exitAction = new QAction(tr("E&xit"), this);
connect(exitAction, &QAction::triggered, qApp, QCoreApplication::quit);
fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->setPalette(QPalette(Qt::red));
fileMenu->addAction(exitAction);
setWindowTitle(tr("Language: %1").arg(tr("English")));
statusBar()->showMessage(tr("Internationalization Example"));
if (tr("LTR") == "RTL")
setLayoutDirection(Qt::RightToLeft);
}
void MainWindow::createGroupBox()
{
groupBox = new QGroupBox(tr("View"));
perspectiveRadioButton = new QRadioButton(tr("Perspective"));
isometricRadioButton = new QRadioButton(tr("Isometric"));
obliqueRadioButton = new QRadioButton(tr("Oblique"));
perspectiveRadioButton->setChecked(true);
QVBoxLayout *groupBoxLayout = new QVBoxLayout;
groupBoxLayout->addWidget(perspectiveRadioButton);
groupBoxLayout->addWidget(isometricRadioButton);
groupBoxLayout->addWidget(obliqueRadioButton);
groupBox->setLayout(groupBoxLayout);
}

View File

@ -1,39 +0,0 @@
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
class QAction;
class QGroupBox;
class QLabel;
class QListWidget;
class QMenu;
class QRadioButton;
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
private:
void createGroupBox();
QWidget *centralWidget;
QLabel *label;
QGroupBox *groupBox;
QListWidget *listWidget;
QRadioButton *perspectiveRadioButton;
QRadioButton *isometricRadioButton;
QRadioButton *obliqueRadioButton;
QMenu *fileMenu;
QAction *exitAction;
};
#endif

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>First</source>
<translation>أول</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>مثال التدويل</translation>
</message>
<message>
<source>Isometric</source>
<translation>متماثل</translation>
</message>
<message>
<source>Language: %1</source>
<translation>اللغة: %1</translation>
</message>
<message>
<source>English</source>
<translation>العربية</translation>
</message>
<message>
<source>Oblique</source>
<translation>مصمت</translation>
</message>
<message>
<source>Perspective</source>
<translation>منظور</translation>
</message>
<message>
<source>Second</source>
<translation>ثانى</translation>
</message>
<message>
<source>Third</source>
<translation>ثالث</translation>
</message>
<message>
<source>View</source>
<translation>مرئى</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>أخرج</translation>
</message>
<message>
<source>&amp;File</source>
<translation>الملف</translation>
</message>
<message>
<source>LTR</source>
<translation>RTL</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>View</source>
<translation>Pohled</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;Soubor</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>&amp;Konec</translation>
</message>
<message>
<source>First</source>
<translation>První</translation>
</message>
<message>
<source>Third</source>
<translation>Třetí</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Jayzk: %1</translation>
</message>
<message>
<source>English</source>
<translation>Český</translation>
</message>
<message>
<source>Oblique</source>
<translation>Nakloněný</translation>
</message>
<message>
<source>Second</source>
<translation>Druhý</translation>
</message>
<message>
<source>Isometric</source>
<translation>Isometrický</translation>
</message>
<message>
<source>Perspective</source>
<translation>Perspektivní</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Ukázka lokalizace</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>View</source>
<translation>Ansicht</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;Datei</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>Be&amp;enden</translation>
</message>
<message>
<source>First</source>
<translation>Erstens</translation>
</message>
<message>
<source>Third</source>
<translation>Drittens</translation>
</message>
<message>
<source>English</source>
<translation>Deutsch</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Sprache: %1</translation>
</message>
<message>
<source>Oblique</source>
<translation>Schief</translation>
</message>
<message>
<source>Second</source>
<translation>Zweitens</translation>
</message>
<message>
<source>Isometric</source>
<translation>Isometrisch</translation>
</message>
<message>
<source>Perspective</source>
<translation>Perspektivisch</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Internationalisierungsbeispiel</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>&amp;File</source>
<translation>&amp;Αρχείο</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>Έ&amp;ξοδος</translation>
</message>
<message>
<source>First</source>
<translation>Πρώτο</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Παράδειγμα διεθνοποίησης</translation>
</message>
<message>
<source>Isometric</source>
<translation>Ισομετρική</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Γλώσσα: %1</translation>
</message>
<message>
<source>English</source>
<translation>Ελληνικά</translation>
</message>
<message>
<source>Oblique</source>
<translation>Πλάγια</translation>
</message>
<message>
<source>Perspective</source>
<translation>Προοπτική</translation>
</message>
<message>
<source>Second</source>
<translation>Δεύτερο</translation>
</message>
<message>
<source>Third</source>
<translation>Τρίτο</translation>
</message>
<message>
<source>View</source>
<translation>Όψη</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>E&amp;xit</source>
<translation>E&amp;xit</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;File</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Internationalization Example</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Language: %1</translation>
</message>
<message>
<source>English</source>
<translation>English</translation>
</message>
<message>
<source>View</source>
<translation>View</translation>
</message>
<message>
<source>Perspective</source>
<translation>Perspective</translation>
</message>
<message>
<source>Isometric</source>
<translation>Isometric</translation>
</message>
<message>
<source>Oblique</source>
<translation>Oblique</translation>
</message>
<message>
<source>First</source>
<translation>First</translation>
</message>
<message>
<source>Second</source>
<translation>Second</translation>
</message>
<message>
<source>Third</source>
<translation>Third</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>&amp;File</source>
<translation>&amp;Dosiero</translation>
</message>
<message>
<source>First</source>
<translation>Unue</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Ekzemplo pri internaciigo</translation>
</message>
<message>
<source>Isometric</source>
<translation>Isometria</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Lingvo: %1</translation>
</message>
<message>
<source>English</source>
<translation>Esperanto</translation>
</message>
<message>
<source>Oblique</source>
<translation>Oblikva</translation>
</message>
<message>
<source>Perspective</source>
<translation>Perspektiva</translation>
</message>
<message>
<source>Second</source>
<translation>Due</translation>
</message>
<message>
<source>Third</source>
<translation>Trie</translation>
</message>
<message>
<source>View</source>
<translation>Aspekto</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>&amp;Fini</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>View</source>
<translation>Vue</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;Fichier</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>&amp;Quitter</translation>
</message>
<message>
<source>First</source>
<translation>Premier</translation>
</message>
<message>
<source>Third</source>
<translation>Troisième</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Langue : %1</translation>
</message>
<message>
<source>English</source>
<translation>Français</translation>
</message>
<message>
<source>Oblique</source>
<translation>Oblique</translation>
</message>
<message>
<source>Second</source>
<translation>Deuxième</translation>
</message>
<message>
<source>Isometric</source>
<translation>Isométrique</translation>
</message>
<message>
<source>Perspective</source>
<translation>Perspective</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Exemple d&apos;internationalisation</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>First</source>
<translation>Primo</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Esempio di localizzazione</translation>
</message>
<message>
<source>Isometric</source>
<translation>Isometrica</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Lingua: %1</translation>
</message>
<message>
<source>English</source>
<translation>Italiano</translation>
</message>
<message>
<source>Oblique</source>
<translation>Obliqua</translation>
</message>
<message>
<source>Perspective</source>
<translation>Prospettica</translation>
</message>
<message>
<source>Second</source>
<translation>Secondo</translation>
</message>
<message>
<source>Third</source>
<translation>Terzo</translation>
</message>
<message>
<source>View</source>
<translation>Vista</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>&amp;Esci</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;File</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>&amp;File</source>
<translation>(&amp;F)</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>(&amp;X)</translation>
</message>
<message>
<source>First</source>
<translation></translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>(i18n)</translation>
</message>
<message>
<source>Isometric</source>
<translation></translation>
</message>
<message>
<source>Language: %1</source>
<translation>: %1</translation>
</message>
<message>
<source>English</source>
<translation></translation>
</message>
<message>
<source>Oblique</source>
<translation></translation>
</message>
<message>
<source>Perspective</source>
<translation></translation>
</message>
<message>
<source>Second</source>
<translation></translation>
</message>
<message>
<source>Third</source>
<translation></translation>
</message>
<message>
<source>View</source>
<translation></translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>&amp;File</source>
<translation>&amp;F</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>&amp;X</translation>
</message>
<message>
<source>First</source>
<translation></translation>
</message>
<message>
<source>Internationalization Example</source>
<translation> </translation>
</message>
<message>
<source>Isometric</source>
<translation></translation>
</message>
<message>
<source>Language: %1</source>
<translation> : %1</translation>
</message>
<message>
<source>English</source>
<translation></translation>
</message>
<message>
<source>Oblique</source>
<translation></translation>
</message>
<message>
<source>Perspective</source>
<translation></translation>
</message>
<message>
<source>Second</source>
<translation></translation>
</message>
<message>
<source>Third</source>
<translation></translation>
</message>
<message>
<source>View</source>
<translation></translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>View</source>
<translation>Vis</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;Fil</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>&amp;Avslutt</translation>
</message>
<message>
<source>First</source>
<translation>Første</translation>
</message>
<message>
<source>Third</source>
<translation>Tredje</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Språk: %1</translation>
</message>
<message>
<source>English</source>
<translation>Norsk</translation>
</message>
<message>
<source>Oblique</source>
<translation>Skjevt</translation>
</message>
<message>
<source>Second</source>
<translation>Andre</translation>
</message>
<message>
<source>Isometric</source>
<translation>Isometrisk</translation>
</message>
<message>
<source>Perspective</source>
<translation>Perspektiv</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Internasjonaliseringseksempel</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="1.1" language="ru">
<defaultcodec></defaultcodec>
<context>
<name>MainWindow</name>
<message>
<source>View</source>
<translation>Вид</translation>
</message>
<message>
<source>&amp;File</source>
<translation>Файл</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>Выход</translation>
</message>
<message>
<source>First</source>
<translation>Первый</translation>
</message>
<message>
<source>Third</source>
<translation>Третий</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Язык: %1</translation>
</message>
<message>
<source>English</source>
<translation>Русский</translation>
</message>
<message>
<source>Oblique</source>
<translation>Курсив</translation>
</message>
<message>
<source>Second</source>
<translation>Второй</translation>
</message>
<message>
<source>Isometric</source>
<translation>Изометрический</translation>
</message>
<message>
<source>Perspective</source>
<translation>Перспектива</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Пример интернационализации</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>View</source>
<translation>Visa</translation>
</message>
<message>
<source>&amp;File</source>
<translation>&amp;Arkiv</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>&amp;Avsluta</translation>
</message>
<message>
<source>First</source>
<translation>Första</translation>
</message>
<message>
<source>Third</source>
<translation>Tredje</translation>
</message>
<message>
<source>Language: %1</source>
<translation>Språk: %1</translation>
</message>
<message>
<source>English</source>
<translation>Svenska</translation>
</message>
<message>
<source>Oblique</source>
<translation>Skevt</translation>
</message>
<message>
<source>Second</source>
<translation>Andra</translation>
</message>
<message>
<source>Isometric</source>
<translation>Isometriskt</translation>
</message>
<message>
<source>Perspective</source>
<translation>Perspektivt</translation>
</message>
<message>
<source>Internationalization Example</source>
<translation>Internationaliseringsexempel</translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -1,57 +0,0 @@
<!DOCTYPE TS><TS>
<context>
<name>MainWindow</name>
<message>
<source>View</source>
<translation></translation>
</message>
<message>
<source>&amp;File</source>
<translation>[&amp;F]</translation>
</message>
<message>
<source>E&amp;xit</source>
<translation>退[&amp;x]</translation>
</message>
<message>
<source>First</source>
<translation></translation>
</message>
<message>
<source>Third</source>
<translation></translation>
</message>
<message>
<source>Language: %1</source>
<translation>: %1</translation>
</message>
<message>
<source>English</source>
<translation></translation>
</message>
<message>
<source>Oblique</source>
<translation></translation>
</message>
<message>
<source>Second</source>
<translation></translation>
</message>
<message>
<source>Isometric</source>
<translation></translation>
</message>
<message>
<source>Perspective</source>
<translation></translation>
</message>
<message>
<source>Internationalization Example</source>
<translation></translation>
</message>
<message>
<source>LTR</source>
<translation>LTR</translation>
</message>
</context>
</TS>

View File

@ -3,7 +3,6 @@ SUBDIRS = \
completer \
customcompleter \
echoplugin \
i18n \
plugandpaint \
regularexpression \
settingseditor \
@ -12,8 +11,6 @@ SUBDIRS = \
undo \
undoframework
contains(DEFINES, QT_NO_TRANSLATION): SUBDIRS -= i18n
!qtConfig(library) {
SUBDIRS -= \
echoplugin \