diff options
Diffstat (limited to 'common/entities/Makefile')
-rw-r--r-- | common/entities/Makefile | 181 |
1 files changed, 168 insertions, 13 deletions
diff --git a/common/entities/Makefile b/common/entities/Makefile index b36a116..3c5b02c 100644 --- a/common/entities/Makefile +++ b/common/entities/Makefile @@ -1,24 +1,179 @@ PRI_LANG=en +OTHERS =it -all: entities-it.ent +####################################################################### +# Populate make(1) with only those suffixes of interest to us +# +.SUFFIXES: +.SUFFIXES: .ent .po .pot .xml .xsl +# +####################################################################### -clean: +####################################################################### +# Define macros to explicitly instantiate the files to work with +# +OTHERXMLFILES=$(foreach L,${OTHERS},entities-${L}.xml) +POFILES=$(foreach L,${OTHERS},${L}.po) +ENTFILES=$(foreach L,${PRI_LANG} ${OTHERS},entities-${L}.ent) +# +####################################################################### -distclean clobber: clean - ${RM} *.ent +####################################################################### +# Rule: Apply stylesheet to transform XML into locale-specific ".ent" +# entities file +# +%.ent: %.xml + xsltproc -o $@ entities.xsl $< +# +####################################################################### -entities-it.ent: entities-it.xml entities.xsl - xsltproc -o $@ entities.xsl entities-it.xml +####################################################################### +# Printf(1) format string for describing targets by "make help". +HELPFMT ="%-23s\t| %s.\n" +# +####################################################################### -entities-it.xml: entities-${PRI_LANG}.xml it.po - xml2po -p it.po entities-${PRI_LANG}.xml >$@ +####################################################################### +# WARNING: put no targets before this one! +# +.PHONY: all +all:: ${ENTFILES} +####################################################################### -it.po: it.pot - if [ ! -f $@ ]; then \ - cp $< $@; \ +####################################################################### +# Target 'help' displays the available targets +# +.PHONY: help +help:: + @printf ${HELPFMT} "make all" "Generate .ENT files" + @printf ${HELPFMT} "make help" "Display this list" +# +####################################################################### + +####################################################################### +# Target 'entities.pot' makes a TEMPORARY seed translation file. We +# use the original-language entities XML file as the source. +# +.PHONY: pot + +pot entities.pot:: entities-${PRI_LANG}.xml + xml2po -o entities.pot $< + +help:: + @printf ${HELPFMT} "make pot" "Create template PO file" + @printf ${HELPFMT} "make entities.pot" "Create template PO file" +# +####################################################################### + +####################################################################### +# 'PO_template' emits rules to update the locale-specific .PO file +# whenever the "entities-${PRI_LANG}.xml", and therefore the +# "entities.pot" file, is changed. +# +define PO_template +.PHONY: po-${1} +po-${1} ${1}.po:: entities.pot + if [ ! -f ${1}.po ]; then \ + cp $$< ${1}.po; \ else \ - msgmerge --update --backup=simple $@ $<; \ + msgmerge --update --backup=simple ${1}.po $$<; \ fi -it.pot: entities-${PRI_LANG}.xml +help:: + @printf ${HELPFMT} "make po-${1}" "Generate .PO file for locale '${1}'" + @printf ${HELPFMT} "make ${1}.po" "Generate '${1}.po' file" +endef + +$(foreach L,${OTHERS},$(eval $(call PO_template,${L}))) + +.PHONY: po-all +po-all: ${foreach L,${OTHERS},${L}.po} + +help:: + @printf ${HELPFMT} "make po-all" "Generate all .PO files" +# +####################################################################### + +####################################################################### +# 'UPDATE_template' generates the rules to derive the translated XML +# files based on the "entities-${PRI_LANG}.xml" file and the selected +# "${LANG}.po" file. +# +define UPDATE_template +.PHONY: xml-${1} +xml-${1} entities-${1}.xml: entities-${PRI_LANG}.xml ${1}.po + xml2po -p ${1}.po entities-${PRI_LANG}.xml >entities-${1}.xml + +help:: + @printf ${HELPFMT} "make xml-${1}" "Translate XML for locale '${1}'" + @printf ${HELPFMT} "make entities-${1}.xml" "Build 'entities-${1}.xml' file" +endef + +.PHONY: xml-${PRI_LANG} +xml-${PRI_LANG}:: entities-${PRI_LANG}.xml + +$(foreach L,${OTHERS},$(eval $(call UPDATE_template,${L}))) + +.PHONY: xml-all +xml-all: $(foreach L,${OTHERS},entities-${L}.xml) + +help:: + @printf ${HELPFMT} "make xml-all" "Translate XML for all locales" +# +####################################################################### + + +####################################################################### +# Target 'showvars' displays both provided and computed macro values +# +.PHONY: showvars +showvars:: + @echo "PRI_LANG=${PRI_LANG}" + @echo "OTHERS=${OTHERS}" + @echo "OTHERXMLFILES=${OTHERXMLFILES}" + @echo "ENTFILES=${ENTFILES}" + @echo "POFILES=${POFILES}" +help:: + @printf ${HELPFMT} "make showvars" "Show certain macro values" +# +####################################################################### + +####################################################################### +# Target 'clean' deletes all temporary files. +# +.PHONY: clean +clean:: + ${RM} *~ + ${RM} entities.pot + ${RM} ${OTHERXMLFILES} + +help:: + @printf ${HELPFMT} "make clean" "Delete all temporary files" +# +####################################################################### + +####################################################################### +# Target 'distclean' or 'clobber' deletes all generated product files +# in addition to all temporary files. +# +.PHONY: distclean clobber +distclean clobber:: clean + ${RM} ${ENTFILES} + +help:: + @printf ${HELPFMT} "make distclean" "Delete all generated files" + @printf ${HELPFMT} "make clobber" "Delete all generated files" +# +####################################################################### + +####################################################################### +# We create EXACTLY one .POT file, and treat is as a temporary file. +# Do NOT EDIT the .POT file if you are sharing this directory! +# +entities.pot:: entities-${PRI_LANG}.xml xml2po -o $@ $< + +help:: + @printf ${HELPFMT} "make entities.pot" "Create template .PO file" +# +####################################################################### |