6.5. Использование GNU `gettext`
Пред. | Глава 6. Особые соглашения | След.

## 6.5. Использование GNU `gettext`

### 6.5.1. Простой вариант использования

Если для вашего порта требует `gettext`, просто установите переменную `USE_GETTEXT` в значение `yes`, и в ваш порт добавится зависимость от `devel/gettext`. Кроме того, в `USE_GETTEXT` можно установить требуемую версию библиотеки `libintl`, основного компонента `gettext`, но такой механизм лучше не использовать. Ваш порт должен работать и с текущей версией `devel/gettext`.

Довольно распространенным случаем является использование в порте `gettext` и `configure`. Как правило, GNU `configure` способен находить `gettext` автоматически. Если он все же не сможет это сделать, то подсказки для размещения `gettext` можно передать через переменные окружения `CPPFLAGS` и `LDFLAGS`:

USE_GETTEXT= yes CPPFLAGS+= -I${LOCALBASE}/include LDFLAGS+= -L${LOCALBASE}/lib GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="${CPPFLAGS}" \ LDFLAGS="${LDFLAGS}"

Of course, the code can be more compact if there are no more flags to pass to `configure`:

USE_GETTEXT= yes GNU_CONFIGURE= yes CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \ LDFLAGS="-L${LOCALBASE}/lib"

### 6.5.2. Оптимальное использование

Некоторые программные продукты позволяют отключать NLS, к примеру через передачу параметра `--disable-nls` сценарию `configure`. В этом случае, ваш порт должен использовать `gettext` в зависимости от статуса переключателя `WITHOUT_NLS`. Для портов небольшой или средней сложности вы можете полагаться на следующую идиому:

GNU_CONFIGURE= yes .if !defined(WITHOUT_NLS) USE_GETTEXT= yes PLIST_SUB+= NLS="" .else CONFIGURE_ARGS+= --disable-nls PLIST_SUB+= NLS="@comment " .endif

Следующий пункт в вашем списке дел разобраться, чтобы файлы каталога сообщения включались в список упаковки по условию. Часть, входящая в `Makefile`, уже обеспечена этой идиомой. Остальное объясняется в главе продвинутые практики `pkg-plist`. Вкратце, каждое вхождение `%%NLS%%` в `pkg-plist` будет заменено на «`@comment` », если NLS выключен, или пустой строкой, если включен. В результате строки, предваряемые `%%NLS%%`, станут комментариями в итоговом листе упаковки, если NLS выключен; иначе, префикс будет просто удален. Всё, что вам нужно, это вставить `%%NLS%%` перед каждым путем к файлу каталога сообщений в `pkg-plist`. Например:

%%NLS%%share/locale/fr/LC_MESSAGES/foobar.mo %%NLS%%share/locale/no/LC_MESSAGES/foobar.mo

В особо сложных случаях вам понадобиться использовать более продвинутые техники, чем данный рецепт, такие как динамические списки упаковки.

### 6.5.3. Управление каталогами сообщений

Существует момент, который следует учитывать при установке файлов каталогов сообщений. Целевые каталоги для размещения, расположенные под ``LOCALBASE`/share/locale`, редко когда должны создаваться и удаляться вашим портом. Для наиболее популярных языков имеются собственные каталоги, перечисленные в `/etc/mtree/BSD.local.dist`; таким образом, они включены в основную систему. Каталоги для множества других языков управляются с помощью порта `devel/gettext`. Возможно, вам понадобиться обратить внимание на его `pkg-plist` и посмотреть, куда ваш порт собирается установить файлы каталогов сообщений для единственного в своем роде языка.

Пред. | Наверх | След.
6.4. Использование GNU autotools | Начало | 6.6. Использование Perl

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.