refactor: rework the localization related part
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
*.user
|
||||
*.user.*
|
||||
translations/*.qm
|
||||
|
||||
+16
-14
@@ -46,20 +46,22 @@ RESOURCES += \
|
||||
|
||||
RC_FILE = caesium.rc
|
||||
|
||||
TRANSLATIONS = caesium_en.ts \
|
||||
caesium_it.ts \
|
||||
caesium_ja.ts \
|
||||
caesium_fr.ts \
|
||||
caesium_br.ts \
|
||||
caesium_de.ts \
|
||||
caesium_tw.ts \
|
||||
caesium_sv.ts \
|
||||
caesium_cn.ts \
|
||||
caesium_pt-br.ts \
|
||||
caesium_es.ts \
|
||||
caesium_kr.ts \
|
||||
caesium_gr.ts \
|
||||
caesium_ru.ts
|
||||
TRANSLATIONS = \
|
||||
translations/caesium.ts \
|
||||
translations/caesium_en_US.ts \
|
||||
translations/caesium_it.ts \
|
||||
translations/caesium_ja.ts \
|
||||
translations/caesium_fr.ts \
|
||||
translations/caesium_br.ts \
|
||||
translations/caesium_de.ts \
|
||||
translations/caesium_zh_TW.ts \
|
||||
translations/caesium_sv.ts \
|
||||
translations/caesium_zh_CN.ts \
|
||||
translations/caesium_pt_BR.ts \
|
||||
translations/caesium_es.ts \
|
||||
translations/caesium_ko.ts \
|
||||
translations/caesium_el_GR.ts \
|
||||
translations/caesium_ru.ts
|
||||
|
||||
LIBS += -lQt5Concurrent
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
## Caesium (fork)
|
||||
|
||||
based on Caesium 1.7.0. You can get the original source code at [here](https://sourceforge.net/projects/caesium/files/1.7.0/). Changes made by this fork listed below.
|
||||
|
||||
### Resolved issues
|
||||
|
||||
- Remove country/region flags since the original filename have encoding issue which can cause a build failure, and also to avoid some potential regional internationalization issues. (216e1a9)
|
||||
- Resolution display as -1x-1 for some images with unregular filename (e.g. `2IGYT%BD]SYY77Q7R041(WD.jpg` and `G9E@W$_Y4GYMWJY)%R24X~2.jpg`): Recompile under newer Qt version should works. Original Caesium official binary comes with Qt 5.1.0, Recompiled and tested under Qt 5.15.2.
|
||||
- Click "Auto preview" checkbox and then click any image item will lead a crash. (0e3d5c5)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +0,0 @@
|
||||
C:\Qt\Qt5.1.0\5.1.0\mingw48_32\bin\lupdate.exe C:\Users\Matteo\Documents\Progetti\Qt4\Caesium\Source\caesium.pro
|
||||
pause
|
||||
@@ -1,6 +1,7 @@
|
||||
/*******************************************************************************
|
||||
#
|
||||
# Copyright (C) 2010-2013 Matteo Paonessa <matteo.paonessa@gmail.com>
|
||||
# 2021 Gary Wang <wzc782970009@gmail.com>
|
||||
#
|
||||
# This file is part of the Caesium distribution.
|
||||
#
|
||||
@@ -19,6 +20,7 @@
|
||||
# Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Author: Matteo Paonessa <matteo.paonessa@gmail.com>
|
||||
# Gary Wang <wzc782970009@gmail.com>
|
||||
#
|
||||
# ******************************************************************************/
|
||||
|
||||
@@ -30,37 +32,10 @@
|
||||
#include <QDebug>
|
||||
#include <QTextStream>
|
||||
|
||||
QString findLocaleN(int n, QString dir)
|
||||
{
|
||||
QDir langDir(dir + "/language");
|
||||
QStringList list = langDir.entryList(QStringList("*.qm"), QDir::Files, QDir::Name);
|
||||
for (int i = list.length() - 1; i >= 0; i--)
|
||||
{
|
||||
QString file = list.at(i);
|
||||
QStringList name = file.split(".");
|
||||
if (name[0] == QString::number(n))
|
||||
{
|
||||
return QString::number(n) + "." + name[1];
|
||||
}
|
||||
}
|
||||
return QString("31.English");
|
||||
}
|
||||
|
||||
QString findLocaleS(QString string, QString dir)
|
||||
{
|
||||
QDir langDir(dir + "/language");
|
||||
QStringList list = langDir.entryList(QStringList("*.qm"), QDir::Files, QDir::Name);
|
||||
for (int i = list.length() - 1; i >= 0; i--)
|
||||
{
|
||||
QString file = list.at(i);
|
||||
QStringList name = file.split(".");
|
||||
if (name[1] == string)
|
||||
{
|
||||
return name[0] + "." + string;
|
||||
}
|
||||
}
|
||||
return QString("31.English");
|
||||
}
|
||||
// QM_FILE_INSTALL_DIR should be defined from the CMakeLists file.
|
||||
#ifndef QM_FILE_INSTALL_DIR
|
||||
#define QM_FILE_INSTALL_DIR ":/i18n/"
|
||||
#endif // QM_FILE_INSTALL_DIR
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -71,19 +46,25 @@ int main(int argc, char *argv[])
|
||||
|
||||
a.addLibraryPath(a.applicationDirPath() + "/lib/");
|
||||
|
||||
int loc = QLocale::system().language();
|
||||
QString locale = settings.value("Preferences/lang").value<QString>();
|
||||
QString locale = settings.value("Preferences/language").value<QString>();
|
||||
|
||||
QString qmDir;
|
||||
#ifdef _WIN32
|
||||
qmDir = QDir(QCoreApplication::applicationDirPath()).absoluteFilePath("translations");
|
||||
#else
|
||||
qmDir = QT_STRINGIFY(QM_FILE_INSTALL_DIR);
|
||||
#endif
|
||||
|
||||
QTranslator translator;
|
||||
if(locale.isEmpty())
|
||||
{
|
||||
translator.load(a.applicationDirPath() + "/language/" + findLocaleN(loc, a.applicationDirPath()));
|
||||
if(locale.isEmpty()) {
|
||||
if (translator.load(QString("caesium_%1").arg(QLocale::system().name()), qmDir)) {
|
||||
a.installTranslator(&translator);
|
||||
}
|
||||
else
|
||||
{
|
||||
translator.load(a.applicationDirPath() + "/language/" + findLocaleS(locale, a.applicationDirPath()));
|
||||
} else {
|
||||
if (translator.load(QString("caesium_%1").arg(locale), qmDir)) {
|
||||
a.installTranslator(&translator);
|
||||
}
|
||||
}
|
||||
|
||||
QPixmap pixmap(":icons/splash.png");
|
||||
QSplashScreen splash(pixmap, Qt::WindowStaysOnTopHint);
|
||||
|
||||
+11
-8
@@ -1,6 +1,7 @@
|
||||
/*******************************************************************************
|
||||
#
|
||||
# Copyright (C) 2010-2013 Matteo Paonessa <matteo.paonessa@gmail.com>
|
||||
# 2021 Gary Wang <wzc782970009@gmail.com>
|
||||
#
|
||||
# This file is part of the Caesium distribution.
|
||||
#
|
||||
@@ -19,6 +20,7 @@
|
||||
# Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Author: Matteo Paonessa <matteo.paonessa@gmail.com>
|
||||
# Gary Wang <wzc782970009@gmail.com>
|
||||
#
|
||||
# ******************************************************************************/
|
||||
|
||||
@@ -62,16 +64,17 @@ Preferences::~Preferences()
|
||||
|
||||
void Preferences::loadLanguages()
|
||||
{
|
||||
QDir langDir(QDir::currentPath() + "/language");
|
||||
QDir langDir(QDir::currentPath() + "/translations");
|
||||
QStringList list = langDir.entryList(QStringList("*.qm"), QDir::Files, QDir::NoSort);
|
||||
for (int i = list.length() - 1; i >= 0; i--)
|
||||
{
|
||||
QString file = list.at(i);
|
||||
QStringList infoList;
|
||||
QStringList name = file.split(".");
|
||||
infoList << name[1];
|
||||
QTreeWidgetItem *item = new QTreeWidgetItem(infoList, 0);
|
||||
item->setIcon(0, QIcon(":/icons/language/" + name[1] + ".png"));
|
||||
QString fileName = QFileInfo(list.at(i)).baseName();
|
||||
if (!fileName.startsWith("caesium")) continue;
|
||||
QString langCode = fileName.mid(8);
|
||||
QString langName = QLocale(langCode).nativeLanguageName();
|
||||
if (langName.isEmpty() || langCode.isEmpty()) continue;
|
||||
|
||||
QTreeWidgetItem *item = new QTreeWidgetItem({langName, langCode}, 0);
|
||||
ui->languageTreeWidget->insertTopLevelItem(0, item);
|
||||
}
|
||||
ui->languageTreeWidget->sortItems(0, Qt::AscendingOrder);
|
||||
@@ -171,7 +174,7 @@ void Preferences::on_applyButton_clicked()
|
||||
settings.setValue("Preferences/loadlastlist", ui->loadLastListCheckBox->isChecked());
|
||||
if (ui->languageTreeWidget->selectedItems().count() != 0)
|
||||
{
|
||||
settings.setValue("Preferences/lang", ui->languageTreeWidget->selectedItems().at(0)->text(0));
|
||||
settings.setValue("Preferences/language", ui->languageTreeWidget->selectedItems().at(0)->text(1));
|
||||
QMessageBox::information(this,
|
||||
tr("Information"),
|
||||
tr("You need to restart the application before\nchanges take effect"),
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user