Makefile для упрощения синхронизации .php и .po-файлов
Автоматическая синхронизация строк для перевода между PHP и .po-файлами
Те, кто занимаются переводом тем и плагинов WordPress, знают о том, как бывает нудно синхронизировать переводимые строки между файлами плагина и языковыми (.po) файлами. И очень немногие люди из тех, с кем я разговаривал, знают о программе msgmerge, которая позволяет частично автоматизировать процесс.
Я хочу поделиться небольшим Makefile‘ом, который позволяет полностью автоматизировать синхронизацию (автоматический перевод, к сожалению, пока не реализован).
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.
Июл
2009
Комментарии к статье «Makefile для упрощения синхронизации .php и .po-файлов» (4) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Makefile для упрощения синхронизации .php и .po-файлов»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


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