Use SDL locale
This commit is contained in:
@@ -2112,6 +2112,7 @@ bool LinuxPlatform::Init()
|
|||||||
|
|
||||||
UnixGetMacAddress(MacAddress);
|
UnixGetMacAddress(MacAddress);
|
||||||
|
|
||||||
|
#if !PLATFORM_SDL
|
||||||
// Get user locale string
|
// Get user locale string
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
const char* locale = setlocale(LC_CTYPE, NULL);
|
const char* locale = setlocale(LC_CTYPE, NULL);
|
||||||
@@ -2121,6 +2122,7 @@ bool LinuxPlatform::Init()
|
|||||||
UserLocale.Replace('_', '-');
|
UserLocale.Replace('_', '-');
|
||||||
if (UserLocale == TEXT("C"))
|
if (UserLocale == TEXT("C"))
|
||||||
UserLocale = TEXT("en");
|
UserLocale = TEXT("en");
|
||||||
|
#endif
|
||||||
|
|
||||||
// Get computer name string
|
// Get computer name string
|
||||||
gethostname(buffer, UNIX_APP_BUFF_SIZE);
|
gethostname(buffer, UNIX_APP_BUFF_SIZE);
|
||||||
@@ -2706,6 +2708,7 @@ void LinuxPlatform::Exit()
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !PLATFORM_SDL
|
||||||
String LinuxPlatform::GetSystemName()
|
String LinuxPlatform::GetSystemName()
|
||||||
{
|
{
|
||||||
Dictionary<String, String> configs = Impl::LoadConfigFile(TEXT("/etc/os-release"));
|
Dictionary<String, String> configs = Impl::LoadConfigFile(TEXT("/etc/os-release"));
|
||||||
@@ -2734,6 +2737,7 @@ String LinuxPlatform::GetUserLocaleName()
|
|||||||
{
|
{
|
||||||
return UserLocale;
|
return UserLocale;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
String LinuxPlatform::GetComputerName()
|
String LinuxPlatform::GetComputerName()
|
||||||
{
|
{
|
||||||
@@ -2941,14 +2945,12 @@ bool LinuxPlatform::SetWorkingDirectory(const String& path)
|
|||||||
return chdir(StringAsANSI<>(*path).Get()) != 0;
|
return chdir(StringAsANSI<>(*path).Get()) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !PLATFORM_SDL
|
||||||
Window* LinuxPlatform::CreateWindow(const CreateWindowSettings& settings)
|
Window* LinuxPlatform::CreateWindow(const CreateWindowSettings& settings)
|
||||||
{
|
{
|
||||||
#if PLATFORM_SDL
|
|
||||||
return New<SDLWindow>(settings);
|
|
||||||
#else
|
|
||||||
return New<LinuxWindow>(settings);
|
return New<LinuxWindow>(settings);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
|
|||||||
@@ -123,8 +123,10 @@ public:
|
|||||||
static void Tick();
|
static void Tick();
|
||||||
static void BeforeExit();
|
static void BeforeExit();
|
||||||
static void Exit();
|
static void Exit();
|
||||||
|
#if !PLATFORM_SDL
|
||||||
static int32 GetDpi();
|
static int32 GetDpi();
|
||||||
static String GetUserLocaleName();
|
static String GetUserLocaleName();
|
||||||
|
#endif
|
||||||
static String GetComputerName();
|
static String GetComputerName();
|
||||||
static bool GetHasFocus();
|
static bool GetHasFocus();
|
||||||
static bool CanOpenUrl(const StringView& url);
|
static bool CanOpenUrl(const StringView& url);
|
||||||
@@ -139,7 +141,9 @@ public:
|
|||||||
static Guid GetUniqueDeviceId();
|
static Guid GetUniqueDeviceId();
|
||||||
static String GetWorkingDirectory();
|
static String GetWorkingDirectory();
|
||||||
static bool SetWorkingDirectory(const String& path);
|
static bool SetWorkingDirectory(const String& path);
|
||||||
|
#if !PLATFORM_SDL
|
||||||
static Window* CreateWindow(const CreateWindowSettings& settings);
|
static Window* CreateWindow(const CreateWindowSettings& settings);
|
||||||
|
#endif
|
||||||
static void GetEnvironmentVariables(Dictionary<String, String, HeapAllocation>& result);
|
static void GetEnvironmentVariables(Dictionary<String, String, HeapAllocation>& result);
|
||||||
static bool GetEnvironmentVariable(const String& name, String& value);
|
static bool GetEnvironmentVariable(const String& name, String& value);
|
||||||
static bool SetEnvironmentVariable(const String& name, const String& value);
|
static bool SetEnvironmentVariable(const String& name, const String& value);
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include <SDL3/SDL_revision.h>
|
#include <SDL3/SDL_revision.h>
|
||||||
#include <SDL3/SDL_system.h>
|
#include <SDL3/SDL_system.h>
|
||||||
#include <SDL3/SDL_version.h>
|
#include <SDL3/SDL_version.h>
|
||||||
|
#include <SDL3/SDL_locale.h>
|
||||||
|
|
||||||
#if PLATFORM_LINUX
|
#if PLATFORM_LINUX
|
||||||
#include "Engine/Engine/CommandLine.h"
|
#include "Engine/Engine/CommandLine.h"
|
||||||
@@ -32,6 +33,7 @@ uint32 SDLPlatform::DraggedWindowId = 0;
|
|||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
int32 SystemDpi = 96;
|
int32 SystemDpi = 96;
|
||||||
|
String UserLocale("en");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SDLPlatform::Init()
|
bool SDLPlatform::Init()
|
||||||
@@ -82,6 +84,23 @@ bool SDLPlatform::Init()
|
|||||||
if (!SDL_InitSubSystem(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD))
|
if (!SDL_InitSubSystem(SDL_INIT_VIDEO | SDL_INIT_GAMEPAD))
|
||||||
Platform::Fatal(String::Format(TEXT("Failed to initialize SDL: {0}."), String(SDL_GetError())));
|
Platform::Fatal(String::Format(TEXT("Failed to initialize SDL: {0}."), String(SDL_GetError())));
|
||||||
|
|
||||||
|
int localesCount = 0;
|
||||||
|
auto locales = SDL_GetPreferredLocales(&localesCount);
|
||||||
|
for (int i = 0; i < localesCount; i++)
|
||||||
|
{
|
||||||
|
auto language = StringAnsiView(locales[i]->language);
|
||||||
|
auto country = StringAnsiView(locales[i]->country);
|
||||||
|
if (language.StartsWith("en"))
|
||||||
|
{
|
||||||
|
if (country != nullptr)
|
||||||
|
UserLocale = String::Format(TEXT("{0}-{1}"), String(language), String(locales[i]->country));
|
||||||
|
else
|
||||||
|
UserLocale = String(language);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SDL_free(locales);
|
||||||
|
|
||||||
if (InitPlatform())
|
if (InitPlatform())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@@ -227,6 +246,11 @@ int32 SDLPlatform::GetDpi()
|
|||||||
return SystemDpi;
|
return SystemDpi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String SDLPlatform::GetUserLocaleName()
|
||||||
|
{
|
||||||
|
return UserLocale;
|
||||||
|
}
|
||||||
|
|
||||||
void SDLPlatform::OpenUrl(const StringView& url)
|
void SDLPlatform::OpenUrl(const StringView& url)
|
||||||
{
|
{
|
||||||
StringAnsi urlStr(url);
|
StringAnsi urlStr(url);
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ public:
|
|||||||
static void SetHighDpiAwarenessEnabled(bool enable);
|
static void SetHighDpiAwarenessEnabled(bool enable);
|
||||||
static BatteryInfo GetBatteryInfo();
|
static BatteryInfo GetBatteryInfo();
|
||||||
static int32 GetDpi();
|
static int32 GetDpi();
|
||||||
|
static String GetUserLocaleName();
|
||||||
static void OpenUrl(const StringView& url);
|
static void OpenUrl(const StringView& url);
|
||||||
static Float2 GetMousePosition();
|
static Float2 GetMousePosition();
|
||||||
static void SetMousePosition(const Float2& pos);
|
static void SetMousePosition(const Float2& pos);
|
||||||
|
|||||||
@@ -690,11 +690,13 @@ bool WindowsPlatform::Init()
|
|||||||
DWORD tmp;
|
DWORD tmp;
|
||||||
Char buffer[256];
|
Char buffer[256];
|
||||||
|
|
||||||
|
#if !PLATFORM_SDL
|
||||||
// Get user locale string
|
// Get user locale string
|
||||||
if (GetUserDefaultLocaleName(buffer, LOCALE_NAME_MAX_LENGTH))
|
if (GetUserDefaultLocaleName(buffer, LOCALE_NAME_MAX_LENGTH))
|
||||||
{
|
{
|
||||||
UserLocale = String(buffer);
|
UserLocale = String(buffer);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Get computer name string
|
// Get computer name string
|
||||||
if (GetComputerNameW(buffer, &tmp))
|
if (GetComputerNameW(buffer, &tmp))
|
||||||
@@ -871,6 +873,7 @@ BatteryInfo WindowsPlatform::GetBatteryInfo()
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !PLATFORM_SDL
|
||||||
int32 WindowsPlatform::GetDpi()
|
int32 WindowsPlatform::GetDpi()
|
||||||
{
|
{
|
||||||
return SystemDpi;
|
return SystemDpi;
|
||||||
@@ -880,6 +883,7 @@ String WindowsPlatform::GetUserLocaleName()
|
|||||||
{
|
{
|
||||||
return UserLocale;
|
return UserLocale;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
String WindowsPlatform::GetComputerName()
|
String WindowsPlatform::GetComputerName()
|
||||||
{
|
{
|
||||||
@@ -1250,12 +1254,10 @@ int32 WindowsPlatform::CreateProcess(CreateProcessSettings& settings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if !PLATFORM_SDL
|
#if !PLATFORM_SDL
|
||||||
|
|
||||||
Window* WindowsPlatform::CreateWindow(const CreateWindowSettings& settings)
|
Window* WindowsPlatform::CreateWindow(const CreateWindowSettings& settings)
|
||||||
{
|
{
|
||||||
return New<WindowsWindow>(settings);
|
return New<WindowsWindow>(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void* WindowsPlatform::LoadLibrary(const Char* filename)
|
void* WindowsPlatform::LoadLibrary(const Char* filename)
|
||||||
|
|||||||
@@ -65,8 +65,10 @@ public:
|
|||||||
static String GetSystemName();
|
static String GetSystemName();
|
||||||
static Version GetSystemVersion();
|
static Version GetSystemVersion();
|
||||||
static BatteryInfo GetBatteryInfo();
|
static BatteryInfo GetBatteryInfo();
|
||||||
|
#if !PLATFORM_SDL
|
||||||
static int32 GetDpi();
|
static int32 GetDpi();
|
||||||
static String GetUserLocaleName();
|
static String GetUserLocaleName();
|
||||||
|
#endif
|
||||||
static String GetComputerName();
|
static String GetComputerName();
|
||||||
static bool GetHasFocus();
|
static bool GetHasFocus();
|
||||||
static bool CanOpenUrl(const StringView& url);
|
static bool CanOpenUrl(const StringView& url);
|
||||||
@@ -80,7 +82,9 @@ public:
|
|||||||
static bool GetEnvironmentVariable(const String& name, String& value);
|
static bool GetEnvironmentVariable(const String& name, String& value);
|
||||||
static bool SetEnvironmentVariable(const String& name, const String& value);
|
static bool SetEnvironmentVariable(const String& name, const String& value);
|
||||||
static int32 CreateProcess(CreateProcessSettings& settings);
|
static int32 CreateProcess(CreateProcessSettings& settings);
|
||||||
|
#if !PLATFORM_SDL
|
||||||
static Window* CreateWindow(const CreateWindowSettings& settings);
|
static Window* CreateWindow(const CreateWindowSettings& settings);
|
||||||
|
#endif
|
||||||
static void* LoadLibrary(const Char* filename);
|
static void* LoadLibrary(const Char* filename);
|
||||||
#if CRASH_LOG_ENABLE
|
#if CRASH_LOG_ENABLE
|
||||||
static Array<StackFrame, HeapAllocation> GetStackFrames(int32 skipCount = 0, int32 maxDepth = 60, void* context = nullptr);
|
static Array<StackFrame, HeapAllocation> GetStackFrames(int32 skipCount = 0, int32 maxDepth = 60, void* context = nullptr);
|
||||||
|
|||||||
Reference in New Issue
Block a user