From: Alan Third Date: Thu, 11 Feb 2016 02:27:50 +0000 (-0800) Subject: Set locale when run from OS X GUI X-Git-Tag: emacs-25.0.91~20 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=eb4a18c;p=emacs.git Set locale when run from OS X GUI * src/emacs.c (main): Call ns_init_locale. * src/nsterm.m (ns_init_locale): Get locale from OS and set LANG. * src/nsterm.h: Include ns_init_locale. --- diff --git a/src/emacs.c b/src/emacs.c index e3cfad0f7f8..ab5d777aa2e 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1310,6 +1310,11 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem init_ntproc (dumping); /* must precede init_editfns. */ #endif +#ifdef HAVE_NS + /* Initialise the locale from user defaults. */ + ns_init_locale(); +#endif + /* Initialize and GC-protect Vinitial_environment and Vprocess_environment before set_initial_environment fills them in. */ diff --git a/src/nsterm.h b/src/nsterm.h index 6ca584e6774..fa5399c7f90 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -1141,6 +1141,8 @@ extern void ns_retain_object (void *obj); extern void *ns_alloc_autorelease_pool (void); extern void ns_release_autorelease_pool (void *); extern const char *ns_get_defaults_value (const char *key); +extern void ns_init_locale (void); + /* in nsmenu */ extern void update_frame_tool_bar (struct frame *f); diff --git a/src/nsterm.m b/src/nsterm.m index f77aadba67c..43d1377f8a7 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -585,6 +585,27 @@ ns_load_path (void) } +void +ns_init_locale (void) +/* OS X doesn't set any environment variables for the locale when run + from the GUI. Get the locale from the OS and set LANG. */ +{ + NSLocale *locale = [NSLocale currentLocale]; + + NSTRACE ("ns_init_locale"); + + @try + { + /* Set LANG to locale, but not if LANG is already set. */ + setenv("LANG", [[locale localeIdentifier] UTF8String], 0); + } + @catch (NSException *e) + { + NSLog (@"Locale detection failed: %@: %@", [e name], [e reason]); + } +} + + void ns_release_object (void *obj) /* --------------------------------------------------------------------------