MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / GetLocaleLanguage

Function GetLocaleLanguage

src/openrct2/platform/Platform.Android.cpp:97–131  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95 }
96
97 uint16_t GetLocaleLanguage()
98 {
99 JNIEnv* env = static_cast<JNIEnv*>(SDL_AndroidGetJNIEnv());
100
101 jobject activity = static_cast<jobject>(SDL_AndroidGetActivity());
102 jclass activityClass = env->GetObjectClass(activity);
103 jmethodID getDefaultLocale = env->GetMethodID(
104 activityClass, "getDefaultLocale", "([Ljava/lang/String;)Ljava/lang/String;");
105
106 jobjectArray jLanguageTags = env->NewObjectArray(
107 LANGUAGE_COUNT, env->FindClass("java/lang/String"), env->NewStringUTF(""));
108
109 for (int32_t i = 1; i < LANGUAGE_COUNT; ++i)
110 {
111 jstring jTag = env->NewStringUTF(LanguagesDescriptors[i].locale);
112 env->SetObjectArrayElement(jLanguageTags, i, jTag);
113 }
114
115 jstring jniString = static_cast<jstring>(env->CallObjectMethod(activity, getDefaultLocale, jLanguageTags));
116
117 const char* jniChars = env->GetStringUTFChars(jniString, nullptr);
118 std::string defaultLocale = jniChars;
119
120 env->ReleaseStringUTFChars(jniString, jniChars);
121 for (int32_t i = 0; i < LANGUAGE_COUNT; ++i)
122 {
123 jobject strToFree = env->GetObjectArrayElement(jLanguageTags, i);
124 env->DeleteLocalRef(strToFree);
125 }
126 env->DeleteLocalRef(jLanguageTags);
127 env->DeleteLocalRef(activity);
128 env->DeleteLocalRef(activityClass);
129
130 return LanguageGetIDFromLocale(defaultLocale.c_str());
131 }
132
133 CurrencyType GetLocaleCurrency()
134 {

Callers

nothing calls this directly

Calls 1

LanguageGetIDFromLocaleFunction · 0.85

Tested by

no test coverage detected