Raymond Toy pushed to branch issue-141-locale at cmucl / cmucl
Commits: b935fbf1 by Raymond Toy at 2022-11-08T14:12:08-08:00 Use LC_MESSAGES for intl::*locale*
For intl::setlocale, get the information from LC_MESSAGES; that's really what intl wants to know---the language to use for translations.
To make it clearer, rename os_getlocale to os_get_lc_messages, and do the corresponding change for unix-get-lc-messages.
Update the translation pot file because the docstring changed.
- - - - -
4 changed files:
- src/code/intl.lisp - src/code/unix.lisp - src/i18n/locale/cmucl-unix.pot - src/lisp/os-common.c
Changes:
===================================== src/code/intl.lisp ===================================== @@ -520,7 +520,7 @@
(defun setlocale (&optional locale) (setf *locale* (or locale - (unix::unix-getlocale) + (unix::unix-get-lc-messages) *locale*)))
(defmacro textdomain (domain)
===================================== src/code/unix.lisp ===================================== @@ -2900,14 +2900,14 @@ (alien:extern-alien "os_setlocale" (function c-call:int))))
-(defun unix-getlocale () - _N"Get the current locale. If we can't, return NIL. A call to - UNIX-SETLOCALE must have been done previously before calling this so - that the correct locale is returned." +(defun unix-get-lc-messages () + _N"Get LC_MESSAGES from the current locale. If we can't, return + NIL. A call to UNIX-SETLOCALE must have been done previously before + calling this so that the correct locale is returned." (with-alien ((buf (array c-call:char 256))) (let ((result (alien-funcall - (extern-alien "os_getlocale" + (extern-alien "os_get_lc_messages" (function c-call:int (* c-call:char) c-call:int))
===================================== src/i18n/locale/cmucl-unix.pot ===================================== @@ -1430,8 +1430,8 @@ msgstr ""
#: src/code/unix.lisp msgid "" -"Get the current locale. If we can't, return NIL. A call to\n" -" UNIX-SETLOCALE must have been done previously before calling this so\n" -" that the correct locale is returned." +"Get LC_MESSAGES from the current locale. If we can't, return\n" +" NIL. A call to UNIX-SETLOCALE must have been done previously before\n" +" calling this so that the correct locale is returned." msgstr ""
===================================== src/lisp/os-common.c ===================================== @@ -785,9 +785,9 @@ os_setlocale(void) }
int -os_getlocale(char *buf, int len) +os_get_lc_messages(char *buf, int len) { - char *locale = setlocale(LC_ALL, NULL); + char *locale = setlocale(LC_MESSAGES, NULL); if (locale) { strncpy(buf, locale, len - 1); buf[len - 1] = '\0';
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/b935fbf1ce1807fcb5323d7e...