diff -r e9d463cb5b49 android-project/src/org/libsdl/app/SDLActivity.java --- a/android-project/src/org/libsdl/app/SDLActivity.java Tue Sep 10 18:25:13 2013 -0700 +++ b/android-project/src/org/libsdl/app/SDLActivity.java Thu Oct 03 20:31:22 2013 +0200 @@ -262,6 +262,10 @@ return mSingleton; } + public static String getLocale() { + return getContext().getResources().getConfiguration().locale.toString(); + } + static class ShowTextInputTask implements Runnable { /* * This is used to regulate the pan&scan method to have some offset from diff -r e9d463cb5b49 include/SDL_system.h --- a/include/SDL_system.h Tue Sep 10 18:25:13 2013 -0700 +++ b/include/SDL_system.h Thu Oct 03 20:31:22 2013 +0200 @@ -91,6 +91,11 @@ */ extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(); + +/* Get the user's locale, as defined in the Activity. + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetLocale(); + #endif /* __ANDROID__ */ diff -r e9d463cb5b49 src/core/android/SDL_android.c --- a/src/core/android/SDL_android.c Tue Sep 10 18:25:13 2013 -0700 +++ b/src/core/android/SDL_android.c Thu Oct 03 20:31:22 2013 +0200 @@ -1390,6 +1390,40 @@ return s_AndroidExternalFilesPath; } +const char * SDL_AndroidGetLocale() +{ + static char *s_AndroidLocale = NULL; + + struct LocalReferenceHolder refs = LocalReferenceHolder_Setup(__FUNCTION__); + jmethodID mid; + jstring localeString; + const char *locale; + + JNIEnv *env = Android_JNI_GetEnv(); + if (!LocalReferenceHolder_Init(&refs, env)) { + LocalReferenceHolder_Cleanup(&refs); + return NULL; + } + + /* localeString = SDLActivity.getLocale(); */ + mid = (*env)->GetStaticMethodID(env, mActivityClass, + "getLocale","()Ljava/lang/String;"); + localeString = + (jstring)(*env)->CallStaticObjectMethod(env, mActivityClass, mid); + locale = (*env)->GetStringUTFChars(env, localeString, NULL); + + if ( s_AndroidLocale != NULL ) { + SDL_free(s_AndroidLocale); + } + + s_AndroidLocale = SDL_strdup(locale); + (*env)->ReleaseStringUTFChars(env, localeString, locale); + + LocalReferenceHolder_Cleanup(&refs); + + return s_AndroidLocale; +} + #endif /* __ANDROID__ */ /* vi: set ts=4 sw=4 expandtab: */