2006-12-29 05:38:40 +01:00
# List here all source files with translatable strings.
POTFILES = $( sort $( shell find ../IkiWiki -type f -name \* .pm) ) \
2008-08-22 04:49:50 +02:00
../ikiwiki.in ../IkiWiki.pm ../auto.setup
2006-12-29 05:38:40 +01:00
POFILES = $( wildcard *.po)
MOFILES = $( POFILES:.po= .mo)
2009-08-15 20:10:39 +02:00
# Translated underlays can only be generated if po4a is available.
TRANSLATED_UNDERLAYS = $( shell if perl -e 'use Locale::Po4a::Common' 2>/dev/null; then echo ../underlays/locale; fi )
all : ikiwiki .pot mo $( TRANSLATED_UNDERLAYS )
2008-03-21 21:32:23 +01:00
mo : $( MOFILES )
2006-12-29 05:38:40 +01:00
install : all
2009-07-21 13:17:24 +02:00
# Normal mo files for program translation.
2006-12-29 05:38:40 +01:00
for file in $( MOFILES) ; do \
lang = ` echo $$ file | sed 's/\.mo//' ` ; \
install -d $( DESTDIR) $( PREFIX) /share/locale/$$ lang/LC_MESSAGES/; \
install -m 0644 $$ file $( DESTDIR) $( PREFIX) /share/locale/$$ lang/LC_MESSAGES/ikiwiki.mo; \
done
2009-07-21 13:17:24 +02:00
# Underlay translation via po files that go in special per-language
# underlays.
for file in ` cd underlays && find . -type f -name \* .po` ; do \
2009-07-21 16:58:18 +02:00
lang = ` echo $$ file | sed -e 's/.po$$//' -e 's/.*\\.//' ` ; \
dir = ` dirname " $( DESTDIR) $( PREFIX) /share/ikiwiki/po/ $$ lang/ $$ file " ` ; \
2009-07-21 13:17:24 +02:00
install -d $$ dir; \
install -m 0644 underlays/$$ file $$ dir; \
done
2006-12-29 05:38:40 +01:00
ikiwiki.pot : $( POTFILES )
2007-02-20 05:10:31 +01:00
@if perl -e '($$ver)=`xgettext -V | head -n 1`=~/.*\s+([0-9]+\.[0-9]+)/; die "gettext $$ver too old, not updating the pot file\n" if $$ver < 0.16' ; then \
echo "Rebuilding the pot file" ; \
2008-08-27 21:16:02 +02:00
xgettext --from-code= UTF-8 $( POTFILES) -o ikiwiki.pot -Lperl --add-comments= translators; \
2007-02-20 05:10:31 +01:00
fi
2006-12-29 05:38:40 +01:00
clean :
2009-07-20 07:20:13 +02:00
rm -f $( MOFILES) messages messages.mo *_stamp
2009-08-16 00:28:51 +02:00
rm -rf html underlays/.ikiwiki $( TRANSLATED_UNDERLAYS)
2009-07-21 13:17:24 +02:00
find underlays -name \* .mdwn -or -name \* .pot | xargs rm -f
2006-12-29 05:38:40 +01:00
%.mo : %.po
msgfmt -o $@ $<
2008-09-05 18:37:29 +02:00
%.po : ikiwiki .pot
2006-12-29 05:38:40 +01:00
@echo -n " Merging ikiwiki.pot and $@ "
2007-01-03 21:01:36 +01:00
@msgmerge $@ ikiwiki.pot -o $@ .new 2>& 1
2007-02-21 00:13:49 +01:00
# Typically all that changes was a date or line number. I'd prefer not to
# commit such changes, so detect and ignore them.
@if [ " `diff $@ $@ .new | grep '[<>]' | grep -v '[<>] #:' | wc -l` " -ne 2 ] ; then \
2006-12-29 05:38:40 +01:00
mv -f $@ .new $@ ; \
else \
rm -f $@ .new; \
fi
2007-01-03 21:01:36 +01:00
@msgfmt --statistics $@ 2>& 1
2006-12-29 05:38:40 +01:00
check :
@for file in $( POFILES) ; do \
lang = ` echo $$ file | sed 's/\.po//' ` ; \
printf " $$ lang: " ; \
msgfmt -o /dev/null -c -v --statistics $$ lang.po; \
done
2009-07-20 07:20:13 +02:00
underlays_copy_stamp :
# copy all the files we want to translate into a srcdir
for file in ` cd ..; find underlays -follow -name \* .mdwn` ; do \
install -d $$ ( dirname $$ file) ; \
cp -aL ../$$ file $$ file 2>/dev/null || \
install -m 644 ../$$ file $$ file; \
done
install -d underlays/directives/ikiwiki/directive
for file in ` cd ..; find doc/ikiwiki/directive/ -maxdepth 1 -type f` ; do \
cp -a ../$$ file underlays/directives/ikiwiki/directive || \
install -m 644 ../$$ file underlays/directives/ikiwiki/directive; \
done
2009-07-20 07:24:22 +02:00
install -d underlays/empty
2009-07-20 07:20:13 +02:00
touch $@
2009-07-21 13:28:19 +02:00
underlays : ../ikiwiki .out underlays_copy_stamp
2009-07-20 07:20:13 +02:00
../ikiwiki.out -libdir .. -setup underlay.setup -refresh
2009-07-21 13:28:19 +02:00
../ikiwiki.out : ../Makefile
make -C .. ikiwiki.out
../Makefile : ../Makefile .PL
cd .. && ./Makefile.PL
2009-08-15 20:10:39 +02:00
$(TRANSLATED_UNDERLAYS) : po 2wiki_stamp
2009-07-20 07:20:13 +02:00
po2wiki_stamp : po 2wiki underlays_copy_stamp
PERL5LIB = .. ./po2wiki underlay.setup
touch $@
.PHONY : underlays