Руководство FreeBSD по созданию портов
Пред. | Глава 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` и посмотреть, куда ваш порт собирается установить файлы каталогов сообщений для единственного в своем роде языка.

Пред. | Начало | След.
Использование GNU autotools | Уровень выше | Использование `perl`

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