]>
Commit | Line | Data |
---|---|---|
a2b18c57 | 1 | # this is the makefile for generating wxstd.pot message catalog file and |
c7206e64 VS |
2 | # building lang.mo files from the translated lang.po catalogs |
3 | ||
a2b18c57 | 4 | # this makefile may be invoked to build either wxstd.pot or any lang.mo |
c7206e64 VS |
5 | |
6 | # Autodetect the languages we support. Currently this relies on make | |
7 | # being called with this dir as the cwd, but if we generate this file | |
8 | # with configure an explicit path should be specified -- RL. | |
9 | ||
a2b18c57 VS |
10 | WX_LINGUAS := $(shell ls *.po */*.po 2> /dev/null | sed 's/wxstd.pot//g' | sed 's/.po//g') |
11 | WX_LINGUAS_UPDATE := $(shell ls *.po 2> /dev/null | sed 's/wxstd.pot//g' | sed 's/.po//g') | |
c7206e64 VS |
12 | |
13 | # the programs we use (TODO: use configure to detect them) | |
14 | MSGFMT=msgfmt --verbose | |
15 | MSGMERGE=msgmerge | |
16 | XGETTEXT=xgettext | |
17 | XARGS=xargs | |
18 | ||
19 | # common xgettext args: C++ syntax, use the specified macro names as markers | |
15d06954 | 20 | XGETTEXT_ARGS=-C -k_ -kwxPLURAL:1,2 -kwxTRANSLATE -s -j |
c7206e64 VS |
21 | |
22 | # implicit rules | |
23 | %.mo: %.po | |
c99d2f25 | 24 | $(MSGFMT) -c -o $@ $< |
c7206e64 | 25 | |
a2b18c57 | 26 | # a PO file must be updated from wxstd.pot to include new translations |
04458ef4 VS |
27 | # (but not manually maintained platform-specific files like msw/it.po) |
28 | $(foreach lang,$(WX_LINGUAS_UPDATE),$(lang).po): wxstd.pot | |
29 | ||
30 | %.po: | |
a2b18c57 | 31 | if [ -f $@ ]; then $(MSGMERGE) $@ wxstd.pot > $@.new && mv $@.new $@; else cp wxstd.pot $@; fi |
c7206e64 | 32 | |
a2b18c57 | 33 | wxstd.pot: |
c7206e64 | 34 | touch $@ |
a2b18c57 VS |
35 | find ../include -name "*.h" | $(XARGS) $(XGETTEXT) $(XGETTEXT_ARGS) -o wxstd.pot |
36 | find ../src -name "*.cpp" | $(XARGS) $(XGETTEXT) $(XGETTEXT_ARGS) -o wxstd.pot | |
c7206e64 VS |
37 | |
38 | allpo: force-update | |
62603868 | 39 | @-for t in $(WX_LINGUAS_UPDATE); do $(MAKE) $$t.po; done |
c7206e64 VS |
40 | |
41 | allmo: | |
42 | @for t in $(WX_LINGUAS); do $(MAKE) $$t.mo; done | |
43 | ||
44 | force-update: | |
a2b18c57 | 45 | $(RM) wxstd.pot |
c7206e64 | 46 | |
2ff4ddf8 VZ |
47 | check: |
48 | @for t in $(WX_LINGUAS); do \ | |
49 | $(MSGFMT) -c -o /dev/null $$t.po 2>/dev/null || echo "$$t.po is BROKEN."; \ | |
50 | done | |
51 | ||
15d06954 | 52 | # print out the percentage of the translated strings |
c19b738e | 53 | stats: FORCE |
ad749aaf VZ |
54 | @for i in $(WX_LINGUAS); do \ |
55 | x=`$(MSGFMT) -o /dev/null "$$i.po" 2>&1 | sed -e 's/[,\.]//g' \ | |
93ff73b3 MB |
56 | -e 's/\([0-9]\+\) translated messages\?/TR=\1/' \ |
57 | -e 's/\([0-9]\+\) fuzzy translations\?/FZ=\1/' \ | |
58 | -e 's/\([0-9]\+\) untranslated messages\?/UT=\1/'`; \ | |
ad749aaf VZ |
59 | TR=0 FZ=0 UT=0; \ |
60 | eval $$x; \ | |
61 | TOTAL=`expr $$TR + $$FZ + $$UT`; \ | |
62 | echo "$$i.po `expr 100 "*" $$TR / $$TOTAL`% of $$TOTAL strings"; \ | |
63 | done | |
64 | ||
c19b738e VZ |
65 | FORCE: |
66 | ||
67 | .PHONY: allpo allmo force-update percentage FORCE | |
c7206e64 | 68 |