]> git.eshelyaron.com Git - emacs.git/commitdiff
Set a default locale on Android
authorPo Lu <luangruo@yahoo.com>
Thu, 7 Dec 2023 06:05:35 +0000 (14:05 +0800)
committerPo Lu <luangruo@yahoo.com>
Thu, 7 Dec 2023 06:05:35 +0000 (14:05 +0800)
* doc/emacs/android.texi (Android Environment): Revise for
change.

* src/android.c (initEmacs): Set LANG to either en_US.utf8 or C,
subject to whether the system is newer than Android
5.0 (inclusive).

doc/emacs/android.texi
src/android.c

index 915ba948b932eaccd438bb851c6ac985bdde772b..52912d045eba6fb7a80a6e25a527f3de07e18a8d 100644 (file)
@@ -409,6 +409,16 @@ Startup}) connect the Android system to another computer, and run:
 $ adb shell "settings put global settings_enable_monitor_phantom_procs false"
 @end example
 
+@cindex C locale settings, Android
+  Emacs does not respect the locale configured for user applications
+in the system, for the selection of locales available there does not
+match that supplied by the C library.  When Emacs starts on Android
+5.0 or newer, the @code{LANG} environment variable is set to
+@code{en_US.utf8}, which induces subprocesses linked against the
+Android C library to print output sensibly.  Earlier versions of
+Android do not implement locales at all, on account of which the
+variable is set to @code{C} instead.
+
 @cindex running emacs in the background, android
 @cindex emacs killed, android
 @cindex emacs in the background, android
index 7ca5eab817ce61c499e21463fb9add52dd766394..51622f16230d50fc87bcfe9d6beff9d3e9206a92 100644 (file)
@@ -1455,6 +1455,18 @@ NATIVE_NAME (setEmacsParams) (JNIEnv *env, jobject object,
      the possibility of Java locating libemacs later.  */
   setenv ("EMACS_LD_LIBRARY_PATH", android_lib_dir, 1);
 
+  /* If the system is Android 5.0 or later, set LANG to en_US.utf8,
+     which is understood by the C library.  In other instances set it
+     to C, a meaningless value, for good measure.  */
+
+  if (emacs_service_object)
+    {
+      if (api_level >= 21)
+       setenv ("LANG", "en_US.utf8", 1);
+      else
+       setenv ("LANG", "C", 1);
+    }
+
   /* Make a reference to the Emacs service.  */
 
   if (emacs_service_object)