Added localization support to parts of the application

This commit is contained in:
Leon Styhre 2024-07-13 19:14:34 +02:00
parent f6db47510d
commit be95b494dc
29 changed files with 308 additions and 213 deletions

View file

@ -275,6 +275,7 @@ namespace FileSorts
return system1.compare(system2) > 0;
}
#if defined(GETTEXT_DUMMY_ENTRIES)
void gettextMessageCatalogEntries()
{
_("name, ascending");
@ -298,5 +299,6 @@ namespace FileSorts
_("system, ascending");
_("system, descending");
}
#endif
} // namespace FileSorts

View file

@ -37,8 +37,10 @@ namespace FileSorts
bool compareSystem(const FileData* file1, const FileData* file2);
bool compareSystemDescending(const FileData* file1, const FileData* file2);
#if defined(GETTEXT_DUMMY_ENTRIES)
// This is just to get gettext msgid entries added to the PO message catalog files.
void gettextMessageCatalogEntries();
#endif
extern const std::vector<FileData::SortType> SortTypes;
} // namespace FileSorts

View file

@ -11,6 +11,7 @@
#include "Log.h"
#include "utils/FileSystemUtil.h"
#include "utils/LocalizationUtil.h"
#include <pugixml.hpp>
@ -21,50 +22,50 @@ namespace
// saving the values in GuiMetaDataEd.
MetaDataDecl gameDecls[] {
// Key Type Default value Statistic Name in GuiMetaDataEd Prompt in GuiMetaDataEd Scrape
{"name", MD_STRING, "", false, "name", "enter name", true},
{"sortname", MD_STRING, "", false, "sortname", "enter sortname", false},
{"collectionsortname", MD_STRING, "", false, "custom collections sortname", "enter collections sortname", false},
{"desc", MD_MULTILINE_STRING, "", false, "description", "enter description", true},
{"rating", MD_RATING, "0", false, "rating", "enter rating", true},
{"releasedate", MD_DATE, "19700101T000000", false, "release date", "enter release date", true},
{"developer", MD_STRING, "unknown", false, "developer", "enter developer", true},
{"publisher", MD_STRING, "unknown", false, "publisher", "enter publisher", true},
{"genre", MD_STRING, "unknown", false, "genre", "enter genre", true},
{"players", MD_STRING, "unknown", false, "players", "enter number of players", true},
{"favorite", MD_BOOL, "false", false, "favorite", "enter favorite off/on", false},
{"completed", MD_BOOL, "false", false, "completed", "enter completed off/on", false},
{"kidgame", MD_BOOL, "false", false, "kidgame", "enter kidgame off/on", false},
{"hidden", MD_BOOL, "false", false, "hidden", "enter hidden off/on", false},
{"broken", MD_BOOL, "false", false, "broken/not working", "enter broken off/on", false},
{"nogamecount", MD_BOOL, "false", false, "exclude from game counter", "enter don't count as game off/on", false},
{"nomultiscrape", MD_BOOL, "false", false, "exclude from multi-scraper", "enter no multi-scrape off/on", false},
{"hidemetadata", MD_BOOL, "false", false, "hide metadata fields", "enter hide metadata off/on", false},
{"playcount", MD_INT, "0", false, "times played", "enter number of times played", false},
{"controller", MD_CONTROLLER, "", false, "controller", "select controller", true},
{"altemulator", MD_ALT_EMULATOR, "", false, "alternative emulator", "select alternative emulator", false},
{"lastplayed", MD_TIME, "0", true, "last played", "enter last played date", false}
{"name", MD_STRING, "", false, "NAME", "ENTER NAME", true},
{"sortname", MD_STRING, "", false, "SORTNAME", "ENTER SORTNAME", false},
{"collectionsortname", MD_STRING, "", false, "CUSTOM COLLECTIONS SORTNAME", "ENTER COLLECTIONS SORTNAME", false},
{"desc", MD_MULTILINE_STRING, "", false, "DESCRIPTION", "ENTER DESCRIPTION", true},
{"rating", MD_RATING, "0", false, "RATING", "ENTER RATING", true},
{"releasedate", MD_DATE, "19700101T000000", false, "RELEASE DATE", "ENTER RELEASE DATE", true},
{"developer", MD_STRING, "unknown", false, "DEVELOPER", "ENTER DEVELOPER", true},
{"publisher", MD_STRING, "unknown", false, "PUBLISHER", "ENTER PUBLISHER", true},
{"genre", MD_STRING, "unknown", false, "GENRE", "ENTER GENRE", true},
{"players", MD_STRING, "unknown", false, "PLAYERS", "ENTER NUMBER OF PLAYERS", true},
{"favorite", MD_BOOL, "false", false, "FAVORITE", "ENTER FAVORITE OFF/ON", false},
{"completed", MD_BOOL, "false", false, "COMPLETED", "ENTER COMPLETED OFF/ON", false},
{"kidgame", MD_BOOL, "false", false, "KIDGAME", "ENTER KIDGAME OFF/ON", false},
{"hidden", MD_BOOL, "false", false, "HIDDEN", "ENTER HIDDEN OFF/ON", false},
{"broken", MD_BOOL, "false", false, "BROKEN/NOT WORKING", "ENTER BROKEN OFF/ON", false},
{"nogamecount", MD_BOOL, "false", false, "EXCLUDE FROM GAME COUNTER", "ENTER DON'T COUNT AS GAME OFF/ON", false},
{"nomultiscrape", MD_BOOL, "false", false, "EXCLUDE FROM MULTI-SCRAPER", "ENTER NO MULTI-SCRAPE OFF/ON", false},
{"hidemetadata", MD_BOOL, "false", false, "HIDE METADATA FIELDS", "ENTER HIDE METADATA OFF/ON", false},
{"playcount", MD_INT, "0", false, "TIMES PLAYED", "ENTER NUMBER OF TIMES PLAYED", false},
{"controller", MD_CONTROLLER, "", false, "CONTROLLER", "SELECT CONTROLLER", true},
{"altemulator", MD_ALT_EMULATOR, "", false, "ALTERNATIVE EMULATOR", "SELECT ALTERNATIVE EMULATOR", false},
{"lastplayed", MD_TIME, "0", true, "LAST PLAYED", "ENTER LAST PLAYED DATE", false}
};
MetaDataDecl folderDecls[] {
// Key Type Default value Statistic Name in GuiMetaDataEd Prompt in GuiMetaDataEd Scrape
{"name", MD_STRING, "", false, "name", "enter name", true},
{"desc", MD_MULTILINE_STRING, "", false, "description", "enter description", true},
{"rating", MD_RATING, "0", false, "rating", "enter rating", true},
{"releasedate", MD_DATE, "19700101T000000", false, "release date", "enter release date", true},
{"developer", MD_STRING, "unknown", false, "developer", "enter developer", true},
{"publisher", MD_STRING, "unknown", false, "publisher", "enter publisher", true},
{"genre", MD_STRING, "unknown", false, "genre", "enter genre", true},
{"players", MD_STRING, "unknown", false, "players", "enter number of players", true},
{"favorite", MD_BOOL, "false", false, "favorite", "enter favorite off/on", false},
{"completed", MD_BOOL, "false", false, "completed", "enter completed off/on", false},
{"kidgame", MD_BOOL, "false", false, "kidgame (only affects badges)", "enter kidgame off/on", false},
{"hidden", MD_BOOL, "false", false, "hidden", "enter hidden off/on", false},
{"broken", MD_BOOL, "false", false, "broken/not working", "enter broken off/on", false},
{"nomultiscrape", MD_BOOL, "false", false, "exclude from multi-scraper", "enter no multi-scrape off/on", false},
{"hidemetadata", MD_BOOL, "false", false, "hide metadata fields", "enter hide metadata off/on", false},
{"controller", MD_CONTROLLER, "", false, "controller", "select controller", true},
{"folderlink", MD_FOLDER_LINK, "", false, "folder link", "select folder link", false},
{"lastplayed", MD_TIME, "0", true, "last played", "enter last played date", false}
{"name", MD_STRING, "", false, "NAME", "ENTER NAME", true},
{"desc", MD_MULTILINE_STRING, "", false, "DESCRIPTION", "ENTER DESCRIPTION", true},
{"rating", MD_RATING, "0", false, "RATING", "ENTER RATING", true},
{"releasedate", MD_DATE, "19700101T000000", false, "RELEASE DATE", "ENTER RELEASE DATE", true},
{"developer", MD_STRING, "unknown", false, "DEVELOPER", "ENTER DEVELOPER", true},
{"publisher", MD_STRING, "unknown", false, "PUBLISHER", "ENTER PUBLISHER", true},
{"genre", MD_STRING, "unknown", false, "GENRE", "ENTER GENRE", true},
{"players", MD_STRING, "unknown", false, "PLAYERS", "ENTER NUMBER OF PLAYERS", true},
{"favorite", MD_BOOL, "false", false, "FAVORITE", "ENTER FAVORITE OFF/ON", false},
{"completed", MD_BOOL, "false", false, "COMPLETED", "ENTER COMPLETED OFF/ON", false},
{"kidgame", MD_BOOL, "false", false, "KIDGAME (ONLY AFFECTS BADGES)", "ENTER KIDGAME OFF/ON", false},
{"hidden", MD_BOOL, "false", false, "HIDDEN", "ENTER HIDDEN OFF/ON", false},
{"broken", MD_BOOL, "false", false, "BROKEN/NOT WORKING", "ENTER BROKEN OFF/ON", false},
{"nomultiscrape", MD_BOOL, "false", false, "EXCLUDE FROM MULTI-SCRAPER", "ENTER NO MULTI-SCRAPE OFF/ON", false},
{"hidemetadata", MD_BOOL, "false", false, "HIDE METADATA FIELDS", "ENTER HIDE METADATA OFF/ON", false},
{"controller", MD_CONTROLLER, "", false, "CONTROLLER", "SELECT CONTROLLER", true},
{"folderlink", MD_FOLDER_LINK, "", false, "FOLDER LINK", "SELECT FOLDER LINK", false},
{"lastplayed", MD_TIME, "0", true, "LAST PLAYED", "ENTER LAST PLAYED DATE", false}
};
// clang-format on
@ -184,3 +185,47 @@ void MetaDataList::resetChangedFlag()
// Reset the change flag.
mWasChanged = false;
}
#if defined(GETTEXT_DUMMY_ENTRIES)
void gettextMessageCatalogEntries()
{
_("NAME");
_("ENTER NAME");
_("SORTNAME");
_("ENTER SORTNAME");
_("CUSTOM COLLECTIONS SORTNAME");
_("ENTER COLLECTIONS SORTNAME");
_("DESCRIPTION");
_("ENTER DESCRIPTION");
_("RATING");
_("RELEASE DATE");
_("ENTER RELEASE DATE");
_("DEVELOPER");
_("ENTER DEVELOPER");
_("PUBLISHER");
_("ENTER PUBLISHER");
_("GENRE");
_("ENTER GENRE");
_("PLAYERS");
_("ENTER NUMBER OF PLAYERS");
_("FAVORITE");
_("COMPLETED");
_("KIDGAME");
_("KIDGAME (ONLY AFFECTS BADGES)");
_("HIDDEN");
_("BROKEN/NOT WORKING");
_("EXCLUDE FROM GAME COUNTER");
_("EXCLUDE FROM MULTI-SCRAPER");
_("HIDE METADATA FIELDS");
_("TIMES PLAYED");
_("ENTER NUMBER OF TIMES PLAYED");
_("CONTROLLER");
_("SELECT CONTROLLER");
_("ALTERNATIVE EMULATOR");
_("SELECT ALTERNATIVE EMULATOR");
_("FOLDER LINK");
_("SELECT FOLDER LINK");
_("LAST PLAYED");
_("ENTER LAST PLAYED DATE");
}
#endif

