From 36307dcda0734efb5fa7079b5bc01f53d13446b1 Mon Sep 17 00:00:00 2001 From: wh201906 Date: Wed, 15 Dec 2021 21:43:10 +0800 Subject: [PATCH] Non-ASCII path support(partial) I didn't find other solutions on the Internet. I found the plugins are loaded when creating MainWindow, so this solution should be fine? --- lang/en_US.ts | 17 +++++++++++++++++ lang/zh_CN.qm | Bin 21418 -> 21545 bytes lang/zh_CN.ts | 17 +++++++++++++++++ main.cpp | 11 +++++++++++ ui/mf_trailerdecoderdialog.cpp | 18 +++++++++--------- 5 files changed, 54 insertions(+), 9 deletions(-) diff --git a/lang/en_US.ts b/lang/en_US.ts index 363baba..a4224b7 100644 --- a/lang/en_US.ts +++ b/lang/en_US.ts @@ -270,6 +270,7 @@ + KeyA @@ -280,6 +281,7 @@ + KeyB @@ -306,6 +308,21 @@ It could make the whole sector blocked irreversibly! Valid + + + + + + + + Block + + + + + KeyA+B + + MainWindow diff --git a/lang/zh_CN.qm b/lang/zh_CN.qm index 38b9a62a371a0115090fdef3b74448a4b2a9aff7..bf66fd3677528d675a08d876b893dcd39ae4069a 100644 GIT binary patch delta 1888 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 DYXR70 diff --git a/lang/zh_CN.ts b/lang/zh_CN.ts index 072af7f..ebe5e59 100644 --- a/lang/zh_CN.ts +++ b/lang/zh_CN.ts @@ -271,6 +271,7 @@ + KeyA 密钥A @@ -281,6 +282,7 @@ + KeyB 密钥B @@ -310,6 +312,21 @@ It could make the whole sector blocked irreversibly! Valid 有效 + + + + + + + + Block + + + + + KeyA+B + 密钥A+B + MainWindow diff --git a/main.cpp b/main.cpp index 2e242b2..7ac5c30 100644 --- a/main.cpp +++ b/main.cpp @@ -9,6 +9,17 @@ int main(int argc, char *argv[]) { + // A trick to handle non-ascii path + // The application cannot find the plugins when the path contains non ascii characters. + // However, the plugins will be load after creating MainWindow(or QApplication?). + // QDir will handle the path correctly. + QDir* pluginDir = new QDir; + if(pluginDir->cd("plugins")) // has plugins folder + { + qputenv("QT_PLUGIN_PATH", pluginDir->absolutePath().toLocal8Bit()); + } + delete pluginDir; + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QDir *langPath = new QDir(); diff --git a/ui/mf_trailerdecoderdialog.cpp b/ui/mf_trailerdecoderdialog.cpp index d4c5092..9e9f8bc 100644 --- a/ui/mf_trailerdecoderdialog.cpp +++ b/ui/mf_trailerdecoderdialog.cpp @@ -85,15 +85,15 @@ void MF_trailerDecoderDialog::on_blockSizeChanged(int id, bool st) { if(id == 4) { - ui->dataBlockWidget->verticalHeaderItem(0)->setText("Block0"); - ui->dataBlockWidget->verticalHeaderItem(1)->setText("Block1"); - ui->dataBlockWidget->verticalHeaderItem(2)->setText("Block2"); + ui->dataBlockWidget->verticalHeaderItem(0)->setText(tr("Block") + "0"); + ui->dataBlockWidget->verticalHeaderItem(1)->setText(tr("Block") + "1"); + ui->dataBlockWidget->verticalHeaderItem(2)->setText(tr("Block") + "2"); } else if(id == 16) { - ui->dataBlockWidget->verticalHeaderItem(0)->setText("Block0~4"); - ui->dataBlockWidget->verticalHeaderItem(1)->setText("Block5~9"); - ui->dataBlockWidget->verticalHeaderItem(2)->setText("Block10~14"); + ui->dataBlockWidget->verticalHeaderItem(0)->setText(tr("Block") + "0~4"); + ui->dataBlockWidget->verticalHeaderItem(1)->setText(tr("Block") + "5~9"); + ui->dataBlockWidget->verticalHeaderItem(2)->setText(tr("Block") + "10~14"); } } @@ -110,15 +110,15 @@ void MF_trailerDecoderDialog::setTableItem(QTableWidget* widget, int row, int co } else if(accessType == Mifare::ACC_KEY_A) { - text = "KeyA"; + text = tr("KeyA"); } else if(accessType == Mifare::ACC_KEY_B) { - text = "KeyB"; + text = tr("KeyB"); } else if(accessType == Mifare::ACC_KEY_AB) { - text = "KeyA+B"; + text = tr("KeyA+B"); } widget->item(row, column)->setText(text); }