Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Топ:
Оснащения врачебно-сестринской бригады.
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Дисциплины:
2021-01-29 | 77 |
5.00
из
|
Заказать работу |
|
|
Перевод во множественном числе доставляет дополнительные трудности. Простой код мог бы выглядеть примерно так:
Это подходит для английского языка, но перевод становится трудным. Во‑первых, во многих языках множественное число не образуется с такой же легкостью, как в английском (добавлением суффикса для большинства слов). Во‑вторых, во многих языках, особенно в Восточной Европе, имеются несколько форм множественного числа, каждая из которых указывает на то, сколько объектов обозначает форма. Соответственно даже код наподобие следующего не будет достаточным:
Решением является параллельный набор процедур специально для форматирования множественных значений:
Помимо первоначального аргумента, эти функции принимают дополнительные аргументы:
Строка по умолчанию для использования в качестве множественного числа. Вскоре будут примеры.
Число имеющихся элементов.
Список сообщений каждой локали указывает, как переводить множественные числа.[145] Функция (и ее варианты) проверяет и на основании спецификации в списке сообщений возвращает соответствующий перевод. Если в списке нет перевода для, или находясь в локали «С», возвращает, если ''; в противном случае она возвращает. Таким образом, наш пример ошибочных слов выглядит следующим образом:
Обратите внимание, что должен быть передан для выбора форматирующей строки, а затем для форматирования. Вдобавок, будьте осмотрительны и не используйте макрос или выражение, значение которого каждый раз изменяется, как в случае ''! Такое может случиться, если вы осуществляете глобальное редактирование, добавляя вызовы и не обращая на это внимания.
|
Упрощение использования
Вызов в исходном коде программы служит двум целям. Во‑первых, он осуществляет перевод во время исполнения, что является в конце концов главным. Однако, он служит также для отметки строк, которые нужно перевести. Утилита читает исходный код программы и извлекает все оригинальные строки, которые нужно перевести. (Далее в главе мы кратко рассмотрим это.)
Рассмотрим все‑таки случай, когда статические строки не используются непосредственно:
Здесь мы хотели бы иметь возможность вывести переводы строк об авторских правах, если они доступны. Однако, как извлекающее устройство предполагает найти эти строки? Мы не можем заключить их в вызовы, поскольку это не будет работать во время компиляции:
/
13.3.4.1. Переносимые программы: ""
Здесь мы предполагаем, что вы хотите написать программу, которая может использоваться вместе с библиотекой GNU на любой системе Unix, а не только GNU/Linux. Следующий раздел описывает, что сделать для программ только для GNU/Linux.
Пометка строк включает два шага. Первый заключается в использовании вспомогательного заголовка, который поставляется с дистрибутивом GNU. Этот файл обрабатывает несколько проблем переносимости и компиляции, упрощая использование в ваших собственных программах:
Если макрос не определен[146] или установлен в ноль, развертывает вызовы в первый аргумент. Это делает возможным перенос кода, использующего, на системы, в которых не установлены ни GNU, ни собственная их версия. Помимо прочего, этот заголовочный файл определяет следующий макрос:
Комментарий самодостаточен. С помощью этого макроса мы можем теперь перейти ко второму шагу. Мы перепишем код следующим образом:
Обратите внимание, что мы сделали два изменения. Во‑первых, теперь является одной длинной строкой, созданной с использованием возможности конкатенации строк стандартного C. Эта простая строка затем включена в вызов. Нам нужна одна строка, чтобы легальности могли быть переведены в виде одного элемента
|
Второе изменение заключается в непосредственном выводе перевода в виде одной строки в.
К этому времени вы, возможно, думаете: «Вот здорово, набирать каждый раз '' довольно неприятно». Ну, вы правы. Это не только создает лишнюю работу по набиванию, но также и затрудняет чтение исходного кода. Соответственно, когда вы используете заголовочный файл, руководство GNU рекомендует включить два других макроса с именами и следующим образом:
Такой подход снижает накладные расходы по использованию всего лишь тремя дополнительными символами для переводимой строковой константы и всего лишь четырьмя символами для статических строк:
Эти макросы скромны, и на практике все GNU программы, использующие GNU, следуют этому соглашению. Если вы собираетесь использовать GNU, вам тоже нужно следовать этому соглашению.
Только GLIBC:
Для программ, которые будут использоваться лишь на системах с GLIBC, использование заголовочных файлов и макросов похоже, но проще:
Как мы видели ранее, заголовочный файл объявляет и другие функции. Вам все равно нужно определять и, но не нужно беспокоиться о или включении с исходным кодом вашей программы файла.
|
|
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!