Add love.system.getPreferredLocales()

This commit is contained in:
Miku AuahDark
2022-03-17 23:38:25 +08:00
parent 9c75f816fe
commit c2104f896a
4 changed files with 57 additions and 0 deletions
+26
View File
@@ -25,6 +25,8 @@
// SDL
#include <SDL_clipboard.h>
#include <SDL_cpuinfo.h>
#include <SDL_locale.h>
#include <SDL_version.h>
namespace love
{
@@ -88,6 +90,30 @@ love::system::System::PowerState System::getPowerInfo(int &seconds, int &percent
powerStates.find(sdlstate, state);
return state;
}
std::vector<std::string> System::getPreferredLocales() const
{
std::vector<std::string> result;
#if SDL_VERSION_ATLEAST(2, 0, 14)
SDL_Locale *locales = SDL_GetPreferredLocales();
if (locales)
{
for (SDL_Locale* locale = locales; locale->language != nullptr; locale++)
{
if (locale->country)
result.push_back(std::string(locale->language) + "_" + std::string(locale->country));
else
result.push_back(locale->language);
}
SDL_free(locales);
}
#endif
return result;
}
EnumMap<System::PowerState, SDL_PowerState, System::POWER_MAX_ENUM>::Entry System::powerEntries[] =
+1
View File
@@ -51,6 +51,7 @@ public:
std::string getClipboardText() const;
PowerState getPowerInfo(int &seconds, int &percent) const;
std::vector<std::string> getPreferredLocales() const override;
private: