Linux программирование в примерах
Шрифт:
6. Используя
7. Опишите преимущества и недостатки использования
8. Напишите свою версию
9. Программы, использующие
10. (Трудное) Даже с урезанной очисткой при обработке сигнала все еще имеется состояние гонки. Есть небольшое окно между созданием временного файла функцией
11. Попробуйте откомпилировать и запустить
12. Посмотрите файл
13. Посмотрите справочную страницу lrand48(3) на системе GNU/Linux или System V. Выглядит ли этот интерфейс более простым или трудным для использования, чем
14. Возьмите
15. (Трудное) Почему GLIBC нужны указатели на альтернативные версии функций стандартных каталогов и
16. Измените
17. Стандартная
18. Посмотрите справочную страницу grep(1). Добавьте к
19. Напишите простую замещающую программу:
Она должна читать текстовые строки из указанных файлов или из стандартного ввода, если они не указаны. Каждая строка должна сравниваться на соответствие шаблону. Если обнаружено соответствие, оно должно замещаться подстановкой.
Если указана опция
Глава 13
Интернационализация и локализация
Ранние вычислительные системы обычно для своего вывода (приглашений, сообщений об ошибках) и ввода (ответы на запросы, такие, как «да» и «нет») использовали английский язык. Это было верно для систем Unix вплоть до середины 1980-х. В конце 80-х, начиная с первого стандарта ISO для С и продолжая стандартами POSIX 1990-х и современным стандартом POSIX, были разработаны возможности для работы программ на нескольких языках без необходимости поддержки нескольких версий одной и той же программы. Данная глава описывает,
как современные программы должны справляться с многоязычными проблемами.13.1. Введение
Центральной концепцией является окружение, место, в котором работает программа. Локали содержат в себе следующие сведения: локальный набор символов; сведения о формате отображения даты и времени; форматирование и отображение денежных сумм; форматирование и отображение числовых значений (с или без разделителей тысяч, какой символ используется в качестве разделителя дробной части числа и т.д.).
Интернационализация является процессом написания (или изменения) программы таким образом, что она может работать с различными локалями. Локализация является процессом приспособления интернационализированной программы для определенной локали. Часто вместо этих терминов используют сокращения i18n и l10n соответственно. (Числовое значение указывает, сколько букв в середине слова, а эти сокращения имеют небольшое сходство с полными терминами. [136] Их также гораздо легче набирать.) Другим часто встречающимся термином является поддержка родного языка, обозначаемая как NLS [137] ; NLS обозначает программную поддержку для i18n и l10n.
136
От английских слов i(nternationalizatio)n и l(ocalizatio)n —Примеч. перев.
137
NLS — native language support — Примеч. перев.
Кроме того, некоторые люди используют термин глобализация (сокращенно g10n) для обозначения процесса подготовки всех возможных локализаций для интернационализированной программы. Другими словами, подготовки программы для глобального использования.
Возможности NLS существуют на двух уровнях. Первым уровнем является библиотека С. Она предоставляет сведения о локали; процедуры для обработки большей части низкоуровневых подробностей работы по форматированию даты/времени, числовых и денежных значений; и процедуры для корректного для данной локали сопоставления регулярных выражений и классификации символов и сравнений. Именно возможности библиотеки появляются в стандартах С и POSIX.
На уровне приложения GNU
138
Существует более ранний дизайн, известный как
В дополнение к локалям и
13.2. Локали и библиотека С
Специфичное для локали поведение управляется посредством установки переменных окружения, описывающих, какую локаль (локали) использовать для той или иной информации. Число доступных локалей, предлагаемых каждой конкретной операционной системой, колеблется от менее чем десяти на некоторых коммерческих системах Unix до сотен локалей на системах GNU/Linux. ('