View file

@ -95,6 +95,11 @@ private:
std::map<std::string, std::string> mMap;
std::string mNoResult = "";
bool mWasChanged;
#if defined(GETTEXT_DUMMY_ENTRIES)
// This is just to get gettext msgid entries added to the PO message catalog files.
void gettextMessageCatalogEntries();
#endif
};
#endif // ES_APP_META_DATA_H

View file

@ -11,14 +11,15 @@
#include "GamelistFileParser.h"
#include "SystemData.h"
#include "utils/LocalizationUtil.h"
#include "views/ViewController.h"
GuiAlternativeEmulators::GuiAlternativeEmulators()
: mMenu {"ALTERNATIVE EMULATORS"}
: mMenu {_("ALTERNATIVE EMULATORS")}
, mHasSystems {false}
{
addChild(&mMenu);
mMenu.addButton("BACK", "back", [this] { delete this; });
mMenu.addButton(_("BACK"), _("back"), [this] { delete this; });
// Horizontal sizes for the system and label entries.
float systemSizeX {mMenu.getSize().x / 3.27f};
@ -256,8 +257,8 @@ bool GuiAlternativeEmulators::input(InputConfig* config, Input input)
std::vector<HelpPrompt> GuiAlternativeEmulators::getHelpPrompts()
{
std::vector<HelpPrompt> prompts {mMenu.getHelpPrompts()};
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("b", _("back")));
if (mHasSystems)
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("a", _("select")));
return prompts;
}

View file

@ -16,6 +16,7 @@
#include "components/OptionListComponent.h"
#include "guis/GuiTextEditKeyboardPopup.h"
#include "guis/GuiTextEditPopup.h"
#include "utils/LocalizationUtil.h"
#include "utils/StringUtil.h"
GuiGamelistFilter::GuiGamelistFilter(SystemData* system,
@ -245,7 +246,7 @@ bool GuiGamelistFilter::input(InputConfig* config, Input input)
std::vector<HelpPrompt> GuiGamelistFilter::getHelpPrompts()
{
std::vector<HelpPrompt> prompts {mMenu.getHelpPrompts()};
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("b", _("back")));
prompts.push_back(HelpPrompt("a", _("select")));
return prompts;
}

View file

