Vita: add SDL_GetPreferredLocales support
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4cf6f2a..88a2d29 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2279,6 +2279,11 @@ elseif(VITA)
${SDL2_SOURCE_DIR}/src/thread/generic/SDL_systls.c)
set(HAVE_SDL_THREADS TRUE)
endif()
+ if(SDL_LOCALE)
+ file(GLOB LOCALE_SOURCES ${SDL2_SOURCE_DIR}/src/locale/vita/*.c)
+ set(SOURCE_FILES ${SOURCE_FILES} ${LOCALE_SOURCES})
+ set(HAVE_SDL_LOCALE TRUE)
+ endif()
if(SDL_TIMERS)
set(SDL_TIMER_VITA 1)
file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/vita/*.c)
diff --git a/src/locale/vita/SDL_syslocale.c b/src/locale/vita/SDL_syslocale.c
new file mode 100644
index 0000000..0a057cb
--- /dev/null
+++ b/src/locale/vita/SDL_syslocale.c
@@ -0,0 +1,71 @@
+/*
+ Simple DirectMedia Layer
+ Copyright (C) 1997-2022 Sam Lantinga <slouken@libsdl.org>
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "../../SDL_internal.h"
+#include "../SDL_syslocale.h"
+
+#include <psp2/apputil.h>
+#include <psp2/system_param.h>
+
+void
+SDL_SYS_GetPreferredLocales(char *buf, size_t buflen)
+{
+ const char *vita_locales[] = {
+ "ja_JP",
+ "en_US",
+ "fr_FR",
+ "es_ES",
+ "de_DE",
+ "it_IT",
+ "nl_NL",
+ "pt_PT",
+ "ru_RU",
+ "ko_KR",
+ "zh_TW",
+ "zh_CN",
+ "fi_FI",
+ "sv_SE",
+ "da_DK",
+ "no_NO",
+ "pl_PL",
+ "pt_BR",
+ "en_GB",
+ "tr_TR",
+ };
+
+ Sint32 language = SCE_SYSTEM_PARAM_LANG_ENGLISH_US;
+ SceAppUtilInitParam initParam;
+ SceAppUtilBootParam bootParam;
+ SDL_zero(initParam);
+ SDL_zero(bootParam);
+ sceAppUtilInit(&initParam, &bootParam);
+ sceAppUtilSystemParamGetInt(SCE_SYSTEM_PARAM_ID_LANG, &language);
+
+ if (language < 0 || language > SCE_SYSTEM_PARAM_LANG_TURKISH)
+ language = SCE_SYSTEM_PARAM_LANG_ENGLISH_US; // default to english
+
+ SDL_strlcpy(buf, vita_locales[language], buflen);
+
+ sceAppUtilShutdown();
+}
+
+/* vi: set ts=4 sw=4 expandtab: */
+