refactor: rework the localization related part
This commit is contained in:
parent
0e3d5c519e
commit
c641be3377
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
*.user
|
||||
*.user.*
|
||||
translations/*.qm
|
||||
|
30
Caesium.pro
30
Caesium.pro
@ -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
|
||||
|
||||
|
10
README.md
Normal file
10
README.md
Normal file
@ -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.
BIN
lang/25.汉语.qm
BIN
lang/25.汉语.qm
Binary file not shown.
BIN
lang/25.漢語.qm
BIN
lang/25.漢語.qm
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
lang/59.日本語.qm
BIN
lang/59.日本語.qm
Binary file not shown.
BIN
lang/66.한국어.qm
BIN
lang/66.한국어.qm
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
|
65
main.cpp
65
main.cpp
@ -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,18 +46,24 @@ 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()));
|
||||
a.installTranslator(&translator);
|
||||
}
|
||||
else
|
||||
{
|
||||
translator.load(a.applicationDirPath() + "/language/" + findLocaleS(locale, a.applicationDirPath()));
|
||||
a.installTranslator(&translator);
|
||||
if(locale.isEmpty()) {
|
||||
if (translator.load(QString("caesium_%1").arg(QLocale::system().name()), qmDir)) {
|
||||
a.installTranslator(&translator);
|
||||
}
|
||||
} else {
|
||||
if (translator.load(QString("caesium_%1").arg(locale), qmDir)) {
|
||||
a.installTranslator(&translator);
|
||||
}
|
||||
}
|
||||
|
||||
QPixmap pixmap(":icons/splash.png");
|
||||
|
@ -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"),
|
||||
|
1015
translations/caesium.ts
Normal file
1015
translations/caesium.ts
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user