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.
This commit is contained in:
Alan Third 2016-02-10 18:27:50 -08:00 committed by Paul Eggert
parent 456c0a3137
commit eb4a18c7db
3 changed files with 28 additions and 0 deletions

View file

@ -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. */

View file

@ -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);

View file

@ -585,6 +585,27 @@ - (NSColor *)colorUsingDefaultColorSpace
}
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)
/* --------------------------------------------------------------------------