Subversion Repositories LCARS

Compare Revisions

Last modification

Ignore whitespace Rev 211 → Rev 210

/branches/live/i18n/Makefile
1,103 → 1,98
### Makefile for GNU gettext (.po) files
# Makefile for various po files.
 
srcdir = .
targetdir = ./LocaleData
targetdir= ./LocaleData
 
CATOBJEXT = .po
CATALOGS = $(addsuffix $(CATOBJEXT), $(LINGUAS))
#CATALOGS = $(addsuffix .po, LINGUAS)
CATALOGS = $(LINGUAS)
MO_FILES = $(addsuffix .mo, $(LINGUAS))
 
XGETTEXT = xgettext
MSGMERGE = msgmerge
MSGFMT = msgfmt
XGETTEXT = xgettext
CATOBJEXT = .po
 
## Programming language: disable to let it be guessed based on filename suffix
prog_language = --language=PHP
 
## Character encoding of source files: disable for ASCII
encoding = --from-code=UTF-8
 
## Translation keyword: disable to let it be determined based on the prog. language
# --keyword --keyword='_' --keyword='$$__' --keyword=__ --keyword=__x \
# --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn:1,2 \
# --keyword=__p:1c,2 --keyword=__np:1c,2,3 \
# --keyword=__npx:1c,2,3 --keyword=N__ --keyword=N__n:1,2 \
# --keyword=N__p:1c,2 --keyword=N__np:1c,2,3 --keyword=%__
keywords = --keyword=tr
 
include PACKAGE
 
TD = $(strip $(TEXTDOMAIN))
 
srcfiles_list = $(srcdir)/POTFILES.in
srcfiles = $(shell cat $(srcfiles_list))
default: help
 
.PHONY: help
all: $(TD).pot update-po update-mo install
 
help:
@echo 'Available targets:'; \
echo ' pot - remake master catalog'; \
echo ' update-po - merge po files'; \
echo ' update-mo - regenerate mo files'; \
echo ' install - install mo files'; \
echo ' all - all of the above'
@echo "Available targets:"
@echo " pot - remake master catalog"
@echo " update-po - merge po files"
@echo " update-mo - regenerate mo files"
@echo " install - install mo files"
@echo " all - all of the above"
 
.PHONY: pot
pot: $(TD).pot
POTFILES = $(srcdir)/POTFILES.in \
$(shell cat $(srcdir)/POTFILES.in)
 
.PHONY: update-po
update-po: $(CATALOGS)
pot: $(TD).pot
 
.PHONY: update-mo
update-mo: $(MO_FILES)
clean:
rm -f *~ *.bak *.mo
 
.PHONY: install
# FIXME: The parameter --from-code is only needed if your sources contain
# any 8 bit data (even in comments). UTF-8 is only a guess here, but it
# will at least accept any 8 bit data.
#
# The parameter "--language=perl" is not strictly needed because the
# source language of all our files will be auto-detected by xgettext
# by their filename extension. You should even avoid this parameter
# if you want to extract strings from multiple source languages.
# --keyword --keyword='_' --keyword='$$__' --keyword=__ --keyword=__x \
# --keyword=__n:1,2 --keyword=__nx:1,2 --keyword=__xn:1,2 \
# --keyword=__p:1c,2 --keyword=__np:1c,2,3 \
# --keyword=__npx:1c,2,3 --keyword=N__ --keyword=N__n:1,2 \
# --keyword=N__p:1c,2 --keyword=N__np:1c,2,3 --keyword=%__ \
$(TD).pot: $(POTFILES)
$(XGETTEXT) --output=$(srcdir)/$(TD).pox --from-code=utf-8 \
--add-comments=TRANSLATORS: --files-from=$(srcdir)/POTFILES.in \
--package-name="$(PACKAGE_NAME)" \
--package-version="$(PACKAGE_VERSION)" \
--copyright-holder="$(COPYRIGHT_HOLDER)" \
--msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \
rm -f $@ && mv $(TD).pox $@
 
install: $(MO_FILES)
@cd $(srcdir); \
cd $(srcdir); \
targetdir='$(targetdir)'; \
languages='$(LINGUAS)'; \
for lang in $$languages; do \
mkdir -p "$$targetdir/$$lang/LC_MESSAGES" || exit 1; \
dest="$$targetdir/$$lang/LC_MESSAGES/$(TD).mo"; \
cat="$$lang.mo"; \
printf "Installing \`%s' as \`%s' ... " "$$cat" "$$dest"; \
mkdir -p "$$targetdir/$$lang/LC_MESSAGES" || exit 1; \
cp -f "$$cat" "$$dest" && chmod 644 "$$dest" || exit 1; \
echo "done."; \
echo "installing $$cat as $$dest"; \
cp -f $$cat $$dest && chmod 644 $$dest || exit 1; \
done
 
.PHONY: all
all: install
update-mo: $(MO_FILES)
 
$(TD).pot: $(srcfiles)
@printf "Generating \`%s' from source files ... " "$(TD).pot"; \
$(XGETTEXT) \
--files-from='$(srcfiles_list)' \
--output=$(TD).pot \
$(prog_language) \
$(encoding) \
--join-existing \
--add-comments=TRANSLATORS: \
$(keywords) \
--copyright-holder="$(COPYRIGHT_HOLDER)" \
--package-name="$(PACKAGE_NAME)" \
--package-version="$(PACKAGE_VERSION)" \
--msgid-bugs-address="$(MSGID_BUGS_ADDRESS)"; \
echo 'done.'
update-po:
$(MAKE) $(TD).pot
cd $(srcdir); \
catalogs='$(CATALOGS)'; \
for cat in $$catalogs; do \
cat=`basename $$cat`; \
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
mv $$lang.po $$lang.old.po; \
echo "$$lang:"; \
if $(MSGMERGE) $$lang.old.po $(TD).pot -o $$lang.po; then \
rm -f $$lang.old.po; \
else \
echo "msgmerge for $$cat failed!"; \
rm -f $$lang.po; \
mv $$lang.old.po $$lang.po; \
fi; \
done
 
$(CATALOGS): $(TD).pot
@printf "Updating \`%s' " "$@"; \
po_file="$@"; \
lang="$${po_file%$(CATOBJEXT)}"; \
mv "$$lang.po" "$$lang.old.po"; \
if $(MSGMERGE) -o "$$lang.po" "$$lang.old.po" "$(TD).pot"; then \
rm -f "$$lang.old.po"; \
else \
echo >&2 "$(MSGMERGE) for \`$@' failed!"; \
rm -f "$$lang.po"; \
mv "$$lang.old.po" "$$lang.po"; \
fi
.SUFFIXES:
.SUFFIXES: .po .mo
 
$(MO_FILES): $(CATALOGS)
@printf "Generating message catalog \`%s' ... " "$@";\
mo_file="$@"; \
po_file="$${mo_file%.mo}.po"; \
$(MSGFMT) --check --statistics --verbose -o "$@" "$$po_file"
.po.mo:
$(MSGFMT) --check --statistics --verbose -o $@ $<