#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. Я добавил комментарий к вопросу, чтобы немного прояснить ситуацию