Make TranslateString and TranslateStdString support numbers

This commit is contained in:
Silent
2021-03-12 20:03:25 +01:00
parent 787ab5dbd0
commit 948a6b530b
4 changed files with 59 additions and 26 deletions

View File

@ -127,8 +127,6 @@ void QtHostInterface::shutdownOnThread()
void QtHostInterface::installTranslator()
{
m_translator = std::make_unique<QTranslator>();
std::string language = GetStringSettingValue("Main", "Language", "");
if (language.empty())
language = "en";
@ -143,7 +141,8 @@ void QtHostInterface::installTranslator()
return;
}
if (!m_translator->load(path))
auto translator = std::make_unique<QTranslator>(qApp);
if (!translator->load(path))
{
QMessageBox::warning(
nullptr, QStringLiteral("Translation Error"),
@ -152,7 +151,7 @@ void QtHostInterface::installTranslator()
}
Log_InfoPrintf("Loaded translation file for language '%s'", language.c_str());
qApp->installTranslator(m_translator.get());
qApp->installTranslator(translator.release());
}
void QtHostInterface::ReportError(const char* message)
@ -1602,22 +1601,17 @@ void QtHostInterface::setImGuiKeyMap()
io.KeyMap[ImGuiKey_Z] = Qt::Key_Z & IMGUI_KEY_MASK;
}
TinyString QtHostInterface::TranslateString(const char* context, const char* str) const
TinyString QtHostInterface::TranslateString(const char* context, const char* str,
const char* disambiguation /*= nullptr*/, int n /*= -1*/) const
{
const QString translated(m_translator->translate(context, str));
if (translated.isEmpty())
return TinyString(str);
return TinyString(translated.toUtf8().constData());
const QByteArray bytes(qApp->translate(context, str, disambiguation, n).toUtf8());
return TinyString(bytes.constData(), bytes.size());
}
std::string QtHostInterface::TranslateStdString(const char* context, const char* str) const
std::string QtHostInterface::TranslateStdString(const char* context, const char* str,
const char* disambiguation /*= nullptr*/, int n /*= -1*/) const
{
const QString translated(m_translator->translate(context, str));
if (translated.isEmpty())
return std::string(str);
return translated.toStdString();
return qApp->translate(context, str, disambiguation, n).toStdString();
}
QtHostInterface::Thread::Thread(QtHostInterface* parent) : QThread(parent), m_parent(parent) {}

View File

@ -64,8 +64,10 @@ public:
void SetStringListSettingValue(const char* section, const char* key, const std::vector<std::string>& values);
void RemoveSettingValue(const char* section, const char* key);
TinyString TranslateString(const char* context, const char* str) const override;
std::string TranslateStdString(const char* context, const char* str) const override;
TinyString TranslateString(const char* context, const char* str, const char* disambiguation = nullptr,
int n = -1) const override;
std::string TranslateStdString(const char* context, const char* str, const char* disambiguation = nullptr,
int n = -1) const override;
bool RequestRenderWindowSize(s32 new_window_width, s32 new_window_height) override;
void* GetTopLevelWindowHandle() const override;
@ -263,8 +265,6 @@ private:
void queueSettingsSave();
void wakeThread();
std::unique_ptr<QTranslator> m_translator;
MainWindow* m_main_window = nullptr;
QThread* m_original_thread = nullptr;
Thread* m_worker_thread = nullptr;