Add runtime language switching
This commit is contained in:
@@ -16,11 +16,43 @@ public:
|
||||
explicit ProgSettings(QWidget *parent = nullptr);
|
||||
~ProgSettings();
|
||||
static QString getIconSetPath();
|
||||
static void loadTranslators(QObject* parent = nullptr);
|
||||
static void reloadStrings();
|
||||
class CustomTranslator : public QTranslator
|
||||
{
|
||||
public:
|
||||
CustomTranslator(QObject* parent = nullptr) : QTranslator(parent) {};
|
||||
protected:
|
||||
QString translate(const char *context, const char *sourceText,
|
||||
const char *disambiguation = nullptr, int n = -1) const override
|
||||
{
|
||||
if (strcmp(sourceText, "&Fullscreen") == 0) sourceText = "&Fullscreen\tCtrl+Alt+PageUP";
|
||||
if (strcmp(sourceText, "&Ctrl+Alt+Del") == 0) sourceText = "&Ctrl+Alt+Del\tCtrl+F12";
|
||||
if (strcmp(sourceText, "Take s&creenshot") == 0) sourceText = "Take s&creenshot\tCtrl+F11";
|
||||
if (strcmp(sourceText, "&Qt (Software)") == 0)
|
||||
{
|
||||
QString finalstr = QTranslator::translate("", "&SDL (Software)", disambiguation, n);
|
||||
finalstr.replace("SDL", "Qt");
|
||||
finalstr.replace("(&S)", "(&Q)");
|
||||
return finalstr;
|
||||
}
|
||||
QString finalstr = QTranslator::translate("", sourceText, disambiguation, n);
|
||||
#ifdef Q_OS_MACOS
|
||||
if (finalstr.contains('\t')) finalstr.truncate(finalstr.indexOf('\t'));
|
||||
#endif
|
||||
return finalstr;
|
||||
}
|
||||
};
|
||||
static CustomTranslator* translator;
|
||||
static QTranslator* qtTranslator;
|
||||
static QMap<uint32_t, QPair<QString, QString>> lcid_langcode;
|
||||
static QMap<int, std::wstring> translatedstrings;
|
||||
|
||||
protected slots:
|
||||
void accept() override;
|
||||
private slots:
|
||||
void on_pushButton_released();
|
||||
void on_pushButtonLanguage_released();
|
||||
|
||||
private:
|
||||
Ui::ProgSettings *ui;
|
||||
|
||||
Reference in New Issue
Block a user