Автоматическая синхронизация строк для перевода между PHP и .po-файлами

Те, кто занимаются переводом тем и плагинов WordPress, знают о том, как бывает нудно синхронизировать переводимые строки между файлами плагина и языковыми (.po) файлами. И очень немногие люди из тех, с кем я разговаривал, знают о программе msgmerge, которая позволяет частично автоматизировать процесс.

Я хочу поделиться небольшим Makefile‘ом, который позволяет полностью автоматизировать синхронизацию (автоматический перевод, к сожалению, пока не реализован).

[-]
View Code GNU make
# PHP_FILES задаёт пути к PHP-файлам, содержащим переводимые строки
PHP_FILES := $(wildcard ../*.php) $(wildcard ../lib/*.php) $(wildcard ../pages/*.php)
# Замените DOMAIN доменом перевода (второй аргумент, передаваемый в функцию __())
PO_FILES := $(wildcard DOMAIN-*.po)
MO_FILES := $(patsubst %.po,%.mo,$(PO_FILES))

# Замените DOMAIN доменом перевода (второй аргумент, передаваемый в функцию __())
POT := DOMAIN.pot

XGETTEXT := xgettext
MSGFMT := msgfmt
MSGMERGE := msgmerge
XGETTEXT_OPTIONS := --default-domain=DOMAIN --language=php \
    --keyword=__ \
    --keyword=_e \
    --keyword=_c \
    --keyword=esc_attr__ \
    --keyword=esc_html__ \
    --keyword=esc_attr_e \
    --keyword=esc_html_e \
    --keyword=_x \
    --keyword=esc_attr_x \
    --keyword=_n \
    --keyword=_nc \
    --keyword=_nx \
    --from-code=UTF-8 --msgid-bugs-address='your@email.here'

.PHONY: all
all: $(POT) $(MO_FILES)

$(MO_FILES): %.mo: %.po
    $(MSGFMT) -o$@ $<

$(PO_FILES): %: $(POT)
    $(MSGMERGE) -U $@ $(POT)
    touch $@

$(POT): $(PHP_FILES)
    $(XGETTEXT) $(XGETTEXT_OPTIONS) $(PHP_FILES) --output="$@"

.PHONY: clean
clean:
    -rm -f $(POT) $(MO_FILES)

Первый вызов make сгенерирует .pot-файл, последующие вызовы make будут обновлять .pot и .po-файлы и генерировать .mo-файлы из .po.

Добавить в закладки

Связанные записи

13
Июль
2009

Комментарии к статье «Makefile для упрощения синхронизации .php и .po-файлов» (2)  »

  1. ivan says:

    класс :)

Подписаться на RSS-ленту комментариев к статье «Makefile для упрощения синхронизации .php и .po-файлов» Trackback URL: http://blog.sjinks.org.ua/wordpress/588-makefile-to-synchronize-php-po-files/trackback/

Оставить комментарий к записи «Makefile для упрощения синхронизации .php и .po-файлов»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя