gui language

This commit is contained in:
georgemoralis 2025-06-19 18:40:27 +03:00
parent 1a31c9e4dd
commit 5a331f755f
8 changed files with 11 additions and 34 deletions

View File

@ -83,7 +83,6 @@ std::filesystem::path settings_addon_install_dir = {};
std::filesystem::path save_data_path = {}; std::filesystem::path save_data_path = {};
u32 mw_themes = 0; u32 mw_themes = 0;
std::vector<std::string> m_elf_viewer; std::vector<std::string> m_elf_viewer;
std::string emulator_language = "en_US";
static bool isFullscreen = false; static bool isFullscreen = false;
static std::string fullscreenMode = "Windowed"; static std::string fullscreenMode = "Windowed";
static bool isHDRAllowed = false; static bool isHDRAllowed = false;
@ -492,10 +491,6 @@ void setElfViewer(const std::vector<std::string>& elfList) {
m_elf_viewer = elfList; m_elf_viewer = elfList;
} }
void setEmulatorLanguage(std::string language) {
emulator_language = language;
}
void setGameInstallDirs(const std::vector<std::filesystem::path>& dirs_config) { void setGameInstallDirs(const std::vector<std::filesystem::path>& dirs_config) {
settings_install_dirs.clear(); settings_install_dirs.clear();
for (const auto& dir : dirs_config) { for (const auto& dir : dirs_config) {
@ -545,10 +540,6 @@ std::vector<std::string> getElfViewer() {
return m_elf_viewer; return m_elf_viewer;
} }
std::string getEmulatorLanguage() {
return emulator_language;
}
u32 GetLanguage() { u32 GetLanguage() {
return m_language; return m_language;
} }
@ -684,7 +675,6 @@ void load(const std::filesystem::path& path) {
settings_addon_install_dir = toml::find_fs_path_or(gui, "addonInstallDir", {}); settings_addon_install_dir = toml::find_fs_path_or(gui, "addonInstallDir", {});
m_elf_viewer = toml::find_or<std::vector<std::string>>(gui, "elfDirs", {}); m_elf_viewer = toml::find_or<std::vector<std::string>>(gui, "elfDirs", {});
emulator_language = toml::find_or<std::string>(gui, "emulatorLanguage", "en_US");
} }
if (data.contains("Settings")) { if (data.contains("Settings")) {
@ -697,19 +687,6 @@ void load(const std::filesystem::path& path) {
const toml::value& keys = data.at("Keys"); const toml::value& keys = data.at("Keys");
trophyKey = toml::find_or<std::string>(keys, "TrophyKey", ""); trophyKey = toml::find_or<std::string>(keys, "TrophyKey", "");
} }
// Check if the loaded language is in the allowed list
const std::vector<std::string> allowed_languages = {
"ar_SA", "da_DK", "de_DE", "el_GR", "en_US", "es_ES", "fa_IR", "fi_FI",
"fr_FR", "hu_HU", "id_ID", "it_IT", "ja_JP", "ko_KR", "lt_LT", "nb_NO",
"nl_NL", "pl_PL", "pt_BR", "pt_PT", "ro_RO", "ru_RU", "sq_AL", "sv_SE",
"tr_TR", "uk_UA", "vi_VN", "zh_CN", "zh_TW", "ca_ES", "sr_CS"};
if (std::find(allowed_languages.begin(), allowed_languages.end(), emulator_language) ==
allowed_languages.end()) {
emulator_language = "en_US"; // Default to en_US if not in the list
save(path);
}
} }
void sortTomlSections(toml::ordered_value& data) { void sortTomlSections(toml::ordered_value& data) {
@ -844,7 +821,6 @@ void save(const std::filesystem::path& path) {
data["GUI"]["addonInstallDir"] = data["GUI"]["addonInstallDir"] =
std::string{fmt::UTF(settings_addon_install_dir.u8string()).data}; std::string{fmt::UTF(settings_addon_install_dir.u8string()).data};
data["GUI"]["emulatorLanguage"] = emulator_language;
data["Settings"]["consoleLanguage"] = m_language; data["Settings"]["consoleLanguage"] = m_language;
// Sorting of TOML sections // Sorting of TOML sections
@ -925,7 +901,6 @@ void setDefaultValues() {
vkHostMarkers = false; vkHostMarkers = false;
vkGuestMarkers = false; vkGuestMarkers = false;
rdocEnable = false; rdocEnable = false;
emulator_language = "en_US";
m_language = 1; m_language = 1;
gpuId = -1; gpuId = -1;
compatibilityData = false; compatibilityData = false;

View File

@ -131,15 +131,12 @@ void setGameInstallDirEnabled(const std::filesystem::path& dir, bool enabled);
void setAddonInstallDir(const std::filesystem::path& dir); void setAddonInstallDir(const std::filesystem::path& dir);
void setMainWindowTheme(u32 theme); void setMainWindowTheme(u32 theme);
void setElfViewer(const std::vector<std::string>& elfList); void setElfViewer(const std::vector<std::string>& elfList);
void setRecentFiles(const std::vector<std::string>& recentFiles);
void setEmulatorLanguage(std::string language);
const std::vector<std::filesystem::path> getGameInstallDirs(); const std::vector<std::filesystem::path> getGameInstallDirs();
const std::vector<bool> getGameInstallDirsEnabled(); const std::vector<bool> getGameInstallDirsEnabled();
std::filesystem::path getAddonInstallDir(); std::filesystem::path getAddonInstallDir();
u32 getMainWindowTheme(); u32 getMainWindowTheme();
std::vector<std::string> getElfViewer(); std::vector<std::string> getElfViewer();
std::string getEmulatorLanguage();
void setDefaultValues(); void setDefaultValues();

View File

@ -71,7 +71,7 @@ fs::path SaveInstance::GetParamSFOPath(const fs::path& dir_path) {
void SaveInstance::SetupDefaultParamSFO(PSF& param_sfo, std::string dir_name, void SaveInstance::SetupDefaultParamSFO(PSF& param_sfo, std::string dir_name,
std::string game_serial) { std::string game_serial) {
std::string locale = Config::getEmulatorLanguage(); std::string locale = Config::GetLanguage();
if (!default_title.contains(locale)) { if (!default_title.contains(locale)) {
locale = "en_US"; locale = "en_US";
} }

View File

@ -19,6 +19,7 @@ const gui_value gen_showChangeLog = gui_value(general_settings, "showChangeLog",
const gui_value gen_updateChannel = gui_value(general_settings, "updateChannel", "Release"); const gui_value gen_updateChannel = gui_value(general_settings, "updateChannel", "Release");
const gui_value gen_recentFiles = const gui_value gen_recentFiles =
gui_value(main_window, "recentFiles", QVariant::fromValue(QList<QString>())); gui_value(main_window, "recentFiles", QVariant::fromValue(QList<QString>()));
const gui_value gen_guiLanguage = gui_value(general_settings, "guiLanguage", "en_US");
// main window settings // main window settings
const gui_value mw_geometry = gui_value(main_window, "geometry", QByteArray()); const gui_value mw_geometry = gui_value(main_window, "geometry", QByteArray());

View File

@ -771,7 +771,7 @@ void MainWindow::CreateConnects() {
QString gameName = QString::fromStdString(firstGame.name); QString gameName = QString::fromStdString(firstGame.name);
TrophyViewer* trophyViewer = TrophyViewer* trophyViewer =
new TrophyViewer(trophyPath, gameTrpPath, gameName, allTrophyGames); new TrophyViewer(m_gui_settings, trophyPath, gameTrpPath, gameName, allTrophyGames);
trophyViewer->show(); trophyViewer->show();
}); });
@ -1164,7 +1164,7 @@ void MainWindow::CreateRecentGameActions() {
} }
void MainWindow::LoadTranslation() { void MainWindow::LoadTranslation() {
auto language = QString::fromStdString(Config::getEmulatorLanguage()); auto language = m_gui_settings->GetValue(gui::gen_guiLanguage).toString();
const QString base_dir = QStringLiteral(":/translations"); const QString base_dir = QStringLiteral(":/translations");
QString base_path = QStringLiteral("%1/%2.qm").arg(base_dir).arg(language); QString base_path = QStringLiteral("%1/%2.qm").arg(base_dir).arg(language);
@ -1190,7 +1190,7 @@ void MainWindow::LoadTranslation() {
} }
void MainWindow::OnLanguageChanged(const std::string& locale) { void MainWindow::OnLanguageChanged(const std::string& locale) {
Config::setEmulatorLanguage(locale); m_gui_settings->SetValue(gui::gen_guiLanguage, locale);
LoadTranslation(); LoadTranslation();
} }

View File

@ -886,4 +886,5 @@ void SettingsDialog::setDefaultValues() {
} else { } else {
m_gui_settings->SetValue(gui::gen_updateChannel, "Nightly"); m_gui_settings->SetValue(gui::gen_updateChannel, "Nightly");
} }
m_gui_settings->SetValue(gui::gen_guiLanguage, "en_US");
} }

View File

@ -111,7 +111,7 @@ TrophyViewer::TrophyViewer(QString trophyPath, QString gameTrpPath, QString game
this->setAttribute(Qt::WA_DeleteOnClose); this->setAttribute(Qt::WA_DeleteOnClose);
tabWidget = new QTabWidget(this); tabWidget = new QTabWidget(this);
auto lan = Config::getEmulatorLanguage(); auto lan = m_gui_settings->GetValue(gui::gen_guiLanguage).toString();
if (lan == "en_US" || lan == "zh_CN" || lan == "zh_TW" || lan == "ja_JP" || lan == "ko_KR" || if (lan == "en_US" || lan == "zh_CN" || lan == "zh_TW" || lan == "ja_JP" || lan == "ko_KR" ||
lan == "lt_LT" || lan == "nb_NO" || lan == "nl_NL") { lan == "lt_LT" || lan == "nb_NO" || lan == "nl_NL") {
useEuropeanDateFormat = false; useEuropeanDateFormat = false;

View File

@ -23,6 +23,7 @@
#include "common/types.h" #include "common/types.h"
#include "core/file_format/trp.h" #include "core/file_format/trp.h"
#include "gui_settings.h"
struct TrophyGameInfo { struct TrophyGameInfo {
QString name; QString name;
@ -34,7 +35,8 @@ class TrophyViewer : public QMainWindow {
Q_OBJECT Q_OBJECT
public: public:
explicit TrophyViewer( explicit TrophyViewer(
QString trophyPath, QString gameTrpPath, QString gameName = "", std::shared_ptr<gui_settings> gui_settings, QString trophyPath, QString gameTrpPath,
QString gameName = "",
const QVector<TrophyGameInfo>& allTrophyGames = QVector<TrophyGameInfo>()); const QVector<TrophyGameInfo>& allTrophyGames = QVector<TrophyGameInfo>());
void updateTrophyInfo(); void updateTrophyInfo();
@ -77,4 +79,5 @@ private:
} }
return "Unknown"; return "Unknown";
} }
std::shared_ptr<gui_settings> m_gui_settings;
}; };