Makefile
obj_locale = ru_RU
target = populate
image_size = 16 32 48
_bindir = /usr/bin/
_desktopdir = /usr/share/applications/
_iconsdir = /usr/share/icons/hicolor/
all: build msgfmt convert_image
build:
valac `find src/ -type f` --pkg gee-1.0 --pkg gtk+-3.0 -X -lm -o $(target) -X -DGETTEXT_PACKAGE="populate"
msgfmt:
for j in $(obj_locale); do \
msgfmt po/$$j.po -o $$j.mo;\
mkdir -p locale/$$j/LC_MESSAGES/;\
mv $$j.mo locale/$$j/LC_MESSAGES/$(target).mo;\
done
gen_pot:
xgettext --language=C --keyword=_ --escape --sort-output --from-code=utf-8 -o $(target).pot `find src/ -type f`
msgmerge: gen_pot
for j in `find po/*.po -type f`; do \
msgmerge -U $$j $(target).pot ;\
done
msginit: gen_pot
mkdir -p po
msginit -i $(target).pot -o po/new.po;
convert_image:
for i in $(image_size); do \
convert $(target).svg -resize $$i'x'$$i $(target)-$$i'x'$$i.svg ;\
done
install:
install -Dp -m0755 $(target) $(DESTDIR)$(_bindir)$(target)
install -Dp -m0644 $(target).desktop $(DESTDIR)$(_desktopdir)$(target).desktop
for i in $(image_size); do \
convert $(target).svg -resize $$i'x'$$i $(target)-$$i'x'$$i.svg
install -Dp -m0644 $(target)-$(i)x$(i).svg $(DESTDIR)$(_iconsdir)/$(i)x$(i)/apps/$(target).svg ;\
done
clean:
rm -Rfv locale/ $(target)-*.svg
Я так вижу это. Т.е. есть каталог po в корне, в котором лежат файлы типа Локаль.po. Например ru_Ru.po ru_Ua.po
Единственный недостаток этого Makefile вижу в том, что при добавлении новой локали нужно в переменную obj_locale добавлять эти локали. Не могу сообразить как сделать автоматом масссив локалей на основании, имеющихся файлов po.
Разберём Makefile. Вверху объявляются переменные. Далее идут возможные опции команды make:
all - действие при отсутствии опций. У нас выполняются: build, msgfmt и convert_image
build - осуществляем компиляцию
msgfmt - Делаем .mo и раскидываем по директориям соответственно их локали
gen_pot - генерируем pot файл
msgmerge - Предварительно выполняем gen_pot и обновляем po файлы на основе pot
msginit - Предварительно выполняем gen_pot и создаём новый po файл на его основе
convert_image - конвертируем иконку в соответствии со стандартом в 16x16, 32x32, 48x48
install - устанавливаем программу
uninstall - удаляем программу
clean - возвращаем девственный вид директории
По-моему, неплохой универсальный Makefile для будущих ваших программ

Upd1: Поправил Makefile