@ -600,14 +600,14 @@ std::vector<HelpPrompt> GuiGamelistOptions::getHelpPrompts()
auto prompts = mMenu.getHelpPrompts();
if (mSystem->getRootFolder()->getChildren().size() > 0 || mIsCustomCollectionGroup ||
mIsCustomCollection || CollectionSystemsManager::getInstance()->isEditing())
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("a", _("select")));
if (mSystem->getRootFolder()->getChildren().size() > 0 && mSystem->getName() != "recent") {
prompts.push_back(HelpPrompt("b", "close (apply)"));
prompts.push_back(HelpPrompt("back", "close (cancel)"));
prompts.push_back(HelpPrompt("b", _("close (apply)")));
prompts.push_back(HelpPrompt("back", _("close (cancel)")));
}
else {
prompts.push_back(HelpPrompt("b", "close"));
prompts.push_back(HelpPrompt("back", "close"));
prompts.push_back(HelpPrompt("b", _("close")));
prompts.push_back(HelpPrompt("back", _("close")));
}
return prompts;
}

View file

@ -1970,7 +1970,7 @@ void GuiMenu::openUtilities()
HelpStyle style {getHelpStyle()};
ComponentListRow row;
row.addElement(std::make_shared<TextComponent>("ORPHANED DATA CLEANUP",
row.addElement(std::make_shared<TextComponent>(_("ORPHANED DATA CLEANUP"),
Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary),
true);
row.addElement(mMenu.makeArrow(), false);
@ -1979,7 +1979,7 @@ void GuiMenu::openUtilities()
s->addRow(row);
row.elements.clear();
row.addElement(std::make_shared<TextComponent>("CREATE/UPDATE SYSTEM DIRECTORIES",
row.addElement(std::make_shared<TextComponent>(_("CREATE/UPDATE SYSTEM DIRECTORIES"),
Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary),
true);
@ -1991,15 +1991,16 @@ void GuiMenu::openUtilities()
row.makeAcceptInputHandler([this] {
mWindow->pushGui(new GuiMsgBox(
getHelpStyle(),
"THIS WILL CREATE ALL GAME SYSTEM DIRECTORIES INSIDE YOUR ROM FOLDER AND IT WILL ALSO "
"UPDATE ALL SYSTEMINFO.TXT FILES. THIS IS A SAFE OPERATION THAT WILL NOT DELETE OR "
"MODIFY YOUR GAME FILES. TO DECREASE APPLICATION STARTUP TIMES IT'S RECOMMENDED TO "
"DELETE THE SYSTEM DIRECTORIES YOU DON'T NEED AFTER RUNNING THIS UTILITY",
"PROCEED",
_("THIS WILL CREATE ALL GAME SYSTEM DIRECTORIES INSIDE YOUR ROM FOLDER AND IT WILL "
"ALSO UPDATE ALL SYSTEMINFO.TXT FILES. THIS IS A SAFE OPERATION THAT WILL NOT DELETE "
"OR MODIFY YOUR GAME FILES. TO DECREASE APPLICATION STARTUP TIMES IT'S RECOMMENDED "
"TO DELETE THE SYSTEM DIRECTORIES YOU DON'T NEED AFTER RUNNING THIS UTILITY"),
_("PROCEED"),
[this] {
if (!SystemData::createSystemDirectories()) {
mWindow->pushGui(new GuiMsgBox(
getHelpStyle(), "THE SYSTEM DIRECTORIES WERE SUCCESSFULLY CREATED", _("OK"),
getHelpStyle(), _("THE SYSTEM DIRECTORIES WERE SUCCESSFULLY CREATED"),
_("OK"),
[this] {
if (CollectionSystemsManager::getInstance()->isEditing())
CollectionSystemsManager::getInstance()->exitEditMode();
@ -2018,15 +2019,15 @@ void GuiMenu::openUtilities()
else {
mWindow->pushGui(new GuiMsgBox(
getHelpStyle(),
"ERROR CREATING SYSTEM DIRECTORIES, PERMISSION PROBLEMS OR "
"DISK FULL?\nSEE THE LOG FILE FOR MORE DETAILS",
_("ERROR CREATING SYSTEM DIRECTORIES, PERMISSION PROBLEMS OR "
"DISK FULL? SEE THE LOG FILE FOR MORE DETAILS"),
_("OK"), nullptr, "", nullptr, "", nullptr, nullptr, true, true,
(mRenderer->getIsVerticalOrientation() ?
0.70f :
0.44f * (1.778f / mRenderer->getScreenAspectRatio()))));
}
},
"CANCEL", nullptr, "", nullptr, nullptr, false, true,
_("CANCEL"), nullptr, "", nullptr, nullptr, false, true,
(mRenderer->getIsVerticalOrientation() ?
0.80f :
0.52f * (1.778f / mRenderer->getScreenAspectRatio()))));
@ -2035,7 +2036,7 @@ void GuiMenu::openUtilities()
s->addRow(row);
row.elements.clear();
row.addElement(std::make_shared<TextComponent>("RESCAN ROM DIRECTORY",
row.addElement(std::make_shared<TextComponent>(_("RESCAN ROM DIRECTORY"),
Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary),
true);
@ -2045,9 +2046,9 @@ void GuiMenu::openUtilities()
row.makeAcceptInputHandler([this] {
mWindow->pushGui(new GuiMsgBox(
getHelpStyle(),
"THIS WILL RESCAN YOUR ROM DIRECTORY FOR CHANGES SUCH AS ADDED OR REMOVED GAMES AND "
"SYSTEMS",
"PROCEED",
_("THIS WILL RESCAN YOUR ROM DIRECTORY FOR CHANGES SUCH AS ADDED OR REMOVED GAMES AND "
"SYSTEMS"),
_("PROCEED"),
[this] {
if (CollectionSystemsManager::getInstance()->isEditing())
CollectionSystemsManager::getInstance()->exitEditMode();
@ -2060,7 +2061,7 @@ void GuiMenu::openUtilities()
}
ViewController::getInstance()->rescanROMDirectory();
},
"CANCEL", nullptr, "", nullptr, nullptr, false, true,
_("CANCEL"), nullptr, "", nullptr, nullptr, false, true,
(mRenderer->getIsVerticalOrientation() ?
0.76f :
0.52f * (1.778f / mRenderer->getScreenAspectRatio()))));
@ -2079,12 +2080,12 @@ void GuiMenu::openQuitMenu()
if (!Settings::getInstance()->getBool("ShowQuitMenu")) {
#endif
mWindow->pushGui(new GuiMsgBox(
this->getHelpStyle(), "REALLY QUIT?", "YES",
this->getHelpStyle(), _("REALLY QUIT?"), _("YES"),
[this] {
close(true);
Utils::Platform::quitES();
},
"NO", nullptr));
_("NO"), nullptr));
}
else {
auto s = new GuiSettings(_("QUIT"));
@ -2096,15 +2097,15 @@ void GuiMenu::openQuitMenu()
row.makeAcceptInputHandler([window, this] {
window->pushGui(new GuiMsgBox(
this->getHelpStyle(), "REALLY QUIT?", "YES",
this->getHelpStyle(), _("REALLY QUIT?"), _("YES"),
[this] {
close(true);
Utils::Platform::quitES();
},
"NO", nullptr));
_("NO"), nullptr));
});
auto quitText = std::make_shared<TextComponent>("QUIT ES-DE", Font::get(FONT_SIZE_MEDIUM),
mMenuColorPrimary);
auto quitText = std::make_shared<TextComponent>(
_("QUIT ES-DE"), Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary);
quitText->setSelectable(true);
row.addElement(quitText, true);
s->addRow(row);
@ -2112,16 +2113,16 @@ void GuiMenu::openQuitMenu()
row.elements.clear();
row.makeAcceptInputHandler([window, this] {
window->pushGui(new GuiMsgBox(
this->getHelpStyle(), "REALLY REBOOT?", "YES",
this->getHelpStyle(), _("REALLY REBOOT?"), _("YES"),
[] {
if (Utils::Platform::quitES(Utils::Platform::QuitMode::REBOOT) != 0) {
LOG(LogWarning) << "Reboot terminated with non-zero result!";
}
},
"NO", nullptr));
_("NO"), nullptr));
});
auto rebootText = std::make_shared<TextComponent>(
"REBOOT SYSTEM", Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary);
_("REBOOT SYSTEM"), Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary);
rebootText->setSelectable(true);
row.addElement(rebootText, true);
s->addRow(row);
@ -2129,16 +2130,16 @@ void GuiMenu::openQuitMenu()
row.elements.clear();
row.makeAcceptInputHandler([window, this] {
window->pushGui(new GuiMsgBox(
this->getHelpStyle(), "REALLY POWER OFF?", "YES",
this->getHelpStyle(), _("REALLY POWER OFF?"), _("YES"),
[] {
if (Utils::Platform::quitES(Utils::Platform::QuitMode::POWEROFF) != 0) {
LOG(LogWarning) << "Power off terminated with non-zero result!";
}
},
"NO", nullptr));
_("NO"), nullptr));
});
auto powerOffText = std::make_shared<TextComponent>(
"POWER OFF SYSTEM", Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary);
_("POWER OFF SYSTEM"), Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary);
powerOffText->setSelectable(true);
row.addElement(powerOffText, true);
s->addRow(row);
@ -2268,9 +2269,9 @@ bool GuiMenu::input(InputConfig* config, Input input)
std::vector<HelpPrompt> GuiMenu::getHelpPrompts()
{
std::vector<HelpPrompt> prompts;
prompts.push_back(HelpPrompt("up/down", "choose"));
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("b", "close menu"));
prompts.push_back(HelpPrompt("start", "close menu"));
prompts.push_back(HelpPrompt("up/down", _("choose")));
prompts.push_back(HelpPrompt("a", _("select")));
prompts.push_back(HelpPrompt("b", _("close menu")));
prompts.push_back(HelpPrompt("start", _("close menu")));
return prompts;
}

View file

@ -29,6 +29,7 @@
#include "guis/GuiTextEditKeyboardPopup.h"
#include "guis/GuiTextEditPopup.h"
#include "resources/Font.h"
#include "utils/LocalizationUtil.h"
#include "utils/StringUtil.h"
#define TITLE_HEIGHT \
@ -70,7 +71,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
addChild(&mBackground);
addChild(&mGrid);
mTitle = std::make_shared<TextComponent>("EDIT METADATA", Font::get(FONT_SIZE_LARGE),
mTitle = std::make_shared<TextComponent>(_("EDIT METADATA"), Font::get(FONT_SIZE_LARGE),
mMenuColorTitle, ALIGN_CENTER);
mGrid.setEntry(mTitle, glm::ivec2 {0, 0}, false, true, glm::ivec2 {2, 2});
@ -147,7 +148,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
// entry instead of for instance the spacer. That is so because ComponentList
// always looks for the help prompt at the back of the element stack.
ComponentListRow row;
auto lbl = std::make_shared<TextComponent>(Utils::String::toUpper(it->displayName),
auto lbl = std::make_shared<TextComponent>(_(it->displayName.c_str()),
Font::get(FONT_SIZE_SMALL), mMenuColorPrimary);
row.addElement(lbl, true); // Label.
@ -207,7 +208,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
bracket->setColorShift(mMenuColorPrimary);
row.addElement(bracket, false);
const std::string title {it->displayPrompt};
const std::string title {_(it->displayPrompt.c_str())};
// OK callback (apply new value to ed).
auto updateVal = [ed, originalValue](const std::string& newVal) {
@ -251,7 +252,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
if (ed->getValue() != "") {
ComponentListRow row;
std::shared_ptr<TextComponent> clearText {std::make_shared<TextComponent>(
ViewController::CROSSEDCIRCLE_CHAR + " CLEAR ENTRY",
ViewController::CROSSEDCIRCLE_CHAR + " " + _("CLEAR ENTRY"),
Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary)};
clearText->setSelectable(true);
row.addElement(clearText, true);
@ -293,8 +294,9 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
bracket->setColorShift(mMenuColorPrimary);
row.addElement(bracket, false);
const std::string title {mRenderer->getIsVerticalOrientation() ? "select emulator" :
it->displayPrompt};
const std::string title {mRenderer->getIsVerticalOrientation() ?
_("SELECT EMULATOR") :
_(it->displayPrompt.c_str())};
// OK callback (apply new value to ed).
auto updateVal = [this, ed, originalValue](const std::string& newVal) {
@ -334,7 +336,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
GuiSettings* s {nullptr};
if (mInvalidEmulatorEntry && singleEntry)
s = new GuiSettings("CLEAR INVALID ENTRY");
s = new GuiSettings(_("CLEAR INVALID ENTRY"));
else
s = new GuiSettings(title);
@ -346,7 +348,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
"", ViewController::EXCLAMATION_CHAR + " " + originalValue));
else if (ed->getValue() != "")
launchCommands.push_back(std::make_pair(
"", ViewController::CROSSEDCIRCLE_CHAR + " CLEAR ENTRY"));
"", ViewController::CROSSEDCIRCLE_CHAR + " " + _("CLEAR ENTRY")));
for (auto entry : launchCommands) {
if (mInvalidEmulatorEntry && singleEntry &&
@ -372,10 +374,16 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
scraperParams.system->getSystemEnvData()
->mLaunchCommands.front()
.second == label)
labelText->setValue(labelText->getValue().append(" [SYSTEM-WIDE]"));
labelText->setValue(labelText->getValue()
.append(" [")
.append(_("SYSTEM-WIDE"))
.append("]"));
if (scraperParams.system->getAlternativeEmulator() == label)
labelText->setValue(labelText->getValue().append(" [SYSTEM-WIDE]"));
labelText->setValue(labelText->getValue()
.append(" [")
.append(_("SYSTEM-WIDE"))
.append("]"));
row.addElement(labelText, true);
row.makeAcceptInputHandler(
@ -433,7 +441,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
bracket->setColorShift(mMenuColorPrimary);
row.addElement(bracket, false);
const std::string title {it->displayPrompt};
const std::string title {_(it->displayPrompt.c_str())};
std::vector<FileData*> children;
if (originalValue != "")
@ -510,7 +518,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
if (ed->getValue() != "") {
ComponentListRow row;
std::shared_ptr<TextComponent> clearText {std::make_shared<TextComponent>(
ViewController::CROSSEDCIRCLE_CHAR + " CLEAR ENTRY",
ViewController::CROSSEDCIRCLE_CHAR + " " + _("CLEAR ENTRY"),
Font::get(FONT_SIZE_MEDIUM), mMenuColorPrimary)};
clearText->setSelectable(true);
row.addElement(clearText, true);
@ -554,7 +562,7 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
row.addElement(bracket, false);
bool multiLine {it->type == MD_MULTILINE_STRING};
const std::string title {it->displayPrompt};
const std::string title {_(it->displayPrompt.c_str())};
gamePath = Utils::FileSystem::getStem(scraperParams.game->getPath());
@ -606,14 +614,14 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
mRenderer->getIsVerticalOrientation() ? mPosition.y : 0.0f};
mWindow->pushGui(new GuiTextEditKeyboardPopup(
getHelpStyle(), verticalPosition, title, ed->getValue(), updateVal,
multiLine, "apply", "APPLY CHANGES?", "", ""));
multiLine, _("APPLY"), _("APPLY CHANGES?"), "", ""));
});
}
else {
row.makeAcceptInputHandler([this, title, ed, updateVal, multiLine] {
mWindow->pushGui(new GuiTextEditPopup(getHelpStyle(), title, ed->getValue(),
updateVal, multiLine, "APPLY",
"APPLY CHANGES?"));
updateVal, multiLine, _("APPLY"),
_("APPLY CHANGES?")));
});
}
break;
@ -647,14 +655,14 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
if (!scraperParams.system->hasPlatformId(PlatformIds::PLATFORM_IGNORE))
buttons.push_back(std::make_shared<ButtonComponent>(
"SCRAPE", "scrape", std::bind(&GuiMetaDataEd::fetch, this)));
_("SCRAPE"), _("scrape"), std::bind(&GuiMetaDataEd::fetch, this)));
buttons.push_back(std::make_shared<ButtonComponent>("SAVE", "save metadata", [&] {
buttons.push_back(std::make_shared<ButtonComponent>(_("SAVE"), _("save metadata"), [&] {
save();
delete this;
}));
buttons.push_back(
std::make_shared<ButtonComponent>("CANCEL", "cancel changes", [&] { delete this; }));
std::make_shared<ButtonComponent>(_("CANCEL"), _("cancel changes"), [&] { delete this; }));
if (scraperParams.game->getType() == FOLDER) {
if (mClearGameFunc) {
auto clearSelf = [&] {
@ -662,16 +670,20 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
delete this;
};
auto clearSelfBtnFunc = [this, clearSelf] {
mWindow->pushGui(new GuiMsgBox(getHelpStyle(),
"THIS WILL DELETE ANY MEDIA FILES AND\n"
"THE GAMELIST.XML ENTRY FOR THIS FOLDER,\n"
"BUT NEITHER THE FOLDER ITSELF OR ANY\n"
"CONTENT INSIDE IT WILL BE REMOVED\n"
"ARE YOU SURE?",
"YES", clearSelf, "NO", nullptr));
mWindow->pushGui(
new GuiMsgBox(getHelpStyle(),
_("THIS WILL DELETE ANY MEDIA FILES AND "
"THE GAMELIST.XML ENTRY FOR THIS FOLDER, "
"BUT NEITHER THE DIRECTORY ITSELF OR ANY "
"CONTENT INSIDE IT WILL BE REMOVED"),
_("PROCEED"), clearSelf, _("CANCEL"), nullptr, "", nullptr,
nullptr, false, true,
(mRenderer->getIsVerticalOrientation() ?
0.70f :
0.46f * (1.778f / mRenderer->getScreenAspectRatio()))));
};
buttons.push_back(
std::make_shared<ButtonComponent>("CLEAR", "clear folder", clearSelfBtnFunc));
std::make_shared<ButtonComponent>(_("CLEAR"), _("clear folder"), clearSelfBtnFunc));
}
}
else {
@ -681,16 +693,20 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
delete this;
};
auto clearSelfBtnFunc = [this, clearSelf] {
mWindow->pushGui(new GuiMsgBox(getHelpStyle(),
"THIS WILL DELETE ANY MEDIA FILES\n"
"AND THE GAMELIST.XML ENTRY FOR\n"
"THIS GAME, BUT THE GAME FILE\n"
"ITSELF WILL NOT BE REMOVED\n"
"ARE YOU SURE?",
"YES", clearSelf, "NO", nullptr));
mWindow->pushGui(
new GuiMsgBox(getHelpStyle(),
_("THIS WILL DELETE ANY MEDIA FILES "
"AND THE GAMELIST.XML ENTRY FOR "
"THIS GAME, BUT THE GAME FILE "
"ITSELF WILL NOT BE REMOVED"),
_("PROCEED"), clearSelf, _("CANCEL"), nullptr, "", nullptr,
nullptr, false, true,
(mRenderer->getIsVerticalOrientation() ?
0.70f :
0.46f * (1.778f / mRenderer->getScreenAspectRatio()))));
};
buttons.push_back(
std::make_shared<ButtonComponent>("CLEAR", "clear file", clearSelfBtnFunc));
std::make_shared<ButtonComponent>(_("CLEAR"), _("clear file"), clearSelfBtnFunc));
}
// For the special case where a directory has a supported file extension and is therefore
@ -701,15 +717,19 @@ GuiMetaDataEd::GuiMetaDataEd(MetaDataList* md,
delete this;
};
auto deleteGameBtnFunc = [this, deleteFilesAndSelf] {
mWindow->pushGui(new GuiMsgBox(getHelpStyle(),
"THIS WILL DELETE THE GAME\n"
"FILE, ANY MEDIA FILES AND\n"
"THE GAMELIST.XML ENTRY\n"
"ARE YOU SURE?",
"YES", deleteFilesAndSelf, "NO", nullptr));
mWindow->pushGui(
new GuiMsgBox(getHelpStyle(),
_("THIS WILL DELETE THE GAME "
"FILE, ANY MEDIA FILES AND "
"THE GAMELIST.XML ENTRY"),
_("PROCEED"), deleteFilesAndSelf, _("CANCEL"), nullptr, "",
nullptr, nullptr, false, true,
(mRenderer->getIsVerticalOrientation() ?
0.70f :
0.46f * (1.778f / mRenderer->getScreenAspectRatio()))));
};
buttons.push_back(
std::make_shared<ButtonComponent>("DELETE", "delete game", deleteGameBtnFunc));
buttons.push_back(std::make_shared<ButtonComponent>(_("DELETE"), _("delete game"),
deleteGameBtnFunc));
}
}
@ -992,12 +1012,12 @@ void GuiMetaDataEd::close()
if (metadataUpdated) {
// Changes were made, ask if the user wants to save them.
mWindow->pushGui(new GuiMsgBox(
getHelpStyle(), "SAVE CHANGES?", "YES",
getHelpStyle(), _("SAVE CHANGES?"), _("YES"),
[this, closeFunc] {
save();
closeFunc();
},
"NO", closeFunc, "", nullptr, nullptr, true));
_("NO"), closeFunc, "", nullptr, nullptr, true));
}
else {
// Always save if the media files have been changed (i.e. newly scraped images).
@ -1028,7 +1048,7 @@ bool GuiMetaDataEd::input(InputConfig* config, Input input)
std::vector<HelpPrompt> GuiMetaDataEd::getHelpPrompts()
{
std::vector<HelpPrompt> prompts {mGrid.getHelpPrompts()};
prompts.push_back(HelpPrompt("y", "scrape"));
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("y", _("scrape")));
prompts.push_back(HelpPrompt("b", _("back")));
return prompts;
}

