make more strings translatable + try to load a default translation that suits the user's system language
This commit is contained in:
parent
5a1ff67e42
commit
8c0fa11803
@ -1211,6 +1211,36 @@
|
|||||||
<File
|
<File
|
||||||
RelativePath=".\src\Registry_Decoder.h"
|
RelativePath=".\src\Registry_Decoder.h"
|
||||||
>
|
>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="MOC "$(SolutionDir)tmp\MOC_$(SafeInputName).cpp""
|
||||||
|
CommandLine=""$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_$(SafeInputName).cpp" "$(InputPath)""
|
||||||
|
Outputs=""$(SolutionDir)tmp\MOC_$(SafeInputName).cpp""
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="MOC "$(SolutionDir)tmp\MOC_$(SafeInputName).cpp""
|
||||||
|
CommandLine=""$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_$(SafeInputName).cpp" "$(InputPath)""
|
||||||
|
Outputs=""$(SolutionDir)tmp\MOC_$(SafeInputName).cpp""
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
|
<FileConfiguration
|
||||||
|
Name="Release_Static|Win32"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
Description="MOC "$(SolutionDir)tmp\MOC_$(SafeInputName).cpp""
|
||||||
|
CommandLine=""$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_$(SafeInputName).cpp" "$(InputPath)""
|
||||||
|
Outputs=""$(SolutionDir)tmp\MOC_$(SafeInputName).cpp""
|
||||||
|
/>
|
||||||
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\src\Resource.h"
|
RelativePath=".\src\Resource.h"
|
||||||
@ -1514,6 +1544,10 @@
|
|||||||
RelativePath=".\tmp\MOC_Model_Progress.cpp"
|
RelativePath=".\tmp\MOC_Model_Progress.cpp"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\tmp\MOC_Registry_Decoder.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\tmp\MOC_Thread_FileAnalyzer.cpp"
|
RelativePath=".\tmp\MOC_Thread_FileAnalyzer.cpp"
|
||||||
>
|
>
|
||||||
@ -1676,7 +1710,7 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
CommandLine=""$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp" -name "$(SafeInputName)" "$(InputPath)""
|
CommandLine=""$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp" -name "$(SafeInputName)" "$(InputPath)"
"
|
||||||
AdditionalDependencies="RCC "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
AdditionalDependencies="RCC "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
||||||
Outputs=""$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
Outputs=""$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
||||||
/>
|
/>
|
||||||
@ -1686,7 +1720,7 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
CommandLine=""$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp" -name "$(SafeInputName)" "$(InputPath)""
|
CommandLine=""$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp" -name "$(SafeInputName)" "$(InputPath)"
"
|
||||||
AdditionalDependencies="RCC "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
AdditionalDependencies="RCC "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
||||||
Outputs=""$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
Outputs=""$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
||||||
/>
|
/>
|
||||||
@ -1696,7 +1730,7 @@
|
|||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
CommandLine=""$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp" -name "$(SafeInputName)" "$(InputPath)""
|
CommandLine=""$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp" -name "$(SafeInputName)" "$(InputPath)"
"
|
||||||
AdditionalDependencies="RCC "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
AdditionalDependencies="RCC "$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
||||||
Outputs=""$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
Outputs=""$(SolutionDir)tmp\RCC_$(SafeInputName).cpp""
|
||||||
/>
|
/>
|
||||||
|
@ -37,6 +37,12 @@ del /Q "%OBJ_PATH%\*.idb"
|
|||||||
del /Q "%MOC_PATH%\*.cpp"
|
del /Q "%MOC_PATH%\*.cpp"
|
||||||
del /Q "%MOC_PATH%\*.h"
|
del /Q "%MOC_PATH%\*.h"
|
||||||
REM ------------------------------------------
|
REM ------------------------------------------
|
||||||
|
REM :: BUILD LANGUAGE FILES ::
|
||||||
|
REM ------------------------------------------
|
||||||
|
for %%f in (..\Translation\*.ts) do (
|
||||||
|
lrelease.exe %%f -qm ..\..\res\localization\%%~nf.qm
|
||||||
|
)
|
||||||
|
REM ------------------------------------------
|
||||||
REM :: BUILD BINARIES ::
|
REM :: BUILD BINARIES ::
|
||||||
REM ------------------------------------------
|
REM ------------------------------------------
|
||||||
call _build.bat "..\..\LameXP.sln" "%LAMEXP_CONFIG%"
|
call _build.bat "..\..\LameXP.sln" "%LAMEXP_CONFIG%"
|
||||||
|
BIN
res/flags/en.png
Normal file
BIN
res/flags/en.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 599 B |
@ -25,7 +25,7 @@
|
|||||||
#define VER_LAMEXP_MAJOR 4
|
#define VER_LAMEXP_MAJOR 4
|
||||||
#define VER_LAMEXP_MINOR_HI 0
|
#define VER_LAMEXP_MINOR_HI 0
|
||||||
#define VER_LAMEXP_MINOR_LO 0
|
#define VER_LAMEXP_MINOR_LO 0
|
||||||
#define VER_LAMEXP_BUILD 204
|
#define VER_LAMEXP_BUILD 209
|
||||||
#define VER_LAMEXP_SUFFIX TechPreview
|
#define VER_LAMEXP_SUFFIX TechPreview
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -190,14 +190,14 @@ void AboutDialog::showAboutQt(void)
|
|||||||
void AboutDialog::showAboutContributors(void)
|
void AboutDialog::showAboutContributors(void)
|
||||||
{
|
{
|
||||||
QString contributorsAboutText;
|
QString contributorsAboutText;
|
||||||
contributorsAboutText += QString("<h3>%1</h3>").arg(tr("The following people have contributed to LameXP:"));
|
contributorsAboutText += QString("<h3><nobr>%1</nobr></h3>").arg(tr("The following people have contributed to LameXP:"));
|
||||||
contributorsAboutText += QString("<b>%1</b>").arg(tr("Translators:"));
|
contributorsAboutText += QString("<b>%1</b>").arg(tr("Translators:"));
|
||||||
contributorsAboutText += "<table style=\"margin-top:5px\">";
|
contributorsAboutText += "<table style=\"margin-top:5px\">";
|
||||||
contributorsAboutText += CONTRIBUTOR("Englisch", "LoRd_MuldeR <MuldeR2@GMX.de>", ":/flags/gb.png");
|
contributorsAboutText += CONTRIBUTOR("Englisch", "LoRd_MuldeR <MuldeR2@GMX.de>", ":/flags/en.png");
|
||||||
contributorsAboutText += CONTRIBUTOR("Deutsch", "LoRd_MuldeR <MuldeR2@GMX.de>", ":/flags/de.png");
|
contributorsAboutText += CONTRIBUTOR("Deutsch", "LoRd_MuldeR <MuldeR2@GMX.de>", ":/flags/de.png");
|
||||||
contributorsAboutText += "</table>";
|
contributorsAboutText += "</table>";
|
||||||
contributorsAboutText += "<br><br>";
|
contributorsAboutText += "<br><br>";
|
||||||
contributorsAboutText += QString("<i>%1</i><br>").arg(tr("If you are willing to contribute a LameXP translation, feel free to contact us!"));
|
contributorsAboutText += QString("<nobr><i>%1</i></nobr><br>").arg(tr("If you are willing to contribute a LameXP translation, feel free to contact us!"));
|
||||||
|
|
||||||
QMessageBox *contributorsAboutBox = new QMessageBox(this);
|
QMessageBox *contributorsAboutBox = new QMessageBox(this);
|
||||||
contributorsAboutBox->setText(contributorsAboutText);
|
contributorsAboutBox->setText(contributorsAboutText);
|
||||||
|
@ -599,7 +599,7 @@ void MainWindow::windowShown(void)
|
|||||||
{
|
{
|
||||||
qWarning("Binary has expired !!!");
|
qWarning("Binary has expired !!!");
|
||||||
PlaySound(MAKEINTRESOURCE(IDR_WAVE_WHAMMY), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
PlaySound(MAKEINTRESOURCE(IDR_WAVE_WHAMMY), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
||||||
if(QMessageBox::warning(this, tr("LameXP - Expired"), tr("This demo (pre-release) version of LameXP has expired at %1.\nLameXP is free software and release versions won't expire.").arg(expireDate.toString(Qt::ISODate)), tr("Check for Updates"), tr("Exit Program")) == 0)
|
if(QMessageBox::warning(this, tr("LameXP - Expired"), QString("<nobr>%1<br>%2</nobr>").arg(tr("This demo (pre-release) version of LameXP has expired at %1.").arg(expireDate.toString(Qt::ISODate)), tr("LameXP is free software and release versions won't expire.")), tr("Check for Updates"), tr("Exit Program")) == 0)
|
||||||
{
|
{
|
||||||
checkUpdatesActionActivated();
|
checkUpdatesActionActivated();
|
||||||
}
|
}
|
||||||
@ -627,7 +627,7 @@ void MainWindow::windowShown(void)
|
|||||||
QDate lastUpdateCheck = QDate::fromString(m_settings->autoUpdateLastCheck(), Qt::ISODate);
|
QDate lastUpdateCheck = QDate::fromString(m_settings->autoUpdateLastCheck(), Qt::ISODate);
|
||||||
if(!lastUpdateCheck.isValid() || QDate::currentDate() >= lastUpdateCheck.addDays(14))
|
if(!lastUpdateCheck.isValid() || QDate::currentDate() >= lastUpdateCheck.addDays(14))
|
||||||
{
|
{
|
||||||
if(QMessageBox::information(this, tr("Update Reminer"), (lastUpdateCheck.isValid() ? tr("Your last update check was more than 14 days ago. Check for updates now?") : tr("Your did not check for LameXP updates yet. Check for updates now?")), tr("Check for Updates"), tr("Postpone")) == 0)
|
if(QMessageBox::information(this, tr("Update Reminder"), (lastUpdateCheck.isValid() ? tr("Your last update check was more than 14 days ago. Check for updates now?") : tr("Your did not check for LameXP updates yet. Check for updates now?")), tr("Check for Updates"), tr("Postpone")) == 0)
|
||||||
{
|
{
|
||||||
checkUpdatesActionActivated();
|
checkUpdatesActionActivated();
|
||||||
}
|
}
|
||||||
@ -1214,7 +1214,7 @@ void MainWindow::notifyOtherInstance(void)
|
|||||||
{
|
{
|
||||||
if(!m_banner->isVisible())
|
if(!m_banner->isVisible())
|
||||||
{
|
{
|
||||||
QMessageBox msgBox(QMessageBox::Warning, tr("Already running"), tr("LameXP is already running, please use the running instance!"), QMessageBox::NoButton, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint | Qt::WindowStaysOnTopHint);
|
QMessageBox msgBox(QMessageBox::Warning, tr("Already Running"), tr("LameXP is already running, please use the running instance!"), QMessageBox::NoButton, this, Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint | Qt::WindowStaysOnTopHint);
|
||||||
msgBox.exec();
|
msgBox.exec();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ ProcessingDialog::ProcessingDialog(FileListModel *fileListModel, AudioFileModel
|
|||||||
|
|
||||||
//Create context menu
|
//Create context menu
|
||||||
m_contextMenu = new QMenu();
|
m_contextMenu = new QMenu();
|
||||||
QAction *contextMenuAction = m_contextMenu->addAction(QIcon(":/icons/zoom.png"), "Show details for selected job");
|
QAction *contextMenuAction = m_contextMenu->addAction(QIcon(":/icons/zoom.png"), tr("Show details for selected job"));
|
||||||
view_log->setContextMenuPolicy(Qt::CustomContextMenu);
|
view_log->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(view_log, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuTriggered(QPoint)));
|
connect(view_log, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuTriggered(QPoint)));
|
||||||
connect(contextMenuAction, SIGNAL(triggered(bool)), this, SLOT(contextMenuActionTriggered()));
|
connect(contextMenuAction, SIGNAL(triggered(bool)), this, SLOT(contextMenuActionTriggered()));
|
||||||
@ -243,7 +243,7 @@ void ProcessingDialog::initEncoding(void)
|
|||||||
m_playList.clear();
|
m_playList.clear();
|
||||||
|
|
||||||
CHANGE_BACKGROUND_COLOR(frame_header, QColor(Qt::white));
|
CHANGE_BACKGROUND_COLOR(frame_header, QColor(Qt::white));
|
||||||
SET_PROGRESS_TEXT("Encoding files, please wait...");
|
SET_PROGRESS_TEXT(tr("Encoding files, please wait..."));
|
||||||
m_progressIndicator->start();
|
m_progressIndicator->start();
|
||||||
|
|
||||||
button_closeDialog->setEnabled(false);
|
button_closeDialog->setEnabled(false);
|
||||||
@ -268,7 +268,7 @@ void ProcessingDialog::abortEncoding(void)
|
|||||||
m_userAborted = true;
|
m_userAborted = true;
|
||||||
button_AbortProcess->setEnabled(false);
|
button_AbortProcess->setEnabled(false);
|
||||||
|
|
||||||
SET_PROGRESS_TEXT("Aborted! Waiting for running jobs to terminate...");
|
SET_PROGRESS_TEXT(tr("Aborted! Waiting for running jobs to terminate..."));
|
||||||
|
|
||||||
for(int i = 0; i < m_threadList.count(); i++)
|
for(int i = 0; i < m_threadList.count(); i++)
|
||||||
{
|
{
|
||||||
@ -283,7 +283,7 @@ void ProcessingDialog::doneEncoding(void)
|
|||||||
|
|
||||||
if(!m_userAborted)
|
if(!m_userAborted)
|
||||||
{
|
{
|
||||||
SET_PROGRESS_TEXT(QString("Encoding: %1 files of %2 completed so far, please wait...").arg(QString::number(progressBar->value()), QString::number(progressBar->maximum())));
|
SET_PROGRESS_TEXT(tr("Encoding: %1 files of %2 completed so far, please wait...").arg(QString::number(progressBar->value()), QString::number(progressBar->maximum())));
|
||||||
WinSevenTaskbar::setTaskbarProgress(this, progressBar->value(), progressBar->maximum());
|
WinSevenTaskbar::setTaskbarProgress(this, progressBar->value(), progressBar->maximum());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,7 +311,7 @@ void ProcessingDialog::doneEncoding(void)
|
|||||||
|
|
||||||
if(!m_userAborted && m_settings->createPlaylist() && !m_settings->outputToSourceDir())
|
if(!m_userAborted && m_settings->createPlaylist() && !m_settings->outputToSourceDir())
|
||||||
{
|
{
|
||||||
SET_PROGRESS_TEXT("Creatig the playlist file, please wait...");
|
SET_PROGRESS_TEXT(tr("Creatig the playlist file, please wait..."));
|
||||||
QApplication::processEvents();
|
QApplication::processEvents();
|
||||||
writePlayList();
|
writePlayList();
|
||||||
}
|
}
|
||||||
@ -321,8 +321,8 @@ void ProcessingDialog::doneEncoding(void)
|
|||||||
CHANGE_BACKGROUND_COLOR(frame_header, QColor("#FFF3BA"));
|
CHANGE_BACKGROUND_COLOR(frame_header, QColor("#FFF3BA"));
|
||||||
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarErrorState);
|
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarErrorState);
|
||||||
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/error.png"));
|
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/error.png"));
|
||||||
SET_PROGRESS_TEXT((m_succeededJobs.count() > 0) ? QString("Process was aborted by the user after %1 file(s)!").arg(QString::number(m_succeededJobs.count())) : "Process was aborted prematurely by the user!");
|
SET_PROGRESS_TEXT((m_succeededJobs.count() > 0) ? tr("Process was aborted by the user after %1 file(s)!").arg(QString::number(m_succeededJobs.count())) : "Process was aborted prematurely by the user!");
|
||||||
m_systemTray->showMessage("LameXP - Aborted", "Process was aborted by the user.", QSystemTrayIcon::Warning);
|
m_systemTray->showMessage(tr("LameXP - Aborted"), tr("Process was aborted by the user."), QSystemTrayIcon::Warning);
|
||||||
m_systemTray->setIcon(QIcon(":/icons/cd_delete.png"));
|
m_systemTray->setIcon(QIcon(":/icons/cd_delete.png"));
|
||||||
QApplication::processEvents();
|
QApplication::processEvents();
|
||||||
if(m_settings->soundsEnabled()) PlaySound(MAKEINTRESOURCE(IDR_WAVE_ABORTED), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
if(m_settings->soundsEnabled()) PlaySound(MAKEINTRESOURCE(IDR_WAVE_ABORTED), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
||||||
@ -334,8 +334,8 @@ void ProcessingDialog::doneEncoding(void)
|
|||||||
CHANGE_BACKGROUND_COLOR(frame_header, QColor("#FFBABA"));
|
CHANGE_BACKGROUND_COLOR(frame_header, QColor("#FFBABA"));
|
||||||
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarErrorState);
|
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarErrorState);
|
||||||
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/exclamation.png"));
|
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/exclamation.png"));
|
||||||
SET_PROGRESS_TEXT(QString("Error: %1 of %2 files failed. Double-click failed items for detailed information!").arg(QString::number(m_failedJobs.count()), QString::number(m_failedJobs.count() + m_succeededJobs.count())));
|
SET_PROGRESS_TEXT(tr("Error: %1 of %2 files failed. Double-click failed items for detailed information!").arg(QString::number(m_failedJobs.count()), QString::number(m_failedJobs.count() + m_succeededJobs.count())));
|
||||||
m_systemTray->showMessage("LameXP - Error", "At least one file has failed!", QSystemTrayIcon::Critical);
|
m_systemTray->showMessage(tr("LameXP - Error"), tr("At least one file has failed!"), QSystemTrayIcon::Critical);
|
||||||
m_systemTray->setIcon(QIcon(":/icons/cd_delete.png"));
|
m_systemTray->setIcon(QIcon(":/icons/cd_delete.png"));
|
||||||
QApplication::processEvents();
|
QApplication::processEvents();
|
||||||
if(m_settings->soundsEnabled()) PlaySound(MAKEINTRESOURCE(IDR_WAVE_ERROR), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
if(m_settings->soundsEnabled()) PlaySound(MAKEINTRESOURCE(IDR_WAVE_ERROR), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
||||||
@ -345,8 +345,8 @@ void ProcessingDialog::doneEncoding(void)
|
|||||||
CHANGE_BACKGROUND_COLOR(frame_header, QColor("#E0FFE2"));
|
CHANGE_BACKGROUND_COLOR(frame_header, QColor("#E0FFE2"));
|
||||||
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarNormalState);
|
WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarNormalState);
|
||||||
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/accept.png"));
|
WinSevenTaskbar::setOverlayIcon(this, &QIcon(":/icons/accept.png"));
|
||||||
SET_PROGRESS_TEXT("Alle files completed successfully.");
|
SET_PROGRESS_TEXT(tr("Alle files completed successfully."));
|
||||||
m_systemTray->showMessage("LameXP - Done", "All files completed successfully.", QSystemTrayIcon::Information);
|
m_systemTray->showMessage(tr("LameXP - Done"), tr("All files completed successfully."), QSystemTrayIcon::Information);
|
||||||
m_systemTray->setIcon(QIcon(":/icons/cd_add.png"));
|
m_systemTray->setIcon(QIcon(":/icons/cd_add.png"));
|
||||||
QApplication::processEvents();
|
QApplication::processEvents();
|
||||||
if(m_settings->soundsEnabled()) PlaySound(MAKEINTRESOURCE(IDR_WAVE_SUCCESS), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
if(m_settings->soundsEnabled()) PlaySound(MAKEINTRESOURCE(IDR_WAVE_SUCCESS), GetModuleHandle(NULL), SND_RESOURCE | SND_SYNC);
|
||||||
@ -535,7 +535,7 @@ void ProcessingDialog::writePlayList(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
QMessageBox::warning(this, "Playlist creation failed", QString("The playlist file could not be created:<br><nobr>%1</nobr>").arg(playListFile));
|
QMessageBox::warning(this, tr("Playlist creation failed"), QString("%1<br><nobr>%2</nobr>").arg(tr("The playlist file could not be created:"), playListFile));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,6 +123,7 @@ static QMap<QString, unsigned int> g_lamexp_tool_versions;
|
|||||||
//Languages
|
//Languages
|
||||||
static QMap<QString, QString> g_lamexp_translation_files;
|
static QMap<QString, QString> g_lamexp_translation_files;
|
||||||
static QMap<QString, QString> g_lamexp_translation_names;
|
static QMap<QString, QString> g_lamexp_translation_names;
|
||||||
|
static QMap<QString, WORD> g_lamexp_translation_sysid;
|
||||||
static QTranslator *g_lamexp_currentTranslator = NULL;
|
static QTranslator *g_lamexp_currentTranslator = NULL;
|
||||||
|
|
||||||
//Shared memory
|
//Shared memory
|
||||||
@ -465,6 +466,7 @@ static void lamexp_init_translations(void)
|
|||||||
while(!qmFiles.isEmpty())
|
while(!qmFiles.isEmpty())
|
||||||
{
|
{
|
||||||
QString langId, langName;
|
QString langId, langName;
|
||||||
|
WORD systemId = 0;
|
||||||
QString qmFile = qmFiles.takeFirst();
|
QString qmFile = qmFiles.takeFirst();
|
||||||
|
|
||||||
QRegExp langIdExp("LameXP_(\\w\\w)\\.qm", Qt::CaseInsensitive);
|
QRegExp langIdExp("LameXP_(\\w\\w)\\.qm", Qt::CaseInsensitive);
|
||||||
@ -473,16 +475,22 @@ static void lamexp_init_translations(void)
|
|||||||
langId = langIdExp.cap(1).toLower();
|
langId = langIdExp.cap(1).toLower();
|
||||||
}
|
}
|
||||||
|
|
||||||
QResource langNameRes = (QString(":/localization/%1.txt").arg(qmFile));
|
QResource langRes = (QString(":/localization/%1.txt").arg(qmFile));
|
||||||
if(langNameRes.isValid() && langNameRes.size() > 0)
|
if(langRes.isValid() && langRes.size() > 0)
|
||||||
{
|
{
|
||||||
langName = QString::fromUtf8(reinterpret_cast<const char*>(langNameRes.data()), langNameRes.size());
|
QStringList langInfo = QString::fromUtf8(reinterpret_cast<const char*>(langRes.data()), langRes.size()).simplified().split(",", QString::SkipEmptyParts);
|
||||||
|
if(langInfo.count() == 2)
|
||||||
|
{
|
||||||
|
systemId = langInfo.at(0).toUInt();
|
||||||
|
langName = langInfo.at(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!langId.isEmpty() && !langName.isEmpty())
|
if(!langId.isEmpty() && systemId > 0 && !langName.isEmpty())
|
||||||
{
|
{
|
||||||
g_lamexp_translation_files.insert(langId, qmFile);
|
g_lamexp_translation_files.insert(langId, qmFile);
|
||||||
g_lamexp_translation_names.insert(langId, langName);
|
g_lamexp_translation_names.insert(langId, langName);
|
||||||
|
g_lamexp_translation_sysid.insert(langId, systemId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -907,6 +915,14 @@ QString lamexp_translation_name(const QString &langId)
|
|||||||
return g_lamexp_translation_names.value(langId.toLower(), QString());
|
return g_lamexp_translation_names.value(langId.toLower(), QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get translation system id
|
||||||
|
*/
|
||||||
|
WORD lamexp_translation_sysid(const QString &langId)
|
||||||
|
{
|
||||||
|
return g_lamexp_translation_sysid.value(langId.toLower(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Install a new translator
|
* Install a new translator
|
||||||
*/
|
*/
|
||||||
|
@ -95,8 +95,9 @@ lamexp_cpu_t lamexp_detect_cpu_features(void);
|
|||||||
//Translation support
|
//Translation support
|
||||||
QStringList lamexp_query_translations(void);
|
QStringList lamexp_query_translations(void);
|
||||||
QString lamexp_translation_name(const QString &language);
|
QString lamexp_translation_name(const QString &language);
|
||||||
|
WORD lamexp_translation_sysid(const QString &langId);
|
||||||
bool lamexp_install_translator(const QString &language);
|
bool lamexp_install_translator(const QString &language);
|
||||||
static const char* LAMEXP_DEFAULT_LANGID = "gb";
|
static const char* LAMEXP_DEFAULT_LANGID = "en";
|
||||||
|
|
||||||
//Auxiliary functions
|
//Auxiliary functions
|
||||||
bool lamexp_clean_folder(const QString folderPath);
|
bool lamexp_clean_folder(const QString folderPath);
|
||||||
|
@ -100,10 +100,10 @@ QVariant ProgressModel::headerData(int section, Qt::Orientation orientation, int
|
|||||||
switch(section)
|
switch(section)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return "Job";
|
return tr("Job");
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
return "Status";
|
return tr("Status");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
@ -70,6 +70,8 @@ const int SettingsModel::mp3Bitrates[15] = {32, 40, 48, 56, 64, 80, 96, 112, 128
|
|||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
SettingsModel::SettingsModel(void)
|
SettingsModel::SettingsModel(void)
|
||||||
|
:
|
||||||
|
m_defaultLanguage(NULL)
|
||||||
{
|
{
|
||||||
QString appPath = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
|
QString appPath = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
|
||||||
m_settings = new QSettings(appPath.append("/config.ini"), QSettings::IniFormat);
|
m_settings = new QSettings(appPath.append("/config.ini"), QSettings::IniFormat);
|
||||||
@ -85,6 +87,7 @@ SettingsModel::SettingsModel(void)
|
|||||||
SettingsModel::~SettingsModel(void)
|
SettingsModel::~SettingsModel(void)
|
||||||
{
|
{
|
||||||
LAMEXP_DELETE(m_settings);
|
LAMEXP_DELETE(m_settings);
|
||||||
|
LAMEXP_DELETE(m_defaultLanguage);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
@ -120,10 +123,46 @@ void SettingsModel::validate(void)
|
|||||||
if(!lamexp_query_translations().contains(this->currentLanguage(), Qt::CaseInsensitive))
|
if(!lamexp_query_translations().contains(this->currentLanguage(), Qt::CaseInsensitive))
|
||||||
{
|
{
|
||||||
qWarning("Current language is unknown, reverting to default language!");
|
qWarning("Current language is unknown, reverting to default language!");
|
||||||
this->currentLanguage(LAMEXP_DEFAULT_LANGID);
|
this->currentLanguage(defaultLanguage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
// Private Functions
|
||||||
|
////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
QString SettingsModel::defaultLanguage(void)
|
||||||
|
{
|
||||||
|
if(m_defaultLanguage)
|
||||||
|
{
|
||||||
|
return *m_defaultLanguage;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check if we can use the default translation
|
||||||
|
WORD systemLangId = PRIMARYLANGID(GetUserDefaultLangID());
|
||||||
|
if(systemLangId == LANG_ENGLISH)
|
||||||
|
{
|
||||||
|
m_defaultLanguage = new QString(LAMEXP_DEFAULT_LANGID);
|
||||||
|
return LAMEXP_DEFAULT_LANGID;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Try to find a suitable translation for the user's system language
|
||||||
|
QStringList languages = lamexp_query_translations();
|
||||||
|
while(!languages.isEmpty())
|
||||||
|
{
|
||||||
|
QString currentLangId = languages.takeFirst();
|
||||||
|
if(lamexp_translation_sysid(currentLangId) == systemLangId)
|
||||||
|
{
|
||||||
|
m_defaultLanguage = new QString(currentLangId);
|
||||||
|
return currentLangId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Fall back to the default translation
|
||||||
|
m_defaultLanguage = new QString(LAMEXP_DEFAULT_LANGID);
|
||||||
|
return LAMEXP_DEFAULT_LANGID;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
// Getter and Setter
|
// Getter and Setter
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
@ -144,4 +183,4 @@ MAKE_OPTION3(soundsEnabled, true)
|
|||||||
MAKE_OPTION3(neroAacNotificationsEnabled, true)
|
MAKE_OPTION3(neroAacNotificationsEnabled, true)
|
||||||
MAKE_OPTION3(wmaDecoderNotificationsEnabled, true)
|
MAKE_OPTION3(wmaDecoderNotificationsEnabled, true)
|
||||||
MAKE_OPTION3(dropBoxWidgetEnabled, true)
|
MAKE_OPTION3(dropBoxWidgetEnabled, true)
|
||||||
MAKE_OPTION2(currentLanguage, LAMEXP_DEFAULT_LANGID);
|
MAKE_OPTION2(currentLanguage, defaultLanguage());
|
||||||
|
@ -85,6 +85,8 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QSettings *m_settings;
|
QSettings *m_settings;
|
||||||
|
QString *m_defaultLanguage;
|
||||||
|
QString defaultLanguage(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef MAKE_OPTION_DEC1
|
#undef MAKE_OPTION_DEC1
|
||||||
|
@ -75,9 +75,9 @@ QStringList DecoderRegistry::getSupportedTypes(void)
|
|||||||
{
|
{
|
||||||
extensions.removeDuplicates();
|
extensions.removeDuplicates();
|
||||||
extensions.sort();
|
extensions.sort();
|
||||||
types.prepend(QString("All supported types (%1)").arg(extensions.join(" ")));
|
types.prepend(QString("%1 (%2)").arg(tr("All supported types"), extensions.join(" ")));
|
||||||
}
|
}
|
||||||
|
|
||||||
types << "All files (*.*)";
|
types << QString("%1 (*.*)").arg(tr("All files"));
|
||||||
return types;
|
return types;
|
||||||
}
|
}
|
||||||
|
@ -21,12 +21,16 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
class QString;
|
class QString;
|
||||||
class QStringList;
|
class QStringList;
|
||||||
class AbstractDecoder;
|
class AbstractDecoder;
|
||||||
|
|
||||||
class DecoderRegistry
|
class DecoderRegistry : public QObject
|
||||||
{
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static AbstractDecoder *lookup(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
|
static AbstractDecoder *lookup(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
|
||||||
static QStringList DecoderRegistry::getSupportedTypes(void);
|
static QStringList DecoderRegistry::getSupportedTypes(void);
|
||||||
|
@ -98,13 +98,13 @@ void ProcessThread::processFile()
|
|||||||
bool bSuccess = true;
|
bool bSuccess = true;
|
||||||
|
|
||||||
qDebug("Process thread %s has started.", m_jobId.toString().toLatin1().constData());
|
qDebug("Process thread %s has started.", m_jobId.toString().toLatin1().constData());
|
||||||
emit processStateInitialized(m_jobId, QFileInfo(m_audioFile.filePath()).fileName(), "Starting...", ProgressModel::JobRunning);
|
emit processStateInitialized(m_jobId, QFileInfo(m_audioFile.filePath()).fileName(), tr("Starting..."), ProgressModel::JobRunning);
|
||||||
|
|
||||||
//Generate output file name
|
//Generate output file name
|
||||||
QString outFileName = generateOutFileName();
|
QString outFileName = generateOutFileName();
|
||||||
if(outFileName.isEmpty())
|
if(outFileName.isEmpty())
|
||||||
{
|
{
|
||||||
emit processStateChanged(m_jobId, "Not found!", ProgressModel::JobFailed);
|
emit processStateChanged(m_jobId, tr("Not found!"), ProgressModel::JobFailed);
|
||||||
emit processStateFinished(m_jobId, outFileName, false);
|
emit processStateFinished(m_jobId, outFileName, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -142,8 +142,8 @@ void ProcessThread::processFile()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
handleMessage(QString("The format of this file is NOT supported:\n%1\n\nContainer Format:\t%2\nAudio Format:\t%3").arg(m_audioFile.filePath(), m_audioFile.formatContainerInfo(), m_audioFile.formatAudioCompressInfo()));
|
handleMessage(QString("%1\n%2\n\n%3\t%4\n%5\t%6").arg(tr("The format of this file is NOT supported:"), m_audioFile.filePath(), tr("Container Format:"), m_audioFile.formatContainerInfo(), tr("Audio Format:"), m_audioFile.formatAudioCompressInfo()));
|
||||||
emit processStateChanged(m_jobId, "Unsupported!", ProgressModel::JobFailed);
|
emit processStateChanged(m_jobId, tr("Unsupported!"), ProgressModel::JobFailed);
|
||||||
emit processStateFinished(m_jobId, outFileName, false);
|
emit processStateFinished(m_jobId, outFileName, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -188,7 +188,7 @@ void ProcessThread::processFile()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Report result
|
//Report result
|
||||||
emit processStateChanged(m_jobId, (bSuccess ? "Done." : (m_aborted ? "Aborted!" : "Failed!")), (bSuccess ? ProgressModel::JobComplete : ProgressModel::JobFailed));
|
emit processStateChanged(m_jobId, (bSuccess ? tr("Done.") : (m_aborted ? tr("Aborted!") : tr("Failed!"))), (bSuccess ? ProgressModel::JobComplete : ProgressModel::JobFailed));
|
||||||
emit processStateFinished(m_jobId, outFileName, bSuccess);
|
emit processStateFinished(m_jobId, outFileName, bSuccess);
|
||||||
|
|
||||||
qDebug("Process thread is done.");
|
qDebug("Process thread is done.");
|
||||||
@ -203,13 +203,13 @@ void ProcessThread::handleUpdate(int progress)
|
|||||||
switch(m_currentStep)
|
switch(m_currentStep)
|
||||||
{
|
{
|
||||||
case EncodingStep:
|
case EncodingStep:
|
||||||
emit processStateChanged(m_jobId, QString("Encoding (%1%)").arg(QString::number(progress)), ProgressModel::JobRunning);
|
emit processStateChanged(m_jobId, QString("%1 (%2%)").arg(tr("Encoding"), QString::number(progress)), ProgressModel::JobRunning);
|
||||||
break;
|
break;
|
||||||
case FilteringStep:
|
case FilteringStep:
|
||||||
emit processStateChanged(m_jobId, QString("Filtering (%1%)").arg(QString::number(progress)), ProgressModel::JobRunning);
|
emit processStateChanged(m_jobId, QString("%1 (%2%)").arg(tr("Filtering"), QString::number(progress)), ProgressModel::JobRunning);
|
||||||
break;
|
break;
|
||||||
case DecodingStep:
|
case DecodingStep:
|
||||||
emit processStateChanged(m_jobId, QString("Decoding (%1%)").arg(QString::number(progress)), ProgressModel::JobRunning);
|
emit processStateChanged(m_jobId, QString("%1 (%2%)").arg(tr("Decoding"), QString::number(progress)), ProgressModel::JobRunning);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -232,14 +232,14 @@ QString ProcessThread::generateOutFileName(void)
|
|||||||
QFileInfo sourceFile(m_audioFile.filePath());
|
QFileInfo sourceFile(m_audioFile.filePath());
|
||||||
if(!sourceFile.exists() || !sourceFile.isFile())
|
if(!sourceFile.exists() || !sourceFile.isFile())
|
||||||
{
|
{
|
||||||
handleMessage(QString("The source audio file could not be found:\n%1").arg(sourceFile.absoluteFilePath()));
|
handleMessage(QString("%1\n%2").arg(tr("The source audio file could not be found:"), sourceFile.absoluteFilePath()));
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
QFile readTest(sourceFile.canonicalFilePath());
|
QFile readTest(sourceFile.canonicalFilePath());
|
||||||
if(!readTest.open(QIODevice::ReadOnly))
|
if(!readTest.open(QIODevice::ReadOnly))
|
||||||
{
|
{
|
||||||
handleMessage(QString("The source audio file could not be opened for reading:\n%1").arg(readTest.fileName()));
|
handleMessage(QString("%1\n%2").arg(tr("The source audio file could not be opened for reading:"), readTest.fileName()));
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -265,7 +265,7 @@ QString ProcessThread::generateOutFileName(void)
|
|||||||
targetDir.mkpath(".");
|
targetDir.mkpath(".");
|
||||||
if(!targetDir.exists())
|
if(!targetDir.exists())
|
||||||
{
|
{
|
||||||
handleMessage(QString("The target output directory doesn't exist and could NOT be created:\n%1").arg(targetDir.absolutePath()));
|
handleMessage(QString("%1\n%2").arg(tr("The target output directory doesn't exist and could NOT be created:"), targetDir.absolutePath()));
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -273,7 +273,7 @@ QString ProcessThread::generateOutFileName(void)
|
|||||||
QFile writeTest(QString("%1/.%2").arg(targetDir.canonicalPath(), lamexp_rand_str()));
|
QFile writeTest(QString("%1/.%2").arg(targetDir.canonicalPath(), lamexp_rand_str()));
|
||||||
if(!writeTest.open(QIODevice::ReadWrite))
|
if(!writeTest.open(QIODevice::ReadWrite))
|
||||||
{
|
{
|
||||||
handleMessage(QString("The target output directory is NOT writable:\n%1").arg(targetDir.absolutePath()));
|
handleMessage(QString("%1\n%2").arg(tr("The target output directory is NOT writable:"), targetDir.absolutePath()));
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user