Почему язык не меняется в OSX?

#c #macos #locale

#c #macos #язык

Вопрос:

Я пытаюсь использовать strftime на Mac для вывода времени в зависимости от локали.

Я устанавливаю язык и получаю время :

 // sets the program's locale to the native locale
// without this line the locale is 'C'

log.debug(setlocale(LC_ALL,"")); 
struct tm* date = localtime(amp;time);
strftime(result.buf, size, "%X %x", date);
log.debug(result.buf);
  

какие результаты

 en_GB.UTF-8
13:58:01 25/10/2011
  

что правильно. Однако затем я перехожу на панель настроек Language amp; Text System и меняю регион на Соединенные Штаты. Если я снова запущу свою программу, я получу ту же локаль, и время будет отформатировано таким же образом (я бы ожидал, что локаль будет en_US и дата будет отформатирована 10/25/2011 ). Что я делаю не так?

Ответ №1:

Вам нужно перезапустить терминал или что-то еще, с чего вы запускаете свою программу, чтобы изменения вступили в силу.

Комментарии:

1. Из документации вызов setlocale() с параметром "" должен возвращать системный язык. Если это не так, как я должен писать эту функцию?

2. Only three locales are defined by default: the empty string "" (which denotes the native environment)

3. Теперь я понимаю, к чему вы клоните.

4. упс. нажмите enter, чтобы начать. Я думаю, что после изменения системного языка вам следует хотя бы перезапустить терминал или что-то еще, с чего вы запускаете свою программу. Вы пробовали это?

5. Я добавил комментарий к вопросу, чтобы немного прояснить ситуацию