diff --git a/Makefile.GNU b/Makefile.GNU
new file mode 100644
index 0000000..9f47362
--- /dev/null
+++ b/Makefile.GNU
@@ -0,0 +1,926 @@
+########################################################################
+#### Configuration (system-dependent) variables ####
+########################################################################
+
+CYGWIN = $(shell make.d/test/is_cygwin.sh || echo 0)
+
+
+########################################################################
+#### The GIMP manual languages ####
+########################################################################
+
+ALL_LINGUAS = da de en es fr it ja ko nl nn pl ru sv zh_CN
+LANGUAGES = $(if $(LINGUAS),$(filter $(ALL_LINGUAS),$(LINGUAS)),$(ALL_LINGUAS))
+ifneq ($(DOC_LINGUAS),)
+$(warning Do not set the internal variable DOC_LINGUAS)
+endif
+DOC_LINGUAS = $(LINGUAS)
+
+ifneq ($(XML_LANG),)
+$(error You must not set the internal variable XML_LANG)
+endif
+ifneq ($(PO_LANGS),)
+$(error You must not set the internal variable PO_LANGS)
+endif
+XML_LANG = en
+PO_LANGS = $(filter-out $(XML_LANG), $(LANGUAGES))
+
+
+########################################################################
+#### External programs ####
+########################################################################
+
+XSLTPROC = xsltproc
+XSLTFLAGS = --nonet
+
+XMLLINT = xmllint
+XMLLINTFLAGS = --nonet
+
+XML2PO = tools/xml2po.py
+XML2POFLAGS = --mode=gimphelp
+
+MSGWIDTH = 79
+MSGUNIQ = msguniq
+MSGUNIQFLAGS =
+MSGCAT = msgcat
+MSGCATFLAGS = --width=$(MSGWIDTH)
+MSGINIT = msginit
+MSGINITFLAGS = --no-translator --width=$(MSGWIDTH)
+MSGFMT = msgfmt
+MSGFMTFLAGS = --check --use-fuzzy --statistics
+MSGMERGE = msgmerge
+MSGMERGEFLAGS = --quiet --width=$(MSGWIDTH)
+
+DBLATEX = dblatex
+DBLATEXFLAGS = --verbose
+DOCBOOK2ODF = docbook2odf
+DOCBOOK2ODFFLAGS =
+
+SED = sed
+
+# Standard shell commands
+echo_n = echo -n
+mkdir_p = mkdir -p
+ln_s = ln -s
+find_l = find -L
+
+# Calling make recursively
+RMAKE = $(MAKE) -f Makefile.GNU --no-print-directory
+
+# Local (gimp-help-specific) tools
+MAKE_IMAGE_LINKS = make.d/make_image_links.pl
+MAKE_IMAGE_LINKS_FLAGS = -v
+ifeq ($(CYGWIN),1)
+ MAKE_IMAGE_LINKS_FLAGS += --mode=hardlink,copy
+endif
+
+# FIXME/TODO:
+# make it work with srcdir != builddir
+# Directories
+srcdir = .
+builddir = .
+abs_srcdir := $(shell cd $(srcdir) && pwd)
+abs_builddir := $(shell pwd)
+
+
+########################################################################
+#### Files and directories ####
+########################################################################
+
+src_file_predicates = \
+ -name '*.xml' \
+ -not -name '$(notdir $(AUTHORS_DOCBOOK_XML))'
+src_dir_predicates = -name images -prune -o -type d -print
+pot_file_predicates = -type f
+po_file_predicates = -type f -not -name "$(COMPENDIUM)"
+xml_file_predicates = -name '*.xml'
+
+# List of authors and contributors (no DocBook)
+AUTHORS_SOURCE_XML = stylesheets/authors.xml
+# Automatically generated authors section (DocBook)
+AUTHORS_DOCBOOK_XML = src/preface/authors.xml
+AUTHORS_DOCBOOK_DIRNAME = $(dir $(AUTHORS_DOCBOOK_XML))
+AUTHORS_DOCBOOK_FILENAME = $(notdir $(AUTHORS_DOCBOOK_XML))
+# Stylesheets generating AUTHORS
+AUTHORS_TEXT_STYLESHEETS = \
+ stylesheets/authors_text.xsl \
+ stylesheets/authors_common.xsl
+# Stylesheets generating src/preface/authors.xml
+AUTHORS_DOCBOOK_STYLESHEETS = \
+ stylesheets/authors_docbook.xsl \
+ stylesheets/authors_common.xsl
+# Stylesheet generating MAINTAINERS
+DOAP_STYLESHEET = stylesheets/doap2text.xsl
+
+# Targets which don't require source file list
+QUICK_TARGETS = help clean dot image-% AUTHORS MAINTAINERS
+
+# Files & directories
+ifeq ($(filter $(QUICK_TARGETS),$(MAKECMDGOALS)),)
+SRC_DIRS := $(shell cd $(srcdir) && $(find_l) src/ $(src_dir_predicates))
+SRC_FILES := $(shell cd $(srcdir) && $(find_l) src/ $(src_file_predicates)) \
+ $(AUTHORS_DOCBOOK_XML)
+else
+SRC_DIRS = $(shell cd $(srcdir) && $(find_l) src/ $(src_dir_predicates))
+SRC_FILES = $(shell cd $(srcdir) && $(find_l) src/ $(src_file_predicates)) \
+ $(AUTHORS_DOCBOOK_XML)
+endif
+
+# TODO
+#HTML_STYLESHEETS = stylesheets/html*.xsl
+HTML_STYLESHEETS = stylesheets/plainhtml.xsl stylesheets/htmlalternate.xsl
+
+# This variable is used by "msgmerge";
+# use empty variable to disable the compendium option
+COMPENDIUM = Compendium.po
+
+
+########################################################################
+#### Control the amount of output messages ####
+########################################################################
+
+# Usage of the "msg" and "cmd" variables:
+# In the command lines of the make rules, use
+# $(msg) bla bla bla instead of @echo bla bla bla
+# $(cmd) command args instead of @command args (or command args)
+# then
+# messages will be suppressed if VERBOSE=0,
+# commands will be printed if VERBOSE=2.
+
+VERBOSE = 1
+
+ifeq ($(VERBOSE),0)
+msg = @:
+cmd = @
+else
+ifeq ($(VERBOSE),1)
+msg = @echo
+cmd = @
+else
+msg = @echo
+cmd =
+endif
+endif
+
+
+########################################################################
+#### Functions ####
+########################################################################
+
+#--------------------------------------------------------------#
+# The main functions used to transform #
+# (a) XML files to POT files #
+# (b) POT files to PO files #
+# (c) XML and PO files to XML files #
+#--------------------------------------------------------------#
+
+# Create a PO-template (POT)
+#
+# Usage:
+# $(call xml2pot,xml-files,pot-file)
+# Parameters:
+# $1 - input: original (untranslated) XML files
+# and other prerequisites, e.g. images or "FORCE"
+# $2 - output: POT template file containing translatable tags
+xml2pot = $(XML2PO) $(XML2POFLAGS) --output='-' $(filter %.xml,$(1)) \
+ | $(MSGUNIQ) $(MSGUNIQFLAGS) \
+ | $(MSGCAT) $(MSGCATFLAGS) - > "$(2)"; \
+ test -s "$(2)" || rm -f "$(2)"; \
+ touch -c -r $(call get_recent_file,$(1)) "$(2)" || true; \
+ test -s "$(2)"
+
+# Merge template (pot) and message catalog (po) or create a new catalog
+#
+# Usage:
+# $(call pot2po,pot-file,language,po-file)
+# Parameters:
+# $1 - input POT file
+# $2 - translation language
+# $3 - output PO file
+pot2po = with_compendium="$(shell $(call get_compendium,$3)) \
+ $(shell $(call use_gimp_po_files,$2))"; \
+ tmpfile=$(3).tmp; \
+ if [ -s $(3) ]; then \
+ $(MSGMERGE) $(MSGMERGEFLAGS) $${with_compendium} \
+ --output-file $${tmpfile} $(3) $(1); \
+ else \
+ $(MSGINIT) $(MSGINITFLAGS) --input $(1) --locale=$(2) --output=$(3); \
+ pofile=$(3); \
+ if [ -s $${pofile%/*}.po ]; then \
+ $(MSGMERGE) $(MSGMERGEFLAGS) $${with_compendium} \
+ --output-file $${tmpfile} $${pofile%/*}.po $(3); \
+ elif [ -n "$${with_compendium}" ]; then \
+ $(MSGMERGE) $(MSGMERGEFLAGS) $${with_compendium} \
+ --output-file $${tmpfile} $(3) $(1); \
+ else \
+ $(SED) -e '/Plural-Forms:/d' $(3) > $${tmpfile}; \
+ fi; \
+ fi; \
+ test -s $${tmpfile} && mv -f $${tmpfile} $(3) || rm -f $${tmpfile}; \
+ test -s $(3) && $(MSGFMT) $(MSGFMTFLAGS) $(3) || exit 70; \
+ rm -f messages.mo messages.gmo
+
+# Merge PO file into (translated) XML file
+#
+# Usage:
+# $(call po2xml,en-xml-file,po-file,language,translated-xml-file)
+# Parameters:
+# $1 - original (untranslated) XML file
+# $2 - PO file containing translations
+# $3 - translation language
+# $4 - resulting (translated) XML file
+ifneq ($(FORMAT_XML_WITH_XMLLINT),1)
+po2xml = $(XML2PO) $(XML2POFLAGS) --po-file=$(2) --language=$(3) --output=$(4) $(1); \
+ rm -f .xml2po.mo
+else
+po2xml = ($(XML2PO) $(XML2POFLAGS) --po-file=$(2) --language=$(3) --output='-' $(1) \
+ | $(XMLLINT) $(XMLLINTFLAGS) --format --output $(4) -); \
+ rm -f .xml2po.mo
+endif
+
+
+#--------------------------------------------------------------#
+# Helper functions #
+#--------------------------------------------------------------#
+
+make_target_dir = f=$(1); d=$${f%/*}; test -d $$d || $(mkdir_p) $$d
+
+get_recent_file = $(shell ls -t $(1) | head -n 1)
+
+copy = $(ln_s) $(abs_srcdir)/$(1) $(2)
+
+ifneq ($(COMPENDIUM),)
+get_compendium = \
+ file="$(1)"; dir=$${file%/*}; \
+ while true; do \
+ if test -f $${dir}/$(COMPENDIUM); then \
+ opt="$${opt} --compendium=$${dir}/$(COMPENDIUM)"; \
+ fi; \
+ case "$${dir}" in \
+ po|*/po) break;; \
+ */*) dir="$${dir%/*}";; \
+ *) break;; \
+ esac; \
+ done; \
+ if test -n "$${opt}"; then echo $${opt}; fi
+else
+get_compendium =
+endif
+
+ifneq ($(GIMP_PO_ROOT),)
+use_gimp_po_files = \
+ for po in $(GIMP_PO_ROOT)/po*/$(1).po; do \
+ if test -f "$${po}"; then echo '--compendium'="$${po}"; fi; \
+ done
+else
+use_gimp_po_files =
+endif
+
+
+########################################################################
+#### Main targets ####
+########################################################################
+
+.PHONY: all
+all: html index AUTHORS MAINTAINERS
+
+
+########################################################################
+#### Help!!! ####
+########################################################################
+
+.PHONY: help
+make.help:
+ @echo >&2 'ERROR: cannot find the help file "$@"!'
+ @exit 66
+# TODO?: replace with a "real" script (e.g. tools/make-help.sed)
+# (probably "yes" if more features are needed...)
+help: make.help
+ @$(SED) \
+ -e '### skip comments ###' \
+ -e '/^#/d' \
+ -e '### print if no "make" variable found ###' \
+ -e '/@/!b' \
+ -e '### replace "make" variables ###' \
+ -e 's/@LANGUAGES@/@$(strip $(LANGUAGES))@/' \
+ -e 's/@LINGUAS@/@$(strip $(LINGUAS))@/' \
+ -e 's/@ALL_LINGUAS@/@$(strip $(ALL_LINGUAS))@/' \
+ -e '### add commas ###' \
+ -e 'tloop' \
+ -e ':loop' \
+ -e ' ### mark value of variable (@@...@@) ###' \
+ -e ' s/@\([^@]*\)@/@@\1@@/' \
+ -e ' twhile' \
+ -e ' :while' \
+ -e ' s/\(@@[^,@]*\) \([^@]*@@\)/\1, \2/' \
+ -e ' twhile' \
+ -e ' s/@@\([^@]*\)@@/\1/' \
+ -e 'tloop' \
+ $<
+
+
+########################################################################
+#### Make AUTHORS and MAINTAINERS file ####
+########################################################################
+
+AUTHORS: $(AUTHORS_SOURCE_XML) $(AUTHORS_TEXT_STYLESHEETS)
+ $(msg) "[DOC] $@"
+ $(cmd) $(XSLTPROC) \
+ $(XSLTFLAGS) $(XSLTEXTRAFLAGS) \
+ $(srcdir)/stylesheets/authors_text.xsl \
+ $< \
+ > $@
+
+$(AUTHORS_DOCBOOK_XML): $(AUTHORS_SOURCE_XML) $(AUTHORS_DOCBOOK_STYLESHEETS)
+ $(msg) "[SRC] $@"
+ $(cmd) $(call make_target_dir,$@)
+ $(cmd) $(XSLTPROC) \
+ $(XSLTFLAGS) $(XSLTEXTRAFLAGS) \
+ $(srcdir)/stylesheets/authors_docbook.xsl \
+ $< \
+ > $@
+
+MAINTAINERS: gimp-help-2.doap $(DOAP_STYLESHEET)
+ $(msg) "[DOC] $@"
+ $(cmd) $(XSLTPROC) --output $@ $(XSLTFLAGS) $(XSLTEXTRAFLAGS) \
+ $(DOAP_STYLESHEET) $<
+
+
+########################################################################
+#### Make pot files: XML(en) --> POT ####
+########################################################################
+
+# src/path/to/file/*.xml --> pot/path/to/file.pot
+POT_FILES = $(patsubst src/%,pot/%.pot,$(filter-out src src/,$(SRC_DIRS)))
+# Special case: src/*.xml --> pot/gimp.pot
+POT_FILES += pot/gimp.pot
+
+# XXX: Secondary Expansion of the following two rules is required because
+# "pot/%.pot: $(srcdir)/src/%/*.xml" didn't work with make v3.82
+# (cf. bug #637505).
+.SECONDEXPANSION:
+# General case
+ifeq ($(filter pot/%.pot po/%.po,$(MAKECMDGOALS)),)
+pot/%.pot: src/$$*/*.xml $$(wildcard images/C/$$*/*.*)
+else
+pot/%.pot: src/$$*/*.xml FORCE
+endif
+ $(cmd) $(call make_target_dir,$@)
+ $(msg) "[POT] $@"
+ $(cmd) $(call xml2pot,$^,$@)
+# Special case: rename pot file for toplevel xml files
+ifeq ($(filter pot/%.pot po/%.po,$(MAKECMDGOALS)),)
+pot/gimp.pot: src/*.xml $(wildcard images/C/*.*)
+else
+pot/gimp.pot: src/*.xml FORCE
+endif
+ $(cmd) $(call make_target_dir,$@)
+ $(msg) "[POT] $@"
+ $(cmd) $(call xml2pot,$^,$@)
+# Special case: pot file for the authors DocBook file
+# requires an additional prerequisite
+AUTHORS_POT = $(AUTHORS_DOCBOOK_XML:src/%/$(AUTHORS_DOCBOOK_FILENAME)=pot/%.pot)
+ifeq ($(filter pot/%.pot po/%.po,$(MAKECMDGOALS)),)
+# TODO: add images to prerequisites if necessary
+$(AUTHORS_POT): $(AUTHORS_DOCBOOK_XML) $(wildcard $(AUTHORS_DOCBOOK_DIRNAME)*.xml)
+else
+$(AUTHORS_POT): $(AUTHORS_DOCBOOK_XML) $(wildcard $(AUTHORS_DOCBOOK_DIRNAME)*.xml) FORCE
+endif
+ $(cmd) $(call make_target_dir,$@)
+ $(msg) "[POT] $@"
+ $(cmd) $(call xml2pot,$^,$@)
+
+# Remove left over pot files
+cleanup-pot:
+ $(msg) "Cleaning up pot files ..."
+ $(cmd) $(find_l) pot/ $(pot_file_predicates) | \
+ while read potfile; do \
+ potfile=$${potfile#pot/}; srcfile=src/$${potfile%.pot}.xml \
+ test -e $${srcfile} || rm -f $${potfile}; \
+ done
+
+# Targets suitable for command line
+pot: potfiles cleanup-pot ;
+potfiles: $(POT_FILES) ;
+
+.PHONY: pot potfiles cleanup-pot
+
+
+########################################################################
+#### Make po files: POT --> PO ####
+########################################################################
+
+define MAKE_PO_RULES
+$(1)_PO_FILES = $$(patsubst pot/%.pot, po/$(1)/%.po, $$(POT_FILES))
+ifeq ($$(filter po/$(1)/%.po,$$(MAKECMDGOALS)),)
+$$($(1)_PO_FILES): po/$(1)/%.po : pot/%.pot
+else
+$$($(1)_PO_FILES): po/$(1)/%.po : pot/%.pot FORCE
+endif
+ $$(cmd) $$(call make_target_dir,$$@)
+ $$(msg) "[PO] $$@"
+ $$(cmd) if test -s $$<; then $$(call pot2po,$$<,$(1),$$@); else touch $$@; fi
+po-$(1): $$($(1)_PO_FILES) cleanup-po-$(1)
+ $$(cmd) if test -e messages.mo; then rm -f messages.mo; fi
+cleanup-po-$(1):
+ $$(msg) "Cleaning up '$(1)' po files ..."
+ $$(cmd) $(find_l) po/$(1)/ $$(po_file_predicates) | \
+ while read pofile; do \
+ potfile=pot/$$$${pofile#po/$(1)/}t; \
+ test -e $$$${potfile} || rm -vf $$$${pofile}; \
+ done
+endef
+$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_PO_RULES,$(LANG))))
+
+# Special case 'en': do nothing :-)
+po-en: ;
+
+# Print translation statistics
+
+status-%: po-status-% ;
+po-status-%: po-%
+ $(cmd) perl tools/get_po_status.pl po/$*
+
+status-all: po-status-all ;
+po-status-all:
+ $(cmd) for podir in po/*; do \
+ perl tools/get_po_status.pl --nofiles --nosummary $${podir} || break; \
+ done
+
+todo-%: po-todo-% ;
+po-todo-%: po-%
+ $(cmd) perl tools/get_po_status.pl --todo po/$*
+
+# Force updating po file(s)
+force-po/%:
+ $(cmd) $(RMAKE) po/$*/*.po
+
+# Main commandline target
+po: $(foreach LANG,$(PO_LANGS),po-$(LANG)) ;
+
+.PHONY: po po-% cleanup-po-% todo-% po-todo-% po-status-%
+
+
+########################################################################
+#### Generate XML prerequisites ####
+########################################################################
+
+ifeq ($(filter $(QUICK_TARGETS),$(MAKECMDGOALS)),)
+include $(foreach LANG,$(PO_LANGS),xml/$(LANG)/.deps.mk)
+endif
+
+# The dynamically generated and updated ".deps.mk" files contain
+# rules to register the po prereqisite for every xml file, e.g.
+# xml/LANG/*.xml: po/LANG/gimp.po
+# xml/LANG/filters/*.xml: po/LANG/filters.po
+# xml/LANG/filters/generic/*.xml: po/LANG/filters/generic.po
+# etc.
+
+#xml/$(1)/.deps.mk: $(AUTHORS_DOCBOOK_XML) $$($(1)_PO_FILES)
+# TODO: simplify
+define MAKE_DEP_RULES
+xml/$(1)/.deps.mk: $(AUTHORS_DOCBOOK_XML) $$(SRC_FILES)
+ $$(cmd) $$(call make_target_dir,$$@)
+ $$(msg) "[DEP] $$@"
+ $$(cmd) touch $$@
+ $$(cmd) for srcdir in $(SRC_DIRS); do \
+ ls $$$${srcdir}/*.xml >/dev/null 2>&1 || continue; \
+ srcdir=$$$${srcdir%/}; \
+ xmldir=xml/$(1)$$$${srcdir#src}; \
+ test "$$$${srcdir}" != "src" || srcdir="src/gimp"; \
+ pofile=po/$(1)$$$${srcdir#src}.po; \
+ echo "$$$${xmldir}/*.xml: $$$${pofile}"; \
+ done > $$@
+endef
+$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_DEP_RULES,$(LANG))))
+
+
+########################################################################
+#### Make XML files: PO --> XML(non-en) ####
+########################################################################
+
+# TODO: check xml/$(1) vs. xml-$(1) prerequisites (XML_FILES)
+define MAKE_XML_RULES
+$(1)_XML_FILES = $$(SRC_FILES:src/%=xml/$(1)/%)
+xml/$(1)/%.xml:
+ $$(msg) "[XML] $$@"
+ $$(cmd) $$(call make_target_dir,$$@)
+ $$(cmd) xmlfile=$$@; \
+ stem=$$*; \
+ srcfile=src/$$$${stem}.xml; \
+ test "$$$${stem}" != "$$$${stem%/*}" && stem=$$$${stem%/*} || stem=gimp; \
+ pofile=po/$(1)/$$$${stem}.po; \
+ test -e "$$$${pofile}" || $$(RMAKE) "$$$${pofile}"; \
+ $(call po2xml,$$$${srcfile},$$$${pofile},$(1),$$@)
+
+# This is indirectly used as HTML and PDF prerequisite:
+xml/$(1): $$($(1)_XML_FILES) | xml/$(1)/images
+ $$(cmd) test -d $$@ && touch $$@ || $(mkdir_p) $$@
+
+# Targets suitable for command line
+xml-$(1): po-$(1) xml/$(1) cleanup-xml-$(1) ;
+endef
+$(foreach LANG,$(PO_LANGS),$(eval $(call MAKE_XML_RULES,$(LANG))))
+
+# Special case: en
+
+en_XML_FILES = $(SRC_FILES:src/%=xml/en/%)
+$(en_XML_FILES): xml/en/%.xml : src/%.xml
+ $(msg) "[XML] $@ (copy)"
+ $(cmd) $(call make_target_dir,$@)
+ $(cmd) cp -f $< $@
+
+xml/en: $(en_XML_FILES) | xml/en/images
+ $(cmd) test -d $@ && touch $@ || $(mkdir_p) $@
+
+xml-en: xml/en cleanup-xml-en ;
+
+# Images
+
+ifeq ($(MAKE_IMAGES), lazy)
+# fast and lazy: detect added or removed images, but may miss changed images
+IMAGE_PREREQ = $(shell cd $(srcdir) && $(find_l) images/common images/C -type d)
+else ifeq ($(MAKE_IMAGES), force)
+# just in case: always update images
+IMAGE_PREREQ = FORCE
+else
+# strict (default): detects added, removed, or changed images
+IMAGE_PREREQ = $(shell cd $(srcdir) && $(find_l) images/common images/C)
+endif
+
+xml/%/images: $(IMAGE_PREREQ)
+ $(cmd) test -d $@ && rm -rf $@/* || $(mkdir_p) $@
+ $(cmd) $(echo_n) "Copying images ($*) ..."
+ $(cmd) perl $(MAKE_IMAGE_LINKS) $(MAKE_IMAGE_LINKS_FLAGS) \
+ images/common images/C xml/$*
+ $(cmd) touch $@
+
+# Remove left over xml files
+cleanup-xml-%:
+ $(msg) "Cleaning up '$*' xml files ..."
+ $(cmd) $(find_l) xml/$*/ $(xml_file_predicates) | \
+ while read xmlfile; do \
+ test -e src/$${xmlfile#xml/$*/} || rm -vf $${xmlfile}; \
+ done
+
+# Command-line targets
+xml: $(foreach LANG,$(LANGUAGES),xml-$(LANG)) ;
+images-%: xml/%/images html/%/images ;
+
+.PRECIOUS: xml/%/images
+.PHONY: xml xml-% images-%
+
+
+########################################################################
+#### XML validation ####
+########################################################################
+
+validate: validate-en ;
+validate-%: xmllint-% ;
+
+xmllint: xmllint-en ;
+xmllint-%: log/%-xmllint.log
+ $(cmd) test -s $< && cat $<
+
+define MAKE_XMLLINT_RULES
+log/$(1)-xmllint.log: $$($(1)_XML_FILES)
+ $$(cmd) $$(call make_target_dir,$$(@))
+ $$(cmd) if type $$(XMLLINT) >/dev/null 2>&1; then \
+ echo "*** Validating XML ($(1)) ... "; \
+ $$(XMLLINT) $$(XMLLINTFLAGS) --xinclude xml/$(1)/gimp.xml \
+ | $$(SED) -e 's,xmlns:xi="http://www.w3.org/2001/XInclude",,' \
+ | $$(XMLLINT) $$(XMLLINTFLAGS) --valid \
+ --output log/$(1).xml - 2>$$(@); \
+ if test -s $$(@); then \
+ echo "(You will find log and xml files in log/.)"; \
+ else \
+ echo "$(1): no errors."; \
+ rm -f log/$(1).xml; \
+ fi >> $$(@); \
+ else \
+ echo >&2 "*** Validating '$(1)' skipped: 'xmllint' not found."; \
+ fi
+endef
+$(foreach LANG,$(LANGUAGES),$(eval $(call MAKE_XMLLINT_RULES,$(LANG))))
+
+log:
+ $(cmd) mkdir $@ && test -w $@
+
+
+########################################################################
+#### Make XSL styesheets for HTML ####
+########################################################################
+
+# TODO
+stylesheets/plainhtml.xsl: stylesheets/plainhtml.xsl.in
+ $(msg) "[XSL] $@"
+ $(cmd) $(SED) -e s,@STYLEBASE@,http://docbook.sourceforge.net/release/xsl/current, $< > $@
+
+stylesheets/htmlalternate.xsl: stylesheets/htmlalternate.xsl.in
+ $(msg) "[XSL] $@"
+ $(cmd) cp $< $@
+
+
+########################################################################
+#### Make HTML files: XML --> HTML ####
+########################################################################
+
+# Main commandline targets
+html-%: xml-% html/%/index.html html/%/gimp-help.xml ;
+html: $(foreach lang,$(LANGUAGES),html-$(lang)) ;
+
+# Making the main HTML file (side effect: make gimp-xrefs.xml)
+html/%/index.html: xml/% $(HTML_STYLESHEETS) | html/%/images
+ $(msg) "*** Making html for $* ... "
+ $(cmd) rm -f html/$*/*.*
+
+ $(cmd) $(XSLTPROC) \
+ $(XSLTFLAGS) $(XSLTEXTRAFLAGS) \
+ --xinclude \
+ --stringparam l10n.gentext.default.language $* \
+ -o html/$*/ \
+ stylesheets/plainhtml.xsl \
+ xml/$*/gimp.xml
+
+ $(msg) "Copying stylesheets ... "
+ $(cmd) for file in $(srcdir)/stylesheets/*.css \
+ $(srcdir)/stylesheets/$*/*.css; do \
+ if [ -f $${file} ]; then cp -f $${file} html/$*; fi; \
+ done
+
+### Cross references & context help ###
+index: $(foreach lang,$(LANGUAGES),index-$(lang)) ;
+index-%: html/%/gimp-help.xml ;
+
+html/%/gimp-help.xml: html/%/gimp-xrefs.xml stylesheets/makeindex.xsl
+ $(cmd) $(XSLTPROC) \
+ $(XSLTFLAGS) $(XSLTEXTRAFLAGS) \
+ $(srcdir)/stylesheets/makeindex.xsl \
+ $< \
+ > $@
+
+# The xrefs file is a side effect of the HTML build
+html/%/gimp-xrefs.xml: html/%/index.html
+ $(cmd) touch $@
+
+### HTML images ###
+ifneq ($(CYGWIN),1)
+html/%/images: xml/%/images
+ $(cmd) test -d html/$* || $(mkdir_p) html/$*
+ $(cmd) test -e $@ || $(ln_s) ../../$< $@
+else
+html/%/images: $(IMAGE_PREREQ)
+ $(cmd) if test -h $@; then rm -f $@; fi
+ $(cmd) test -d $@ && rm -rf $@/* || $(mkdir_p) $@
+ $(cmd) $(echo_n) "Copying HTML images ($*) ..."
+ $(cmd) perl $(MAKE_IMAGE_LINKS) $(MAKE_IMAGE_LINKS_FLAGS) \
+ images/common images/C $@
+ $(cmd) touch $@
+endif
+
+.PRECIOUS: \
+ html/%/index.html \
+ html/%/gimp-help.xml \
+ html/%/gimp-xrefs.xml \
+ html/%/images
+
+.PHONY: html html-% index index-%
+
+
+########################################################################
+#### Make HTML draft (single page preview) ####
+########################################################################
+
+preview-xml/%.xml: xml/%.xml stylesheets/drafthtml.xsl
+ $(cmd) id=`$(SED) -e 's/.*id=.//' -e tmatch \
+ -e d -e :match \
+ -e 's/["'"'"'].*//' \
+ -e q $<`; \
+ test -n "$${id}" || id=noname; \
+ lang=$(shell echo $< | $(SED) -e 's,^xml/,,; s,/.*,,'); \
+ destdir=html/$${lang}; \
+ test -d $${destdir}/images || $(RMAKE) $${destdir}/images; \
+ cp -f $(srcdir)/stylesheets/*.css $(srcdir)/stylesheets/$${lang}/*.css\
+ $${destdir} 2>/dev/null; \
+ destfile="$${destdir}/$${id}-draft.html"; \
+ echo "Making $${destfile} (ignore any XSLT complaints) ..."; \
+ $(XSLTPROC) \
+ $(XSLTFLAGS) $(XSLTEXTRAFLAGS) \
+ --xinclude \
+ --stringparam l10n.gentext.default.language $${lang} \
+ --output $${destfile} \
+ $(srcdir)/stylesheets/drafthtml.xsl \
+ $<
+
+preview-src/%.xml: $(foreach lang,$(LANGUAGES),preview-xml/$(lang)/%.xml)
+ $(msg) "(Remember that links won't work in a draft file.)"
+
+preview-po/%.po:
+ @echo >&2 "After merging pofiles this feature does not work any more."
+ @echo >&2 "Use 'make ... preview-xml/$*.xml'."
+
+# For backward compatibility:
+
+xml/%.draft: preview-xml/%.xml
+ $(msg) "(Remember that links won't work in a draft file.)"
+
+src/%.draft: preview-src/%.xml ;
+
+# Synonyms
+draft-xml/%.xml: preview-xml/%.xml ;
+draft-src/%.xml: preview-src/%.xml ;
+draft-po/%.po: preview-po/%.po ;
+
+
+########################################################################
+#### Make PDF files: XML --> PDF ####
+########################################################################
+
+ifneq ($(DBLATEX),)
+
+pdf: $(foreach lang,$(LANGUAGES),pdf-$(lang)) ;
+pdf-%: pdf/%/gimp.pdf ;
+
+# TODO: check prerequisites, e.g. images (--fig-path option?)
+pdf/%/gimp.pdf: xml/% stylesheets/plainprint.xsl xml/%/images
+ $(cmd) if test -f pdf/%.pdf; then rm -f pdf/%.pdf; fi
+ $(cmd) test -d pdf/$* || $(mkdir_p) pdf/$*
+ $(msg) "*** Making PDF ($*) ..."
+ $(cmd) $(DBLATEX) $(DBLATEXFLAGS) $(DBLATEXEXTRAFLAGS) \
+ --xsl-user=$(srcdir)/stylesheets/plainprint.xsl \
+ --output=$@ \
+ xml/$*/gimp.xml
+
+.PRECIOUS: pdf/%/gimp.pdf
+
+else
+
+pdf pdf-%:
+ @echo "*** Cannot build PDFs because DBLATEX was not defined ***"
+ @exit 69
+
+endif
+
+
+########################################################################
+#### Make ODF files: XML --> ODF ####
+########################################################################
+
+ifneq ($(DOCBOOK2ODF),)
+
+odf: $(foreach lang,$(LANGUAGES),odf-$(lang)) ;
+odf-%: odf/%/gimp.odt ;
+
+# TODO?: images
+odf/%/gimp.odt: xml/%/gimp-alldocs.xml xml/%/images
+ $(cmd) if test -f odf/%.odt; then rm -f odf/%.odt; fi
+ $(cmd) test -d odf/$* || $(mkdir_p) odf/$*
+ $(msg) "*** Making ODF ($*) ..."
+ $(cmd) $(DOCBOOK2ODF) $(DOCBOOK2ODFFLAGS) \
+ --debug -v \
+ --output-dir=`pwd` \
+ --output-file=$@ \
+ $<
+
+# make temporary XML source file with all Xincludes resolved
+# TODO: find out how to avoid this
+xml/%/gimp-alldocs.xml: xml/%/gimp.xml
+ $(msg) "*** Merging XML ..."
+ $(cmd) $(XMLLINT) $(XMLLINTFLAGS) --xinclude --output $@ $<
+
+.PRECIOUS: odf/%/gimp.odt
+
+else
+
+odf odf-%:
+ @echo "*** Cannot build ODFs because DOCBOOK2ODF was not defined ***"
+ @exit 69
+
+endif
+
+
+########################################################################
+#### Make language-specific HTML tarballs ####
+########################################################################
+
+tarball_prefix = gimp-help-2-html
+tarball_dir = gimp-help-2
+HTMLMETAFILES = README AUTHORS COPYING MAINTAINERS
+
+$(tarball_prefix)-%.tar: html/%/index.html html/%/gimp-help.xml \
+ $(HTMLMETAFILES) make.d/Makefile.html-package
+ $(msg) "Making $@ ..."
+ $(cmd) test ! -d $(tarball_dir)
+ $(cmd) $(mkdir_p) $(tarball_dir)/html
+ $(cmd) cd $(tarball_dir)/html && $(ln_s) ../../html/$* .
+ $(cmd) cp $(HTMLMETAFILES) $(tarball_dir)/
+ $(cmd) cp make.d/INSTALL.html-package $(tarball_dir)/INSTALL
+ $(cmd) $(SED) -e '/LANGUAGE *=/s/en/$*/' \
+ make.d/Makefile.html-package > $(tarball_dir)/Makefile
+ $(cmd) tar -chf $@ $(tarball_dir)/
+ $(cmd) rm -rf $(tarball_dir)
+
+$(tarball_prefix)-%.tar.gz: $(tarball_prefix)-%.tar
+ $(msg) "Making $@ ..."
+ $(cmd) gzip -c9 $< > $@
+
+$(tarball_prefix)-%.tar.bz2: $(tarball_prefix)-%.tar
+ $(msg) "Making $@ ..."
+ $(cmd) bzip2 -c9 $< > $@
+
+$(tarball_prefix)-%.tar.xz: $(tarball_prefix)-%.tar
+ $(msg) "Making $@ ..."
+ $(cmd) xz -c9 $< > $@
+
+$(tarball_prefix)-%.zip: $(tarball_prefix)-%.tar
+ $(msg) "Making $@ ..."
+ $(cmd) rm -rf $(tarball_dir)/html
+ $(cmd) $(mkdir_p) $(tarball_dir)/html
+ $(cmd) cd $(tarball_dir)/html && $(ln_s) ../../html/$* .
+ $(cmd) zip -9rq $@ $(tarball_dir)/html
+ $(cmd) rm -rf $(tarball_dir)
+
+
+########################################################################
+#### Clean up ####
+########################################################################
+
+clean:
+ $(cmd) for dir in pot xml log html pdf odf; do \
+ test -d $${dir} || continue; \
+ echo "Removing $${dir} ..."; \
+ rm -rf $${dir}; \
+ done
+ $(cmd) for f in AUTHORS $(AUTHORS_DOCBOOK_XML) build-system.*; do \
+ test -f $${f} || continue; \
+ echo "Removing $${f} ..."; \
+ rm -f $${f}; \
+ done
+
+dist-clean: clean ;
+
+.PHONY: clean dist-clean
+
+
+########################################################################
+#### Source file checks ####
+########################################################################
+
+check: checks ;
+checks: check-image-references ;
+check-images: check-image-references ;
+
+check-image-references:
+ $(cmd) if cd $(srcdir) && test -e tools/validate_references.py && \
+ type python >/dev/null 2>&1; then \
+ echo "*** Checking image references ... "; \
+ python tools/validate_references.py \
+ --verbose --broken --orphaned \
+ $(VALIDATEREFERENCESFLAGS); \
+ else \
+ echo >&2 "*** Cannot check image references (no Python installed?) ***"; \
+ fi
+
+check-images-%: FORCE
+ $(cmd) $(RMAKE) check-image-references \
+ VALIDATEREFERENCESFLAGS="--imgdir=images/C,images/$*"
+
+check-image-resolutions-%:
+ $(cmd) /bin/sh tools/check_image_resolutions.sh images/$*
+
+# special case 'en':
+check-images-en check-images-C: check-image-references ;
+check-image-resolutions-en: check-image-resolutions-C ;
+
+.PHONY: checks check-image-references check-image-resolutions-%
+
+
+########################################################################
+#### Build system development & debugging ####
+########################################################################
+
+build-system.svg: make.d/build-system.dot
+ $(cmd) if type dot >/dev/null; then \
+ dot -Tsvg -o $@ $<; \
+ fi
+
+dot: build-system.svg
+ $(cmd) if test -e $<; then \
+ if type display >/dev/null; then \
+ display $<; \
+ elif type xv >/dev/null; then \
+ xv $<; \
+ fi; \
+ fi
+
+
+########################################################################
+#### Special targets ####
+########################################################################
+
+FORCE: ;
+
+.PHONY: FORCE
+
+# Delete the default suffix rules
+.SUFFIXES:
diff --git a/gimp-help-2.4.2.tar.bz2 b/gimp-help-2.4.2.tar.bz2
deleted file mode 100644
index 1f38bdd..0000000
--- a/gimp-help-2.4.2.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e66c577aba33b02123f08decac6191f4a2fdbb1a12744fbb6d1275fa8c4c9745
-size 49365211
diff --git a/gimp-help-2.6.1.tar.bz2 b/gimp-help-2.6.1.tar.bz2
new file mode 100644
index 0000000..fbc5d0a
--- /dev/null
+++ b/gimp-help-2.6.1.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bd122571738f02000952b12cff2551080304b315714a1da21c79f77afc668ba3
+size 118819114
diff --git a/gimp-help-2.doap b/gimp-help-2.doap
new file mode 100644
index 0000000..febd8a2
--- /dev/null
+++ b/gimp-help-2.doap
@@ -0,0 +1,62 @@
+
+
+ gimp-help-2
+
+
+
+
+
+ GIMP User Manual
+ GIMP-Benutzerhandbuch
+
+
+ The GIMP Documentation Team and other users have provided you with the
+ information necessary to understand how to use GIMP. The User Manual is an
+ important part of this help. The current version is on the web site of the
+ Documentation Team in HTML format. The HTML version is also available as
+ context sensitive help (if you installed it) while using GIMP by pressing
+ the F1 key.
+
+
+ Das Dokumentations-Team und die Anwender von GIMP stellen Ihnen
+ vielfältige Informationen bereit, um Sie bei der Arbeit mit GIMP zu
+ unterstützen. Dieses Handbuch ist ein wichtiger Bestandteil der
+ Dokumentation. Die aktuelle Version finden Sie auf der Webseite des
+ GIMP-Dokumentations-Teams. Die HTML-Version wird zusätzlich als Kontexthilfe
+ verwendet. Sie können auf diese von GIMP aus jederzeit durch Drücken der
+ F1-Taste zugreifen.
+
+
+
+
+ Róman Joost
+
+ romanofski
+
+
+
+
+ Ulf-D. Ehlert
+
+ ulfehlert
+
+
+
+
+ Marco Ciampa
+
+ marcoc
+
+
+
+
+ Julien Hardelin
+
+ jhardlin
+
+
+
diff --git a/gimp-help-no.patch b/gimp-help-no.patch
deleted file mode 100644
index 4515d12..0000000
--- a/gimp-help-no.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- configure.ac
-+++ configure.ac
-@@ -30,7 +30,7 @@
- # ALL_LINGUAS="cs de en es fr hr it ko nl no ru sv zh_CN"
- QUICKREFERENCE_ALL_LINGUAS="de en fr it ru sv"
- if test "x$ALL_LINGUAS" = "x"; then
-- ALL_LINGUAS="de en es fr it ko nl no pl ru sv"
-+ ALL_LINGUAS="de en es fr it ko nl nb pl ru sv"
- else
- QUICKREFERENCE_LINGUAS=""
- for asked_lang in $ALL_LINGUAS ; do
diff --git a/gimp-help-update-spec.sh b/gimp-help-update-spec.sh
deleted file mode 100644
index 00b81cf..0000000
--- a/gimp-help-update-spec.sh
+++ /dev/null
@@ -1,240 +0,0 @@
-#!/bin/bash
-
-LANGUAGES_NO_IMAGES="pl sv"
-LANGUAGES_INCOMPLETE='cs hr lt zh_CN'
-LANGUAGES_NO_EXAMPLES='es ko nl pl ru sv'
-
-unset ${!LANG_NAME__*}
-LANG_NAME__af="Afrikaans"
-LANG_NAME__am="Amharic"
-LANG_NAME__ang="Old English"
-LANG_NAME__ar="Arabic"
-LANG_NAME__as="Assamese"
-LANG_NAME__ast="Asturian"
-LANG_NAME__az="Azeri"
-LANG_NAME__be="Belarusian"
-LANG_NAME__be__AT__latin="Belarusian Latin"
-LANG_NAME__bg="Bulgarian"
-LANG_NAME__bn="Bengali"
-LANG_NAME__bn_BD="Bengali / Bangla"
-LANG_NAME__bn_IN="Bengali, India"
-LANG_NAME__br="Breton"
-LANG_NAME__bs="Bosnian"
-LANG_NAME__ca="Catalan"
-LANG_NAME__cs="Czech"
-LANG_NAME__cy="Welsh"
-LANG_NAME__da="Danish"
-LANG_NAME__de="German"
-LANG_NAME__dz="Dzongkha"
-LANG_NAME__el="Greek"
-LANG_NAME__en_AU="English, Australia"
-LANG_NAME__en_CA="English, Canada"
-LANG_NAME__en_GB="English, Great Britain"
-LANG_NAME__en_US="English, USA"
-LANG_NAME__eo="Esperanto"
-LANG_NAME__es="Spanish"
-LANG_NAME__es_AR="Spanish, Argentina"
-LANG_NAME__es_CL="Spanish, Chile"
-LANG_NAME__es_CO="Spanish, Colombia"
-LANG_NAME__es_CR="Spanish, Costa Rica"
-LANG_NAME__es_DO="Spanish, Dominican Republic"
-LANG_NAME__es_EC="Spanish, Ecuador"
-LANG_NAME__es_ES="Spanish, Spain"
-LANG_NAME__es_GT="Spanish, Guatemala"
-LANG_NAME__es_HN="Spanish, Honduras"
-LANG_NAME__es_MX="Spanish, Mexico"
-LANG_NAME__es_NI="Spanish, Nicaragua"
-LANG_NAME__es_PA="Spanish, Panama"
-LANG_NAME__es_PE="Spanish, Peru"
-LANG_NAME__es_PR="Spanish, Puerto Rico"
-LANG_NAME__es_SV="Spanish, El Salvador"
-LANG_NAME__es_UY="Spanish, Uruguay"
-LANG_NAME__es_VE="Spanish, Venezuela"
-LANG_NAME__et="Estonian"
-LANG_NAME__eu="Basque"
-LANG_NAME__fa="Persian"
-LANG_NAME__fi="Finnish"
-LANG_NAME__fr="French"
-LANG_NAME__fur="Friulian"
-LANG_NAME__ga="Irish"
-LANG_NAME__gl="Galician"
-LANG_NAME__gn="Brazilian Guarani"
-LANG_NAME__gu="Gujarati"
-LANG_NAME__he="Hebrew"
-LANG_NAME__hi="Hindi"
-LANG_NAME__hr="Croatian"
-LANG_NAME__hu="Hungarian"
-LANG_NAME__hy="Armenian"
-LANG_NAME__id="Indonesian"
-LANG_NAME__io="Ido"
-LANG_NAME__is="Icelandic"
-LANG_NAME__it="Italian"
-LANG_NAME__ja="Japanese"
-LANG_NAME__ka="Georgian"
-LANG_NAME__km="Khmer"
-LANG_NAME__kn="Kannada"
-LANG_NAME__ko="Korean"
-LANG_NAME__ku="Kurdish"
-LANG_NAME__ky="Kyrgyz"
-LANG_NAME__li="Limburgish"
-LANG_NAME__lo="Lao"
-LANG_NAME__lt="Lithuanian"
-LANG_NAME__lv="Latvian"
-LANG_NAME__mai="Maithili"
-LANG_NAME__mg="Malagasy"
-LANG_NAME__mi="Maori"
-LANG_NAME__mk="Macedonian"
-LANG_NAME__ml="Malayalam"
-LANG_NAME__mn="Mongolian"
-LANG_NAME__mr="Marathi"
-LANG_NAME__ms="Malay"
-LANG_NAME__nb="Norwegian Bokmal"
-LANG_NAME__nds__AT__NFE="Low Saxon NFE (Northern Frisian Enclave)"
-LANG_NAME__ne="Nepali"
-LANG_NAME__nl="Dutch"
-LANG_NAME__nn="Norwegian Nynorsk"
-LANG_NAME__nso="Northern Sotho"
-LANG_NAME__oc="Occitan"
-LANG_NAME__or="Oriya"
-LANG_NAME__pa="Punjabi"
-LANG_NAME__pa_IN="Punjabi (Gurmukhi)"
-LANG_NAME__pa_PK="Punjabi (Shahmukhi)"
-LANG_NAME__pl="Polish"
-LANG_NAME__ps="Pashto, Pushto"
-LANG_NAME__pt="Portuguese"
-LANG_NAME__pt_BR="Brasilian Portuguese"
-LANG_NAME__ro="Romanian"
-LANG_NAME__ru="Russian"
-LANG_NAME__rw="Kinyarwanda"
-LANG_NAME__si="Sinhala"
-LANG_NAME__sk="Slovak"
-LANG_NAME__sl="Slovenian"
-LANG_NAME__sq="Albanian"
-LANG_NAME__sr="Serbian"
-LANG_NAME__sr__AT__Latn="Serbian Latin"
-LANG_NAME__sr__AT__ije="Serbian Cyrillic"
-LANG_NAME__sv="Swedish"
-LANG_NAME__ta="Tamil"
-LANG_NAME__te="Telugu"
-LANG_NAME__tg="Tajik"
-LANG_NAME__th="Thai"
-LANG_NAME__tk="Turkmen"
-LANG_NAME__tr="Turkish"
-LANG_NAME__tt="Tatar"
-LANG_NAME__ug="Uighur"
-LANG_NAME__uk="Ukrainian"
-LANG_NAME__ur="Urdu"
-LANG_NAME__uz="Uzbek"
-LANG_NAME__uz__AT__cyrillic="Uzbek Cyrillic"
-LANG_NAME__vi="Vietnamese"
-LANG_NAME__wa="Walloon"
-LANG_NAME__wal="Walaita"
-LANG_NAME__xh="Xhosa"
-LANG_NAME__yi="Yiddish"
-LANG_NAME__yo="Yoruba"
-LANG_NAME__zh_CN="Simplified Chinese"
-LANG_NAME__zh_HK="Chinese, Hong Kong"
-LANG_NAME__zh_TW="Traditional Chinese"
-LANG_NAME__zu="Zulu"
-
-
-LANG_LIST=$(
- (
- for LNG in $LANGUAGES_NO_IMAGES ; do
- echo $LNG
- done
- tar -jtf gimp-help-2.4.1.tar.bz2 | sed -n '
-s%.*/\([^/]*\)/[^/]*$%TRANS:\1%
-/dir/d
-/map/d
-/src/d
-/omf/d
-/web/d
-/po/d
-/^TRANS:\('"${LANGUAGES_INCOMPLETE// /\\|}"'\)$/d
-s/^TRANS:no$/TRANS:nb/
-s/^TRANS:\(..\)$/\1/p
-s/^TRANS:\(...\)$/\1/p
-s/^TRANS:\(.._..\)$/\1/p
-s/^TRANS:\(.._...\)$/\1/p
-s/^TRANS:\(..._..\)$/\1/p
-s/^TRANS:\(..._...\)$/\1/p
-') | sort -u)
-
-sed gimp-help.spec.in '
-1,/%package/{
-/%package/i \
-@PACKAGE@
-}
-/^%prep/ a \
-%prep
-/%package/,/%prep/d
-
-/^%changelog/a \
-@FILES@\
-%changelog
-/^%files /,/^%changelog/d
-'
-
-exec gimp-help.spec
-
-while read -r ; do
- case "$REPLY" in
- @PACKAGE@ )
- for LNG in $LANG_LIST ; do
- eval LNG_NAME\=\"\$LANG_NAME__${LNG//@/__AT__}\"
- if test -z "$LNG_NAME" ; then
- echo >&2 "ERROR: No LANG_NAME name for \"$LNG\" defined ${LNG//@/__AT__}!"
- LNG_NAME=FIXME
- fi
- case $LNG in
- ja | ja_* ) GROUP=System/I18n/Japanese ;;
- ko | ko_* ) GROUP=System/I18n/Korean ;;
- zh_* ) GROUP=System/I18n/Chinese ;;
- * ) GROUP=System/Localization ;;
- esac
- cat <