Makefile для упрощения синхронизации .php и .po-файлов

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

Те, кто занимаются переводом тем и плагинов , знают о том, как бывает нудно синхронизировать переводимые строки между файлами плагина и языковыми (.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.

Автор: ; опубликовано в: WordPress; метки: i18n, l10n, make, WordPress
13
Июл
2009

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

  1. как бывает нудно синхронизировать переводимые строки между файлами плагина и языковыми (.po) файлами

    почему нудно? 2 клика: открыть .po в poedit, нажать «обновить каталог». Затем осталось только переводить.

    • Sonika, когда я пытаюсь поправить чужой устаревший перевод, у меня обычно получается такая картина. Возможно, что это особенности Линуксового софта, не знаю. Конечно, можно просто поправить пути в .pot/.po-файлах. Но лично мне проще один раз скопировать Makefile, отредактировать его и не мучиться при последующих обновлениях.

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

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

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

गते गते पारगते पारसंगते बोधि स्वाहा