View file

@ -277,6 +277,6 @@ bool GuiSettings::input(InputConfig* config, Input input)
std::vector<HelpPrompt> GuiSettings::getHelpPrompts()
{
std::vector<HelpPrompt> prompts {mMenu.getHelpPrompts()};
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("b", _("back")));
return prompts;
}

View file

@ -11,6 +11,7 @@
#include "CollectionSystemsManager.h"
#include "UIModeController.h"
#include "animations/LambdaAnimation.h"
#include "utils/LocalizationUtil.h"
#define FADE_IN_START_OPACITY 0.5f
#define FADE_IN_TIME 325
@ -506,33 +507,33 @@ std::vector<HelpPrompt> GamelistView::getHelpPrompts()
if (Settings::getInstance()->getString("QuickSystemSelect") != "disabled") {
if (getQuickSystemSelectLeftButton() == "leftshoulder")
prompts.push_back(HelpPrompt("lr", "system"));
prompts.push_back(HelpPrompt("lr", _("system")));
else if (getQuickSystemSelectLeftButton() == "lefttrigger")
prompts.push_back(HelpPrompt("ltrt", "system"));
prompts.push_back(HelpPrompt("ltrt", _("system")));
else if (getQuickSystemSelectLeftButton() == "left")
prompts.push_back(HelpPrompt("left/right", "system"));
prompts.push_back(HelpPrompt("left/right", _("system")));
}
if (mRoot->getSystem()->getThemeFolder() == "custom-collections" && mCursorStack.empty() &&
ViewController::getInstance()->getState().viewing == ViewController::ViewMode::GAMELIST)
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("a", _("select")));
else
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("a", _("select")));
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("x", "view media"));
prompts.push_back(HelpPrompt("b", _("back")));
prompts.push_back(HelpPrompt("x", _("view media")));
if (!UIModeController::getInstance()->isUIModeKid())
prompts.push_back(HelpPrompt("back", "options"));
prompts.push_back(HelpPrompt("back", _("options")));
if (mRoot->getSystem()->isGameSystem() &&
(Settings::getInstance()->getString("RandomEntryButton") == "games" ||
Settings::getInstance()->getString("RandomEntryButton") == "gamessystems"))
prompts.push_back(HelpPrompt("thumbstickclick", "random"));
prompts.push_back(HelpPrompt("thumbstickclick", _("random")));
if (mRoot->getSystem()->getThemeFolder() == "custom-collections" &&
!CollectionSystemsManager::getInstance()->isEditing() && mCursorStack.empty() &&
ViewController::getInstance()->getState().viewing == ViewController::ViewMode::GAMELIST) {
prompts.push_back(HelpPrompt("y", "jump to game"));
prompts.push_back(HelpPrompt("y", _("jump to game")));
}
else if (mRoot->getSystem()->isGameSystem() &&
(mRoot->getSystem()->getThemeFolder() != "custom-collections" ||

View file

@ -15,6 +15,7 @@
#include "Window.h"
#include "animations/LambdaAnimation.h"
#include "guis/GuiMsgBox.h"
#include "utils/LocalizationUtil.h"
#include "views/ViewController.h"
#if defined(_WIN64)
@ -200,18 +201,18 @@ std::vector<HelpPrompt> SystemView::getHelpPrompts()
if (mCarousel != nullptr) {
if (mCarousel->getType() == CarouselComponent<SystemData*>::CarouselType::VERTICAL ||
mCarousel->getType() == CarouselComponent<SystemData*>::CarouselType::VERTICAL_WHEEL)
prompts.push_back(HelpPrompt("up/down", "choose"));
prompts.push_back(HelpPrompt("up/down", _("choose")));
else
prompts.push_back(HelpPrompt("left/right", "choose"));
prompts.push_back(HelpPrompt("left/right", _("choose")));
}
else if (mGrid != nullptr) {
prompts.push_back(HelpPrompt("up/down/left/right", "choose"));
prompts.push_back(HelpPrompt("up/down/left/right", _("choose")));
}
else if (mTextList != nullptr) {
prompts.push_back(HelpPrompt("up/down", "choose"));
prompts.push_back(HelpPrompt("up/down", _("choose")));
}
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("a", _("select")));
if (Settings::getInstance()->getString("RandomEntryButton") == "gamessystems")
prompts.push_back(HelpPrompt("thumbstickclick", "random"));

View file

@ -2063,6 +2063,7 @@ void ThemeData::parseElement(const pugi::xml_node& root,
}
}
#if defined(GETTEXT_DUMMY_ENTRIES)
void ThemeData::gettextMessageCatalogEntries()
{
// sSupportedFontSizes
@ -2084,3 +2085,4 @@ void ThemeData::gettextMessageCatalogEntries()
_("21:9 vertical");
_("32:9 vertical");
}
#endif

View file

@ -263,8 +263,10 @@ private:
const std::map<std::string, ElementPropertyType>& typeMap,
ThemeElement& element);
#if defined(GETTEXT_DUMMY_ENTRIES)
// This is just to get gettext msgid entries added to the PO message catalog files.
void gettextMessageCatalogEntries();
#endif
static std::vector<std::string> sSupportedViews;
static std::vector<std::string> sSupportedMediaTypes;

View file

@ -9,6 +9,7 @@
#include "components/ComponentGrid.h"
#include "Settings.h"
#include "utils/LocalizationUtil.h"
using namespace GridFlags;
@ -515,12 +516,12 @@ std::vector<HelpPrompt> ComponentGrid::getHelpPrompts()
// Check existing capabilities as indicated by the help prompts, and if the prompts should
// be combined into "up/down/left/right" then also remove the single-axis prompts.
if (!prompts.empty() && prompts.back() == HelpPrompt("up/down", "choose")) {
if (!prompts.empty() && prompts.back() == HelpPrompt("up/down", _("choose"))) {
canScrollVert = true;
if (canScrollHoriz && canScrollVert)
prompts.pop_back();
}
else if (!prompts.empty() && prompts.back() == HelpPrompt("left/right", "choose")) {
else if (!prompts.empty() && prompts.back() == HelpPrompt("left/right", _("choose"))) {
canScrollHoriz = true;
if (canScrollHoriz && canScrollVert)
prompts.pop_back();
@ -528,11 +529,11 @@ std::vector<HelpPrompt> ComponentGrid::getHelpPrompts()
// Any duplicates will be removed in Window::setHelpPrompts()
if (canScrollHoriz && canScrollVert)
prompts.push_back(HelpPrompt("up/down/left/right", "choose"));
prompts.push_back(HelpPrompt("up/down/left/right", _("choose")));
else if (canScrollHoriz)
prompts.push_back(HelpPrompt("left/right", "choose"));
prompts.push_back(HelpPrompt("left/right", _("choose")));
else if (canScrollVert)
prompts.push_back(HelpPrompt("up/down", "choose"));
prompts.push_back(HelpPrompt("up/down", _("choose")));
return prompts;
}

View file

@ -9,6 +9,7 @@
#include "components/ComponentList.h"
#include "resources/Font.h"
#include "utils/LocalizationUtil.h"
#define TOTAL_HORIZONTAL_PADDING_PX 20.0f
@ -412,7 +413,7 @@ std::vector<HelpPrompt> ComponentList::getHelpPrompts()
}
}
if (addMovePrompt)
prompts.push_back(HelpPrompt("up/down", "choose"));
prompts.push_back(HelpPrompt("up/down", _("choose")));
}
return prompts;

