13.2.2. Установка локали: setlocale()

13.2.2. Установка локали: setlocale()

Как уже упоминалось, если вы ничего не делаете, программы на С и библиотека С ведет себя так, как если бы использовалась локаль «С». Функция setlocale() устанавливает соответствующую локаль:

#include <locale.h> /* ISO С */

char *setlocale(int category, const char *locale);

Аргумент category является одной из категорий, описанных в разделе 13.2.1 «Категории локалей и переменные окружения». Аргумент locale является строкой, именующей используемую для этой категории локаль. Когда locale является пустой строкой (""), setlocale() проверяет соответствующие переменные окружения.

Если locale равно NULL, сведения о локали не изменяются. Вместо этого функция возвращает строку, представляющую текущую локаль для данной категории.

Поскольку каждая категория может быть установлена индивидуально, автор приложения решает, насколько будет программа использовать локаль. Например, если main() делает лишь это —

setlocale(LC_TIME, "");

 /* Использование локали только для времени и все */

— тогда, независимо от установленных в окружении других переменных LC_xxx, локали подчиняются лишь функции времени и даты. Все остальные действуют так, как если бы программа по-прежнему работала в локали «С». Сходным образом вызов:

setlocale(LC_TIME, "it_IT"); /* Время всегда итальянское */

заменяет переменную окружения LC_TIME (также, как LC_ALL), заставляя программу использовать для вычислений времени/даты данные для Италии. (Хотя Италия может быть прекрасным местом, программам лучше использовать "", чтобы они могли корректно работать везде; этот пример предназначен лишь для объяснения того, как работает setlocale().)

Можно индивидуально вызывать setlocale() для каждой категории, но простейшим способом является установка всего одним махом:

/* Находясь в Риме, вместо «всего» делайте все как римляне. :-) */

setlocale(LC_ALL, "");

Возвращаемое setlocale() значение является текущей установкой локали. Это либо строковое значение, переданное в предыдущем вызове, либо непрозрачное значение, представляющее используемую вначале локаль. Это самое значение может быть затем передано обратно setlocale(). Для последующего использования возвращаемое значение должно быть скопировано в локальное хранилище, поскольку это указатель на внутренние данные.

char *initial_locale;

initial_locale = strdup(setlocale(LC_ALL, "")); /* сохранить копию */

...

(void)setlocale(LC_ALL, initial_locale); /* восстановить ее */

Здесь мы сохранили копию, использовав функцию POSIX strdup() (см. раздел 3.2.2 «Копирование строк: strdup()»).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Установка Vim-6.1

Из книги Linux From Scratch автора Бикманс Герард

Установка Vim-6.1 Приблизительное время компиляции: 0.81 SBU Необходимое дисковое пространство: 24 MBИнсталляция VimПеред установкой пакета примените патч. Удостоверьтесь, что патч и пакет распакованы перед инсталляцией.Если вам не по душе Vim, см. инструкции по инсталляции других


Установка Less-374

Из книги Мир общения: ICQ автора Леонтьев Виталий Петрович

Установка Less-374 Приблизительное время компиляции: 0.13 SBU Необходимое дисковое пространство: 2 MBИнсталляция LessДля инсталляции Less выполните:./configure –prefix=/usr –bindir=/bin –sysconfdir=/etc && make && make installСодержимое LessПоследняя проверка: версия 374.Программыless, lessecho и lesskeyDescriptionlessless –


Установка Tar-1.13

Из книги Сборка Qt с использованием MinGW32 автора Литкевич Юрий

Установка Tar-1.13 Приблизительное время компиляции: 0.26 SBU Необходимое дисковое пространство: 6 MBИнсталляция TarЕсли вы хотите иметь возможность распаковывать файлы bzip2 программой tar напрямую, примените патч с FTP-сервера LFS. Этот патч добавляет возможность использования опции


Установка ICQ

Из книги Iptables Tutorial 1.1.19 автора Andreasson Oskar

