Rev 198 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 198 | Rev 211 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | # Makefile for various po files. | 1 | ### Makefile for GNU gettext (.po) files | 
| 2 | 2 | ||
| 3 | srcdir = . | 3 | srcdir = . | 
| 4 | targetdir= ./LocaleData | 4 | targetdir = ./LocaleData | 
| 5 | 5 | ||
| 6 | #CATALOGS = $(addsuffix .po, LINGUAS) | 6 | CATOBJEXT = .po | 
| 7 | CATALOGS = $(LINGUAS) | 7 | CATALOGS = $(addsuffix $(CATOBJEXT), $(LINGUAS)) | 
| 8 | MO_FILES = $(addsuffix .mo, $(LINGUAS)) | 8 | MO_FILES = $(addsuffix .mo, $(LINGUAS)) | 
| 9 | 9 | ||
| - | 10 | XGETTEXT = xgettext | |
| 10 | MSGMERGE = msgmerge | 11 | MSGMERGE = msgmerge | 
| 11 | MSGFMT = msgfmt | 12 | MSGFMT = msgfmt | 
| 12 | XGETTEXT = xgettext | - | |
| 13 | CATOBJEXT = .po | - | |
| 14 | - | ||
| 15 | include PACKAGE | - | |
| 16 | - | ||
| 17 | TD = $(strip $(TEXTDOMAIN)) | - | |
| 18 | 13 | ||
| - | 14 | ## Programming language: disable to let it be guessed based on filename suffix | |
| 19 | default: help | 15 | prog_language = --language=PHP | 
| 20 | 16 | ||
| 21 | all: $(TD).pot update-po update-mo install | 17 | ## Character encoding of source files: disable for ASCII | 
| - | 18 | encoding = --from-code=UTF-8 | |
| 22 | 19 | ||
| 23 | help: | - | |
| 24 | @echo "Available targets:" | - | |
| 25 | @echo " pot - remake master catalog" | - | |
| 26 | @echo " update-po - merge po files" | - | |
| 27 | @echo " update-mo - regenerate mo files" | - | |
| 28 | @echo " install - install mo files" | - | |
| 29 | @echo " all - all of the above" | - | |
| 30 | - | ||
| 31 | POTFILES = $(srcdir)/POTFILES.in \ | - | |
| 32 | $(shell cat $(srcdir)/POTFILES.in) | - | |
| 33 | - | ||
| 34 | pot: $(TD).pot | - | |
| 35 | - | ||
| 36 | clean: | - | |
| 37 | rm -f *~ *.bak *.mo | - | |
| 38 | - | ||
| 39 | # FIXME: The parameter --from-code is only needed if your sources contain | - | |
| 40 | # any 8 bit data (even in comments). UTF-8 is only a guess here, but it | - | |
| 41 | # will at least accept any 8 bit data. | - | |
| 42 | # | - | |
| 43 | # The parameter "--language=perl" is not strictly needed because the | - | |
| 44 | # source language of all our files will be auto-detected by xgettext | - | |
| 45 | # by their filename extension. You should even avoid this parameter | - | |
| 46 | # if you want to extract strings from multiple source languages. | 20 | ## Translation keyword: disable to let it be determined based on the prog. language | 
| 47 | # --keyword --keyword='_' --keyword='$$__' --keyword=__ --keyword=__x \ | 21 | # --keyword --keyword='_' --keyword='$$__' --keyword=__ --keyword=__x \ | 
| 48 | # --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn:1,2 \ | 22 | # --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn:1,2 \ | 
| 49 | # --keyword=__p:1c,2 --keyword=__np:1c,2,3 \ | 23 | # --keyword=__p:1c,2 --keyword=__np:1c,2,3 \ | 
| 50 | # --keyword=__npx:1c,2,3 --keyword=N__ --keyword=N__n:1,2 \ | 24 | # --keyword=__npx:1c,2,3 --keyword=N__ --keyword=N__n:1,2 \ | 
| 51 | # --keyword=N__p:1c,2 --keyword=N__np:1c,2,3 --keyword=%__ \ | 25 | # --keyword=N__p:1c,2 --keyword=N__np:1c,2,3 --keyword=%__ | 
| 52 | $(TD).pot: $(POTFILES) | 26 | keywords = --keyword=tr | 
| 53 | $(XGETTEXT) --output=$(srcdir)/$(TD).pox --from-code=utf-8 \ | - | |
| 54 | --add-comments=TRANSLATORS: --files-from=$(srcdir)/POTFILES.in \ | - | |
| - | 27 | ||
| 55 | --package-name="$(PACKAGE_NAME)" \ | 28 | include PACKAGE | 
| 56 | --package-version="$(PACKAGE_VERSION)" \ | - | |
| 57 | --copyright-holder="$(COPYRIGHT_HOLDER)" \ | - | |
| 58 | --msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \ | - | |
| - | 29 | ||
| 59 | rm -f $@ && mv $(TD).pox $@ | 30 | TD = $(strip $(TEXTDOMAIN)) | 
| 60 | 31 | ||
| - | 32 | srcfiles_list = $(srcdir)/POTFILES.in | |
| - | 33 | srcfiles = $(shell cat $(srcfiles_list)) | |
| - | 34 | ||
| - | 35 | .PHONY: help | |
| - | 36 | help: | |
| - | 37 | @echo 'Available targets:'; \ | |
| - | 38 | echo ' pot - remake master catalog'; \ | |
| - | 39 | echo ' update-po - merge po files'; \ | |
| - | 40 | echo ' update-mo - regenerate mo files'; \ | |
| - | 41 | echo ' install - install mo files'; \ | |
| - | 42 | echo ' all - all of the above' | |
| - | 43 | ||
| - | 44 | .PHONY: pot | |
| - | 45 | pot: $(TD).pot | |
| - | 46 | ||
| - | 47 | .PHONY: update-po | |
| - | 48 | update-po: $(CATALOGS) | |
| - | 49 | ||
| - | 50 | .PHONY: update-mo | |
| - | 51 | update-mo: $(MO_FILES) | |
| - | 52 | ||
| - | 53 | .PHONY: install | |
| 61 | install: $(MO_FILES) | 54 | install: $(MO_FILES) | 
| 62 | cd $(srcdir); \ | 55 | @cd $(srcdir); \ | 
| 63 | targetdir='$(targetdir)'; \ | 56 | targetdir='$(targetdir)'; \ | 
| 64 | languages='$(LINGUAS)'; \ | 57 | languages='$(LINGUAS)'; \ | 
| 65 | for lang in $$languages; do \ | 58 | for lang in $$languages; do \ | 
| 66 | mkdir -p "$$targetdir/$$lang/LC_MESSAGES" || exit 1; \ | - | |
| 67 | dest="$$targetdir/$$lang/LC_MESSAGES/$(TD).mo"; \ | 59 | dest="$$targetdir/$$lang/LC_MESSAGES/$(TD).mo"; \ | 
| 68 | cat="$$lang.mo"; \ | 60 | cat="$$lang.mo"; \ | 
| 69 | echo "installing $$cat as $$dest"; \ | 61 | printf "Installing \`%s' as \`%s' ... " "$$cat" "$$dest"; \ | 
| - | 62 | mkdir -p "$$targetdir/$$lang/LC_MESSAGES" || exit 1; \ | |
| 70 | cp -f $$cat $$dest && chmod 644 $$dest || exit 1; \ | 63 | cp -f "$$cat" "$$dest" && chmod 644 "$$dest" || exit 1; \ | 
| - | 64 | echo "done."; \ | |
| 71 | done | 65 | done | 
| 72 | 66 | ||
| 73 | update-mo: $(MO_FILES) | - | |
| 74 | - | ||
| 75 | update-po: | 67 | .PHONY: all | 
| 76 | $(MAKE) $(TD).pot | - | |
| 77 | cd $(srcdir); \ | - | |
| 78 | catalogs='$(CATALOGS)'; \ | - | |
| 79 | for cat in $$catalogs; do \ | - | |
| 80 | cat=`basename $$cat`; \ | - | |
| 81 | lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ | - | |
| 82 | mv $$lang.po $$lang.old.po; \ | - | |
| 83 | echo "$$lang:"; \ | - | |
| 84 | if $(MSGMERGE) $$lang.old.po $(TD).pot -o $$lang.po; then \ | - | |
| 85 | rm -f $$lang.old.po; \ | - | |
| 86 | else \ | - | |
| 87 | echo "msgmerge for $$cat failed!"; \ | - | |
| 88 | rm -f $$lang.po; \ | - | |
| 89 | mv $$lang.old.po $$lang.po; \ | - | |
| 90 | fi; \ | - | |
| 91 | done | 68 | all: install | 
| 92 | - | ||
| 93 | .SUFFIXES: | - | |
| 94 | .SUFFIXES: .po .mo | - | |
| 95 | 69 | ||
| - | 70 | $(TD).pot: $(srcfiles) | |
| - | 71 | @printf "Generating \`%s' from source files ... " "$(TD).pot"; \ | |
| - | 72 | $(XGETTEXT) \ | |
| - | 73 | --files-from='$(srcfiles_list)' \ | |
| - | 74 | --output=$(TD).pot \ | |
| - | 75 | $(prog_language) \ | |
| 96 | .po.mo: | 76 | $(encoding) \ | 
| - | 77 | --join-existing \ | |
| - | 78 | --add-comments=TRANSLATORS: \ | |
| - | 79 | $(keywords) \ | |
| - | 80 | --copyright-holder="$(COPYRIGHT_HOLDER)" \ | |
| - | 81 | --package-name="$(PACKAGE_NAME)" \ | |
| - | 82 | --package-version="$(PACKAGE_VERSION)" \ | |
| 97 | $(MSGFMT) --check --statistics --verbose -o $@ $< | 83 | --msgid-bugs-address="$(MSGID_BUGS_ADDRESS)"; \ | 
| - | 84 | echo 'done.' | |
| 98 | 85 | ||
| - | 86 | $(CATALOGS): $(TD).pot | |
| - | 87 | @printf "Updating \`%s' " "$@"; \ | |
| - | 88 | po_file="$@"; \ | |
| - | 89 | 	lang="$${po_file%$(CATOBJEXT)}"; \
 | |
| - | 90 | mv "$$lang.po" "$$lang.old.po"; \ | |
| - | 91 | if $(MSGMERGE) -o "$$lang.po" "$$lang.old.po" "$(TD).pot"; then \ | |
| - | 92 | rm -f "$$lang.old.po"; \ | |
| - | 93 | else \ | |
| - | 94 | echo >&2 "$(MSGMERGE) for \`$@' failed!"; \ | |
| - | 95 | rm -f "$$lang.po"; \ | |
| - | 96 | mv "$$lang.old.po" "$$lang.po"; \ | |
| - | 97 | fi | |
| - | 98 | ||
| - | 99 | $(MO_FILES): $(CATALOGS) | |
| - | 100 | @printf "Generating message catalog \`%s' ... " "$@";\ | |
| - | 101 | mo_file="$@"; \ | |
| - | 102 | 	po_file="$${mo_file%.mo}.po"; \
 | |
| - | 103 | $(MSGFMT) --check --statistics --verbose -o "$@" "$$po_file" | |
| 99 | 104 | ||