View file

@ -13,6 +13,7 @@
#include "Settings.h"
#include "resources/Font.h"
#include "utils/LocalizationUtil.h"
#include "utils/StringUtil.h"
DateTimeEditComponent::DateTimeEditComponent(bool alignRight, DisplayMode dispMode)
@ -235,13 +236,13 @@ std::vector<HelpPrompt> DateTimeEditComponent::getHelpPrompts()
{
std::vector<HelpPrompt> prompts;
if (!mEditing) {
prompts.push_back(HelpPrompt("a", "edit date"));
prompts.push_back(HelpPrompt("a", _("edit date")));
}
else {
prompts.push_back(HelpPrompt("b", "cancel"));
prompts.push_back(HelpPrompt("a", "apply"));
prompts.push_back(HelpPrompt("left/right", "Y-M-D"));
prompts.push_back(HelpPrompt("up/down", "modify"));
prompts.push_back(HelpPrompt("b", _("cancel")));
prompts.push_back(HelpPrompt("a", _("apply")));
prompts.push_back(HelpPrompt("left/right", _("Y-M-D")));
prompts.push_back(HelpPrompt("up/down", _("modify")));
}
return prompts;
}

View file

@ -14,6 +14,7 @@
#include "Window.h"
#include "resources/TextureResource.h"
#include "utils/CImgUtil.h"
#include "utils/LocalizationUtil.h"
#include "utils/StringUtil.h"
ImageComponent::ImageComponent(bool forceLoad, bool dynamic)
@ -759,7 +760,7 @@ void ImageComponent::applyTheme(const std::shared_ptr<ThemeData>& theme,
std::vector<HelpPrompt> ImageComponent::getHelpPrompts()
{
std::vector<HelpPrompt> ret;
ret.push_back(HelpPrompt("a", "select"));
ret.push_back(HelpPrompt("a", _("select")));
return ret;
}

View file

@ -373,9 +373,9 @@ private:
{
std::vector<HelpPrompt> prompts;
if (!mMultiSelect)
prompts.push_back(HelpPrompt("left/right", "change value"));
prompts.push_back(HelpPrompt("left/right", _("change value")));
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("a", _("select")));
return prompts;
}
@ -513,11 +513,11 @@ private:
mMenu.addRow(row, (!mParent->mMultiSelect && it->selected), false);
}
mMenu.addButton(_("BACK"), "back", [this] { delete this; });
mMenu.addButton(_("BACK"), _("back"), [this] { delete this; });
if (mParent->mMultiSelect) {
if (!mParent->mMultiExclusiveSelect) {
mMenu.addButton(_("SELECT ALL"), "select all", [this, checkBoxes] {
mMenu.addButton(_("SELECT ALL"), _("select all"), [this, checkBoxes] {
for (unsigned int i = 0; i < mParent->mEntries.size(); ++i) {
mParent->mEntries.at(i).selected = true;
checkBoxes.at(i)->setImage(CHECKED_PATH);
@ -526,18 +526,19 @@ private:
});
}
mMenu.addButton(_("SELECT NONE"), "select none", [this, checkBoxes, textEntries] {
for (unsigned int i = 0; i < mParent->mEntries.size(); ++i) {
mParent->mEntries.at(i).selected = false;
checkBoxes.at(i)->setImage(UNCHECKED_PATH);
if (mParent->mMultiExclusiveSelect) {
checkBoxes.at(i)->setOpacity(1.0f);
textEntries.at(i)->setOpacity(1.0f);
textEntries.at(i)->setEnabled(true);
}
}
mParent->onSelectedChanged();
});
mMenu.addButton(_("SELECT NONE"), _("select none"),
[this, checkBoxes, textEntries] {
for (unsigned int i = 0; i < mParent->mEntries.size(); ++i) {
mParent->mEntries.at(i).selected = false;
checkBoxes.at(i)->setImage(UNCHECKED_PATH);
if (mParent->mMultiExclusiveSelect) {
checkBoxes.at(i)->setOpacity(1.0f);
textEntries.at(i)->setOpacity(1.0f);
textEntries.at(i)->setEnabled(true);
}
}
mParent->onSelectedChanged();
});
}
mMenu.setPosition((Renderer::getScreenWidth() - mMenu.getSize().x) / 2.0f,
@ -558,8 +559,8 @@ private:
std::vector<HelpPrompt> getHelpPrompts() override
{
auto prompts = mMenu.getHelpPrompts();
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("a", _("select")));
prompts.push_back(HelpPrompt("b", _("back")));
return prompts;
}

View file

@ -12,6 +12,7 @@
#include "Settings.h"
#include "ThemeData.h"
#include "resources/TextureResource.h"
#include "utils/LocalizationUtil.h"
RatingComponent::RatingComponent(bool colorizeChanges, bool linearInterpolation)
: mRenderer {Renderer::getInstance()}
@ -308,6 +309,6 @@ void RatingComponent::applyTheme(const std::shared_ptr<ThemeData>& theme,
std::vector<HelpPrompt> RatingComponent::getHelpPrompts()
{
std::vector<HelpPrompt> prompts;
prompts.push_back(HelpPrompt("a", "add half star"));
prompts.push_back(HelpPrompt("a", _("add half star")));
return prompts;
}

View file

@ -9,6 +9,7 @@
#include "SwitchComponent.h"
#include "resources/Font.h"
#include "utils/LocalizationUtil.h"
SwitchComponent::SwitchComponent(bool state)
: mState {state}
@ -88,6 +89,6 @@ void SwitchComponent::onStateChanged()
std::vector<HelpPrompt> SwitchComponent::getHelpPrompts()
{
std::vector<HelpPrompt> prompts;
prompts.push_back(HelpPrompt("a", "toggle"));
prompts.push_back(HelpPrompt("a", _("toggle")));
return prompts;
}

View file

@ -11,6 +11,7 @@
#include "Log.h"
#include "Settings.h"
#include "Window.h"
#include "utils/LocalizationUtil.h"
#include "utils/StringUtil.h"
TextComponent::TextComponent()
@ -559,7 +560,7 @@ std::vector<HelpPrompt> TextComponent::getHelpPrompts()
{
std::vector<HelpPrompt> prompts;
if (mSelectable)
prompts.push_back(HelpPrompt("a", "select"));
prompts.push_back(HelpPrompt("a", _("select")));
return prompts;
}

View file

@ -8,6 +8,7 @@
#include "components/TextEditComponent.h"
#include "utils/LocalizationUtil.h"
#include "utils/StringUtil.h"
#if defined(__ANDROID__)
@ -402,13 +403,13 @@ std::vector<HelpPrompt> TextEditComponent::getHelpPrompts()
{
std::vector<HelpPrompt> prompts;
if (mEditing) {
prompts.push_back(HelpPrompt("lt", "first"));
prompts.push_back(HelpPrompt("rt", "last"));
prompts.push_back(HelpPrompt("left/right", "move cursor"));
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("lt", _("first")));
prompts.push_back(HelpPrompt("rt", _("last")));
prompts.push_back(HelpPrompt("left/right", _("move cursor")));
prompts.push_back(HelpPrompt("b", _("back")));
}
else {
prompts.push_back(HelpPrompt("a", "edit"));
prompts.push_back(HelpPrompt("a", _("edit")));
}
return prompts;
}

View file

@ -12,6 +12,7 @@
#include "Window.h"
#include "resources/ResourceManager.h"
#include "utils/FileSystemUtil.h"
#include "utils/LocalizationUtil.h"
#include "utils/StringUtil.h"
#define SCREENSAVER_FADE_IN_TIME 900
@ -392,7 +393,7 @@ void VideoComponent::applyTheme(const std::shared_ptr<ThemeData>& theme,
std::vector<HelpPrompt> VideoComponent::getHelpPrompts()
{
std::vector<HelpPrompt> ret;
ret.push_back(HelpPrompt("a", "select"));
ret.push_back(HelpPrompt("a", _("select")));
return ret;
}

View file

@ -172,7 +172,7 @@ std::vector<HelpPrompt> GuiMsgBox::getHelpPrompts()
std::vector<HelpPrompt> prompts {mGrid.getHelpPrompts()};
if (!mDisableBackButton)
prompts.push_back(HelpPrompt("b", "Back"));
prompts.push_back(HelpPrompt("b", _("back")));
return prompts;
}

View file

@ -364,13 +364,13 @@ bool GuiTextEditKeyboardPopup::input(InputConfig* config, Input input)
if (mText->getValue() != mInitValue) {
// Changes were made, ask if the user wants to save them.
mWindow->pushGui(new GuiMsgBox(
mHelpStyle, mSaveConfirmationText, "YES",
mHelpStyle, mSaveConfirmationText, _("YES"),
[this] {
this->mOkCallback(mText->getValue());
delete this;
return true;
},
"NO",
_("NO"),
[this] {
delete this;
return true;
@ -498,19 +498,19 @@ std::vector<HelpPrompt> GuiTextEditKeyboardPopup::getHelpPrompts()
std::vector<HelpPrompt> prompts {mGrid.getHelpPrompts()};
if (!mText->isEditing()) {
prompts.push_back(HelpPrompt("lt", "shift"));
prompts.push_back(HelpPrompt("rt", "alt"));
prompts.push_back(HelpPrompt("lt", _("shift")));
prompts.push_back(HelpPrompt("rt", _("alt")));
}
else if (mMultiLine) {
prompts.push_back(HelpPrompt("a", "newline"));
prompts.push_back(HelpPrompt("a", _("newline")));
}
else {
prompts.push_back(HelpPrompt("a", mAcceptBtnHelpText));
}
prompts.push_back(HelpPrompt("l", "backspace"));
prompts.push_back(HelpPrompt("r", "space"));
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("l", _("backspace")));
prompts.push_back(HelpPrompt("r", _("space")));
prompts.push_back(HelpPrompt("b", _("back")));
if (prompts.size() > 0 && prompts.front().second == OK_SYMBOL)
prompts.front().second = mAcceptBtnHelpText;

View file

@ -15,6 +15,7 @@
#include "components/ComponentGrid.h"
#include "components/TextComponent.h"
#include "components/TextEditComponent.h"
#include "utils/LocalizationUtil.h"
class GuiTextEditKeyboardPopup : public GuiComponent
{
@ -25,13 +26,13 @@ public:
const std::string& initValue,
const std::function<void(const std::string&)>& okCallback,
bool multiLine,
const std::string& acceptBtnHelpText = "OK",
const std::string& saveConfirmationText = "SAVE CHANGES?",
const std::string& acceptBtnHelpText = _("OK"),
const std::string& saveConfirmationText = _("SAVE CHANGES?"),
const std::string& infoString = "",
const std::string& defaultValue = "",
const std::string& loadBtnHelpText = "LOAD DEFAULT",
const std::string& clearBtnHelpText = "CLEAR",
const std::string& cancelBtnHelpText = "DISCARD CHANGES");
const std::string& loadBtnHelpText = _("LOAD DEFAULT"),
const std::string& clearBtnHelpText = _("CLEAR"),
const std::string& cancelBtnHelpText = _("DISCARD CHANGES"));
void onSizeChanged() override;
bool input(InputConfig* config, Input input) override;

View file

@ -73,11 +73,11 @@ GuiTextEditPopup::GuiTextEditPopup(const HelpStyle& helpstyle,
}));
}
buttons.push_back(std::make_shared<ButtonComponent>("clear", clearBtnHelpText,
buttons.push_back(std::make_shared<ButtonComponent>(_("CLEAR"), clearBtnHelpText,
[this] { mText->setValue(""); }));
buttons.push_back(
std::make_shared<ButtonComponent>("CANCEL", "discard changes", [this] { delete this; }));
buttons.push_back(std::make_shared<ButtonComponent>(_("CANCEL"), _("discard changes"),
[this] { delete this; }));
mButtonGrid = MenuComponent::makeButtonGrid(buttons);
@ -191,13 +191,13 @@ bool GuiTextEditPopup::input(InputConfig* config, Input input)
if (mText->getValue() != mInitValue) {
// Changes were made, ask if the user wants to save them.
mWindow->pushGui(new GuiMsgBox(
mHelpStyle, mSaveConfirmationText, "YES",
mHelpStyle, mSaveConfirmationText, _("YES"),
[this] {
this->mOkCallback(mText->getValue());
delete this;
return true;
},
"NO",
_("NO"),
[this] {
delete this;
return true;
@ -272,14 +272,14 @@ std::vector<HelpPrompt> GuiTextEditPopup::getHelpPrompts()
if (mText->isEditing()) {
if (mMultiLine)
prompts.push_back(HelpPrompt("a", "newline"));
prompts.push_back(HelpPrompt("a", _("newline")));
else
prompts.push_back(HelpPrompt("a", mAcceptBtnText));
}
prompts.push_back(HelpPrompt("l", "backspace"));
prompts.push_back(HelpPrompt("r", "space"));
prompts.push_back(HelpPrompt("b", "back"));
prompts.push_back(HelpPrompt("l", _("backspace")));
prompts.push_back(HelpPrompt("r", _("space")));
prompts.push_back(HelpPrompt("b", _("back")));
return prompts;
}

View file

@ -15,6 +15,7 @@
#include "components/ComponentGrid.h"
#include "components/TextComponent.h"
#include "components/TextEditComponent.h"
#include "utils/LocalizationUtil.h"
class GuiTextEditPopup : public GuiComponent
{
@ -24,13 +25,13 @@ public:
const std::string& initValue,
const std::function<void(const std::string&)>& okCallback,
bool multiLine,
const std::string& acceptBtnText = "OK",
const std::string& saveConfirmationText = "SAVE CHANGES?",
const std::string& acceptBtnText = _("OK"),
const std::string& saveConfirmationText = _("SAVE CHANGES?"),
const std::string& infoString = "",
const std::string& defaultValue = "",
const std::string& loadBtnHelpText = "LOAD DEFAULT",
const std::string& clearBtnHelpText = "CLEAR",
const std::string& cancelBtnHelpText = "DISCARD CHANGES");
const std::string& loadBtnHelpText = _("LOAD DEFAULT"),
const std::string& clearBtnHelpText = _("CLEAR"),
const std::string& cancelBtnHelpText = _("DISCARD CHANGES"));
void onSizeChanged() override;
bool input(InputConfig* config, Input input) override;