Установка ICQ Дистрибутив (то есть установочный комплект) «аськи» найти нетрудно. Самое простое – зайти на родной сайт программы по адресу: http://www.icq.com или http://www.mirabilis.com, выбрав раздел Download ICQ.Однако, на мой взгляд, гораздо проще найти один из многочисленных русских серверов,


Установка

Из книги Управление исходными текстами. Часть 1. Краткое руководство по CVS автора Рыженков Илья

Установка Установка компилятора Вам понадобится приблизительно 72 МиБ на диске, каталог для установки выбирайте так, чтобы путь не содержал пробелов и кирилицы. Далее каталог, где установлен компилятор, мы будем называть <MINGWDIR>Запустите установщик и следуйте


2.3.2. Установка в Red Hat 7.1

Из книги Компьютер + TV: телевидение на ПК автора Гольцман Виктор Иосифович

2.3.2. Установка в Red Hat 7.1 RedHAt 7.1, с установленным ядром 2.4.x уже включает предустановленные netfilter и iptables. Однако, для сохранения обратной совместимости с предыдущими дистрибутивами, по умолчанию работает пакет ipchains. Сейчас мы коротко разберем – как удалить ipchains и запустить


Установка

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

Установка Если Вы чувствуете себя комфортно в мире Open Source, можете скачать исходные тексты CVS с официальной web-страницы http://www.cvshome.org/ и собрать его для своей системы самостоятельно. Если же вам удобнее сразу получить исполняемый модуль, особенно если вы используете


Установка

Из книги Справочник по PHP автора

Установка Установка спутниковой антенны – один из самых сложных этапов в создании системы спутникового телевидения на компьютере. Обычно этим занимаются специалисты, которые берут соответствующую плату за свой труд. Однако читатели этой книги наверняка хотят делать


12.5.1. Установка SSL

Из книги Linux программирование в примерах автора Роббинс Арнольд

12.5.1. Установка SSL SSL (Secure Sockets Layer) является методом шифрования, разработанным компанией Netscape для обеспечения безопасности в Интернет. Этот метод поддерживает несколько способов шифрования и обеспечивает аутентификацию как на уровне клиента, так и на уровне сервера. SSL


Установка локали (локальных настроек)

Из книги Флибуста. Обратная сторона [Инструкции по установке и запуску i2p, TOR и VPN для «чайников». v. 1.1] автора Коллектив авторов

Установка локали (локальных настроек) setlocaleУстановка региональных настроек.Синтаксис:string SetLocale(string category, string locale);Функция setlocale устанавливает текущую локаль, с которой будут работать функции преобразования регистра символов, вывода даты-времени и т.д. Вообще говоря, для


1. Установка

Из книги Linux и все, все, все... Статьи и колонки в LinuxFormat, 2006-2013 автора Федорчук Алексей Викторович

1. Установка Загрузите инсталляционный файл по ссылке https://www.torproject.org/download/download-easy.html.en Рис. 61.1. Нажмите на кнопку со стрелочкой (1)1.2. В выпадающем меню выберите язык интерфейса (2)1.3. Нажмите на клавишу «Download» (3) и сохраните файл tor-browser-2.3.25–12_ru.exe или tor-browser-2.3.25–12_en-US.exe (ru —


Установка Qt/Mac

Из книги автора

Установка Qt/Mac До установки Qt в системе Mac OS X уже должны быть установлены утилиты Xcode компании «Apple». Эти утилиты обычно находятся на компакт-диске (или DVD-диске), поставляемом с системой Mac OS X; их можно также скачать с сайта Apple Developer Connection, http://developer.apple.com.Если вы уже имеете Mac OS


Установка

Из книги автора

Установка Некогда считалось, что собственный инсталлятор – неотъемлемый атрибут каждого уважающего себя дистрибутива. Ныне столь сакрального значения ему не придаётся – удачные идеи программ установки активно заимствовались, а то и просто клонировались не только в


Установка

Из книги автора

Установка И вот настал решительный момент щелкнуть мышью по иконке Install на предмет заняться установкой системы. Она начинается с панели приглашения к оной. После приглашения можно видеть отличительные особенности инсталляции в Live-режиме:   • нет пункта выбора режимов