Работа с множественными числами: — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Работа с множественными числами:

2021-01-29 77
Работа с множественными числами: 0.00 из 5.00 0 оценок
Заказать работу

 

Перевод во множественном числе доставляет дополнительные трудности. Простой код мог бы выглядеть примерно так:

 

Это подходит для английского языка, но перевод становится трудным. Во‑первых, во многих языках множественное число не образуется с такой же легкостью, как в английском (добавлением суффикса для большинства слов). Во‑вторых, во многих языках, особенно в Восточной Европе, имеются несколько форм множественного числа, каждая из которых указывает на то, сколько объектов обозначает форма. Соответственно даже код наподобие следующего не будет достаточным:

 

 

Решением является параллельный набор процедур специально для форматирования множественных значений:

 

Помимо первоначального аргумента, эти функции принимают дополнительные аргументы:

 

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

 

Число имеющихся элементов.

Список сообщений каждой локали указывает, как переводить множественные числа.[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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.