trans-coord-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

trans-coord/gnun server/gnun/ChangeLog server/g...


From: Yavor Doganov
Subject: trans-coord/gnun server/gnun/ChangeLog server/g...
Date: Wed, 20 Feb 2008 09:11:09 +0000

CVSROOT:        /sources/trans-coord
Module name:    trans-coord
Changes by:     Yavor Doganov <yavor>   08/02/20 09:11:09

Added files:
        gnun/server/gnun: ChangeLog GNUmakefile README TODO fdl.texi 
                          generic.af.html generic.bg.html 
                          generic.pl.html generic.zh-cn.html gnun.mk 
                          gnun.texi make-prototype validate-html 
Removed files:
        gnun/prep/gnun : ChangeLog GNUmakefile README TODO fdl.texi 
                         generic.af.html generic.bg.html generic.pl.html 
                         generic.zh-cn.html gnun.mk gnun.texi 
                         make-prototype validate-html 

Log message:
        Move to the new home /server/gnun.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/ChangeLog?cvsroot=trans-coord&r1=1.60&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/GNUmakefile?cvsroot=trans-coord&r1=1.40&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/README?cvsroot=trans-coord&r1=1.7&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/TODO?cvsroot=trans-coord&r1=1.15&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/fdl.texi?cvsroot=trans-coord&r1=1.1&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/generic.af.html?cvsroot=trans-coord&r1=1.1&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/generic.bg.html?cvsroot=trans-coord&r1=1.2&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/generic.pl.html?cvsroot=trans-coord&r1=1.1.1.1&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/generic.zh-cn.html?cvsroot=trans-coord&r1=1.1.1.1&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/gnun.mk?cvsroot=trans-coord&r1=1.7&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/gnun.texi?cvsroot=trans-coord&r1=1.17&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/make-prototype?cvsroot=trans-coord&r1=1.7&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/prep/gnun/validate-html?cvsroot=trans-coord&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/ChangeLog?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/GNUmakefile?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/README?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/TODO?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/fdl.texi?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/generic.af.html?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/generic.bg.html?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/generic.pl.html?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/generic.zh-cn.html?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/gnun.mk?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/gnun.texi?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/make-prototype?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/validate-html?cvsroot=trans-coord&rev=1.1

Patches:
Index: server/gnun/ChangeLog
===================================================================
RCS file: server/gnun/ChangeLog
diff -N server/gnun/ChangeLog
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/ChangeLog       20 Feb 2008 09:11:07 -0000      1.1
@@ -0,0 +1,859 @@
+2008-02-20  Yavor Doganov  <address@hidden>
+
+       * gnun.texi (Advantages): Clarify the usefulness of `urgent'
+       notices propagation.
+       (Concepts): Use double quotes for po4a's meaning.
+
+2008-02-19  Yavor Doganov  <address@hidden>
+           Kaloian Doganov  <address@hidden>
+
+       * make-prototype (slot-translators-notes)
+       (slot-translators-credits): Inject hints for translators in the
+       POT files in the form of comments.
+
+2008-02-18  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (generic_rules): Fixed a bug which prevented
+       generic.af.html to be made.
+       (GENERIC_LINGUAS, generic-var): New helper variables.
+
+2008-02-17  Yavor Doganov  <address@hidden>
+
+       * gnun.texi (Migrating): Add extra sentence to raise translators'
+       attention.
+       (New Translation, generic.LANG.html): Use @var{lang} instead of
+       @code{xx} and the like.
+
+       * GNUmakefile (verbatim-templates): Add Afrikaans templates.
+       * gnun.mk (TEMPLATE_LINGUAS): Remove `fr' and add `af'.
+
+2008-02-16  Yavor Doganov  <address@hidden>
+
+       * gnun.texi (Concepts): Typo fix.
+       (Disadvantages, Usage, Runtime Variables, New Translation)
+       (Migrating, generic.LANG.html, make-prototype): Use @var{lang}
+       instead of `xx' for consistency with the gettext manual.
+
+2008-02-15  Yavor Doganov  <address@hidden>
+
+       * README: Po4a 0.32 is the minimal requirement.
+
+       * gnun.texi (Advantages): Fix grammar error.    
+       (sync): Document the new behavior wrt `verbatim-templates'.
+       (Advantages, make-prototype): Use @acronym for SSI.
+       (validate-html): Likewise for W3C.
+
+2008-02-14  Yavor Doganov  <address@hidden>
+
+       * gnun.texi (Concepts): Typo fix.
+
+2008-02-14  Kaloian Doganov  <address@hidden>
+
+       * gnun.texi (Concepts): More explanations and a diagram for the
+       "big picture".  Influenced by the relevant section in
+       gettext.texi.
+       (Advantages): Replace "immigrants" with "speakers".
+
+2008-02-13  Kaloian Doganov  <address@hidden>
+
+       * README: Mention "W3C XHMTL 1.0 DTDs" as an upstream package name
+       instead of the Debian-specific one.
+
+2008-02-10  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile: Various doc fixes.
+
+       * gnun.texi (New Translation, Migrating): Use @group in the PO
+       header examples.
+       (Advantages): Mention that no extra work is required to migrate
+       from the old style to new style.
+
+2008-02-09  Yavor Doganov  <address@hidden>
+
+       * gnun.texi: New file; basic skeleton of the documentation.
+       * fdl.texi: Import from the canonical location.
+       
+2008-02-08  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (generate-pot): Indent and use a workaround for
+       Emacs font lock issue.
+
+2008-02-08  Kaloian Doganov  <address@hidden>
+
+       * validate-html: Enrich xmllint's error messages with additional
+       context lines from the input file.
+
+2008-02-08  Yavor Doganov  <address@hidden>
+
+       Implement validation for PO files.
+       * GNUmakefile (MSGFMT): New variable.
+       (check-po): New variable containing the command to check the .po
+       files.
+       ($(template_dir)/po/%.$(1).po, $(rootdir)/po/home.$(1).po)
+       ($(1).po): Use it.
+
+2008-02-07  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (verbatim-templates): New variable.
+       (sync): Synchronize server templates that are not gettextized, to
+       enable validation at build time.
+       ($(rootdir)/home.$(1).shtml): Add a `trans-coord'-specific
+       conditional to specify the languages we want to validate.
+
+2008-02-06  Yavor Doganov  <address@hidden>
+
+       * validate-html: Add license notice.
+
+       * GNUmakefile (VALIDATESKIP): Use a more robust way to check the
+       value of $(VALIDATE), like $(VCS).
+
+2008-02-06  Kaloian Doganov  <address@hidden>
+
+       * validate-html: Lookup for user-wide DTD resources in addition to
+       the system wide catalog.
+       * README: Mention w3c-dtd-xhtml as a dependency.
+
+       * GNUmakefile (VALIDATE-HTML, VALIDATESKIP): New variables.
+       ($(rootdir)/po/home.proto, $(1).proto $(1).translinks): Introduce
+       validation for original HMTL files.
+       ($(rootdir)/home.$(1).shtml, $(subst /po/,/,$(1).html)): Introduce
+       validation for generated HTML files.
+
+2008-02-06  Yavor Doganov  <address@hidden>
+
+       * gnun.mk (gnu): Add `gnu-history', `linux-and-gnu' and
+       `why-gnu-linux'.
+       (philosophy): Add `can-you-trust', `free-software-for-freedom',
+       `free-sw', `open-source-misses-the-point', `right-to-read' and
+       `software-literary-patents'.
+
+       * validate-html (FILE): Do not define it.
+       Fix a typo in the sed expression.
+       Instead of hanging, fail if no file is supplied as argument.
+
+2008-02-06  Kaloian Doganov  <address@hidden>
+
+       * validate-html: New script to validate XHTML files.
+       * README: Mention two dependencies.
+
+2008-02-05  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (template_files): Remove `banner-homepage', deleted
+       from the master `www' repository.
+       (replaceable_includes): Likewise.
+
+2008-02-04  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (sync): If the file to sync was deleted from the
+       `www' repository, send a warning mail to the list instead of
+       failing with an error.  Use $(CVSSKIP) to suppress the mail and
+       commiting the synced files.
+       (devel_addr): New variable.
+
+2008-02-01  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (template_files, sync): Revert last change; test
+       successful.
+
+2008-02-01  Kaloian Doganov  <address@hidden>
+
+       * GNUmakefile (CVSOPTS): Replaced by...
+       (CVSSKIP): ...which conditionally holds a command that suppresses
+       $(CVS) invocations.  All uses changed.
+
+2008-02-01  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile ($(template_dir)/po/%.$(1).po): Revert last change.
+       (template_files): Add `dummy' to test template_rules after the
+       last snafu.
+       (sync): Ignore errors from the first command just for the test,
+       since it will definitely fail because dummy.html does not exist in
+       the `www' repository.
+
+2008-01-31  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (.PRECIOUS): Depend on $(template_dir)/po/%.$(1).po.
+       ($(template_dir)/po/%.$(1).po): Temporarily disable $(CVS)
+       invocation, since the targets are already `cvs add'-ed.
+
+2008-01-30  Kaloian Doganov  <address@hidden>
+
+       * gnun.mk (philosophy): Add `java-trap' and `sun-in-night-time'.
+
+2008-01-30  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile ($(template_dir)/po/%.$(1).po): Handle the case when
+       webmasters add a new template file but translators cannot catch up
+       immediately; simply copy the newly generated .pot as .xx.po for
+       every language in TEMPLATE_LINGUAS.
+       (replaceable_includes): Doc fix.
+
+2008-01-29  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (MV, TOUCH): Delete and invoke the programs
+       directly.  All uses changed.
+       (template_files, replaceable_includes): Add `banner-homepage'.
+
+2008-01-29  Kaloian Doganov  <address@hidden>
+
+       * make-prototype:
+       * GNUmakefile: Skip tag <gnu.org-i18n> is renamed to <gnun>.
+       (generate-pot): Fixed bug of inverted logical operator.
+
+2008-01-28  Yavor Doganov  <address@hidden>
+
+       * make-prototype:
+       * GNUmakefile:
+       * gnun.mk: Use the new format of the license notice.
+
+2008-01-28  Kaloian Doganov  <address@hidden>
+
+       * make-prototype (slot-translators-notes)
+       (slot-translators-credits): Strings changed to reflect the new
+       project name (GNUN).
+
+       * GNUmakefile (generate-pot): Fixed bug in variable quoting.
+
+2008-01-28  Yavor Doganov  <address@hidden>
+
+       * GNUmakefile (addfile_dbl): Delete and use double escaped
+       `$(addfile)' instead.  All uses changed.
+
+2008-01-28  Kaloian Doganov  <address@hidden>
+
+       Ignore POT-Creation-Date changes when they are the only changes in
+       a pot-file.
+       * GNUmakefile (MV): Define to mv.
+       (generate-pot): New variable to hold canned sequence of commands.
+       ($(template_dir)/po/%.pot, $(rootdir)/po/home.pot, $(1).pot): Use
+       generate-pot instead of direct invocation of $(PO4A-GETTEXTIZE).
+
+2008-01-27  Yavor Doganov  <address@hidden>
+
+       * gnun.mk (philosophy): Add `philosophy' to test VCS=yes.
+
+2008-01-26  Yavor Doganov  <address@hidden>
+
+       Complete support for VCS=(yes|always).
+       * GNUmakefile (CVS): Define to cvs.
+       (vc-add-always): New conditional Phony target.
+       (all): Depend on vcs-add-always.
+       (generic_rules): Simplify and delete the double-colon rule; no
+       longer needed.  Remove Subversion-specific conditionals.
+       ($(rootdir)/po/home.pot, $(rootdir)/home.$(1).shtml): Adjust as
+       above.
+       ($(template_dir)/po/%.pot, $(template_dir)/%.$(1).html, $(1).pot)
+       ($(subst /po/,/,$(1).html)): Add ($addfile) or $(addfile_dbl) as
+       first command to the recipe, where appropriate. 
+       (sync): Use the CVS variable for consistency.
+
+2008-01-26  Kaloian Doganov  <address@hidden>
+
+       * GNUmakefile (template_rules, home_rules)
+       (article_rules): Reduce continuous whitespace with multiple
+       newlines before a comment.
+
+2008-01-26  Yavor Doganov  <address@hidden>
+
+       Implement automatic synchronization of the original articles from
+       `www'.  Intended to be run by a cron job, since paths are
+       hardcoded.
+       * GNUmakefile (sync): New Phony target.
+       (wwwdir, orig-templates, orig-articles): New variables.
+       (files-to-sync, abs-files-to-sync): Likewise.
+
+2008-01-14  Yavor Doganov  <address@hidden>
+
+       * make-prototype (version-message): Update year to 2008.
+
+2008-01-13  Yavor Doganov  <address@hidden>
+
+       * make-prototype:
+       * gnun.mk:
+       * GNUmakefile: Update copyright years.
+
+       * prep/i18n/i18n.mk: Rename to...
+       * prep/gnun/gnun.mk: ...as agreed.
+       * prep/gnun/GNUmakefile: Include gnun.mk.
+
+2007-12-31  Kaloian Doganov  <address@hidden>
+
+       * www/prep/i18n/GNUmakefile:
+       * www/prep/i18n/i18n.mk:
+       * www/prep/i18n/make-prototype: Fixed typo in the copyright
+       notice.
+
+2007-12-31  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/make-prototype: Removed non-sense commented lines left
+       out by mistake.
+       (make-article, make-home): Removed old debug code.  Insert an
+       autogenerated warning message message in the output.
+       (help-message): Fixed a typo in the command name.
+       (slot-translators-note): Renamed to slot-translators-notes.  All
+       referrers changed.
+       (skip-tag): New variable to hold the name of the skip tag
+       "gnu.org-i18n" used to escape non-translatable strings.
+        (<skip-tag>, </skip-tag>): Convenient shortcuts for using the
+       value of skip-tag.  All users of "gnu.org-i18n" literal changed.
+       (article-page-regexp, home-page-regexp): Add one more capturing
+       group before the "<title>" tag, where the warning message should
+       be placed.
+       (autogenerated-warning): New variable defining the warning
+       message.
+       (<autogenerated-warning>): A convenient shortcut for using the
+       value of autogenerated-warning.
+
+       * gnu/po/gnu.pot:
+       * gnu/po/rms-lisp.pot:
+       * home.bg.shtml:
+       * home.pl.shtml:
+       * home.zh-cn.shtml:
+       * philosophy/po/bdk.pot:
+       * philosophy/po/eldred-amicus.pot:
+       * philosophy/po/schools.bg.po:
+       * philosophy/po/schools.pot:
+       * philosophy/schools.bg.html:
+       * po/home.bg.po:
+       * po/home.pl.po:
+       * po/home.pot:
+       * po/home.zh-cn.po:
+       * po/keepingup.pot:
+       * po/provide.pot:
+       * server/po/banner.pot:
+       * server/po/footer-text.pot: Regenerate forcefully with `make -B'
+       to enforce the inclusion of the "automatically generated" warning
+       message.
+
+2007-12-29  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/make-prototype: New script.  Combines functionality
+       from make-prototype.scm and make-prototype-home.scm, which both
+       are now obsolete.  Includes sane command line parser and brief
+       help.
+       * prep/i18n/make-prototype.scm: Deleted.
+       * prep/i18n/make-prototype-home.scm: Deleted.
+       * prep/i18n/GNUmakefile: Updated calls to
+       prep/i18n/make-prototype.
+
+2007-12-28  Yavor Doganov  <address@hidden>
+
+       Initial partially working VCS support for generic.xx.html and the
+       homepages.
+       * prep/i18n/GNUmakefile (CVS): New variable.
+       (CVSOPTS): New conditionally defined variable, based on the value
+       of VCS.
+       (addfile, addfile_dbl): Define command sequences for convenience.
+       (generic_rules): Use them.  Implement a conditional double-colon
+       template rule and modified commands based on VCS=always and
+       CVS=svn.
+       ($(rootdir)/po/home.pot, $(rootdir)/home.$(1).shtml): Add
+       conditional commands for adding the targets under VCS control.
+       Does not work reliably (or should I say "at all") with `make
+       VCS=always' when the targets are considered up-to-date. 
+
+2007-12-12  Yavor Doganov  <address@hidden>
+
+       * home.bg.shtml: Regenerate.
+
+       First real simulation of the new translation process.
+       * po/home.bg.po: Translated fuzzy/untranslated messages with Emacs
+       PO mode.
+
+       * server/po/banner.pot:
+       * server/po/footer-text.pot:
+       * server/po/banner.bg.po:
+       * server/po/banner.fr.po:
+       * server/po/footer-text.bg.po:
+       * server/po/footer-text.fr.po:
+       * server/banner.bg.html:
+       * server/banner.fr.html: Regenerate forcefully with `make -B
+       <target>' to enforce the usage of the xhtml module.
+
+2007-12-12  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile ($(template_dir)/po/%.pot): Po4a backend
+       switch from html to xhtml.
+       (template_rules): Likewise.
+       (PO4A_HTMLFLAGS): Deleted, since html backend is not used anymore.
+
+2007-12-10  Yavor Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile:
+       * prep/i18n/i18n.mk:
+       * prep/i18n/make-prototype.scm:
+       * prep/i18n/make-prototype-home.scm: Add license notices.
+
+2007-12-09  Yavor Doganov  <address@hidden>
+
+       First real-life simulation of the build system, commit as a
+       separate revision so that everyone can reproduce the make process
+       with the VCS.
+       * po/home.pot:
+       * po/home.bg.po:
+       * po/home.pl.po:
+       * po/home.zh-cn.po:
+       * home.bg.shtml:
+       * home.pl.shtml:
+       * home.zh-cn.shtml:
+       * server/po/banner.pot:
+       * server/po/banner.bg.po:
+       * server/po/banner.fr.po:
+       * server/banner.bg.html:
+       * server/banner.fr.html:
+       * server/po/footer-text.pot:
+       * server/po/footer-text.bg.po:
+       * server/po/footer-text.fr.po:
+       * server/footer-text.bg.html:
+       * server/footer-text.fr.html: Regenerated by simply running
+       `make -C prep/i18n'.
+
+2007-12-09  Yavor Doganov  <address@hidden>
+
+       Update to the new style.
+       * prep/i18n/GNUmakefile (template_files): Remove
+       sidebar-fsf-support, sidebar-top-half and sidebar-stay; all
+       obsolete now.
+       * home.shtml:
+       * server/banner.html:
+       * server/footer-text.html: Update from the `www' master repo.
+       * server/sidebar-fsf-support.html:
+       * server/footer-text.html:
+       * server/sidebar-top-half.html:
+       * server/sidebar-bottom-half.html:
+       * server/sidebar-stay.html:
+       * server/po/sidebar-fsf-support.fr.po:
+       * server/po/sidebar-top-half.pot:
+       * server/po/sidebar-bottom-half.pot:
+       * server/po/sidebar-top-half.bg.po:
+       * server/po/sidebar-bottom-half.bg.po:
+       * server/po/sidebar-stay.pot:
+       * server/po/sidebar-stay.bg.po:
+       * server/po/sidebar-fsf-support.pot:
+       * server/po/sidebar-fsf-support.bg.po:
+       * server/po/sidebar-top-half.fr.po:
+       * server/po/sidebar-bottom-half.fr.po:
+       * server/po/sidebar-stay.fr.po: Delete; not needed anymore.
+
+2007-12-08  Yavor Doganov  <address@hidden>
+
+       * home.bg.shtml:
+       * home.pl.shtml:
+       * home.zh-cn.shtml:
+       * prep/i18n/generic.pl.html:
+       * server/banner.fr.html:
+       * server/footer-text.bg.html:
+       * server/footer-text.fr.html: Add these generated files to provoke
+       full simulation.
+
+2007-12-07  Yavor Doganov  <address@hidden>
+
+       Fix the Polish gnusflashes unpleasant situation.
+       * prep/i18n/GNUmakefile ($(rootdir)/home.$(1).shtml): Use an
+       `ifeq' conditional that tests if the value of h_lang is `pl' and
+       executes a simplified command.  Document the reason.
+       * prep/i18n/i18n.mk (HOME_LINGUAS): Add pl.
+       * po/home.pl.po: New untranslated file to test the proper
+       generation of the Polish homepage.
+
+2007-12-07  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto)
+       ($(1).proto $(1).translinks): Fixed a bug that caused make to stop
+       regardless of the exit status of the Scheme script.
+
+2007-12-06  Yavor Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto)
+       ($(1).proto $(1).translinks): If the .proto and .translinks
+       generation fails (usually due to a validation bug in the source
+       article or bug in the Scheme script itself), exit with a non-zero
+       status right after deleting the targets, so that make stops
+       exactly on these commands.
+
+2007-12-05  Yavor Doganov  <address@hidden>
+
+       * keepingup.html: Updated from `www' with bugfixes.
+       * po/keepingup.pot: Generated.
+
+       * keepingup.html:
+       * provide.html:
+       * gnu/gnu.html:
+       * gnu/rms-lisp.html:
+       * philosophy/bdk.html:
+       * philosophy/eldred-amicus.html: Imported new articles from the
+       central `www' repository to test the new rules.
+       * po/provide.pot:
+       * gnu/po/gnu.pot:
+       * gnu/po/rms-lisp.pot:
+       * philosophy/po/bdk.pot:
+       * philosophy/po/eldred-amicus.pot: Generated.
+       * po/home.pot:
+       * po/home.zh-cn.po:
+       * philosophy/po/schools.pot: Updated.
+
+2007-09-08  Yavor Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile (article_rules) [generic.$(2).html]: Move
+       into its own template `generic_rules' and rename it to
+       `generic.$(1).html'.  This is necessary because there might be
+       only home.cs.po without any other article translated in Czech. The
+       home rule would fail in that case.
+
+2007-09-07  Yavor Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile (article_rules) [generic.$(2).html]: New
+       target.
+       ($(subst /po/,/,$(1).html)): Depend on it, so if the team changes
+       the description, all articles under make's control to be updated.
+       Remove the command that checks for the presence and touches the
+       file.
+
+       * prep/i18n/GNUmakefile: Housekeeping. Delete the redundant
+       `targets' from all comments.
+
+       * prep/i18n/GNUmakefile (rootdir, replaceable_includes): Define as
+       simply expanded.
+
+       * prep/i18n/i18n.mk: Mark all variables as simply expanded.
+
+       * prep/i18n/GNUmakefile (home.proto, article_pot_rules)
+       [$(1).proto $(1).translinks]: If $(MAKE_PROTOTYPE_HOME) and
+       $(MAKE_PROTOTYPE) exit with a non-zero code, remove the possibly
+       erroneously generated files in order targets not to be considered
+       up-to-date on the next make's run.  This prevents breaking the
+       translations badly further in the chain.  The Scheme backtrace
+       should be sufficient to figure out what's going on.
+
+2007-09-05  Yavor Doganov  <address@hidden>
+
+       Initial implementation of the generalization of the generic
+       articles' translations and PO/POT manipulation.
+       * prep/i18n/i18n.mk (ROOT, gnu, philosophy, ALL_DIRS): New
+       variables.
+       * prep/i18n/GNUmakefile (articles, articles_pot, root_articles)
+       (root_articles_pot, ALL_POTS, ALL_BASE, find_po, ALL_POS)
+       (ALL_POS_BASE, articles_translated): New variables.
+       (all): Depend on $(ALL_POTS) and $(articles_translated), remove
+       schools.bg.html.
+       (article_pot_rules, article_rules): New `define'd template rules,
+       replacing entirely all schools's rules.
+
+2007-08-19  Kaloian Doganov  <address@hidden>
+
+       * po/home.bg.po: Partly translated according to Yavor Doganov's
+       <address@hidden> translation.
+
+2007-08-19  Yavor Doganov  <address@hidden>
+
+       * po/home.bg.po: Filled encoding in `Content-Type' and
+       `Content-Transfer-Encoding' headers.
+       * po/home.zh-cn.po: Added a dummy file to let `make' exit w/o
+       errors.
+       * server/po/sidebar-fsf-support.fr.po: Likewise.
+       * server/po/banner.fr.po: Likewise.
+       * server/po/footer-text.fr.po: Likewise.
+       * server/po/sidebar-top-half.fr.po: Likewise.
+       * server/po/sidebar-bottom-half.fr.po: Likewise.
+       * server/po/sidebar-stay.fr.po: Likewise.
+
+2007-08-19  Kaloian Doganov  <address@hidden>
+
+       * philosophy/schools.pot: Updated using latest po4a toolkit with
+       xhtml backend.
+       * philosophy/schools.bg.po: Likewise.
+       * philosophy/schools.bg.html: Regenerated using latest po4a
+       toolkit and schools.bg.po.
+
+       * prep/i18n/GNUmakefile (../../philosophy/po/schools.proto): fixed
+       a typo in prerequisites.
+
+       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto)
+       ($(rootdir)/home.$(1).shtml, ../../philosophy/po/schools.proto)
+       (../../philosophy/schools.bg.html): A new special tag
+       <gnu.org-i18n> is used to denote non-translatable strings (instead
+       of HTML comments).
+       * prep/i18n/make-prototype-home.scm: <gnu.org-i18n> used to escape
+       non-translatable strings.
+       * prep/i18n/make-prototype.scm: Likewise.
+
+2007-08-12  Yavor Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile (home.$(1).shtml): Fixed escaping problems
+       in the sed expressions as a result of the `eval' function.
+
+       * prep/i18n/GNUmakefile (home.$(1).shtml): Added a comment about
+       another escape error.
+
+       * prep/i18n/GNUmakefile: Fixed a typo (replacable -> replaceable);
+       all uses changed. Added a note about a bug in the home.$(1).shtml
+       target.
+       (home.$(1).shtml): Added a sed expression to replace
+       gnusflashes.include with the translated one.
+
+       * prep/i18n/GNUmakefile (template_dir): Compute it based on
+       $(rootdir).
+       (home.proto): Deleted comments for bugginess, not relevant any
+       more.
+
+2007-08-12  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile (PO4A_XHTMLFLAGS): Updated for
+       compatibility with po4a from the latest CVS HEAD.
+
+       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto): Removed
+       language code from "generic.html".
+       ($(rootdir)/home.$(1).shtml): Added command to replace
+       "generic.html" with "generic.LANG.html".
+       (../../philosophy/po/schools.proto): Removed language code from
+       "generic.html".
+       (../../philosophy/schools.bg.html): Added command to replace
+       "generic.html" with "generic.LANG.html".
+
+       * po/home.pot: Added.
+       * po/home.bg.po: Added.
+       * prep/i18n/make-prototype-home.scm: Added. Variant of
+       make-prototype.scm to handle the special case of home.shtml.
+       * prep/i18n/GNUmakefile (MAKE-PROTOTYPE-HOME): New variable for
+       calling make-prototype-home.scm.
+       ($(rootdir)/po/home.proto): Call to MAKE-PROTOTYPE-HOME instead of
+       MAKE-PROTOTYPE.  Unescape special characters since this rule is no
+       longer evaluated with `eval'.
+       ($(rootdir)/home.$(1).shtml): Fixed typo in call to PO4A-TRANSLATE.
+
+       * prep/i18n/make-prototype.scm: Variable temp-filename renamed to
+       proto-filename in order to reflect the current terminology.
+
+2007-08-11  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile (../../philosophy/schools.bg.html): As
+       articles are treated as XHTML, po4a-translate must be invoked with
+       xhtml flags, not html ones.
+
+       * prep/i18n/GNUmakefile (PO4A_XHTMLFLAGS): Fixed bug in parser
+       options.
+
+       * prep/i18n/GNUmakefile (PO4A-GETTEXTIZE, PO4A-TRANSLATE): Program
+       flags are moved in two groups of variables grouped by tool and by
+       format.
+       (PO4A-GETTEXTIZEFLAGS): Flags for po4a-gettextize.
+       (PO4A-TRANSLATEFLAGS): Flags for po4a-translate.
+       (PO4A_HTMLFLAGS): Flags to select HTML format.
+       (PO4A_XHTMLFLAGS): Flags to select XHTML format.  All callers
+       changed.
+
+       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto): Taken out from
+       home_rules, since there is no need to regenerate this rule for
+       every language.
+
+2007-08-11  Yavor Doganov  <address@hidden>
+
+       Preliminary support for the homepages.
+       * home.shtml: Added.
+       * prep/i18n/generic.zh-cn.html: Likewise.
+       * prep/i18n/i18n.mk (HOME_LINGUAS): New variable.
+       * prep/i18n/GNUmakefile (rootdir): New global variable.
+       (home_lang, home_translated): New variables.
+       (all): Depend on home_translated.
+       ($(rootdir)/po/home.pot): New target.
+       ($(rootdir)/po/home.proto, $(rootdir)/po/home.$(1).po)
+       ($(rootdir)/home.$(1).shtml): New targets, encapsulated in `define
+       home_rules'.
+
+2007-08-11  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile (template_translated_base)
+       (template_translated): Defined as simply expanded variables for
+       performance and error-proofing reasons.
+
+2007-08-10  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/GNUmakefile: Cleaner way to calculate
+       template_translated.
+
+2007-08-10  Yavor Doganov  <address@hidden>
+
+       * prep/i18n/Makefile: Renamed to...
+       * prep/i18n/GNUmakefile: ...since we use a lot of GNU extensions.
+
+2007-08-09  Kaloian Doganov  <address@hidden>
+
+       * prep/i18n/Makefile:
+       * prep/i18n/make-prototype.scm:
+       * prep/i18n/make-template.scm: Преименуван на 
make-prototype.scm
+       за да се избегне припокриването с вече 
същестуващата употреба на
+       термина `template'.
+
+2007-08-09  Yavor Doganov  <address@hidden>
+
+       * prep/i18n/i18n.mk: New file.
+       * prep/i18n/Makefile: Include i18n.mk.
+       (template_translated_base): New variable.
+       (template_translated): Make it appendable and encapsulate it in
+       `define'; call a special pattern function for substitution of
+       $(TEMPLATE_LINGUAS).
+       (template_rules): Likewise, pattern rules invoked by `eval' and
+       'call'.
+
+2007-08-08  Yavor Doganov  <address@hidden>
+
+       * prep/i18n/Makefile (RM): Do not define it as it is `rm -f' by
+       default.  Adjusted all variables, targets, rules and commands to
+       the new path.
+
+       * Makefile:
+       * make-template.scm: Moved to www/prep/i18n to mimic the official
+       repo's layout.
+
+2007-08-07  Kaloian Doganov  <address@hidden>
+
+       * Makefile:
+       * prep/i18n/generic.bg.html:
+       * standards/translation-generic.bg.html: Преместен и 
преименуван
+       като www/standards/generic.bg.html.
+
+       * prep/i18n: Създадена директория за съх
раняване на файловете с
+       обща информация за екипите/проектите 
за превод.
+
+2007-08-05  Yavor Doganov  <address@hidden>
+
+       Първа стъпка при генерализацаията на 
шаблоните в /server.
+       * Makefile (template_dir, template_files, template_pot)
+       (template_translated): Нови променливи.
+       (all): Замяна на banner.bg.html с $(template_translated).
+       (.PRECIOUS): Нова специална цел.
+       (banner.bg.pot): Целта преместена...
+       ($(template_dir)/po/%.pot): ...тук.
+       (banner.bg.po): Преместена...
+       ($(template_dir)/po/%.bg.po): ...тук.
+       (banner.bg.html): Преместена...
+       ($(template_dir)/%.bg.html): ...тук.
+       Използване на автоматични променливи, 
където е възможно.
+       * server/sidebar-fsf-support.html:
+       * server/footer-text.html:
+       * server/sidebar-top-half.html:
+       * server/sidebar-bottom-half.html:
+       * server/sidebar-stay.html: Копирани от 
официалното хранилище
+       `www'.
+       * server/po/sidebar-fsf-support.pot:
+       * server/po/footer-text.pot:
+       * server/po/sidebar-top-half.pot:
+       * server/po/sidebar-bottom-half.pot:
+       * server/po/sidebar-stay.pot:
+       * server/po/sidebar-fsf-support.bg.po:
+       * server/po/footer-text.bg.po:
+       * server/po/sidebar-top-half.bg.po:
+       * server/po/sidebar-bottom-half.bg.po:
+       * server/po/sidebar-stay.bg.po: Генерирани и 
добавени (засега без
+       превод).
+
+2007-08-05  Kaloian Doganov  <address@hidden>
+
+       * server/banner.bg.html:
+       * server/po/banner.bg.po:
+       * server/po/banner.pot: Превод на banner.bg.po
+
+       * server/banner.html: Премахнат паразитен низ, 
оставен от по-ранни
+       тестове.
+
+       * Makefile:
+       * server/banner.bg.html:
+       * server/banner.html:
+       * server/po/banner.bg.po:
+       * server/po/banner.pot: Инфраструктура за 
интернационализация на
+       www/server/banner.html.
+
+2007-08-03  Kaloian Doganov  <address@hidden>
+
+       * cut-translations.scm:
+       * philosophy/po/schools.bg.po:
+       * philosophy/po/schools.pot: Разместване местата на 
бележките под
+       линия и заслугите.
+
+       * philosophy/po/schools.bg.po: Действително 
подаване на промените,
+       описани в предното съобщение.
+
+       * cut-translations (main): Регулярният израз, 
използван за
+       съпоставяне на HTML-станиците, е изнесен 
в отделна променлива
+       page-regexp.  Вмъкнат параметър на втора 
позиция -- име на файла с
+       обща информация за превода.  Поставяне 
на slot-ове за бележки на
+       преводача, заслуги на преводача и обща 
информация за превода.
+       * schools.pot: Добавени са служебни низове за 
бележки на преводача
+       и заслуги.
+       * schools.bg.po: Преведени са новите служебни 
низове бележки на
+       преводача и заслуги.
+       * translation-generic.bg.html: Обща информация за 
преводите на
+       български език.
+       * Makefile (www/philosophy/schools.bg.html): Зависимост към
+       www/standards/translation-generic.bg.html.
+
+2007-08-01  Kaloian Doganov  <address@hidden>
+
+       * philosophy/po/schools.bg.po:
+       * philosophy/po/schools.pot:
+       * Makefile (www/philosophy/po/schools.temp)
+       (www/philosophy/schools.bg.html): Низът $Date.*$ временно 
се
+       загражда с коментар, така че да не 
влиза в съдържанието на
+       генерирания POT-файл.
+
+2007-07-31  Yavor Doganov  <address@hidden>
+
+       * standards: Добавяне на допълнителна 
директория, която да емулира
+       /server/standards/translations (мястото, където ще се 
съдържа файл
+       с информация за съответния екип.)
+
+2007-07-31  Kaloian Doganov  <address@hidden>
+
+       * philosophy/po/schools.bg.po:
+       * philosophy/po/schools.pot: Списъкът с езиците 
вече не част от
+       .po и .pot-файловете.
+
+       * philosophy/po/schools.bg.po:
+       * philosophy/schools.bg.html: Преведени са всички 
абзаци от
+       schools.
+
+       * philosophy/po/schools.bg.po:
+       * philosophy/po/schools.pot:
+       * philosophy/schools.bg.html: Частичен превод на 
schools.
+
+       * gnu.org-i18n/po4a:
+       * Makefile: Създаване на клон po4a от translate.
+
+       * Makefile: Досегашната разработка е 
преместена в клона translate.
+
+2007-07-30  Kaloian Doganov  <address@hidden>
+
+       * Makefile:
+       * philosophy/schools.bg.html: Генериран schools.bg.html и
+       дефиниции в Makefile за генерирането му.
+
+       * philosophy/po/schools.bg.po: Първоначален "превод" 
на
+       schools.bg.po.
+
+       * Makefile:
+       * philosophy/po/schools.bg.po:
+       * philosophy/po/schools.pot: schools.pot, schools.bg.po и Makefile
+       за генерирането им.
+
+       * philosophy/po: po-директория за преводите на 
philosophy.
+
+       * philosophy/schools.bg.html:
+       * philosophy/schools.html: philosophy/schools.html на 
английски и
+       български.
+
+ Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+
+ This file is part of GNUnited Nations.
+
+ GNUnited Nations is free software: you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ GNUnited Nations is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnited Nations.  If not, see <http://www.gnu.org/licenses/>.

Index: server/gnun/GNUmakefile
===================================================================
RCS file: server/gnun/GNUmakefile
diff -N server/gnun/GNUmakefile
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/GNUmakefile     20 Feb 2008 09:11:07 -0000      1.1
@@ -0,0 +1,315 @@
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+
+# This file is part of GNUnited Nations.
+
+# GNUnited Nations is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# GNUnited Nations is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GNUnited Nations.  If not, see <http://www.gnu.org/licenses/>.
+
+MSGMERGE = msgmerge
+MSGFMT = msgfmt
+PO4A-GETTEXTIZE = po4a-gettextize
+PO4A-TRANSLATE = po4a-translate
+MAKE-PROTOTYPE = ./make-prototype
+VALIDATE-HTML = ./validate-html
+SED = sed
+M4 = m4
+
+PO4A-GETTEXTIZEFLAGS =
+PO4A-TRANSLATEFLAGS = --keep=0
+
+PO4A_XHTMLFLAGS = --format=xhtml -o ontagerror=silent -o "tags=<gnun>"
+
+# This variable exists only for the purpose of defining it to a
+# non-standard executable while testing future cvs releases.  The
+# rules already depend on cvs-specific options.
+CVS := cvs
+
+# Do not `cvs add' any files by default unless VCS=yes.
+ifneq (,$(findstring yes,$(VCS)))
+CVSSKIP :=
+else
+CVSSKIP := echo "SKIP:"
+endif
+
+# Do not validate any files by default unless VALIDATE=yes.
+ifneq (,$(findstring yes,$(VALIDATE)))
+VALIDATESKIP :=
+else
+VALIDATESKIP := echo "SKIP:"
+endif
+
+# Email addresses for notifications.
+devel_addr := address@hidden
+
+rootdir := ../..
+
+# FIXME: footer-short and footer-min are remnants from the old-new
+# design; they should go at some point.
+replaceable_includes := header banner footer footer-short footer-min
+
+include gnun.mk
+
+### Special variables for the `www' master templates ###
+template_dir := $(rootdir)/server
+template_files := banner \
+                 footer-text
+template_translated_base := $(addprefix $(template_dir)/,$(template_files))
+template_lang = $(addsuffix .$(1).html,$(template_translated_base))
+template_translated := $(foreach t_lang,$(TEMPLATE_LINGUAS),$(call 
template_lang,$(t_lang)))
+$(info template_translated = $(template_translated)) # for debugging purposes
+### End of variables declaration (templates) ###
+
+### Special variables for the home pages ###
+home_lang = $(rootdir)/home.$(1).shtml
+home_translated := $(foreach h_lang,$(HOME_LINGUAS),$(call 
home_lang,$(h_lang)))
+$(info home_translated = $(home_translated)) # for debugging purposes
+### End of variables declaration (homepages) ###
+
+### Special variables for all other articles ###
+# FIXME: Variables' computatation could be optimized, but in any event
+# it is much better if translators do not have to add manually anything.
+articles := $(foreach dir,$(ALL_DIRS),$(addprefix $(dir)/po/,$(value $(dir))))
+articles_pot := $(addprefix $(rootdir)/,$(articles:%=%.pot))
+root_articles := $(foreach root_article,$(ROOT),$(addprefix 
$(rootdir)/po/,$(root_article)))
+root_articles_pot := $(root_articles:%=%.pot)
+ALL_POTS := $(articles_pot) $(root_articles_pot)
+ALL_BASE := $(ALL_POTS:%.pot=%)
+find_po = $(wildcard $(1).*.po)
+ALL_POS := $(foreach pot,$(ALL_POTS),$(call find_po,$(basename $(pot))))
+ALL_POS_BASE := $(ALL_POS:%.po=%)
+articles_translated := $(subst /po/,/,$(ALL_POS:%.po=%.html))
+$(info ALL_POTS = $(ALL_POTS))                         # for debugging purposes
+$(info articles_translated = $(articles_translated))   # for debugging purposes
+### End of variables declaration (all articles) ###
+
+.PHONY: all vcs-add-always
+all: $(template_translated) $(home_translated) $(ALL_POTS) \
+     $(articles_translated) vcs-add-always
+
+# The command to add a file to the repository.
+define addfile
+[ -f $@ ] || (touch $@ ; $(CVSSKIP) $(CVS) add $@)
+endef
+
+# The command to generate pot file which perform additional checks
+# whether the changes are not trivial (regarding only
+# POT-Creation-Date), in which case the changes are ignored.
+define generate-pot
address@hidden Generating POT...
+$(PO4A-GETTEXTIZE) $(PO4A_XHTMLFLAGS) $(PO4A-GETTEXTIZEFLAGS) \
+  --master $< --po address@hidden
+if ([ ! -f $@ ] || [ "`diff -U 0 $@ address@hidden | grep -v 
"^\(---\|+++\|@@\)" \
+     | grep -v '^[-+]\"POT-Creation-Date:' | wc -c`" -ne 0 ]); then \
+  mv address@hidden $@ ; \
+fi;
+touch $@
+$(RM) address@hidden
+endef
+
+# The command to check the validity of a PO file.
+define check-po
+$(VALIDATESKIP) $(MSGFMT) --check --verbose --output-file=/dev/null $$@
+endef
+
+# Ensure that generic.LANG.html is always present for the homepage and
+# articles' generation.
+
+define generic-var
+GENERIC_LINGUAS += $(1)
+endef
+
+define generic_rules
+generic.$(1).html:
+       $$(addfile)
+endef
+
+$(foreach h_lang,$(HOME_LINGUAS),$(eval $(call generic-var,$(h_lang))))
+$(foreach po_base,$(ALL_POS_BASE), \
+  $(eval $(call generic-var,$(subst .,,$(suffix $(po_base))))))
+$(foreach g_lang,$(sort $(GENERIC_LINGUAS)), \
+  $(eval $(call generic_rules,$(g_lang))))
+
+### Specific rules for the templates ###
+.PRECIOUS: $(template_dir)/po/%.pot
+$(template_dir)/po/%.pot: $(template_dir)/%.html
+       $(addfile)
+       $(generate-pot)
+
+define template_rules
+.PRECIOUS: $(template_dir)/po/%.$(1).po
+$(template_dir)/po/%.$(1).po: $(template_dir)/po/%.pot
+# If the POT is new, it is natural that teams cannot translate it at
+# once.  Create a copy for every PO file in TEMPLATE_LINGUAS so that
+# the build can continue without errors.
+# FIXME: Check if this approach works with gettext >> 0.14.
+       [ -f $$@ ] || (cp $$< $$@ ; $(CVSSKIP) $(CVS) add $$@)
+# Since we handle the case when new templates are added by webmasters,
+# it is OK to ignore errors from these, at least until fencepost has
+# an old version of gettext.  The XHTML validation errors should be
+# clear even if the bug is in the server templates translations.
+       -$(check-po)
+       @echo Updating PO file...
+       $(MSGMERGE) --update $$@ $$< && touch $$@
+
+$(template_dir)/%.$(1).html: $(template_dir)/%.html 
$(template_dir)/po/%.$(1).po
+       $$(addfile)
+       @echo Generating the translated article...
+       $(PO4A-TRANSLATE) $(PO4A_XHTMLFLAGS) $(PO4A-TRANSLATEFLAGS) --master 
$$< --po \
+               $(template_dir)/po/$$(*F).$(1).po --localized $$@
+       $(SED) --in-place ':egin;N;$$$$!begin;s/\([ \t]*\n[ 
\t]*\)\{3,\}<!--/\n\n<!--/g' $$@
+endef
+
+$(foreach t_lang,$(TEMPLATE_LINGUAS),$(eval $(call template_rules,$(t_lang))))
+### End of the templates-specific rules ###
+
+### Specific rules for the homepages ###
+$(rootdir)/po/home.proto: $(rootdir)/home.shtml
+# Delete the target if the script exits with a non-zero status
+# in order to prevent further messing up in the chain.  For
+# extra safety, exit with an error so that make does not
+# proceed to the next command.
+       $(VALIDATESKIP) $(VALIDATE-HTML) $<
+       $(MAKE-PROTOTYPE) --home --input=$< --generic=generic.html --output=$@ 
|| ($(RM) $@ ; exit 1)
+       $(SED) --in-place "s/\$$Date.*\$$/<gnun>\0<\/gnun>/g" $@
+
+$(rootdir)/po/home.pot: $(rootdir)/po/home.proto
+       $(addfile)
+       $(generate-pot)
+
+define home_rules
+$(rootdir)/po/home.$(1).po: $(rootdir)/po/home.pot
+# This is temporary for `trans-coord'; errors should not be ignored
+# when GNUN runs in the official repository.
+       -$(check-po)
+       $(MSGMERGE) --update $$@ $$<
+       touch $$@
+
+$(rootdir)/home.$(1).shtml: $(rootdir)/po/home.proto 
$(rootdir)/po/home.$(1).po generic.$(1).html
+       $$(addfile)
+       $(PO4A-TRANSLATE) $(PO4A_XHTMLFLAGS) $(PO4A-TRANSLATEFLAGS) --master 
$$< --po $(rootdir)/po/home.$(1).po --localized $(rootdir)/po/home.$(1).m4
+       $(SED) --in-place 
"s/\(<gnun>include(\`.*\)\([.]html')<\/gnun>\)/\1.$(1)\2/g" 
$(rootdir)/po/home.$(1).m4
+       $(SED) --in-place "s/<gnun>\(.*\)<\/gnun>/\1/g" 
$(rootdir)/po/home.$(1).m4
+       $(SED) --in-place ':egin;N;$$$$!begin;s/\([ \t]*\n[ 
\t]*\)\{3,\}<!--/\n\n<!--/g' $(rootdir)/po/home.$(1).m4
+       for replaceable in $(replaceable_includes); do \
+               $(SED) --in-place "s/\(<!--#include 
virtual=\".*$$$$replaceable\)\(.html\" -->\)/\1.$(1)\2/g" 
$(rootdir)/po/home.$(1).m4; \
+       done;
+# Polish is special case, because Apache treats gnusflashes.pl.include
+# as a Perl file.  This is hopefuly a temprorary situation.
+ifeq ($(1), pl)
+       $(SED) --in-place "s/\(<!--#include file=\"gnusflashes*\)\(.include\" 
-->\)/\1.polish\2/g" $(rootdir)/po/home.pl.m4
+else
+       [ ! -f $(rootdir)/gnusflashes.$(1).include ] || $(SED) --in-place 
"s/\(<!--#include file=\"gnusflashes*\)\(.include\" -->\)/\1.$(1)\2/g" 
$(rootdir)/po/home.$(1).m4
+endif
+       $(M4) $(rootdir)/po/home.$(1).m4 > $$@
+# To validate Catalan translations, add `ca' after `bg' and update the
+# variable `verbatim-templates' accordingly.  
+# FIXME: Remove this conditional when GNUN operates in `www', where we
+# want to validate everything.
+ifneq (,$(findstring $(1),bg))
+       $(VALIDATESKIP) $(VALIDATE-HTML) $$@
+endif
+endef
+
+$(foreach h_lang,$(HOME_LINGUAS),$(eval $(call home_rules,$(h_lang))))
+### End of the homepages-specific rules ###
+
+### Rules for all other articles ###
+define article_pot_rules
+$(1).proto $(1).translinks: $(subst /po/,/,$(1).html)
+       $(VALIDATESKIP) $(VALIDATE-HTML) $$<
+       $(MAKE-PROTOTYPE) --input=$$< --generic=generic.html 
--output=$(1).proto --translinks=$(1).translinks || \
+         ($(RM) $(1).proto $(1).translinks ; exit 1)
+       $(SED) --in-place "s/\$$$$Date.*\$$$$/<gnun>\0<\/gnun>/g" $(1).proto
+
+$(1).pot: $(1).proto
+       $$(addfile)
+       $$(generate-pot)
+endef
+
+define article_rules
+$(1).po: $(basename $(1)).pot
+       $(check-po)
+       $(MSGMERGE) --update $$@ $$<
+       touch $$@
+
+$(subst /po/,/,$(1).html): $(basename $(1)).proto $(basename $(1)).translinks 
$(1).po generic.$(2).html
+       $$(addfile)
+       $(PO4A-TRANSLATE) $(PO4A_XHTMLFLAGS) $(PO4A-TRANSLATEFLAGS) --master 
$$< --po $(1).po --localized $(1).m4
+       $(SED) --in-place 
"s/\(<gnun>include(\`.*\)\([.]html')<\/gnun>\)/\1.$(2)\2/g" $(1).m4
+       $(SED) --in-place "s/<gnun>\(.*\)<\/gnun>/\1/g" $(1).m4
+       $(SED) --in-place ':egin;N;$$$$!begin;s/\([ \t]*\n[ 
\t]*\)\{3,\}<!--/\n\n<!--/g' $(1).m4
+       for replaceable in $(replaceable_includes); do \
+               $(SED) --in-place "s/\(<!--#include 
virtual=\".*$$$$replaceable\)\(.html\" -->\)/\1.$(2)\2/g" $(1).m4; \
+       done;
+       $(M4) $(1).m4 > $$@
+       $(VALIDATESKIP) $(VALIDATE-HTML) $$@
+endef
+
+$(foreach base,$(ALL_BASE),$(eval $(call article_pot_rules,$(base))))
+# FIXME: This is close to hell.  There should be an easier way to do it.
+$(foreach po_base,$(ALL_POS_BASE),$(eval $(call 
article_rules,$(po_base),$(subst .,,$(suffix $(po_base))))))
+### End of all articles' rules ###
+
+# If VCS=always, add all necessary files.  The templates' POT are not
+# handled for the moment, but they are more or less stable.  Also,
+# there is no sense in adding home.pot as this should happen only once.
+# WARNING: This is horribly slow and is implemented just in case.
+ifneq (,$(findstring always,$(VCS)))
+vcs-add-always:
+       for file in $(template_translated) $(home_translated) $(ALL_POTS) \
+         $(articles_translated) $(wildcard generic.*.html); do \
+         ($(CVS) add $$file ; exit 0) ; done
+else
+vcs-add-always: ;
+endif
+
+# Special target to sync the original English articles from the `www'
+# repository.  It is intended to be invoked by a fencepost cron job
+# and will be useful even when GNUN is deployed.  Automatic adding and
+# removal is not implemented (except adding `verbatim-templates'), so
+# make sure to `cvs add'/`cvs remove' and commit the article when
+# editing gnun.mk.
+wwwdir := $(rootdir)/$(rootdir)/www
+orig-templates := $(addsuffix .html,$(template_translated_base))
+orig-articles := $(addsuffix .html,$(subst /po/,/,$(ALL_BASE)))
+files-to-sync := $(rootdir)/home.shtml $(orig-templates) $(orig-articles)
+abs-files-to-sync := $(subst $(rootdir)/,,$(files-to-sync))
+# Templates that are not gettextized, but are necessary to reside in
+# trans-coord for HTML validation at build time.
+verbatim-templates := $(addprefix server/,header.html footer.html \
+                                         header.af.html footer.af.html \
+                                         header.bg.html footer.bg.html)
+
+.PHONY: sync
+sync: 
+# Synchronize all articles and report if an article has been deleted
+# from the master repository.
+       for file in $(abs-files-to-sync) ; do \
+         if [ ! -f $(wwwdir)/$$file ] ; then \
+           echo "Warning: $$file missing in www; update the variable?" \
+           | $(CVSSKIP) mail -s "sync: missing file" $(devel_addr) ; \
+         else \
+           cp -p --update $(wwwdir)/$$file $(rootdir)/$$file ; \
+         fi ; done
+# Copy all necessary templates that are not under GNUN's control and
+# `cvs add' them if VCS=yes.
+       for t in $(verbatim-templates) ; do \
+         if [ ! -f $(rootdir)/$$t ] ; then \
+           cp -p $(wwwdir)/$$t $(rootdir)/$$t \
+             && $(CVSSKIP) $(CVS) add $(rootdir)/$$t ; \
+         else \
+           cp -p --update $(wwwdir)/$$t $(rootdir)/$$t ; \
+         fi ; done
+       cd $(rootdir) ; \
+         $(CVSSKIP) $(CVS) commit -m \
+         "Automatic sync from the master www repository."

Index: server/gnun/README
===================================================================
RCS file: server/gnun/README
diff -N server/gnun/README
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/README  20 Feb 2008 09:11:07 -0000      1.1
@@ -0,0 +1,11 @@
+Dependencies
+------------
+GNU Make >= 3.81 (prereleases of 3.81 also work)
+GNU Sed
+GNU Gettext (>= 0.16 ?)
+GNU M4 >= 1.4
+GNU Guile >= 1.6
+po4a 0.32
+Libxml2 (>= 2.6.24, needed for XHTML validation only)
+W3C XHMTL 1.0 DTDs (needed for XHTML validation only)
+CVS (>= 1.12.9, needed if VCS operations are enabled)

Index: server/gnun/TODO
===================================================================
RCS file: server/gnun/TODO
diff -N server/gnun/TODO
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/TODO    20 Feb 2008 09:11:08 -0000      1.1
@@ -0,0 +1,110 @@
+GNUnited Nations TODO List                             -*-outline-*-
+
+* Present bugs
+
+** Po4a wraps the <script> of the FSF widget at /server/banner.html,
+  which makes it disfunctional.  It seems that the problem is the
+  C++-style comment `// already a member...'.  The solution would be
+  either to 1) Include a comment for translators that will appear in
+  PO message not to include it; 2) Delete it somehow automatically; 3)
+  Persuade Matt not do to such things.
+
+** <meta> elements not translatable.
+
+* General (when bugs are fixed)
+
+** The documentation is not complete, and should be improved.
+
+** Experiment with msgmerge's `--previous' option and make it the
+   default, if feasible.  Requires gettext >= 0.16.
+
+** Write a script that will itself invoke $(MAKE), log all output in a
+   file and cvs commit everything ought to be committed.  Deal with SSH
+   woes in order the whole operation to be performed automatically.
+
+** GNU Coding Standards compliance.
+
+*** Standardize all variables'/rules' names.
+
+*** Wrap long lines where possible.
+
+** Add a `check' target (probably using Autoconf or DejaGNU) that would
+   test the environment and all the tools we use.
+
+** Handle errors properly.
+   When make-prototype fails, a proper mail with the error message
+   should be sent to www-discuss.  Likewise, if a translator commits a
+   PO file that is not valid (perhaps this will be very common, at
+   least in the beginning).
+
+* Expected problems
+
+** make-prototype.scm uses a regexp to split the articles in pieces.
+   That regexp might not fit to all articles, that's why it has to be
+   tested with as many as possible.
+
+** RTL.
+
+** Complicated articles like /philosophy/eldred-amicus.
+
+* Non-essential
+
+** Implement a `report' target that would be language specific and will
+   output the state of all files for a language team, and extended
+   `full-report' that will check the activity of all teams for a
+   certain period.  For language teams, a `msgfmt --statistics'-similar
+   output would be sufficient, as a start (probably omiting files that
+   are 100% complete).  (This could be done with a script too.)
+
+** It would be nice to add some preprocessing logic to include specific
+   HTML comments into the POT, like:
+
+   <!-- TRANSLATORS: Do not translate foo as bar, because mumbo jumbo.
+   Read keleme.html for more info. -->
+
+   This could be useful for some articles under /licenses and for
+   several other occasions.
+
+** When commiting automated changes, find a way to generate meaningful
+   CVS log entries, describing the changes.  Something like:
+
+  ,----
+  | Atomatically generated commit message by GNUnited Nations.
+  | 
+  | * po/home.pot: $(actual log entry of home.shtml used by the $webmaster).
+  | * philosophy/bdk.fa.html: Adding Farsi translation # or whatever the
+  |                                                           # Persian leader
+  |                                                   # wrote while
+  |                                                   # commiting the
+  |                                                   # PO file
+  | * gnu/linux-and-gnu.bg.html: Impoved foo (Closes: bug #1234).
+  `----
+
+  Possible implementation is this: When a file is modified, an extra
+  command will append the cvs log message from the original file.
+  Upon successful make && commit, this log file will be deleted.  In
+  case of failure, it will not be deleted so that the accumulated
+  messages will be used in the next run.
+
+** Figure out how to "inject" a language-specific warning, possibly
+   from /prep/i18n/outdated.xx.html that will be displayed when the
+   page has 20% (or more) messages untranslated.  We have to think
+   also about a deprecation plan for all gnu.org translated pages, and
+   whether this software can help sorting all issues out.  Idea: We
+   can use the comment <!-- Automatically generated... --> to add a
+   fake #include directive, which will tell Apache that this page is
+   OK, but in its absence will direct to a separate page (like 404)
+   with a a notice that the translation is very outdated and
+   links/options like 1) Visit the English article; 2) Visit the
+   translation anyway; 3) Help the Foo translation team; 4) Whatever
+   we decide.
+
+** PO mode a bit unsuitable for HTML translations.
+   The window that gets opened when you hit <RET> on a msgstr in PO
+   mode is in Fundamental mode, which leads to many typos that stem
+   from the fact that font lock for HTML is not available.  Ideally,
+   we should find a way to provide a custom code to override PO mode's
+   default behaviour.  Perhaps even a simple facility to convert a
+   standard PO header as generated by Po4a to the recommended format,
+   plus probably other useful things that would save purely mechanical
+   work.

Index: server/gnun/fdl.texi
===================================================================
RCS file: server/gnun/fdl.texi
diff -N server/gnun/fdl.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/fdl.texi        20 Feb 2008 09:11:08 -0000      1.1
@@ -0,0 +1,451 @@
address@hidden The GNU Free Documentation License.
address@hidden Version 1.2, November 2002
+
address@hidden This file is intended to be included within another document,
address@hidden hence no sectioning command or @node.
+
address@hidden
+Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
+51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
address@hidden display
+
address@hidden 0
address@hidden
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
address@hidden
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The ``Document'', below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as ``you''.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject.  (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
address@hidden without markup, Texinfo input format, address@hidden input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
address@hidden, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification.  Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
address@hidden  Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
address@hidden for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
address@hidden
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
address@hidden
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
address@hidden
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
address@hidden A
address@hidden
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document).  You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
address@hidden
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
address@hidden
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
address@hidden
+Preserve all the copyright notices of the Document.
+
address@hidden
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
address@hidden
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
address@hidden
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
address@hidden
+Include an unaltered copy of this License.
+
address@hidden
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page.  If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
address@hidden
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on.  These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
address@hidden
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
address@hidden
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles.  Section numbers
+or the equivalent are not considered part of the section titles.
+
address@hidden
+Delete any section Entitled ``Endorsements''.  Such a section
+may not be included in the Modified Version.
+
address@hidden
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
address@hidden
+Preserve any Warranty Disclaimers.
address@hidden enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
address@hidden
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''.  You must delete all
+sections Entitled ``Endorsements.''
+
address@hidden
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
address@hidden
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
address@hidden
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
address@hidden
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License.  However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
address@hidden
+FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
address@hidden://www.gnu.org/copyleft/}.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License ``or any later version'' applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
address@hidden enumerate
+
address@hidden
address@hidden ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
address@hidden
address@hidden
+  Copyright (C)  @var{year}  @var{your name}.
+  Permission is granted to copy, distribute and/or modify this document
+  under the terms of the GNU Free Documentation License, Version 1.2
+  or any later version published by the Free Software Foundation;
+  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+  Texts.  A copy of the license is included in the section entitled ``GNU
+  Free Documentation License''.
address@hidden group
address@hidden smallexample
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the address@hidden'' line with this:
+
address@hidden
address@hidden
+    with the Invariant Sections being @var{list their titles}, with
+    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
+    being @var{list}.
address@hidden group
address@hidden smallexample
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
address@hidden Local Variables:
address@hidden ispell-local-pdict: "ispell-dict"
address@hidden End:
+

Index: server/gnun/generic.af.html
===================================================================
RCS file: server/gnun/generic.af.html
diff -N server/gnun/generic.af.html

Index: server/gnun/generic.bg.html
===================================================================
RCS file: server/gnun/generic.bg.html
diff -N server/gnun/generic.bg.html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/generic.bg.html 20 Feb 2008 09:11:08 -0000      1.1
@@ -0,0 +1,6 @@
+<p>Моля, докладвайте грешки и предложения 
относно българския превод
+чрез
+<a href="https://savannah.gnu.org/bugs/?group=www-bg";>системата за
+проследяване на грешки</a>
+на <a href="https://savannah.gnu.org/projects/www-bg/";>проекта за
+превод на www.gnu.org</a>.  Благодарим Ви!</p>

Index: server/gnun/generic.pl.html
===================================================================
RCS file: server/gnun/generic.pl.html
diff -N server/gnun/generic.pl.html

Index: server/gnun/generic.zh-cn.html
===================================================================
RCS file: server/gnun/generic.zh-cn.html
diff -N server/gnun/generic.zh-cn.html

Index: server/gnun/gnun.mk
===================================================================
RCS file: server/gnun/gnun.mk
diff -N server/gnun/gnun.mk
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/gnun.mk 20 Feb 2008 09:11:08 -0000      1.1
@@ -0,0 +1,45 @@
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+
+# This file is part of GNUnited Nations.
+
+# GNUnited Nations is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# GNUnited Nations is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GNUnited Nations. If not, see <http://www.gnu.org/licenses/>.
+
+TEMPLATE_LINGUAS := af bg
+
+HOME_LINGUAS := bg pl zh-cn
+
+ROOT :=                keepingup \
+               provide
+
+gnu :=         gnu \
+               gnu-history \
+               linux-and-gnu \
+               rms-lisp \
+               why-gnu-linux
+
+philosophy :=  bdk \
+               can-you-trust \
+               eldred-amicus \
+               free-software-for-freedom \
+               free-sw \
+               java-trap \
+               open-source-misses-the-point \
+               philosophy \
+               right-to-read \
+               schools \
+               software-literary-patents \
+               sun-in-night-time
+
+ALL_DIRS :=    gnu \
+               philosophy

Index: server/gnun/gnun.texi
===================================================================
RCS file: server/gnun/gnun.texi
diff -N server/gnun/gnun.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/gnun.texi       20 Feb 2008 09:11:08 -0000      1.1
@@ -0,0 +1,969 @@
+\input texinfo
address@hidden %**start of header
address@hidden gnun.info
address@hidden GNUnited Nations Manual
address@hidden FIXME: Would be nice to have it in the format `%:b %:d, %:y', but
address@hidden in English.
address@hidden lastupdate 20.02.2008
address@hidden %**end of header
+
address@hidden Please do not use features of Texinfo >> 4.8, which is the 
version
address@hidden available in gNewSense.  Thanks.
+
address@hidden FIXME: Add more xrefs, where appropriate.
address@hidden FIXME: Add indexing commands.
+
address@hidden
+
+This manual is for @acronym{GNU}nited Nations, a suite for maintaining
+translations of www.gnu.org essays and other address@hidden
+Last updated on @value{lastupdate}.
address@hidden 1
+Copyright @copyright{} 2008 Free Software Foundation, Inc.
+
address@hidden
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the @acronym{GNU} Free Documentation License,
+Version 1.2 or any later version published by the Free Software
+Foundation; with no Invariant Sections, no Front-Cover Texts, and no
+Back-Cover Texts.  A copy of the license is included in the section
+entitled address@hidden Free Documentation License.''
address@hidden quotation
address@hidden copying
+
address@hidden
address@hidden GNUnited Nations Manual
address@hidden Software for maintaining www.gnu.org translations
address@hidden (last updated @value{lastupdate})
address@hidden by Yavor Doganov <@email{yavor@@gnu.org}>
address@hidden
address@hidden 0pt plus 1filll
address@hidden
address@hidden titlepage
+
address@hidden
+
address@hidden Localization
address@hidden
+* GNUnited Nations: (gnun).     Maintaining gnu.org translations.
address@hidden direntry
+
address@hidden
address@hidden Top
address@hidden GNUnited Nations
address@hidden
address@hidden ifnottex
+
address@hidden
+* Introduction::        Overview of GNUnited Nations.
+* Usage::               Basic usage, invocation and tips.
+* Internals::           Dive into @acronym{GNUN}.
+* Index::
+* Copying This Manual:: The GNU Free Documentation License.
address@hidden menu
+
address@hidden Introduction
address@hidden Introduction to @acronym{GNU}nited Nations
+
address@hidden Nations (abbreviated @acronym{GNUN}) is a
+collection of makefiles and scripts that are supposed to make the life
+of @url{http://gnu.org} translators easier.  Although it is
+specifically developed for the @acronym{GNU} Project's website, it
+could be customized, at least in theory, to fit the needs of other
+internationalized sites.  @acronym{GNUN} is in early stage of
+development, but if it proves useful, and if there is sufficient
+interest (and time), it is possible to develop a robust configuration
+interface that would be appropriate for general usage.
+
+It is vitally important to understand that @acronym{GNUN} is
address@hidden a silver bullet that solves all problems.  If we have to be
+honest, deploying @acronym{GNUN} in fact even does create some
+(@pxref{Disadvantages}).
+
address@hidden Nations is free software, available under the
address@hidden General Public License.
+
+This manual is organized in way that is suitable both for translators
+and @acronym{GNU} Web Translation managers (plus eventually interested
address@hidden Webmasters, if any).  It may also serve as an
+introductory material and reference for new @acronym{GNUN} developers
+and contributors.  Hopefully, it might be useful to people who
+customize and adopt the software for a third party site or for their
+own needs.  Feel free to skip sections or entire chapters if they are
+irrelevant for your intended usage.
+
+This manual is free documentation, and you can modify and redistribute
+it under the terms of the @acronym{GNU} Free Documentation License.
address@hidden This Manual, ,GNU Free Documentation License}.
+
address@hidden
+* Overview::            What is @acronym{GNUN} and why is necessary?
+* Concepts::            Basic concepts and goals.
+* Advantages::          The goodness @acronym{GNUN} brings.
+* Disadvantages::       Staying on firm ground.
address@hidden menu
+
address@hidden Overview
address@hidden Why @acronym{GNUN} is Being Developed
+
+The @acronym{GNU} Project's website, @uref{http://www.gnu.org}, has
+become considerably large over the years.  Maintaining it requires
+significant effort, and sometimes a new web standard is developed
+faster than the time required to migrate all articles to the next
+widely adopted one.
+
+When it comes to internationalization, the problems are so many that
+it is hard to enumerate them.  It has become apparent that maintaining
+translations up-to-date is a major undertaking, involving tedious
+skimming through commit logs, reviewing diffs and other medieval
+techniques to catch up.  Some translation teams have developed their
+own sets of scripts, but so far there has been no universal solution.
+
+This unpleasant situation, combined with rapid and incompatible
+design changes, have lead some teams to neglect the important work of
+keeping their translation in line with the changing original
+articles.  As a consequence, the @acronym{GNU} Project is facing the
+problem of maintaining them in suboptimal ways, in order to keep the
+information updated.
+
+The reasons for developing @acronym{GNU}nited Nations are very similar
+to those that lead to the inception of @acronym{GNU} gettext, or
address@hidden Documentation Utilities (@code{gnome-doc-utils}) some
+years later.
+
address@hidden Concepts
address@hidden What @acronym{GNU}nited Nations is and Should be
+
+The basic concept behind @acronym{GNUN} is that localization of HTML
+articles is similar to localization of computer programs.  In
+articles, like in programs, not every string is considered
+translatable, so translatable strings must be identified first, and
+then collected in a file (called ``PO template'') for translation.
+Articles, like programs, tend to change in time, but not every change
+in the sources calls for a translation update.  Sometimes the change
+does not affect the translatable strings, but sometimes it does.  So,
+translators must have means to identify those changes and apply the
+appropriate updates to the translation.
+
+The @acronym{GNU} @code{gettext} package already provides the needed
+infrastructure for maintaining translations using PO files.
address@hidden, , Introduction, gettext, GNU gettext tools}, for a basic
+overview.  @acronym{GNU}nited Nations fills the gaps to apply this
+infrastructure to articles in @url{http://gnu.org} web
address@hidden process of converting HTML to PO and the other way
+around is performed using po4a (``po for anything''), see
address@hidden://po4a.alioth.debian.org}.}
+
+The following diagram summarizes the relation between the files
+handled by @acronym{GNUN}.  It is followed by somewhat detailed
+explanations, which you should read while keeping an eye on the
+diagram.  Having a clear understanding of these interrelations will
+surely help translators and web maintainers.
+
address@hidden
address@hidden
+.---<--- * Original ARTICLE.html
+|
+|   .---> ARTICLE.pot ---> * ARTICLE.LANG.po --->---.
+`---+                                               |
+    `--->---.   .------<----------------------------'
+            |   |
+            |   `---.
+            |       +---> Translated ARTICLE.LANG.html
+            `-------'
address@hidden group
address@hidden example
+
+The indication @samp{*} appears in two places in this picture, and
+means that the corresponding file is intended to be edited by humans.
+The author or web maintainer edits the original
address@hidden@var{article}.html}, and translators edit
address@hidden@address@hidden  All other files are regenerated
+by @acronym{GNUN} and any manual changes on them will be lost on the
+next run.
+
+Arrows denote dependency relation between files, where a change in one
+file will affect the other.  Those automatic changes will be applied
+by running @samp{make -C prep/gnun}.  This is the primary way to
+invoke @acronym{GNUN}, since it is implemented as a set of recipes for
address@hidden @code{make}.
+
+First, @acronym{GNUN} extracts all translatable strings from the
+original English article @address@hidden into
address@hidden@var{article}.pot}.  The resulted file is suitable for
+manipulation with the various @acronym{GNU} @samp{gettext} utilities.
+It contains all original article strings and all translations are set
+to empty.  The letter @code{t} in @file{.pot} marks this as a Template
+PO file, not yet oriented towards any particular language.
+
+The first time though, there is no @address@hidden@var{lang}.po}
+yet, so a translator must manually copy @address@hidden to
address@hidden@address@hidden, where @var{lang} represents the
+target language.  See FIXME:``Introducing new translation language for
+an article'' for details.
+
+Then comes the initial translation of messages in
address@hidden@address@hidden  Translation in itself is a whole
+matter, whose complexity far overwhelms the level of this manual.
+Nevertheless, a few hints are given in some other chapter of this
+manual (FIXME:Translators (but only if we would like to include some
+practical advices to candidate translators on how to join a gnu.org
+translating team)).  You will also find there indications about how to
+contact translating teams, or becoming part of them, for sharing your
+translating concerns with others who target the same native language.
+
+You may use any compatible PO editor to add translated messages into
+the PO file.  @xref{Editing, , Editing, gettext, GNU gettext tools},
+for more information.
+
+When the PO file actually exists (hopefully populated with initial
+translations), @acronym{GNUN} generates
address@hidden@address@hidden file.  It takes its structure
+from the original @address@hidden, but all translatable
+strings are replaced with their translations specified in
address@hidden@address@hidden
+
+Original articles sometimes change.  A new paragraph is being added or
+a tiny change in the wording is introduced.  Also, some articles are
+dynamic in nature, like ones containing news entries or a list of
+other articles.  If the original article changes, @acronym{GNUN} will
+automatically rebuild @address@hidden, and will merge the
+changes to @address@hidden@var{lang}.po}.  Any outdated
+translations will be marked as fuzzy, any new strings will be added
+with empty translations, waiting to be translated.  In the same run
address@hidden@address@hidden will be rebuilt so the relevant
+strings in the translation will be substituted with the original
+English text, until the translation teams update them in
address@hidden@address@hidden
+
+Those changes in the original article that do not affect the
+translatable strings will not lead to changes in
address@hidden@address@hidden  Thus, no actions from translators
+will be needed.  @address@hidden@var{lang}.html} will be
+automatically regenerated to reflect the changes.
+
+FIXME: The following paragraphs should go to a separate section that
+explains those details like exact paths in www, diagram with the basic
+directory layout, additional files like .translinks, etc.
+
+The POT for every article under @acronym{GNUN}'s control is kept in
+the `www' repository under a special directory @file{po/}, which is a
+sub-directory of the relevant directory in the `www' tree.  So, for
address@hidden://www.gnu.org/philosophy/free-sw.html} that is
address@hidden/po/}.  Except @file{free-sw.pot}, this directory
+holds the canonical source of every translation, like
address@hidden, @file{free-sw.ca.po}, etc.
+
+Several additional features are implemented, like automatic update of
+the list of the available translations.  For example, if a new
+translation is added and the list of translations in
address@hidden is updated, all translated
address@hidden@var{lang}.html} will be regenerated.  This saves a lot
+of tedious, repetitive work.  There is a basic infrastructure to
+``inject'' general information about a translation team---like a note
+how to contact the team, or how to report a bug/suggestion for
+improvement.  Translators' credits are also handled, as well as
+translators' notes, if any.
+
address@hidden can be extended, and new features will certainly be
+added.  The @file{TODO} file currently lists some of them, but new
+ideas pop up quite often.  The plan is to make a solid foundation and
+develop front-ends---a web front-end, possibly based on Pootle, a
+statistics facility, probably a wiki compiler, and more.
+
address@hidden Advantages
address@hidden Major Advantages of @acronym{GNUN}
+
+Here is a simple list of situations where we hope this suite would
+prove to be useful.
+
address@hidden
address@hidden
+Automatic rebuild of all translations when the original article
+changes.  This is the most important feature, as it prevents
+accumulation of seriously outdated translations.
+
address@hidden
+Global update of the whole site.  Apply the previous point to the web
+server templates (under @file{server/} in the `www' repository).  A
+single change to such a file will affect literally @emph{all}
+articles, translated or not.
+
address@hidden
+Urgent notices.  Sometimes an ``urgent'' notice is added by the
+webmasters, which should appear on all pages.  Typically this is about
+an event where urgent action is needed, although often it is only
+relevant to a single country or even a particular city.  Such a notice
+will propagate to all pages, and translators may choose whether to
+translate it or not.  For example, the Urdu translation team may
+conclude that there are only a few Urdu speakers in Massachusetts, to
+participate in an event that will happen in Boston, so translating the
+``urgent'' notice may not be very ``urgent'' for Urdu.  However, such
+notice will appear in all translated pages and people who usually read
+gnu.org pages in their native language will see it, so they can take
+action as necessary.  When the notice is removed, often in a week or
+two, it will disappear without translators' intervention, whether they
+translated it or not.
+
address@hidden
+Simplification of the translation process---lots of errors and typos
+come from the fact that translators basically have to duplicate the
+whole HTML markup of the original.  The PO files eliminate most of the
+basic markup, which is where most of the validation errors come from.
+
address@hidden
+Markup consistency site-wide---it would be substantially easier to
+update the site to a future standard, because translations will
+naturally follow the changes in the original articles.  This also
+means that translation teams do not have to undergo the boring process
+of converting their articles to the new @acronym{SSI}-based layout;
+this will be done automatically.
+
address@hidden
+Easy updates by translators.  Modified paragraphs, links, etc. will
+appear as ``fuzzy'' strings in the PO files, newly added ones will
+appear as ``untranslated'', and deleted will appear as ``obsolete''.
+It is substantially easier to update a PO file, where a keystroke
+takes you to the part that needs updating, whatever it may be.
+
address@hidden
+Reporting and statistics.  Since the basis is standard PO files, which
+are the canonical source of the translations, it is easy to manipulate
+them and extract useful information.
address@hidden itemize
+
address@hidden Disadvantages
address@hidden Known Bugs and Limitations
+
+As it happens in real life, we don't wear pink glasses and are aware
+of certain limitations and annoyances of this semi-automatic system.
+
address@hidden
address@hidden
+Often it is hard to figure out where precisely a change was made.  A
+change in one single word in a long paragraph of the HTML article will
+lead to the whole of it being marked as ``fuzzy'' in the PO files.  So
+don't unsubscribe from @email{www-commits@@gnu.org} yet, and be
+prepared to check the CVS history of the original article.
+
address@hidden
+We plan to invoke a build once a day, because doing it more often will
+potentially generate more messages to the mailing list in the form of
+commit notifications.  This has its drawback, since translators will
+have to wait for a day until their PO files are updated, and another
+day for the @address@hidden articles to get generated, after
+they commit the updated POs.
+
address@hidden
+Currently there is no way a translation team can take advantage of
address@hidden while following their own translation process, because
+the suite is tied to the official repository.  We hope that we will
+resolve this problem soon.
address@hidden itemize
+
address@hidden Usage
address@hidden General Usage
+
address@hidden
+If anything may go wrong, it will definitely go wrong.
+---Murphy's Law
+
+Murphy is an optimist.
+---O'Rielly's Law
address@hidden flushright
address@hidden 1
+
address@hidden currently consists of a few makefiles, scripts and
+optional @address@hidden files, intended to contain
+article-independent but team-specific information.  They are designed
+to reside in the @file{prep/gnun/} directory, but this may change.  In
+all examples in this manual, ``invoking'' means executing on the
+command line @command{make -C prep/gnun/ address@hidden
address@hidden@var{value} @dots{}]} while the working directory is
+the root in the `www' web repository.  For the purpose of brevity, we
+will refer to the above command as simply @command{make}, which is
+equivalent to @command{cd prep/gnun ; make}.  It is desirable never to
+invoke @command{make} with the @option{-k} (@option{--keep-going})
+option, because an eventual error in only one make recipe might create
+a mess in many articles, both original and translated.  Do this with
+caution, and generally only when debugging in a safe environment.
+
+The build process is intended to be invoked by a cron job, although
+manual intervention to a certain degree is possible.
+
address@hidden
+* Invoking GNUN::       How to trigger a (re)build.
+* Main Variables::      Specifying what to build.
+* PO Files::            The gentle art of editing PO files.
address@hidden menu
+
address@hidden Invoking GNUN
address@hidden Invoking GNUN
+
+The central part of @acronym{GNU}nited Nations is a makefile; actually
+a @file{GNUmakefile} since it heavily relies on features and
+extensions available in @acronym{GNU} Make.  Thus, invoking a build
+consists of typing @command{make} on the command line, or within cron.
+If you are deploying the software on a non-GNU machine, probably
address@hidden Make is installed and available as @command{gmake}.  If
+not, you should seriously consider installing it, since as far as we
+know, the build will fail otherwise.  See
address@hidden://www.gnu.org/software/make} for information how to
+download and install @acronym{GNU} Make.
+
+If you don't specify a target, @command{make} by default builds the
+target @code{all}, which in this case is to rebuild all translations
+that are not up-to-date.  However, there are special targets that do
+not depend on the standard @code{all} target, which can be built by
address@hidden @var{target}}.  Some of the variables in the next
+section apply to them, and some do not.
+
address@hidden
+* Runtime Variables::   Variables to control the build process.
+* Special Targets::     Targets that are not built by default.
address@hidden menu
+
address@hidden Runtime Variables
address@hidden Variables to Control the Build Process
+
+The build process has several modes of operation, and they all relate
+to the handling of files that are to be added to the repository or
+performing certain sanity checks at build time.  The variables are
+specified on the command line, after @command{make}, in the form
address@hidden, e.g. @command{make VCS=yes}.  In the future,
+additional features will be implemented in a similar fashion.
+
address@hidden @samp
address@hidden VCS=no
address@hidden @dots{}
+Do not add any files to the repository.  This is the default.  You may
+as well omit to define @code{VCS} entirely; there is no special code
+that expects assigning the value `no'.
+
address@hidden VCS=yes
+Automatically add any new files in the repository.  These are any POT
+files, if they are generated for the first time, and the translated
+articles (@address@hidden) in HTML format.  In addition, if
+there is no @file{prep/gnun/address@hidden file for the
+specific language an article is being generated, an empty file will be
+added.  Finally, any missing PO and their HTML counterparts of the
+server templates will be added, computed on the basis of the
address@hidden variable.
+
address@hidden VCS=always
+Because @acronym{GNU} Make considers the targets up-to-date after a
+successful build, if it was performed with no VCS interaction, the
+important newly created files will not be added (and committed when
+you do @command{cvs commit}) in the repository.  Assigning this value
+enables additional check and forcefully adds all files.  Use it
+sparingly, since it is very slow and generally less reliable.
+
address@hidden VALIDATE=no
address@hidden @dots{}
+Does not perform validation of the HTML articles and PO files.  This
+is the default, and not defining this variable has the same effect.
+
address@hidden VALIDATE=yes
+Validates all original articles before generating the POTs, to ensure
+that the ultimate source is valid XHMTL.  Also, validates all
+generated translations in HTML format and all PO files.  It is highly
+recommended to run the build this way, even if it is a bit tedious to
+fix the errors that are reported as a result of enforcing validation.
address@hidden table
+
+Note that @code{VCS=yes,always} is a valid combination: because POT
+files of the server templates are not handled by @code{always},
+running the build this way will commit any newly added files as
+specified in @code{TEMPLATE_LINGUAS} and will perform additional check
+at the end, @code{cvs add}-ing all necessary files.
+
address@hidden Special Targets
address@hidden Targets Specified on the Command Line
+
+Some targets are not built by default, because they are only useful
+under certain circumstances.  Think of them like semi-automated
+commands or canned command sequences that are more complicated, and
+more importantly, whose arguments are variables computed at the time
address@hidden reads the makefiles---the filesets they affect are
+specific and already defined, one way or another.
+
address@hidden
+* sync::
+* clean::
+* distclean::
address@hidden menu
+
address@hidden sync
address@hidden The @code{sync} target
+
+The @code{sync} target has a simple task: synchronize the
address@hidden English} articles from a canonical repository, like
+`www'.  It is very important that such synchronization happens,
+because it is desirable to develop the software and add more features
+in a testbed, while the `official instance' operates on the official
+repository in a predictable way.
+
+It is recommended that you `build' the @code{sync} target from a cron
+job, some time before the general build occurs.  That way,
+prerequisites (e.g. original @file{.html} articles) will be updated
+from the canonical repository and the subsequent @command{make}
+invocation, possibly run by cron as well, will update all
+translations.
+
+The @code{VCS} variable affects the behavior: if it is defined to
+`yes' then the synchronized files are committed to the `testing'
+repository, e.g. the @var{destination}.  In addition, if a file meant
+to be synchronized disappeared from the @var{source}, a warning mail
+will be sent to the address defined in the @code{devel_addr} variable
+(defined only in @file{GNUmakefile}).  The build will continue without
+failure, and will sync and commit all other files, but will send the
+same email message again if the file is still present in the
address@hidden variable during a subsequent invocation.
+
+In addition, @code{sync} synchronizes all ``verbatim'' server
+templates that are not under @acronym{GNUN}'s control, such as
address@hidden/header.html}, @file{server/footer.html} and their
+translations, as defined in the @code{verbatim-templates} variable.
+This is important, as these files may change in the master repository,
+while the validation of the html files in the development repository
+will be performed with the old templates expanded, thus making this
+specific test more or less bogus.
+
address@hidden has no effect on this target, as well as
address@hidden
+
address@hidden clean
address@hidden The @code{clean} target
+
+Not implemented yet.
+
address@hidden distclean
address@hidden The @code{distclean} target
+
+Not implemented yet.
+
address@hidden Main Variables
address@hidden Defining Articles to be Built
+
+The file @file{gnun.mk} contains variable definitions, based on which
+almost all other important variables are computed.  In other words,
+the variables defined in that file directly affect the overall
+behavior of the build process.
+
+There are two types of variables, which are specifically separated in
+order to make translators' life easier: variables that translators are
+free to modify and variables that are modified by the web-translators
address@hidden because presumably, they are more familiar with
address@hidden Nations' internals.  From a purely technical point
+of view, there is no difference.}, ideally after performing some local
+tests.  A translation team leader should update only
address@hidden and @code{HOME_LINGUAS}; everything else is
+supposed to be built auto-magically, without manual intervention.  If
+not, that is a bug that should be reported and fixed.
+
address@hidden @samp
address@hidden TEMPLATE_LINGUAS
+Add here your language code @emph{if and only if} you have all the
+server templates translated, and have committed
address@hidden/po/address@hidden and
address@hidden/po/address@hidden, as well as the templates
+that are not under @acronym{GNUN}'s control, like
address@hidden/address@hidden and
address@hidden/address@hidden
+
address@hidden HOME_LINGUAS
+Add your language code if you have already committed
address@hidden/address@hidden, that way the homepage for your language
+will be built.  It is not acceptable to have your language code
+defined in this variable, but not in @code{TEMPLATE_LINGUAS}.
+
address@hidden ROOT
+Add here articles that are in the server root, like
address@hidden and @file{provide.html}.  Always write only the
+basename of the article, i.e. if you add these two articles, the value
+of @code{ROOT} should be @code{keepingup provide}.  This is true for
+all the variables that expect values in the form of article names.
+
address@hidden ALL_DIRS
+The list of directories containing articles, like @file{philosophy},
address@hidden, @file{licenses}, etc.
+
address@hidden gnu
address@hidden philosophy
address@hidden @address@hidden
+A space-separated list of basenames for articles residing in
address@hidden, for which POTs will be generated and updated when the
+original article changes.  If an article is missing here, there is no
+way its translations to be maintained via @acronym{GNUN}.
address@hidden table
+
address@hidden PO Files
address@hidden Working with PO Files
+
+We anticipate that some gnu.org translators will find this format odd
+or inconvenient, if they never happened to work with PO files before.
+Don't worry, you will soon get accustomed to it.  It is the
+established format for translations in the Free World, and you should
+have no problems if you have translated software before.
+
+The most efficient way to edit a PO file is using a specialized PO
+editor, because each of them represents and treats gettext messages in
+a consistent and predictable way.  It is possible to edit a PO file
+with an ordinary plain text editor, but extra effort would be
+necessary to make it valid.  Here is a list of widely used PO editors:
+
address@hidden
address@hidden 
+PO mode.  We recommend using @acronym{GNU} Emacs in PO mode, because
+Emacs is the program that is suitable for performing any task when it
+comes to maintaining the @acronym{GNU} Project's website.  Provided
+that you have @acronym{GNU} gettext installed, any @file{.po} file you
+visit should automatically switch to PO mode.  You can enable/disable
+it by @code{M-x po-mode @key{RET}}.  On some @acronym{GNU}/Linux
+distros such as gNewSense, PO mode is available in a separate package,
address@hidden See @uref{http://www.gnu.org/software/gettext}.
+
address@hidden
+gTranslator---the @acronym{GNOME} PO editor.  Has some known bugs, but
+they shouldn't affect gnu.org translations as formulas that express
+plural forms are not used.  See
address@hidden://gtranslator.sourceforge.net}.
+
address@hidden
+KBabel---likewise for @acronym{KDE}.  See
address@hidden://kbabel.kde.org}.
+
address@hidden
+Poedit---another editor that is based on the @code{wxWidgets}
+toolkit.  See @uref{http://www.poedit.net}.
address@hidden itemize
+
address@hidden
+* New Translation::     How to start a new translation.
+* Migrating::           How to migrate an existing translation to a PO
+                          format under @acronym{GNUN}'s control.
+* generic.LANG.html::   Specifying information that will propagate in
+                          every translation in a certain language.
address@hidden menu
+
address@hidden New Translation
address@hidden Starting a New Translation
+
+To start a new translation, the easiest way is to copy the existing
+POT as @address@hidden, where @var{lang} is your language
+code.  For example, to prepare for a new translation of the essay
address@hidden://www.gnu.org/philosophy/freedom-or-copyright.html}, you
+can simply do @command{cd philosophy/po ; cp freedom-or-copyright.pot
address@hidden and then edit the latter.  If
address@hidden does not exist it is because either
+the article is not yet ``templated'' (i.e. migrated to the new style),
+or the @acronym{GNUN} maintainers have not yet added it to the value
+of the appropriate variable in @file{prep/gnun/gnun.mk}.  In that
+case, just ask them to do the necessary in order the POT to be
+generated.
+
+You could also use the @command{msginit} utility that would populate
+the PO file header with the right information, provided your
+environment is set up correctly.  @xref{msginit Invocation, ,,
+gettext, GNU gettext tools}.
+
+The PO file header as generated usually looks like this:
+
address@hidden
address@hidden
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2008-02-06 16:25-0500\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: ENCODING"
address@hidden group
address@hidden example
+
+You have to edit the header to match the already established
+conventions, and the rules for gnu.org translations.  Here is an
+example of a properly edited header:
+
address@hidden
address@hidden
+# Bulgarian translation of 
http://www.gnu.org/philosophy/@/freedom-or-copyright.html
+# Copyright (C) 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gnu.org article.
+# Yavor Doganov <yavor@@gnu.org>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: freedom-or-copyright.html\n"
+"POT-Creation-Date: 2008-02-06 16:25-0500\n"
+"PO-Revision-Date: 2008-02-09 15:23+0200\n"
+"Last-Translator: Yavor Doganov <yavor@@gnu.org>\n"
+"Language-Team: Bulgarian <dict@@fsa-bg.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit"
address@hidden group
address@hidden example
+
+Notice the absence of the ``fuzzy'' marker; you should ``unfuzzy'' the
+header after entering the necessary information (this is done by
+simply pressing @key{TAB} in PO mode).  The @code{PO-Revision-Date}
+is automatically filled in when you save the file in PO mode and in
+most of the other PO editors.
+
+The @code{Lanuage-Team} field should contain the mailing list on which
+the translation team can be reached---sometimes this is the alias
address@hidden@@gnu.org}, but in some cases it is a
+separate, address@hidden list.
+
+There are some special messages that appear in the POT and PO:
+
address@hidden @samp
address@hidden *GNUN-SLOT: TRANSLATOR'S NOTES*
+This is for translator's notes that are injected in the resulting
+translation.  See FIXME:Foo, for more information.  If your
+translation does not have notes, you @emph{must} translate this as a
+space, that is, @key{SPC}.
+
address@hidden *GNUN-SLOT: TRANSLATOR'S CREDITS*
+This is again optional, and should contain the name (and address) of
+the person who made the translation.  For example:
+
address@hidden
+<b>Traduction</b>: Benjamin Drieu <a
+href="mailto:foo@@example.org";>&lt;foo@@example.org&gt;</a>, 2007,
+2008.
address@hidden example
+
+``Translate'' this string as a space (@key{SPC}) if you do not want
+your name to appear there.
address@hidden table
+
+Most of the PO editors do not wrap long lines that inevitably appear
+in @code{msgstr}'s.  If that happens, long lines make reading
+subsequent diffs harder, and are generally annoying for most people.
+If this issue bothers you, you can ``normalize'' the already finished
+PO translation by executing on the command line @command{cat
address@hidden | msgcat - -o @var{file}.po}, before installing it in
+the repository.  Either way, the build system will treat it is a valid
+PO file.
+
+It is highly desirable that you check if the PO file you finished
+translating (or editing) is valid, before committing it.  This is done
+by running @command{msgfmt -cv -o /dev/null @var{file}} or by simply
+pressing @kbd{V} in PO mode.  The build system automatically verifies
+each PO file when invoked with @code{VALIDATE=yes}, but you won't get
+a warm and fuzzy feeling if a stupid typo you made halts the whole
+update of all translations.  Such things happen to everyone, so it is
+a good practice to check before you actually commit.
+
address@hidden Migrating
address@hidden Transforming existing translation in PO format
+
+Migrating an existing translation to a PO file format is basically
+editing the header as described in the previous section, and
+populating each of the messages by copying the already translated text
+and/or markup from the existing translation in HTML format in the
+relevant message.
+
+Typically, you will visit @file{po/address@hidden (in PO mode) and
address@hidden@var{lang}.html} (in HTML mode) in another buffer.  Then you
+can copy a paragraph or an element from the latter and yank it in the
+relevant message in the former.  Be extra careful, since this is the
+time to check @emph{precisely} that the translation corresponds to the
+original.  Further changes will be reflected, but if your ``initial''
+PO file is not a 100% match, that would not necessarily mean that it
+is an improvement.  Since it is very easy to do this kind of check,
+because the relevant @code{msgid} and @code{msgstr} appear one above
+the other in the same buffer (or the similar concept in other PO
+editors), please @emph{do} perform this initial sanity check even if
+you are confident that the translation you have been yanking strings
+from is a completely up-to-date translation.
+
+There is no need to delete the existing HTML translation,
address@hidden will automatically overwrite it.  The only thing a
+translator should do is to commit the PO file in the repository.
+
+When an essay has been translated by several people through the years,
+it is important that this information is recorded and reflected in the
+PO file.  In the future, special targets may be added to enable the
address@hidden to check who translated a particular article, and when.
+
+A recommended way to do this is as follows:
+
address@hidden
address@hidden
+# French translation of http://www.gnu.org/philosophy/@/bsd.html
+# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the gnu.org article.
+# C@'edric Corazza <cedric.corazza@@wanadoo.fr>, 2006, 2008.
+# address@hidden Dominguez <taz@@gnu.org>, 2007.
address@hidden group
address@hidden example
+
+In this example, it is clear that C@'edric made the initial
+translation, address@hidden made some changes in 2007, and the original
+translator returned in 2008 and continued maintaining it.
+
address@hidden generic.LANG.html
address@hidden The @address@hidden file
+
+The files @file{prep/gnun/address@hidden are special: if no
+such file exists for your language, an empty file will will be created
+(and added to the repository if specified @code{VCS=yes}).  This file
+is optional, and should contain a short message in your native
+language, ideally providing more information about the translation
+team or where to report bugs.  For example:
+
address@hidden
+<p>To join the Fooish translation team, see <a
+href="http://gnu.org/@/server/@/standards/@/translations/@/www-foo";>the
+Foo team homepage</a>.</p>
address@hidden example
+
+The contents of @address@hidden is injected right after
+the translators' credits, if any, and before the timestamp.  It should
+be valid XHTML markup.
+
+When you modify this file, for example, adding a message to the
+existing empty file or changing a URL, such modification will affect
address@hidden articles of the language @var{lang} in
address@hidden@var{lang}.html}.  The next time a build occurs, all
+translations of the language code @var{lang} (i.e. all
address@hidden@var{lang}.html}, including the homepage), will be modified to
+include the contents of this special file.
+
address@hidden Internals
address@hidden Unexciting Information for @acronym{GNUN}'s Operation
+
+This chapter might be of interest probably only to people who would
+have special interest in the software, plan to enhance it or develop a
+front-end.
+
address@hidden
+* Scripts::      Helper scripts.
+* Rules::        The knotty rules explained.
address@hidden menu
+
address@hidden Scripts
address@hidden Internally Used Scripts
+
+For the time being there are two helper scripts, used internally as
+commands with certain arguments in the makefile rules.  They can be
+invoked separately, as stand-alone programs, and sometimes they are
+useful on their own.
+
address@hidden
+* make-prototype::
+* validate-html::
address@hidden menu
+
address@hidden make-prototype
address@hidden The @command{make-prototype} Script
+
+This is a Guile script which makes the ``prototype'' file,
address@hidden@var{lang}.proto}, from which the POT is generated.
address@hidden is designed in such a way, because it would be no big
+improvement if links to other translations ended up in the POT---it
+would mean that translators would have to manually update their PO
+file when a new translation is added.
+
+In addition, @command{make-prototype} guards the timestamp (the
address@hidden RCS keyword) in order the timestamp of the translation to
+be updated @emph{only} when there are actual changes, being automatic
+or not.
+
+Finally, @command{make-prototype} ``injects'' the artificial elements
+`*GNUN-SLOT: TRANSLATOR'S NOTES*' and `*GNUN-SLOT: TRANSLATOR'S
+CREDITS*', thanks to which it is possible to insert the name of the
+translator and translator's notes, if necessary.  @xref{New
+Translation}.
+
+Here are the options that @command{make-prototype} accepts:
+
address@hidden @option
address@hidden --article
+Process the input file as an article.  This is the default.
+
address@hidden --home
+Process the input article as a homepage.  Specify this when you want
+to create a @file{.proto} file for a homepage.
+
address@hidden -i
address@hidden address@hidden
+Input file, which can be a common article (essay) or a homepage.
+
address@hidden -g
address@hidden address@hidden
+Common notes for a translation team; this is the
address@hidden@var{lang}.html} file.  @xref{generic.LANG.html}.
+
address@hidden -o
address@hidden address@hidden
+The file where to write the output of the script.
+
address@hidden -t
address@hidden address@hidden
+The file containing the translation links.  This makes sense only for
+articles, since the homepage has its own @file{translations.include}
+which gets included via an @acronym{SSI} directive.
address@hidden FIXME: This should be improved, it is not clear.
+
address@hidden --version
+Print copyright and version information on the standard output.
+
address@hidden --help
+Print usage information on stdout.
address@hidden table
+
address@hidden validate-html
address@hidden The @command{validate-html} Script
+
+This is a Bash script whose purpose is to ``validate'' both the
+original and translated articles to make sure that they conform to the
+respective @acronym{W3C} standard.  Sometimes webmasters make
+mistakes, and translators too, so this tool is useful to catch errors
+of that kind.
+
address@hidden enforces XHTML validation at build time if invoked with
address@hidden
+
+The script expects only one @var{file} as an argument and will exit
+with an error if it is not specified (which might be the case when an
+automatic variable is not expanded properly due to a bug in the
+makefile).
+
address@hidden Rules
address@hidden How The Recipes Work
+
+Read the source for now.
+
address@hidden Copying This Manual
address@hidden GNU Free Documentation License
+
address@hidden fdl.texi
+
address@hidden Index
address@hidden Index
+
address@hidden cp
+
address@hidden
+
+Local Variables:
+eval: (add-hook 'write-file-hooks 'time-stamp)
+time-stamp-start: "@set lastupdate "
+time-stamp-end: "$"
+time-stamp-format: "%02d.%02m.%:y"
+compile-command: "texi2pdf -c gnun.texi"
+ispell-local-dictionary: "american"
+End:

Index: server/gnun/make-prototype
===================================================================
RCS file: server/gnun/make-prototype
diff -N server/gnun/make-prototype
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/make-prototype  20 Feb 2008 09:11:08 -0000      1.1
@@ -0,0 +1,181 @@
+#!/usr/bin/guile \
+-e main --debug -s
+!#
+
+;; Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+
+;; This file is part of GNUnited Nations.
+
+;; GNUnited Nations is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation, either version 3 of the
+;; License, or (at your option) any later version.
+
+;; GNUnited Nations is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNUnited Nations.  If not, see
+;; <http://www.gnu.org/licenses/>.
+
+(define version-message
+  (string-append
+   "make-prototype (GNUnited Nations) 0.1\n"
+   "Copyright (C) 2008 Free Software Foundation, Inc.\n"
+   "You may redistribute copies of GNUnited Nations\n"
+   "under the terms of the GNU General Public License.\n"
+   "For more information about these matters, see the file named COPYING.\n"))
+
+(define help-message
+  (string-append
+   "Usage: make-prototype OPTION...\n"
+   "\n"
+   "Input format specification:\n"
+   "      --article              Process input file as an article (default)\n"
+   "      --home                 Process input file as a home page\n"
+   "\n"
+   "Input specification:\n"
+   "  -i, --input=FILE           Input file (article or home page)\n"
+   "  -g, --generic=FILE         Generic notes for a language team\n"
+   "\n"
+   "Output options:\n"
+   "  -o, --output=FILE          Output prototype\n"
+   "  -t, --translinks=FILE      Translations links (meaningful for articles 
only)\n"
+   "\n"
+   "      --version              Just print version info and return\n"
+   "      --help                 Print this usage information message\n"
+   "\n"
+   "Report bugs to address@hidden"))
+
+(define option-grammar
+  '((article (value #f))
+    (home (value #f))
+    (input (single-char #\i) (value #t))
+    (generic (single-char #\g) (value #t))
+    (output (single-char #\o) (value #t))
+    (translinks (single-char #\t) (value #t))
+    (version (value #f))
+    (help (value #f))))
+
+(define article-page-regexp
+  "^(.*)(<title>.*)(</div>.*<div id=\"footer\">.*)(<p>.*?[$]Date:.*)(<ul 
class=\"translations-list\">.*</ul>)(.*)$")
+
+(define home-page-regexp
+  "^(.*?)(<title>.*)(</div>.*<div id=\"footer\">.*)(<p>.*?[$]Date:.*)$")
+
+(define skip-tag
+  "gnun")
+
+(define slot-translators-notes
+  (string-append
+   "\n"
+   "<div style=\"font-size: small;\">\n"
+   "<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->\n"
+   "*GNUN-SLOT: TRANSLATOR'S NOTES*</div>\n"))
+
+(define slot-translators-credits
+  (string-append
+  "\n"
+  "<div class=\"translators-credits\">\n"
+  "<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->\n"
+  "*GNUN-SLOT: TRANSLATOR'S CREDITS*</div>\n"))
+
+(define autogenerated-warning
+  "This file is automatically generated by GNUnited Nations!")
+
+(define <skip-tag>
+  (string-append "<" skip-tag ">"))
+
+(define </skip-tag>
+  (string-append "</" skip-tag ">"))
+
+(define <autogenerated-warning>
+  (string-append
+   <skip-tag> </skip-tag> "<!-- " autogenerated-warning " -->" "\n"))
+
+
+(use-modules (ice-9 regex)
+            (ice-9 rdelim)
+            (ice-9 getopt-long))
+
+(define (main args)
+  (let* ((options (catch 'misc-error
+                        (lambda () (getopt-long args option-grammar))
+                        (lambda (key subr message args data)
+                          (die (apply format #f message args)))))
+        (opt (lambda args (apply option-ref options args))))
+    (cond ((opt 'version #f) (version))
+         ((opt 'help #f) (help))
+         ((and (opt 'article #f)
+               (opt 'home #f))
+          (die "conflicting options: `--article' and `--home'"))
+         ((not (opt 'input #f))
+          (die "no input file"))
+         ((not (opt 'generic #f))
+          (die "no generic file"))
+         ((not (opt 'output #f))
+          (die "no output file"))
+         ((opt 'home #f)
+          (and (opt 'translinks #f)
+               (die "`--translinks' makes no sense for home pages"))
+          (make-home (opt 'input #f)
+                     (opt 'generic #f)
+                     (opt 'output #f)))
+         ((opt 'article #t)
+          (or (opt 'translinks #f)
+              (die "no translinks file"))
+          (make-article (opt 'input #f)
+                        (opt 'generic #f)
+                        (opt 'output #f)
+                        (opt 'translinks #f))))))
+
+(define (die message)
+  (display "make-prototype: " (current-error-port))
+  (display message (current-error-port))
+  (newline (current-error-port))
+  (exit 2))
+
+(define (version)
+  (display version-message))
+
+(define (help)
+  (display help-message))
+
+(define (make-article input generic output translinks)
+  (with-input-from-file input
+    (lambda ()
+      (let ((m (string-match article-page-regexp (read-delimited ""))))
+       (with-output-to-file output
+         (lambda ()
+           (display
+            (string-append (match:substring m 1)
+                           <autogenerated-warning>
+                           (match:substring m 2)
+                           slot-translators-notes
+                           (match:substring m 3)
+                           slot-translators-credits
+                           "<" skip-tag ">include(`" generic "')</" skip-tag 
"> "
+                           (match:substring m 4)
+                           "<" skip-tag ">include(`" translinks "')</" 
skip-tag ">"
+                           (match:substring m 6)))))
+       (with-output-to-file translinks
+         (lambda ()
+           (display (match:substring m 5))))))))
+
+(define (make-home input generic output)
+  (with-input-from-file input
+    (lambda ()
+      (let ((m (string-match home-page-regexp (read-delimited ""))))
+       (with-output-to-file output
+         (lambda ()
+           (display
+            (string-append (match:substring m 1)
+                           <autogenerated-warning>
+                           (match:substring m 2)
+                           slot-translators-notes
+                           (match:substring m 3)
+                           slot-translators-credits
+                           "<" skip-tag ">include(`" generic "')</" skip-tag 
"> "
+                           (match:substring m 4)))))))))

Index: server/gnun/validate-html
===================================================================
RCS file: server/gnun/validate-html
diff -N server/gnun/validate-html
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ server/gnun/validate-html   20 Feb 2008 09:11:08 -0000      1.1
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Copyright (C) 2008 Free Software Foundation, Inc.
+
+# This file is part of GNUnited Nations.
+
+# GNUnited Nations is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# GNUnited Nations is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GNUnited Nations.  If not, see <http://www.gnu.org/licenses/>.
+
+set -e
+set -o pipefail
+
+if [ $# -ne 1 ]; then
+    echo 1>&2 Error: The script requires a FILE as argument.
+    exit 1
+fi
+
+ROOT=`dirname $0`/../..
+USERDTD=$HOME/dtd
+
+# Create two tempfiles and mark them for deletion on exit.
+TMP1=`mktemp -t gnun.1.XXXXXX`
+TMP2=`mktemp -t gnun.2.XXXXXX`
+trap "rm -f $TMP1 $TMP2" EXIT
+
+# Expand input file's #include directives and save the result in
+# $TMP1.
+cat $1 | sed "s/<\!--#include virtual=\"\/\?\(.*\)\" -->/include(\`\1')/g" \
+  | m4 -EE -I $ROOT > $TMP1
+
+# Execute xmllint on $TMP1 and save it's output to $TMP2.
+set +o pipefail
+set +e
+cat $TMP1 | xmllint --path "$USERDTD" --loaddtd --nonet --noout - 2> $TMP2
+LINTSTATUS=$?
+set -e
+set -o pipefail
+
+# Parse xmllint's error output (if any) and print it by inserting
+# additional context line after every occurrence of "line X" where X
+# is a decimal number.  It is helpful to show the contents of those
+# mentioned lines, since xmllint runs on intermediate input file (with
+# expanded #include directives) and the translator can not easily look
+# up for references in it.
+cat $TMP2 | sed '
+  /line [[:digit:]]\+/ {
+     p
+     s=^.*line \([[:digit:]]\+\).*$=head -n \1 '"$TMP1"' | tail -n 1=
+     e
+  }'
+
+# Exit with xmlint's original exit status.
+exit $LINTSTATUS

Index: prep/gnun/ChangeLog
===================================================================
RCS file: prep/gnun/ChangeLog
diff -N prep/gnun/ChangeLog
--- prep/gnun/ChangeLog 20 Feb 2008 07:18:15 -0000      1.60
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,859 +0,0 @@
-2008-02-20  Yavor Doganov  <address@hidden>
-
-       * gnun.texi (Advantages): Clarify the usefulness of `urgent'
-       notices propagation.
-       (Concepts): Use double quotes for po4a's meaning.
-
-2008-02-19  Yavor Doganov  <address@hidden>
-           Kaloian Doganov  <address@hidden>
-
-       * make-prototype (slot-translators-notes)
-       (slot-translators-credits): Inject hints for translators in the
-       POT files in the form of comments.
-
-2008-02-18  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (generic_rules): Fixed a bug which prevented
-       generic.af.html to be made.
-       (GENERIC_LINGUAS, generic-var): New helper variables.
-
-2008-02-17  Yavor Doganov  <address@hidden>
-
-       * gnun.texi (Migrating): Add extra sentence to raise translators'
-       attention.
-       (New Translation, generic.LANG.html): Use @var{lang} instead of
-       @code{xx} and the like.
-
-       * GNUmakefile (verbatim-templates): Add Afrikaans templates.
-       * gnun.mk (TEMPLATE_LINGUAS): Remove `fr' and add `af'.
-
-2008-02-16  Yavor Doganov  <address@hidden>
-
-       * gnun.texi (Concepts): Typo fix.
-       (Disadvantages, Usage, Runtime Variables, New Translation)
-       (Migrating, generic.LANG.html, make-prototype): Use @var{lang}
-       instead of `xx' for consistency with the gettext manual.
-
-2008-02-15  Yavor Doganov  <address@hidden>
-
-       * README: Po4a 0.32 is the minimal requirement.
-
-       * gnun.texi (Advantages): Fix grammar error.    
-       (sync): Document the new behavior wrt `verbatim-templates'.
-       (Advantages, make-prototype): Use @acronym for SSI.
-       (validate-html): Likewise for W3C.
-
-2008-02-14  Yavor Doganov  <address@hidden>
-
-       * gnun.texi (Concepts): Typo fix.
-
-2008-02-14  Kaloian Doganov  <address@hidden>
-
-       * gnun.texi (Concepts): More explanations and a diagram for the
-       "big picture".  Influenced by the relevant section in
-       gettext.texi.
-       (Advantages): Replace "immigrants" with "speakers".
-
-2008-02-13  Kaloian Doganov  <address@hidden>
-
-       * README: Mention "W3C XHMTL 1.0 DTDs" as an upstream package name
-       instead of the Debian-specific one.
-
-2008-02-10  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile: Various doc fixes.
-
-       * gnun.texi (New Translation, Migrating): Use @group in the PO
-       header examples.
-       (Advantages): Mention that no extra work is required to migrate
-       from the old style to new style.
-
-2008-02-09  Yavor Doganov  <address@hidden>
-
-       * gnun.texi: New file; basic skeleton of the documentation.
-       * fdl.texi: Import from the canonical location.
-       
-2008-02-08  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (generate-pot): Indent and use a workaround for
-       Emacs font lock issue.
-
-2008-02-08  Kaloian Doganov  <address@hidden>
-
-       * validate-html: Enrich xmllint's error messages with additional
-       context lines from the input file.
-
-2008-02-08  Yavor Doganov  <address@hidden>
-
-       Implement validation for PO files.
-       * GNUmakefile (MSGFMT): New variable.
-       (check-po): New variable containing the command to check the .po
-       files.
-       ($(template_dir)/po/%.$(1).po, $(rootdir)/po/home.$(1).po)
-       ($(1).po): Use it.
-
-2008-02-07  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (verbatim-templates): New variable.
-       (sync): Synchronize server templates that are not gettextized, to
-       enable validation at build time.
-       ($(rootdir)/home.$(1).shtml): Add a `trans-coord'-specific
-       conditional to specify the languages we want to validate.
-
-2008-02-06  Yavor Doganov  <address@hidden>
-
-       * validate-html: Add license notice.
-
-       * GNUmakefile (VALIDATESKIP): Use a more robust way to check the
-       value of $(VALIDATE), like $(VCS).
-
-2008-02-06  Kaloian Doganov  <address@hidden>
-
-       * validate-html: Lookup for user-wide DTD resources in addition to
-       the system wide catalog.
-       * README: Mention w3c-dtd-xhtml as a dependency.
-
-       * GNUmakefile (VALIDATE-HTML, VALIDATESKIP): New variables.
-       ($(rootdir)/po/home.proto, $(1).proto $(1).translinks): Introduce
-       validation for original HMTL files.
-       ($(rootdir)/home.$(1).shtml, $(subst /po/,/,$(1).html)): Introduce
-       validation for generated HTML files.
-
-2008-02-06  Yavor Doganov  <address@hidden>
-
-       * gnun.mk (gnu): Add `gnu-history', `linux-and-gnu' and
-       `why-gnu-linux'.
-       (philosophy): Add `can-you-trust', `free-software-for-freedom',
-       `free-sw', `open-source-misses-the-point', `right-to-read' and
-       `software-literary-patents'.
-
-       * validate-html (FILE): Do not define it.
-       Fix a typo in the sed expression.
-       Instead of hanging, fail if no file is supplied as argument.
-
-2008-02-06  Kaloian Doganov  <address@hidden>
-
-       * validate-html: New script to validate XHTML files.
-       * README: Mention two dependencies.
-
-2008-02-05  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (template_files): Remove `banner-homepage', deleted
-       from the master `www' repository.
-       (replaceable_includes): Likewise.
-
-2008-02-04  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (sync): If the file to sync was deleted from the
-       `www' repository, send a warning mail to the list instead of
-       failing with an error.  Use $(CVSSKIP) to suppress the mail and
-       commiting the synced files.
-       (devel_addr): New variable.
-
-2008-02-01  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (template_files, sync): Revert last change; test
-       successful.
-
-2008-02-01  Kaloian Doganov  <address@hidden>
-
-       * GNUmakefile (CVSOPTS): Replaced by...
-       (CVSSKIP): ...which conditionally holds a command that suppresses
-       $(CVS) invocations.  All uses changed.
-
-2008-02-01  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile ($(template_dir)/po/%.$(1).po): Revert last change.
-       (template_files): Add `dummy' to test template_rules after the
-       last snafu.
-       (sync): Ignore errors from the first command just for the test,
-       since it will definitely fail because dummy.html does not exist in
-       the `www' repository.
-
-2008-01-31  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (.PRECIOUS): Depend on $(template_dir)/po/%.$(1).po.
-       ($(template_dir)/po/%.$(1).po): Temporarily disable $(CVS)
-       invocation, since the targets are already `cvs add'-ed.
-
-2008-01-30  Kaloian Doganov  <address@hidden>
-
-       * gnun.mk (philosophy): Add `java-trap' and `sun-in-night-time'.
-
-2008-01-30  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile ($(template_dir)/po/%.$(1).po): Handle the case when
-       webmasters add a new template file but translators cannot catch up
-       immediately; simply copy the newly generated .pot as .xx.po for
-       every language in TEMPLATE_LINGUAS.
-       (replaceable_includes): Doc fix.
-
-2008-01-29  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (MV, TOUCH): Delete and invoke the programs
-       directly.  All uses changed.
-       (template_files, replaceable_includes): Add `banner-homepage'.
-
-2008-01-29  Kaloian Doganov  <address@hidden>
-
-       * make-prototype:
-       * GNUmakefile: Skip tag <gnu.org-i18n> is renamed to <gnun>.
-       (generate-pot): Fixed bug of inverted logical operator.
-
-2008-01-28  Yavor Doganov  <address@hidden>
-
-       * make-prototype:
-       * GNUmakefile:
-       * gnun.mk: Use the new format of the license notice.
-
-2008-01-28  Kaloian Doganov  <address@hidden>
-
-       * make-prototype (slot-translators-notes)
-       (slot-translators-credits): Strings changed to reflect the new
-       project name (GNUN).
-
-       * GNUmakefile (generate-pot): Fixed bug in variable quoting.
-
-2008-01-28  Yavor Doganov  <address@hidden>
-
-       * GNUmakefile (addfile_dbl): Delete and use double escaped
-       `$(addfile)' instead.  All uses changed.
-
-2008-01-28  Kaloian Doganov  <address@hidden>
-
-       Ignore POT-Creation-Date changes when they are the only changes in
-       a pot-file.
-       * GNUmakefile (MV): Define to mv.
-       (generate-pot): New variable to hold canned sequence of commands.
-       ($(template_dir)/po/%.pot, $(rootdir)/po/home.pot, $(1).pot): Use
-       generate-pot instead of direct invocation of $(PO4A-GETTEXTIZE).
-
-2008-01-27  Yavor Doganov  <address@hidden>
-
-       * gnun.mk (philosophy): Add `philosophy' to test VCS=yes.
-
-2008-01-26  Yavor Doganov  <address@hidden>
-
-       Complete support for VCS=(yes|always).
-       * GNUmakefile (CVS): Define to cvs.
-       (vc-add-always): New conditional Phony target.
-       (all): Depend on vcs-add-always.
-       (generic_rules): Simplify and delete the double-colon rule; no
-       longer needed.  Remove Subversion-specific conditionals.
-       ($(rootdir)/po/home.pot, $(rootdir)/home.$(1).shtml): Adjust as
-       above.
-       ($(template_dir)/po/%.pot, $(template_dir)/%.$(1).html, $(1).pot)
-       ($(subst /po/,/,$(1).html)): Add ($addfile) or $(addfile_dbl) as
-       first command to the recipe, where appropriate. 
-       (sync): Use the CVS variable for consistency.
-
-2008-01-26  Kaloian Doganov  <address@hidden>
-
-       * GNUmakefile (template_rules, home_rules)
-       (article_rules): Reduce continuous whitespace with multiple
-       newlines before a comment.
-
-2008-01-26  Yavor Doganov  <address@hidden>
-
-       Implement automatic synchronization of the original articles from
-       `www'.  Intended to be run by a cron job, since paths are
-       hardcoded.
-       * GNUmakefile (sync): New Phony target.
-       (wwwdir, orig-templates, orig-articles): New variables.
-       (files-to-sync, abs-files-to-sync): Likewise.
-
-2008-01-14  Yavor Doganov  <address@hidden>
-
-       * make-prototype (version-message): Update year to 2008.
-
-2008-01-13  Yavor Doganov  <address@hidden>
-
-       * make-prototype:
-       * gnun.mk:
-       * GNUmakefile: Update copyright years.
-
-       * prep/i18n/i18n.mk: Rename to...
-       * prep/gnun/gnun.mk: ...as agreed.
-       * prep/gnun/GNUmakefile: Include gnun.mk.
-
-2007-12-31  Kaloian Doganov  <address@hidden>
-
-       * www/prep/i18n/GNUmakefile:
-       * www/prep/i18n/i18n.mk:
-       * www/prep/i18n/make-prototype: Fixed typo in the copyright
-       notice.
-
-2007-12-31  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/make-prototype: Removed non-sense commented lines left
-       out by mistake.
-       (make-article, make-home): Removed old debug code.  Insert an
-       autogenerated warning message message in the output.
-       (help-message): Fixed a typo in the command name.
-       (slot-translators-note): Renamed to slot-translators-notes.  All
-       referrers changed.
-       (skip-tag): New variable to hold the name of the skip tag
-       "gnu.org-i18n" used to escape non-translatable strings.
-        (<skip-tag>, </skip-tag>): Convenient shortcuts for using the
-       value of skip-tag.  All users of "gnu.org-i18n" literal changed.
-       (article-page-regexp, home-page-regexp): Add one more capturing
-       group before the "<title>" tag, where the warning message should
-       be placed.
-       (autogenerated-warning): New variable defining the warning
-       message.
-       (<autogenerated-warning>): A convenient shortcut for using the
-       value of autogenerated-warning.
-
-       * gnu/po/gnu.pot:
-       * gnu/po/rms-lisp.pot:
-       * home.bg.shtml:
-       * home.pl.shtml:
-       * home.zh-cn.shtml:
-       * philosophy/po/bdk.pot:
-       * philosophy/po/eldred-amicus.pot:
-       * philosophy/po/schools.bg.po:
-       * philosophy/po/schools.pot:
-       * philosophy/schools.bg.html:
-       * po/home.bg.po:
-       * po/home.pl.po:
-       * po/home.pot:
-       * po/home.zh-cn.po:
-       * po/keepingup.pot:
-       * po/provide.pot:
-       * server/po/banner.pot:
-       * server/po/footer-text.pot: Regenerate forcefully with `make -B'
-       to enforce the inclusion of the "automatically generated" warning
-       message.
-
-2007-12-29  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/make-prototype: New script.  Combines functionality
-       from make-prototype.scm and make-prototype-home.scm, which both
-       are now obsolete.  Includes sane command line parser and brief
-       help.
-       * prep/i18n/make-prototype.scm: Deleted.
-       * prep/i18n/make-prototype-home.scm: Deleted.
-       * prep/i18n/GNUmakefile: Updated calls to
-       prep/i18n/make-prototype.
-
-2007-12-28  Yavor Doganov  <address@hidden>
-
-       Initial partially working VCS support for generic.xx.html and the
-       homepages.
-       * prep/i18n/GNUmakefile (CVS): New variable.
-       (CVSOPTS): New conditionally defined variable, based on the value
-       of VCS.
-       (addfile, addfile_dbl): Define command sequences for convenience.
-       (generic_rules): Use them.  Implement a conditional double-colon
-       template rule and modified commands based on VCS=always and
-       CVS=svn.
-       ($(rootdir)/po/home.pot, $(rootdir)/home.$(1).shtml): Add
-       conditional commands for adding the targets under VCS control.
-       Does not work reliably (or should I say "at all") with `make
-       VCS=always' when the targets are considered up-to-date. 
-
-2007-12-12  Yavor Doganov  <address@hidden>
-
-       * home.bg.shtml: Regenerate.
-
-       First real simulation of the new translation process.
-       * po/home.bg.po: Translated fuzzy/untranslated messages with Emacs
-       PO mode.
-
-       * server/po/banner.pot:
-       * server/po/footer-text.pot:
-       * server/po/banner.bg.po:
-       * server/po/banner.fr.po:
-       * server/po/footer-text.bg.po:
-       * server/po/footer-text.fr.po:
-       * server/banner.bg.html:
-       * server/banner.fr.html: Regenerate forcefully with `make -B
-       <target>' to enforce the usage of the xhtml module.
-
-2007-12-12  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile ($(template_dir)/po/%.pot): Po4a backend
-       switch from html to xhtml.
-       (template_rules): Likewise.
-       (PO4A_HTMLFLAGS): Deleted, since html backend is not used anymore.
-
-2007-12-10  Yavor Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile:
-       * prep/i18n/i18n.mk:
-       * prep/i18n/make-prototype.scm:
-       * prep/i18n/make-prototype-home.scm: Add license notices.
-
-2007-12-09  Yavor Doganov  <address@hidden>
-
-       First real-life simulation of the build system, commit as a
-       separate revision so that everyone can reproduce the make process
-       with the VCS.
-       * po/home.pot:
-       * po/home.bg.po:
-       * po/home.pl.po:
-       * po/home.zh-cn.po:
-       * home.bg.shtml:
-       * home.pl.shtml:
-       * home.zh-cn.shtml:
-       * server/po/banner.pot:
-       * server/po/banner.bg.po:
-       * server/po/banner.fr.po:
-       * server/banner.bg.html:
-       * server/banner.fr.html:
-       * server/po/footer-text.pot:
-       * server/po/footer-text.bg.po:
-       * server/po/footer-text.fr.po:
-       * server/footer-text.bg.html:
-       * server/footer-text.fr.html: Regenerated by simply running
-       `make -C prep/i18n'.
-
-2007-12-09  Yavor Doganov  <address@hidden>
-
-       Update to the new style.
-       * prep/i18n/GNUmakefile (template_files): Remove
-       sidebar-fsf-support, sidebar-top-half and sidebar-stay; all
-       obsolete now.
-       * home.shtml:
-       * server/banner.html:
-       * server/footer-text.html: Update from the `www' master repo.
-       * server/sidebar-fsf-support.html:
-       * server/footer-text.html:
-       * server/sidebar-top-half.html:
-       * server/sidebar-bottom-half.html:
-       * server/sidebar-stay.html:
-       * server/po/sidebar-fsf-support.fr.po:
-       * server/po/sidebar-top-half.pot:
-       * server/po/sidebar-bottom-half.pot:
-       * server/po/sidebar-top-half.bg.po:
-       * server/po/sidebar-bottom-half.bg.po:
-       * server/po/sidebar-stay.pot:
-       * server/po/sidebar-stay.bg.po:
-       * server/po/sidebar-fsf-support.pot:
-       * server/po/sidebar-fsf-support.bg.po:
-       * server/po/sidebar-top-half.fr.po:
-       * server/po/sidebar-bottom-half.fr.po:
-       * server/po/sidebar-stay.fr.po: Delete; not needed anymore.
-
-2007-12-08  Yavor Doganov  <address@hidden>
-
-       * home.bg.shtml:
-       * home.pl.shtml:
-       * home.zh-cn.shtml:
-       * prep/i18n/generic.pl.html:
-       * server/banner.fr.html:
-       * server/footer-text.bg.html:
-       * server/footer-text.fr.html: Add these generated files to provoke
-       full simulation.
-
-2007-12-07  Yavor Doganov  <address@hidden>
-
-       Fix the Polish gnusflashes unpleasant situation.
-       * prep/i18n/GNUmakefile ($(rootdir)/home.$(1).shtml): Use an
-       `ifeq' conditional that tests if the value of h_lang is `pl' and
-       executes a simplified command.  Document the reason.
-       * prep/i18n/i18n.mk (HOME_LINGUAS): Add pl.
-       * po/home.pl.po: New untranslated file to test the proper
-       generation of the Polish homepage.
-
-2007-12-07  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto)
-       ($(1).proto $(1).translinks): Fixed a bug that caused make to stop
-       regardless of the exit status of the Scheme script.
-
-2007-12-06  Yavor Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto)
-       ($(1).proto $(1).translinks): If the .proto and .translinks
-       generation fails (usually due to a validation bug in the source
-       article or bug in the Scheme script itself), exit with a non-zero
-       status right after deleting the targets, so that make stops
-       exactly on these commands.
-
-2007-12-05  Yavor Doganov  <address@hidden>
-
-       * keepingup.html: Updated from `www' with bugfixes.
-       * po/keepingup.pot: Generated.
-
-       * keepingup.html:
-       * provide.html:
-       * gnu/gnu.html:
-       * gnu/rms-lisp.html:
-       * philosophy/bdk.html:
-       * philosophy/eldred-amicus.html: Imported new articles from the
-       central `www' repository to test the new rules.
-       * po/provide.pot:
-       * gnu/po/gnu.pot:
-       * gnu/po/rms-lisp.pot:
-       * philosophy/po/bdk.pot:
-       * philosophy/po/eldred-amicus.pot: Generated.
-       * po/home.pot:
-       * po/home.zh-cn.po:
-       * philosophy/po/schools.pot: Updated.
-
-2007-09-08  Yavor Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile (article_rules) [generic.$(2).html]: Move
-       into its own template `generic_rules' and rename it to
-       `generic.$(1).html'.  This is necessary because there might be
-       only home.cs.po without any other article translated in Czech. The
-       home rule would fail in that case.
-
-2007-09-07  Yavor Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile (article_rules) [generic.$(2).html]: New
-       target.
-       ($(subst /po/,/,$(1).html)): Depend on it, so if the team changes
-       the description, all articles under make's control to be updated.
-       Remove the command that checks for the presence and touches the
-       file.
-
-       * prep/i18n/GNUmakefile: Housekeeping. Delete the redundant
-       `targets' from all comments.
-
-       * prep/i18n/GNUmakefile (rootdir, replaceable_includes): Define as
-       simply expanded.
-
-       * prep/i18n/i18n.mk: Mark all variables as simply expanded.
-
-       * prep/i18n/GNUmakefile (home.proto, article_pot_rules)
-       [$(1).proto $(1).translinks]: If $(MAKE_PROTOTYPE_HOME) and
-       $(MAKE_PROTOTYPE) exit with a non-zero code, remove the possibly
-       erroneously generated files in order targets not to be considered
-       up-to-date on the next make's run.  This prevents breaking the
-       translations badly further in the chain.  The Scheme backtrace
-       should be sufficient to figure out what's going on.
-
-2007-09-05  Yavor Doganov  <address@hidden>
-
-       Initial implementation of the generalization of the generic
-       articles' translations and PO/POT manipulation.
-       * prep/i18n/i18n.mk (ROOT, gnu, philosophy, ALL_DIRS): New
-       variables.
-       * prep/i18n/GNUmakefile (articles, articles_pot, root_articles)
-       (root_articles_pot, ALL_POTS, ALL_BASE, find_po, ALL_POS)
-       (ALL_POS_BASE, articles_translated): New variables.
-       (all): Depend on $(ALL_POTS) and $(articles_translated), remove
-       schools.bg.html.
-       (article_pot_rules, article_rules): New `define'd template rules,
-       replacing entirely all schools's rules.
-
-2007-08-19  Kaloian Doganov  <address@hidden>
-
-       * po/home.bg.po: Partly translated according to Yavor Doganov's
-       <address@hidden> translation.
-
-2007-08-19  Yavor Doganov  <address@hidden>
-
-       * po/home.bg.po: Filled encoding in `Content-Type' and
-       `Content-Transfer-Encoding' headers.
-       * po/home.zh-cn.po: Added a dummy file to let `make' exit w/o
-       errors.
-       * server/po/sidebar-fsf-support.fr.po: Likewise.
-       * server/po/banner.fr.po: Likewise.
-       * server/po/footer-text.fr.po: Likewise.
-       * server/po/sidebar-top-half.fr.po: Likewise.
-       * server/po/sidebar-bottom-half.fr.po: Likewise.
-       * server/po/sidebar-stay.fr.po: Likewise.
-
-2007-08-19  Kaloian Doganov  <address@hidden>
-
-       * philosophy/schools.pot: Updated using latest po4a toolkit with
-       xhtml backend.
-       * philosophy/schools.bg.po: Likewise.
-       * philosophy/schools.bg.html: Regenerated using latest po4a
-       toolkit and schools.bg.po.
-
-       * prep/i18n/GNUmakefile (../../philosophy/po/schools.proto): fixed
-       a typo in prerequisites.
-
-       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto)
-       ($(rootdir)/home.$(1).shtml, ../../philosophy/po/schools.proto)
-       (../../philosophy/schools.bg.html): A new special tag
-       <gnu.org-i18n> is used to denote non-translatable strings (instead
-       of HTML comments).
-       * prep/i18n/make-prototype-home.scm: <gnu.org-i18n> used to escape
-       non-translatable strings.
-       * prep/i18n/make-prototype.scm: Likewise.
-
-2007-08-12  Yavor Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile (home.$(1).shtml): Fixed escaping problems
-       in the sed expressions as a result of the `eval' function.
-
-       * prep/i18n/GNUmakefile (home.$(1).shtml): Added a comment about
-       another escape error.
-
-       * prep/i18n/GNUmakefile: Fixed a typo (replacable -> replaceable);
-       all uses changed. Added a note about a bug in the home.$(1).shtml
-       target.
-       (home.$(1).shtml): Added a sed expression to replace
-       gnusflashes.include with the translated one.
-
-       * prep/i18n/GNUmakefile (template_dir): Compute it based on
-       $(rootdir).
-       (home.proto): Deleted comments for bugginess, not relevant any
-       more.
-
-2007-08-12  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile (PO4A_XHTMLFLAGS): Updated for
-       compatibility with po4a from the latest CVS HEAD.
-
-       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto): Removed
-       language code from "generic.html".
-       ($(rootdir)/home.$(1).shtml): Added command to replace
-       "generic.html" with "generic.LANG.html".
-       (../../philosophy/po/schools.proto): Removed language code from
-       "generic.html".
-       (../../philosophy/schools.bg.html): Added command to replace
-       "generic.html" with "generic.LANG.html".
-
-       * po/home.pot: Added.
-       * po/home.bg.po: Added.
-       * prep/i18n/make-prototype-home.scm: Added. Variant of
-       make-prototype.scm to handle the special case of home.shtml.
-       * prep/i18n/GNUmakefile (MAKE-PROTOTYPE-HOME): New variable for
-       calling make-prototype-home.scm.
-       ($(rootdir)/po/home.proto): Call to MAKE-PROTOTYPE-HOME instead of
-       MAKE-PROTOTYPE.  Unescape special characters since this rule is no
-       longer evaluated with `eval'.
-       ($(rootdir)/home.$(1).shtml): Fixed typo in call to PO4A-TRANSLATE.
-
-       * prep/i18n/make-prototype.scm: Variable temp-filename renamed to
-       proto-filename in order to reflect the current terminology.
-
-2007-08-11  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile (../../philosophy/schools.bg.html): As
-       articles are treated as XHTML, po4a-translate must be invoked with
-       xhtml flags, not html ones.
-
-       * prep/i18n/GNUmakefile (PO4A_XHTMLFLAGS): Fixed bug in parser
-       options.
-
-       * prep/i18n/GNUmakefile (PO4A-GETTEXTIZE, PO4A-TRANSLATE): Program
-       flags are moved in two groups of variables grouped by tool and by
-       format.
-       (PO4A-GETTEXTIZEFLAGS): Flags for po4a-gettextize.
-       (PO4A-TRANSLATEFLAGS): Flags for po4a-translate.
-       (PO4A_HTMLFLAGS): Flags to select HTML format.
-       (PO4A_XHTMLFLAGS): Flags to select XHTML format.  All callers
-       changed.
-
-       * prep/i18n/GNUmakefile ($(rootdir)/po/home.proto): Taken out from
-       home_rules, since there is no need to regenerate this rule for
-       every language.
-
-2007-08-11  Yavor Doganov  <address@hidden>
-
-       Preliminary support for the homepages.
-       * home.shtml: Added.
-       * prep/i18n/generic.zh-cn.html: Likewise.
-       * prep/i18n/i18n.mk (HOME_LINGUAS): New variable.
-       * prep/i18n/GNUmakefile (rootdir): New global variable.
-       (home_lang, home_translated): New variables.
-       (all): Depend on home_translated.
-       ($(rootdir)/po/home.pot): New target.
-       ($(rootdir)/po/home.proto, $(rootdir)/po/home.$(1).po)
-       ($(rootdir)/home.$(1).shtml): New targets, encapsulated in `define
-       home_rules'.
-
-2007-08-11  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile (template_translated_base)
-       (template_translated): Defined as simply expanded variables for
-       performance and error-proofing reasons.
-
-2007-08-10  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/GNUmakefile: Cleaner way to calculate
-       template_translated.
-
-2007-08-10  Yavor Doganov  <address@hidden>
-
-       * prep/i18n/Makefile: Renamed to...
-       * prep/i18n/GNUmakefile: ...since we use a lot of GNU extensions.
-
-2007-08-09  Kaloian Doganov  <address@hidden>
-
-       * prep/i18n/Makefile:
-       * prep/i18n/make-prototype.scm:
-       * prep/i18n/make-template.scm: Преименуван на 
make-prototype.scm
-       за да се избегне припокриването с вече 
същестуващата употреба на
-       термина `template'.
-
-2007-08-09  Yavor Doganov  <address@hidden>
-
-       * prep/i18n/i18n.mk: New file.
-       * prep/i18n/Makefile: Include i18n.mk.
-       (template_translated_base): New variable.
-       (template_translated): Make it appendable and encapsulate it in
-       `define'; call a special pattern function for substitution of
-       $(TEMPLATE_LINGUAS).
-       (template_rules): Likewise, pattern rules invoked by `eval' and
-       'call'.
-
-2007-08-08  Yavor Doganov  <address@hidden>
-
-       * prep/i18n/Makefile (RM): Do not define it as it is `rm -f' by
-       default.  Adjusted all variables, targets, rules and commands to
-       the new path.
-
-       * Makefile:
-       * make-template.scm: Moved to www/prep/i18n to mimic the official
-       repo's layout.
-
-2007-08-07  Kaloian Doganov  <address@hidden>
-
-       * Makefile:
-       * prep/i18n/generic.bg.html:
-       * standards/translation-generic.bg.html: Преместен и 
преименуван
-       като www/standards/generic.bg.html.
-
-       * prep/i18n: Създадена директория за съх
раняване на файловете с
-       обща информация за екипите/проектите 
за превод.
-
-2007-08-05  Yavor Doganov  <address@hidden>
-
-       Първа стъпка при генерализацаията на 
шаблоните в /server.
-       * Makefile (template_dir, template_files, template_pot)
-       (template_translated): Нови променливи.
-       (all): Замяна на banner.bg.html с $(template_translated).
-       (.PRECIOUS): Нова специална цел.
-       (banner.bg.pot): Целта преместена...
-       ($(template_dir)/po/%.pot): ...тук.
-       (banner.bg.po): Преместена...
-       ($(template_dir)/po/%.bg.po): ...тук.
-       (banner.bg.html): Преместена...
-       ($(template_dir)/%.bg.html): ...тук.
-       Използване на автоматични променливи, 
където е възможно.
-       * server/sidebar-fsf-support.html:
-       * server/footer-text.html:
-       * server/sidebar-top-half.html:
-       * server/sidebar-bottom-half.html:
-       * server/sidebar-stay.html: Копирани от 
официалното хранилище
-       `www'.
-       * server/po/sidebar-fsf-support.pot:
-       * server/po/footer-text.pot:
-       * server/po/sidebar-top-half.pot:
-       * server/po/sidebar-bottom-half.pot:
-       * server/po/sidebar-stay.pot:
-       * server/po/sidebar-fsf-support.bg.po:
-       * server/po/footer-text.bg.po:
-       * server/po/sidebar-top-half.bg.po:
-       * server/po/sidebar-bottom-half.bg.po:
-       * server/po/sidebar-stay.bg.po: Генерирани и 
добавени (засега без
-       превод).
-
-2007-08-05  Kaloian Doganov  <address@hidden>
-
-       * server/banner.bg.html:
-       * server/po/banner.bg.po:
-       * server/po/banner.pot: Превод на banner.bg.po
-
-       * server/banner.html: Премахнат паразитен низ, 
оставен от по-ранни
-       тестове.
-
-       * Makefile:
-       * server/banner.bg.html:
-       * server/banner.html:
-       * server/po/banner.bg.po:
-       * server/po/banner.pot: Инфраструктура за 
интернационализация на
-       www/server/banner.html.
-
-2007-08-03  Kaloian Doganov  <address@hidden>
-
-       * cut-translations.scm:
-       * philosophy/po/schools.bg.po:
-       * philosophy/po/schools.pot: Разместване местата на 
бележките под
-       линия и заслугите.
-
-       * philosophy/po/schools.bg.po: Действително 
подаване на промените,
-       описани в предното съобщение.
-
-       * cut-translations (main): Регулярният израз, 
използван за
-       съпоставяне на HTML-станиците, е изнесен 
в отделна променлива
-       page-regexp.  Вмъкнат параметър на втора 
позиция -- име на файла с
-       обща информация за превода.  Поставяне 
на slot-ове за бележки на
-       преводача, заслуги на преводача и обща 
информация за превода.
-       * schools.pot: Добавени са служебни низове за 
бележки на преводача
-       и заслуги.
-       * schools.bg.po: Преведени са новите служебни 
низове бележки на
-       преводача и заслуги.
-       * translation-generic.bg.html: Обща информация за 
преводите на
-       български език.
-       * Makefile (www/philosophy/schools.bg.html): Зависимост към
-       www/standards/translation-generic.bg.html.
-
-2007-08-01  Kaloian Doganov  <address@hidden>
-
-       * philosophy/po/schools.bg.po:
-       * philosophy/po/schools.pot:
-       * Makefile (www/philosophy/po/schools.temp)
-       (www/philosophy/schools.bg.html): Низът $Date.*$ временно 
се
-       загражда с коментар, така че да не 
влиза в съдържанието на
-       генерирания POT-файл.
-
-2007-07-31  Yavor Doganov  <address@hidden>
-
-       * standards: Добавяне на допълнителна 
директория, която да емулира
-       /server/standards/translations (мястото, където ще се 
съдържа файл
-       с информация за съответния екип.)
-
-2007-07-31  Kaloian Doganov  <address@hidden>
-
-       * philosophy/po/schools.bg.po:
-       * philosophy/po/schools.pot: Списъкът с езиците 
вече не част от
-       .po и .pot-файловете.
-
-       * philosophy/po/schools.bg.po:
-       * philosophy/schools.bg.html: Преведени са всички 
абзаци от
-       schools.
-
-       * philosophy/po/schools.bg.po:
-       * philosophy/po/schools.pot:
-       * philosophy/schools.bg.html: Частичен превод на 
schools.
-
-       * gnu.org-i18n/po4a:
-       * Makefile: Създаване на клон po4a от translate.
-
-       * Makefile: Досегашната разработка е 
преместена в клона translate.
-
-2007-07-30  Kaloian Doganov  <address@hidden>
-
-       * Makefile:
-       * philosophy/schools.bg.html: Генериран schools.bg.html и
-       дефиниции в Makefile за генерирането му.
-
-       * philosophy/po/schools.bg.po: Първоначален "превод" 
на
-       schools.bg.po.
-
-       * Makefile:
-       * philosophy/po/schools.bg.po:
-       * philosophy/po/schools.pot: schools.pot, schools.bg.po и Makefile
-       за генерирането им.
-
-       * philosophy/po: po-директория за преводите на 
philosophy.
-
-       * philosophy/schools.bg.html:
-       * philosophy/schools.html: philosophy/schools.html на 
английски и
-       български.
-
- Copyright (C) 2007, 2008 Free Software Foundation, Inc.
-
- This file is part of GNUnited Nations.
-
- GNUnited Nations is free software: you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
-
- GNUnited Nations is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNUnited Nations.  If not, see <http://www.gnu.org/licenses/>.

Index: prep/gnun/GNUmakefile
===================================================================
RCS file: prep/gnun/GNUmakefile
diff -N prep/gnun/GNUmakefile
--- prep/gnun/GNUmakefile       18 Feb 2008 06:56:21 -0000      1.40
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,315 +0,0 @@
-# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
-
-# This file is part of GNUnited Nations.
-
-# GNUnited Nations is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-
-# GNUnited Nations is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with GNUnited Nations.  If not, see <http://www.gnu.org/licenses/>.
-
-MSGMERGE = msgmerge
-MSGFMT = msgfmt
-PO4A-GETTEXTIZE = po4a-gettextize
-PO4A-TRANSLATE = po4a-translate
-MAKE-PROTOTYPE = ./make-prototype
-VALIDATE-HTML = ./validate-html
-SED = sed
-M4 = m4
-
-PO4A-GETTEXTIZEFLAGS =
-PO4A-TRANSLATEFLAGS = --keep=0
-
-PO4A_XHTMLFLAGS = --format=xhtml -o ontagerror=silent -o "tags=<gnun>"
-
-# This variable exists only for the purpose of defining it to a
-# non-standard executable while testing future cvs releases.  The
-# rules already depend on cvs-specific options.
-CVS := cvs
-
-# Do not `cvs add' any files by default unless VCS=yes.
-ifneq (,$(findstring yes,$(VCS)))
-CVSSKIP :=
-else
-CVSSKIP := echo "SKIP:"
-endif
-
-# Do not validate any files by default unless VALIDATE=yes.
-ifneq (,$(findstring yes,$(VALIDATE)))
-VALIDATESKIP :=
-else
-VALIDATESKIP := echo "SKIP:"
-endif
-
-# Email addresses for notifications.
-devel_addr := address@hidden
-
-rootdir := ../..
-
-# FIXME: footer-short and footer-min are remnants from the old-new
-# design; they should go at some point.
-replaceable_includes := header banner footer footer-short footer-min
-
-include gnun.mk
-
-### Special variables for the `www' master templates ###
-template_dir := $(rootdir)/server
-template_files := banner \
-                 footer-text
-template_translated_base := $(addprefix $(template_dir)/,$(template_files))
-template_lang = $(addsuffix .$(1).html,$(template_translated_base))
-template_translated := $(foreach t_lang,$(TEMPLATE_LINGUAS),$(call 
template_lang,$(t_lang)))
-$(info template_translated = $(template_translated)) # for debugging purposes
-### End of variables declaration (templates) ###
-
-### Special variables for the home pages ###
-home_lang = $(rootdir)/home.$(1).shtml
-home_translated := $(foreach h_lang,$(HOME_LINGUAS),$(call 
home_lang,$(h_lang)))
-$(info home_translated = $(home_translated)) # for debugging purposes
-### End of variables declaration (homepages) ###
-
-### Special variables for all other articles ###
-# FIXME: Variables' computatation could be optimized, but in any event
-# it is much better if translators do not have to add manually anything.
-articles := $(foreach dir,$(ALL_DIRS),$(addprefix $(dir)/po/,$(value $(dir))))
-articles_pot := $(addprefix $(rootdir)/,$(articles:%=%.pot))
-root_articles := $(foreach root_article,$(ROOT),$(addprefix 
$(rootdir)/po/,$(root_article)))
-root_articles_pot := $(root_articles:%=%.pot)
-ALL_POTS := $(articles_pot) $(root_articles_pot)
-ALL_BASE := $(ALL_POTS:%.pot=%)
-find_po = $(wildcard $(1).*.po)
-ALL_POS := $(foreach pot,$(ALL_POTS),$(call find_po,$(basename $(pot))))
-ALL_POS_BASE := $(ALL_POS:%.po=%)
-articles_translated := $(subst /po/,/,$(ALL_POS:%.po=%.html))
-$(info ALL_POTS = $(ALL_POTS))                         # for debugging purposes
-$(info articles_translated = $(articles_translated))   # for debugging purposes
-### End of variables declaration (all articles) ###
-
-.PHONY: all vcs-add-always
-all: $(template_translated) $(home_translated) $(ALL_POTS) \
-     $(articles_translated) vcs-add-always
-
-# The command to add a file to the repository.
-define addfile
-[ -f $@ ] || (touch $@ ; $(CVSSKIP) $(CVS) add $@)
-endef
-
-# The command to generate pot file which perform additional checks
-# whether the changes are not trivial (regarding only
-# POT-Creation-Date), in which case the changes are ignored.
-define generate-pot
address@hidden Generating POT...
-$(PO4A-GETTEXTIZE) $(PO4A_XHTMLFLAGS) $(PO4A-GETTEXTIZEFLAGS) \
-  --master $< --po address@hidden
-if ([ ! -f $@ ] || [ "`diff -U 0 $@ address@hidden | grep -v 
"^\(---\|+++\|@@\)" \
-     | grep -v '^[-+]\"POT-Creation-Date:' | wc -c`" -ne 0 ]); then \
-  mv address@hidden $@ ; \
-fi;
-touch $@
-$(RM) address@hidden
-endef
-
-# The command to check the validity of a PO file.
-define check-po
-$(VALIDATESKIP) $(MSGFMT) --check --verbose --output-file=/dev/null $$@
-endef
-
-# Ensure that generic.LANG.html is always present for the homepage and
-# articles' generation.
-
-define generic-var
-GENERIC_LINGUAS += $(1)
-endef
-
-define generic_rules
-generic.$(1).html:
-       $$(addfile)
-endef
-
-$(foreach h_lang,$(HOME_LINGUAS),$(eval $(call generic-var,$(h_lang))))
-$(foreach po_base,$(ALL_POS_BASE), \
-  $(eval $(call generic-var,$(subst .,,$(suffix $(po_base))))))
-$(foreach g_lang,$(sort $(GENERIC_LINGUAS)), \
-  $(eval $(call generic_rules,$(g_lang))))
-
-### Specific rules for the templates ###
-.PRECIOUS: $(template_dir)/po/%.pot
-$(template_dir)/po/%.pot: $(template_dir)/%.html
-       $(addfile)
-       $(generate-pot)
-
-define template_rules
-.PRECIOUS: $(template_dir)/po/%.$(1).po
-$(template_dir)/po/%.$(1).po: $(template_dir)/po/%.pot
-# If the POT is new, it is natural that teams cannot translate it at
-# once.  Create a copy for every PO file in TEMPLATE_LINGUAS so that
-# the build can continue without errors.
-# FIXME: Check if this approach works with gettext >> 0.14.
-       [ -f $$@ ] || (cp $$< $$@ ; $(CVSSKIP) $(CVS) add $$@)
-# Since we handle the case when new templates are added by webmasters,
-# it is OK to ignore errors from these, at least until fencepost has
-# an old version of gettext.  The XHTML validation errors should be
-# clear even if the bug is in the server templates translations.
-       -$(check-po)
-       @echo Updating PO file...
-       $(MSGMERGE) --update $$@ $$< && touch $$@
-
-$(template_dir)/%.$(1).html: $(template_dir)/%.html 
$(template_dir)/po/%.$(1).po
-       $$(addfile)
-       @echo Generating the translated article...
-       $(PO4A-TRANSLATE) $(PO4A_XHTMLFLAGS) $(PO4A-TRANSLATEFLAGS) --master 
$$< --po \
-               $(template_dir)/po/$$(*F).$(1).po --localized $$@
-       $(SED) --in-place ':egin;N;$$$$!begin;s/\([ \t]*\n[ 
\t]*\)\{3,\}<!--/\n\n<!--/g' $$@
-endef
-
-$(foreach t_lang,$(TEMPLATE_LINGUAS),$(eval $(call template_rules,$(t_lang))))
-### End of the templates-specific rules ###
-
-### Specific rules for the homepages ###
-$(rootdir)/po/home.proto: $(rootdir)/home.shtml
-# Delete the target if the script exits with a non-zero status
-# in order to prevent further messing up in the chain.  For
-# extra safety, exit with an error so that make does not
-# proceed to the next command.
-       $(VALIDATESKIP) $(VALIDATE-HTML) $<
-       $(MAKE-PROTOTYPE) --home --input=$< --generic=generic.html --output=$@ 
|| ($(RM) $@ ; exit 1)
-       $(SED) --in-place "s/\$$Date.*\$$/<gnun>\0<\/gnun>/g" $@
-
-$(rootdir)/po/home.pot: $(rootdir)/po/home.proto
-       $(addfile)
-       $(generate-pot)
-
-define home_rules
-$(rootdir)/po/home.$(1).po: $(rootdir)/po/home.pot
-# This is temporary for `trans-coord'; errors should not be ignored
-# when GNUN runs in the official repository.
-       -$(check-po)
-       $(MSGMERGE) --update $$@ $$<
-       touch $$@
-
-$(rootdir)/home.$(1).shtml: $(rootdir)/po/home.proto 
$(rootdir)/po/home.$(1).po generic.$(1).html
-       $$(addfile)
-       $(PO4A-TRANSLATE) $(PO4A_XHTMLFLAGS) $(PO4A-TRANSLATEFLAGS) --master 
$$< --po $(rootdir)/po/home.$(1).po --localized $(rootdir)/po/home.$(1).m4
-       $(SED) --in-place 
"s/\(<gnun>include(\`.*\)\([.]html')<\/gnun>\)/\1.$(1)\2/g" 
$(rootdir)/po/home.$(1).m4
-       $(SED) --in-place "s/<gnun>\(.*\)<\/gnun>/\1/g" 
$(rootdir)/po/home.$(1).m4
-       $(SED) --in-place ':egin;N;$$$$!begin;s/\([ \t]*\n[ 
\t]*\)\{3,\}<!--/\n\n<!--/g' $(rootdir)/po/home.$(1).m4
-       for replaceable in $(replaceable_includes); do \
-               $(SED) --in-place "s/\(<!--#include 
virtual=\".*$$$$replaceable\)\(.html\" -->\)/\1.$(1)\2/g" 
$(rootdir)/po/home.$(1).m4; \
-       done;
-# Polish is special case, because Apache treats gnusflashes.pl.include
-# as a Perl file.  This is hopefuly a temprorary situation.
-ifeq ($(1), pl)
-       $(SED) --in-place "s/\(<!--#include file=\"gnusflashes*\)\(.include\" 
-->\)/\1.polish\2/g" $(rootdir)/po/home.pl.m4
-else
-       [ ! -f $(rootdir)/gnusflashes.$(1).include ] || $(SED) --in-place 
"s/\(<!--#include file=\"gnusflashes*\)\(.include\" -->\)/\1.$(1)\2/g" 
$(rootdir)/po/home.$(1).m4
-endif
-       $(M4) $(rootdir)/po/home.$(1).m4 > $$@
-# To validate Catalan translations, add `ca' after `bg' and update the
-# variable `verbatim-templates' accordingly.  
-# FIXME: Remove this conditional when GNUN operates in `www', where we
-# want to validate everything.
-ifneq (,$(findstring $(1),bg))
-       $(VALIDATESKIP) $(VALIDATE-HTML) $$@
-endif
-endef
-
-$(foreach h_lang,$(HOME_LINGUAS),$(eval $(call home_rules,$(h_lang))))
-### End of the homepages-specific rules ###
-
-### Rules for all other articles ###
-define article_pot_rules
-$(1).proto $(1).translinks: $(subst /po/,/,$(1).html)
-       $(VALIDATESKIP) $(VALIDATE-HTML) $$<
-       $(MAKE-PROTOTYPE) --input=$$< --generic=generic.html 
--output=$(1).proto --translinks=$(1).translinks || \
-         ($(RM) $(1).proto $(1).translinks ; exit 1)
-       $(SED) --in-place "s/\$$$$Date.*\$$$$/<gnun>\0<\/gnun>/g" $(1).proto
-
-$(1).pot: $(1).proto
-       $$(addfile)
-       $$(generate-pot)
-endef
-
-define article_rules
-$(1).po: $(basename $(1)).pot
-       $(check-po)
-       $(MSGMERGE) --update $$@ $$<
-       touch $$@
-
-$(subst /po/,/,$(1).html): $(basename $(1)).proto $(basename $(1)).translinks 
$(1).po generic.$(2).html
-       $$(addfile)
-       $(PO4A-TRANSLATE) $(PO4A_XHTMLFLAGS) $(PO4A-TRANSLATEFLAGS) --master 
$$< --po $(1).po --localized $(1).m4
-       $(SED) --in-place 
"s/\(<gnun>include(\`.*\)\([.]html')<\/gnun>\)/\1.$(2)\2/g" $(1).m4
-       $(SED) --in-place "s/<gnun>\(.*\)<\/gnun>/\1/g" $(1).m4
-       $(SED) --in-place ':egin;N;$$$$!begin;s/\([ \t]*\n[ 
\t]*\)\{3,\}<!--/\n\n<!--/g' $(1).m4
-       for replaceable in $(replaceable_includes); do \
-               $(SED) --in-place "s/\(<!--#include 
virtual=\".*$$$$replaceable\)\(.html\" -->\)/\1.$(2)\2/g" $(1).m4; \
-       done;
-       $(M4) $(1).m4 > $$@
-       $(VALIDATESKIP) $(VALIDATE-HTML) $$@
-endef
-
-$(foreach base,$(ALL_BASE),$(eval $(call article_pot_rules,$(base))))
-# FIXME: This is close to hell.  There should be an easier way to do it.
-$(foreach po_base,$(ALL_POS_BASE),$(eval $(call 
article_rules,$(po_base),$(subst .,,$(suffix $(po_base))))))
-### End of all articles' rules ###
-
-# If VCS=always, add all necessary files.  The templates' POT are not
-# handled for the moment, but they are more or less stable.  Also,
-# there is no sense in adding home.pot as this should happen only once.
-# WARNING: This is horribly slow and is implemented just in case.
-ifneq (,$(findstring always,$(VCS)))
-vcs-add-always:
-       for file in $(template_translated) $(home_translated) $(ALL_POTS) \
-         $(articles_translated) $(wildcard generic.*.html); do \
-         ($(CVS) add $$file ; exit 0) ; done
-else
-vcs-add-always: ;
-endif
-
-# Special target to sync the original English articles from the `www'
-# repository.  It is intended to be invoked by a fencepost cron job
-# and will be useful even when GNUN is deployed.  Automatic adding and
-# removal is not implemented (except adding `verbatim-templates'), so
-# make sure to `cvs add'/`cvs remove' and commit the article when
-# editing gnun.mk.
-wwwdir := $(rootdir)/$(rootdir)/www
-orig-templates := $(addsuffix .html,$(template_translated_base))
-orig-articles := $(addsuffix .html,$(subst /po/,/,$(ALL_BASE)))
-files-to-sync := $(rootdir)/home.shtml $(orig-templates) $(orig-articles)
-abs-files-to-sync := $(subst $(rootdir)/,,$(files-to-sync))
-# Templates that are not gettextized, but are necessary to reside in
-# trans-coord for HTML validation at build time.
-verbatim-templates := $(addprefix server/,header.html footer.html \
-                                         header.af.html footer.af.html \
-                                         header.bg.html footer.bg.html)
-
-.PHONY: sync
-sync: 
-# Synchronize all articles and report if an article has been deleted
-# from the master repository.
-       for file in $(abs-files-to-sync) ; do \
-         if [ ! -f $(wwwdir)/$$file ] ; then \
-           echo "Warning: $$file missing in www; update the variable?" \
-           | $(CVSSKIP) mail -s "sync: missing file" $(devel_addr) ; \
-         else \
-           cp -p --update $(wwwdir)/$$file $(rootdir)/$$file ; \
-         fi ; done
-# Copy all necessary templates that are not under GNUN's control and
-# `cvs add' them if VCS=yes.
-       for t in $(verbatim-templates) ; do \
-         if [ ! -f $(rootdir)/$$t ] ; then \
-           cp -p $(wwwdir)/$$t $(rootdir)/$$t \
-             && $(CVSSKIP) $(CVS) add $(rootdir)/$$t ; \
-         else \
-           cp -p --update $(wwwdir)/$$t $(rootdir)/$$t ; \
-         fi ; done
-       cd $(rootdir) ; \
-         $(CVSSKIP) $(CVS) commit -m \
-         "Automatic sync from the master www repository."

Index: prep/gnun/README
===================================================================
RCS file: prep/gnun/README
diff -N prep/gnun/README
--- prep/gnun/README    15 Feb 2008 19:39:31 -0000      1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
-Dependencies
-------------
-GNU Make >= 3.81 (prereleases of 3.81 also work)
-GNU Sed
-GNU Gettext (>= 0.16 ?)
-GNU M4 >= 1.4
-GNU Guile >= 1.6
-po4a 0.32
-Libxml2 (>= 2.6.24, needed for XHTML validation only)
-W3C XHMTL 1.0 DTDs (needed for XHTML validation only)
-CVS (>= 1.12.9, needed if VCS operations are enabled)

Index: prep/gnun/TODO
===================================================================
RCS file: prep/gnun/TODO
diff -N prep/gnun/TODO
--- prep/gnun/TODO      13 Feb 2008 20:44:35 -0000      1.15
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,110 +0,0 @@
-GNUnited Nations TODO List                             -*-outline-*-
-
-* Present bugs
-
-** Po4a wraps the <script> of the FSF widget at /server/banner.html,
-  which makes it disfunctional.  It seems that the problem is the
-  C++-style comment `// already a member...'.  The solution would be
-  either to 1) Include a comment for translators that will appear in
-  PO message not to include it; 2) Delete it somehow automatically; 3)
-  Persuade Matt not do to such things.
-
-** <meta> elements not translatable.
-
-* General (when bugs are fixed)
-
-** The documentation is not complete, and should be improved.
-
-** Experiment with msgmerge's `--previous' option and make it the
-   default, if feasible.  Requires gettext >= 0.16.
-
-** Write a script that will itself invoke $(MAKE), log all output in a
-   file and cvs commit everything ought to be committed.  Deal with SSH
-   woes in order the whole operation to be performed automatically.
-
-** GNU Coding Standards compliance.
-
-*** Standardize all variables'/rules' names.
-
-*** Wrap long lines where possible.
-
-** Add a `check' target (probably using Autoconf or DejaGNU) that would
-   test the environment and all the tools we use.
-
-** Handle errors properly.
-   When make-prototype fails, a proper mail with the error message
-   should be sent to www-discuss.  Likewise, if a translator commits a
-   PO file that is not valid (perhaps this will be very common, at
-   least in the beginning).
-
-* Expected problems
-
-** make-prototype.scm uses a regexp to split the articles in pieces.
-   That regexp might not fit to all articles, that's why it has to be
-   tested with as many as possible.
-
-** RTL.
-
-** Complicated articles like /philosophy/eldred-amicus.
-
-* Non-essential
-
-** Implement a `report' target that would be language specific and will
-   output the state of all files for a language team, and extended
-   `full-report' that will check the activity of all teams for a
-   certain period.  For language teams, a `msgfmt --statistics'-similar
-   output would be sufficient, as a start (probably omiting files that
-   are 100% complete).  (This could be done with a script too.)
-
-** It would be nice to add some preprocessing logic to include specific
-   HTML comments into the POT, like:
-
-   <!-- TRANSLATORS: Do not translate foo as bar, because mumbo jumbo.
-   Read keleme.html for more info. -->
-
-   This could be useful for some articles under /licenses and for
-   several other occasions.
-
-** When commiting automated changes, find a way to generate meaningful
-   CVS log entries, describing the changes.  Something like:
-
-  ,----
-  | Atomatically generated commit message by GNUnited Nations.
-  | 
-  | * po/home.pot: $(actual log entry of home.shtml used by the $webmaster).
-  | * philosophy/bdk.fa.html: Adding Farsi translation # or whatever the
-  |                                                           # Persian leader
-  |                                                   # wrote while
-  |                                                   # commiting the
-  |                                                   # PO file
-  | * gnu/linux-and-gnu.bg.html: Impoved foo (Closes: bug #1234).
-  `----
-
-  Possible implementation is this: When a file is modified, an extra
-  command will append the cvs log message from the original file.
-  Upon successful make && commit, this log file will be deleted.  In
-  case of failure, it will not be deleted so that the accumulated
-  messages will be used in the next run.
-
-** Figure out how to "inject" a language-specific warning, possibly
-   from /prep/i18n/outdated.xx.html that will be displayed when the
-   page has 20% (or more) messages untranslated.  We have to think
-   also about a deprecation plan for all gnu.org translated pages, and
-   whether this software can help sorting all issues out.  Idea: We
-   can use the comment <!-- Automatically generated... --> to add a
-   fake #include directive, which will tell Apache that this page is
-   OK, but in its absence will direct to a separate page (like 404)
-   with a a notice that the translation is very outdated and
-   links/options like 1) Visit the English article; 2) Visit the
-   translation anyway; 3) Help the Foo translation team; 4) Whatever
-   we decide.
-
-** PO mode a bit unsuitable for HTML translations.
-   The window that gets opened when you hit <RET> on a msgstr in PO
-   mode is in Fundamental mode, which leads to many typos that stem
-   from the fact that font lock for HTML is not available.  Ideally,
-   we should find a way to provide a custom code to override PO mode's
-   default behaviour.  Perhaps even a simple facility to convert a
-   standard PO header as generated by Po4a to the recommended format,
-   plus probably other useful things that would save purely mechanical
-   work.

Index: prep/gnun/fdl.texi
===================================================================
RCS file: prep/gnun/fdl.texi
diff -N prep/gnun/fdl.texi
--- prep/gnun/fdl.texi  9 Feb 2008 17:06:53 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,451 +0,0 @@
address@hidden The GNU Free Documentation License.
address@hidden Version 1.2, November 2002
-
address@hidden This file is intended to be included within another document,
address@hidden hence no sectioning command or @node.
-
address@hidden
-Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
-51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
address@hidden display
-
address@hidden 0
address@hidden
-PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document @dfn{free} in the sense of freedom: to
-assure everyone the effective freedom to copy and redistribute it,
-with or without modifying it, either commercially or noncommercially.
-Secondarily, this License preserves for the author and publisher a way
-to get credit for their work, while not being considered responsible
-for modifications made by others.
-
-This License is a kind of ``copyleft'', which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-
address@hidden
-APPLICABILITY AND DEFINITIONS
-
-This License applies to any manual or other work, in any medium, that
-contains a notice placed by the copyright holder saying it can be
-distributed under the terms of this License.  Such a notice grants a
-world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein.  The ``Document'', below,
-refers to any such manual or work.  Any member of the public is a
-licensee, and is addressed as ``you''.  You accept the license if you
-copy, modify or distribute the work in a way requiring permission
-under copyright law.
-
-A ``Modified Version'' of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A ``Secondary Section'' is a named appendix or a front-matter section
-of the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall
-subject (or to related matters) and contains nothing that could fall
-directly within that overall subject.  (Thus, if the Document is in
-part a textbook of mathematics, a Secondary Section may not explain
-any mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The ``Invariant Sections'' are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.  If a
-section does not fit the above definition of Secondary then it is not
-allowed to be designated as Invariant.  The Document may contain zero
-Invariant Sections.  If the Document does not identify any Invariant
-Sections then there are none.
-
-The ``Cover Texts'' are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.  A Front-Cover Text may
-be at most 5 words, and a Back-Cover Text may be at most 25 words.
-
-A ``Transparent'' copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, that is suitable for revising the document
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup, or absence of markup, has been arranged to thwart
-or discourage subsequent modification by readers is not Transparent.
-An image format is not Transparent if used for any substantial amount
-of text.  A copy that is not ``Transparent'' is called ``Opaque''.
-
-Examples of suitable formats for Transparent copies include plain
address@hidden without markup, Texinfo input format, address@hidden input
-format, @acronym{SGML} or @acronym{XML} using a publicly available
address@hidden, and standard-conforming simple @acronym{HTML},
-PostScript or @acronym{PDF} designed for human modification.  Examples
-of transparent image formats include @acronym{PNG}, @acronym{XCF} and
address@hidden  Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, @acronym{SGML} or
address@hidden for which the @acronym{DTD} and/or processing tools are
-not generally available, and the machine-generated @acronym{HTML},
-PostScript or @acronym{PDF} produced by some word processors for
-output purposes only.
-
-The ``Title Page'' means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, ``Title Page'' means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
-A section ``Entitled XYZ'' means a named subunit of the Document whose
-title either is precisely XYZ or contains XYZ in parentheses following
-text that translates XYZ in another language.  (Here XYZ stands for a
-specific section name mentioned below, such as ``Acknowledgements'',
-``Dedications'', ``Endorsements'', or ``History''.)  To ``Preserve the Title''
-of such a section when you modify the Document means that it remains a
-section ``Entitled XYZ'' according to this definition.
-
-The Document may include Warranty Disclaimers next to the notice which
-states that this License applies to the Document.  These Warranty
-Disclaimers are considered to be included by reference in this
-License, but only as regards disclaiming warranties: any other
-implication that these Warranty Disclaimers may have is void and has
-no effect on the meaning of this License.
-
address@hidden
-VERBATIM COPYING
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
address@hidden
-COPYING IN QUANTITY
-
-If you publish printed copies (or copies in media that commonly have
-printed covers) of the Document, numbering more than 100, and the
-Document's license notice requires Cover Texts, you must enclose the
-copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a computer-network location from which the general network-using
-public has access to download using public-standard network protocols
-a complete Transparent copy of the Document, free of added material.
-If you use the latter option, you must take reasonably prudent steps,
-when you begin distribution of Opaque copies in quantity, to ensure
-that this Transparent copy will remain thus accessible at the stated
-location until at least one year after the last time you distribute an
-Opaque copy (directly or through your agents or retailers) of that
-edition to the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
address@hidden
-MODIFICATIONS
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-
address@hidden A
address@hidden
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document).  You may use the same title as a previous version
-if the original publisher of that version gives permission.
-
address@hidden
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has fewer than five),
-unless they release you from this requirement.
-
address@hidden
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-
address@hidden
-Preserve all the copyright notices of the Document.
-
address@hidden
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-
address@hidden
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-
address@hidden
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-
address@hidden
-Include an unaltered copy of this License.
-
address@hidden
-Preserve the section Entitled ``History'', Preserve its Title, and add
-to it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page.  If
-there is no section Entitled ``History'' in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-
address@hidden
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on.  These may be placed in the ``History'' section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-
address@hidden
-For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
-the Title of the section, and preserve in the section all the
-substance and tone of each of the contributor acknowledgements and/or
-dedications given therein.
-
address@hidden
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles.  Section numbers
-or the equivalent are not considered part of the section titles.
-
address@hidden
-Delete any section Entitled ``Endorsements''.  Such a section
-may not be included in the Modified Version.
-
address@hidden
-Do not retitle any existing section to be Entitled ``Endorsements'' or
-to conflict in title with any Invariant Section.
-
address@hidden
-Preserve any Warranty Disclaimers.
address@hidden enumerate
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section Entitled ``Endorsements'', provided it contains
-nothing but endorsements of your Modified Version by various
-parties---for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
address@hidden
-COMBINING DOCUMENTS
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice, and that you preserve all their Warranty Disclaimers.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections Entitled ``History''
-in the various original documents, forming one section Entitled
-``History''; likewise combine any sections Entitled ``Acknowledgements'',
-and any sections Entitled ``Dedications''.  You must delete all
-sections Entitled ``Endorsements.''
-
address@hidden
-COLLECTIONS OF DOCUMENTS
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
address@hidden
-AGGREGATION WITH INDEPENDENT WORKS
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an ``aggregate'' if the copyright
-resulting from the compilation is not used to limit the legal rights
-of the compilation's users beyond what the individual works permit.
-When the Document is included in an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one half of
-the entire aggregate, the Document's Cover Texts may be placed on
-covers that bracket the Document within the aggregate, or the
-electronic equivalent of covers if the Document is in electronic form.
-Otherwise they must appear on printed covers that bracket the whole
-aggregate.
-
address@hidden
-TRANSLATION
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-the original English version of this License and the original versions
-of those notices and disclaimers.  In case of a disagreement between
-the translation and the original version of this License or a notice
-or disclaimer, the original version will prevail.
-
-If a section in the Document is Entitled ``Acknowledgements'',
-``Dedications'', or ``History'', the requirement (section 4) to Preserve
-its Title (section 1) will typically require changing the actual
-title.
-
address@hidden
-TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
address@hidden
-FUTURE REVISIONS OF THIS LICENSE
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
address@hidden://www.gnu.org/copyleft/}.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License ``or any later version'' applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
address@hidden enumerate
-
address@hidden
address@hidden ADDENDUM: How to use this License for your documents
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-
address@hidden
address@hidden
-  Copyright (C)  @var{year}  @var{your name}.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.2
-  or any later version published by the Free Software Foundation;
-  with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-  Texts.  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
address@hidden group
address@hidden smallexample
-
-If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the address@hidden'' line with this:
-
address@hidden
address@hidden
-    with the Invariant Sections being @var{list their titles}, with
-    the Front-Cover Texts being @var{list}, and with the Back-Cover Texts
-    being @var{list}.
address@hidden group
address@hidden smallexample
-
-If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
-
address@hidden Local Variables:
address@hidden ispell-local-pdict: "ispell-dict"
address@hidden End:
-

Index: prep/gnun/generic.af.html
===================================================================
RCS file: prep/gnun/generic.af.html
diff -N prep/gnun/generic.af.html

Index: prep/gnun/generic.bg.html
===================================================================
RCS file: prep/gnun/generic.bg.html
diff -N prep/gnun/generic.bg.html
--- prep/gnun/generic.bg.html   19 Feb 2008 05:58:47 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,6 +0,0 @@
-<p>Моля, докладвайте грешки и предложения 
относно българския превод
-чрез
-<a href="https://savannah.gnu.org/bugs/?group=www-bg";>системата за
-проследяване на грешки</a>
-на <a href="https://savannah.gnu.org/projects/www-bg/";>проекта за
-превод на www.gnu.org</a>.  Благодарим Ви!</p>

Index: prep/gnun/generic.pl.html
===================================================================
RCS file: prep/gnun/generic.pl.html
diff -N prep/gnun/generic.pl.html

Index: prep/gnun/generic.zh-cn.html
===================================================================
RCS file: prep/gnun/generic.zh-cn.html
diff -N prep/gnun/generic.zh-cn.html

Index: prep/gnun/gnun.mk
===================================================================
RCS file: prep/gnun/gnun.mk
diff -N prep/gnun/gnun.mk
--- prep/gnun/gnun.mk   17 Feb 2008 15:16:08 -0000      1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,45 +0,0 @@
-# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
-
-# This file is part of GNUnited Nations.
-
-# GNUnited Nations is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-
-# GNUnited Nations is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with GNUnited Nations. If not, see <http://www.gnu.org/licenses/>.
-
-TEMPLATE_LINGUAS := af bg
-
-HOME_LINGUAS := bg pl zh-cn
-
-ROOT :=                keepingup \
-               provide
-
-gnu :=         gnu \
-               gnu-history \
-               linux-and-gnu \
-               rms-lisp \
-               why-gnu-linux
-
-philosophy :=  bdk \
-               can-you-trust \
-               eldred-amicus \
-               free-software-for-freedom \
-               free-sw \
-               java-trap \
-               open-source-misses-the-point \
-               philosophy \
-               right-to-read \
-               schools \
-               software-literary-patents \
-               sun-in-night-time
-
-ALL_DIRS :=    gnu \
-               philosophy

Index: prep/gnun/gnun.texi
===================================================================
RCS file: prep/gnun/gnun.texi
diff -N prep/gnun/gnun.texi
--- prep/gnun/gnun.texi 20 Feb 2008 07:18:15 -0000      1.17
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,969 +0,0 @@
-\input texinfo
address@hidden %**start of header
address@hidden gnun.info
address@hidden GNUnited Nations Manual
address@hidden FIXME: Would be nice to have it in the format `%:b %:d, %:y', but
address@hidden in English.
address@hidden lastupdate 20.02.2008
address@hidden %**end of header
-
address@hidden Please do not use features of Texinfo >> 4.8, which is the 
version
address@hidden available in gNewSense.  Thanks.
-
address@hidden FIXME: Add more xrefs, where appropriate.
address@hidden FIXME: Add indexing commands.
-
address@hidden
-
-This manual is for @acronym{GNU}nited Nations, a suite for maintaining
-translations of www.gnu.org essays and other address@hidden
-Last updated on @value{lastupdate}.
address@hidden 1
-Copyright @copyright{} 2008 Free Software Foundation, Inc.
-
address@hidden
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the @acronym{GNU} Free Documentation License,
-Version 1.2 or any later version published by the Free Software
-Foundation; with no Invariant Sections, no Front-Cover Texts, and no
-Back-Cover Texts.  A copy of the license is included in the section
-entitled address@hidden Free Documentation License.''
address@hidden quotation
address@hidden copying
-
address@hidden
address@hidden GNUnited Nations Manual
address@hidden Software for maintaining www.gnu.org translations
address@hidden (last updated @value{lastupdate})
address@hidden by Yavor Doganov <@email{yavor@@gnu.org}>
address@hidden
address@hidden 0pt plus 1filll
address@hidden
address@hidden titlepage
-
address@hidden
-
address@hidden Localization
address@hidden
-* GNUnited Nations: (gnun).     Maintaining gnu.org translations.
address@hidden direntry
-
address@hidden
address@hidden Top
address@hidden GNUnited Nations
address@hidden
address@hidden ifnottex
-
address@hidden
-* Introduction::        Overview of GNUnited Nations.
-* Usage::               Basic usage, invocation and tips.
-* Internals::           Dive into @acronym{GNUN}.
-* Index::
-* Copying This Manual:: The GNU Free Documentation License.
address@hidden menu
-
address@hidden Introduction
address@hidden Introduction to @acronym{GNU}nited Nations
-
address@hidden Nations (abbreviated @acronym{GNUN}) is a
-collection of makefiles and scripts that are supposed to make the life
-of @url{http://gnu.org} translators easier.  Although it is
-specifically developed for the @acronym{GNU} Project's website, it
-could be customized, at least in theory, to fit the needs of other
-internationalized sites.  @acronym{GNUN} is in early stage of
-development, but if it proves useful, and if there is sufficient
-interest (and time), it is possible to develop a robust configuration
-interface that would be appropriate for general usage.
-
-It is vitally important to understand that @acronym{GNUN} is
address@hidden a silver bullet that solves all problems.  If we have to be
-honest, deploying @acronym{GNUN} in fact even does create some
-(@pxref{Disadvantages}).
-
address@hidden Nations is free software, available under the
address@hidden General Public License.
-
-This manual is organized in way that is suitable both for translators
-and @acronym{GNU} Web Translation managers (plus eventually interested
address@hidden Webmasters, if any).  It may also serve as an
-introductory material and reference for new @acronym{GNUN} developers
-and contributors.  Hopefully, it might be useful to people who
-customize and adopt the software for a third party site or for their
-own needs.  Feel free to skip sections or entire chapters if they are
-irrelevant for your intended usage.
-
-This manual is free documentation, and you can modify and redistribute
-it under the terms of the @acronym{GNU} Free Documentation License.
address@hidden This Manual, ,GNU Free Documentation License}.
-
address@hidden
-* Overview::            What is @acronym{GNUN} and why is necessary?
-* Concepts::            Basic concepts and goals.
-* Advantages::          The goodness @acronym{GNUN} brings.
-* Disadvantages::       Staying on firm ground.
address@hidden menu
-
address@hidden Overview
address@hidden Why @acronym{GNUN} is Being Developed
-
-The @acronym{GNU} Project's website, @uref{http://www.gnu.org}, has
-become considerably large over the years.  Maintaining it requires
-significant effort, and sometimes a new web standard is developed
-faster than the time required to migrate all articles to the next
-widely adopted one.
-
-When it comes to internationalization, the problems are so many that
-it is hard to enumerate them.  It has become apparent that maintaining
-translations up-to-date is a major undertaking, involving tedious
-skimming through commit logs, reviewing diffs and other medieval
-techniques to catch up.  Some translation teams have developed their
-own sets of scripts, but so far there has been no universal solution.
-
-This unpleasant situation, combined with rapid and incompatible
-design changes, have lead some teams to neglect the important work of
-keeping their translation in line with the changing original
-articles.  As a consequence, the @acronym{GNU} Project is facing the
-problem of maintaining them in suboptimal ways, in order to keep the
-information updated.
-
-The reasons for developing @acronym{GNU}nited Nations are very similar
-to those that lead to the inception of @acronym{GNU} gettext, or
address@hidden Documentation Utilities (@code{gnome-doc-utils}) some
-years later.
-
address@hidden Concepts
address@hidden What @acronym{GNU}nited Nations is and Should be
-
-The basic concept behind @acronym{GNUN} is that localization of HTML
-articles is similar to localization of computer programs.  In
-articles, like in programs, not every string is considered
-translatable, so translatable strings must be identified first, and
-then collected in a file (called ``PO template'') for translation.
-Articles, like programs, tend to change in time, but not every change
-in the sources calls for a translation update.  Sometimes the change
-does not affect the translatable strings, but sometimes it does.  So,
-translators must have means to identify those changes and apply the
-appropriate updates to the translation.
-
-The @acronym{GNU} @code{gettext} package already provides the needed
-infrastructure for maintaining translations using PO files.
address@hidden, , Introduction, gettext, GNU gettext tools}, for a basic
-overview.  @acronym{GNU}nited Nations fills the gaps to apply this
-infrastructure to articles in @url{http://gnu.org} web
address@hidden process of converting HTML to PO and the other way
-around is performed using po4a (``po for anything''), see
address@hidden://po4a.alioth.debian.org}.}
-
-The following diagram summarizes the relation between the files
-handled by @acronym{GNUN}.  It is followed by somewhat detailed
-explanations, which you should read while keeping an eye on the
-diagram.  Having a clear understanding of these interrelations will
-surely help translators and web maintainers.
-
address@hidden
address@hidden
-.---<--- * Original ARTICLE.html
-|
-|   .---> ARTICLE.pot ---> * ARTICLE.LANG.po --->---.
-`---+                                               |
-    `--->---.   .------<----------------------------'
-            |   |
-            |   `---.
-            |       +---> Translated ARTICLE.LANG.html
-            `-------'
address@hidden group
address@hidden example
-
-The indication @samp{*} appears in two places in this picture, and
-means that the corresponding file is intended to be edited by humans.
-The author or web maintainer edits the original
address@hidden@var{article}.html}, and translators edit
address@hidden@address@hidden  All other files are regenerated
-by @acronym{GNUN} and any manual changes on them will be lost on the
-next run.
-
-Arrows denote dependency relation between files, where a change in one
-file will affect the other.  Those automatic changes will be applied
-by running @samp{make -C prep/gnun}.  This is the primary way to
-invoke @acronym{GNUN}, since it is implemented as a set of recipes for
address@hidden @code{make}.
-
-First, @acronym{GNUN} extracts all translatable strings from the
-original English article @address@hidden into
address@hidden@var{article}.pot}.  The resulted file is suitable for
-manipulation with the various @acronym{GNU} @samp{gettext} utilities.
-It contains all original article strings and all translations are set
-to empty.  The letter @code{t} in @file{.pot} marks this as a Template
-PO file, not yet oriented towards any particular language.
-
-The first time though, there is no @address@hidden@var{lang}.po}
-yet, so a translator must manually copy @address@hidden to
address@hidden@address@hidden, where @var{lang} represents the
-target language.  See FIXME:``Introducing new translation language for
-an article'' for details.
-
-Then comes the initial translation of messages in
address@hidden@address@hidden  Translation in itself is a whole
-matter, whose complexity far overwhelms the level of this manual.
-Nevertheless, a few hints are given in some other chapter of this
-manual (FIXME:Translators (but only if we would like to include some
-practical advices to candidate translators on how to join a gnu.org
-translating team)).  You will also find there indications about how to
-contact translating teams, or becoming part of them, for sharing your
-translating concerns with others who target the same native language.
-
-You may use any compatible PO editor to add translated messages into
-the PO file.  @xref{Editing, , Editing, gettext, GNU gettext tools},
-for more information.
-
-When the PO file actually exists (hopefully populated with initial
-translations), @acronym{GNUN} generates
address@hidden@address@hidden file.  It takes its structure
-from the original @address@hidden, but all translatable
-strings are replaced with their translations specified in
address@hidden@address@hidden
-
-Original articles sometimes change.  A new paragraph is being added or
-a tiny change in the wording is introduced.  Also, some articles are
-dynamic in nature, like ones containing news entries or a list of
-other articles.  If the original article changes, @acronym{GNUN} will
-automatically rebuild @address@hidden, and will merge the
-changes to @address@hidden@var{lang}.po}.  Any outdated
-translations will be marked as fuzzy, any new strings will be added
-with empty translations, waiting to be translated.  In the same run
address@hidden@address@hidden will be rebuilt so the relevant
-strings in the translation will be substituted with the original
-English text, until the translation teams update them in
address@hidden@address@hidden
-
-Those changes in the original article that do not affect the
-translatable strings will not lead to changes in
address@hidden@address@hidden  Thus, no actions from translators
-will be needed.  @address@hidden@var{lang}.html} will be
-automatically regenerated to reflect the changes.
-
-FIXME: The following paragraphs should go to a separate section that
-explains those details like exact paths in www, diagram with the basic
-directory layout, additional files like .translinks, etc.
-
-The POT for every article under @acronym{GNUN}'s control is kept in
-the `www' repository under a special directory @file{po/}, which is a
-sub-directory of the relevant directory in the `www' tree.  So, for
address@hidden://www.gnu.org/philosophy/free-sw.html} that is
address@hidden/po/}.  Except @file{free-sw.pot}, this directory
-holds the canonical source of every translation, like
address@hidden, @file{free-sw.ca.po}, etc.
-
-Several additional features are implemented, like automatic update of
-the list of the available translations.  For example, if a new
-translation is added and the list of translations in
address@hidden is updated, all translated
address@hidden@var{lang}.html} will be regenerated.  This saves a lot
-of tedious, repetitive work.  There is a basic infrastructure to
-``inject'' general information about a translation team---like a note
-how to contact the team, or how to report a bug/suggestion for
-improvement.  Translators' credits are also handled, as well as
-translators' notes, if any.
-
address@hidden can be extended, and new features will certainly be
-added.  The @file{TODO} file currently lists some of them, but new
-ideas pop up quite often.  The plan is to make a solid foundation and
-develop front-ends---a web front-end, possibly based on Pootle, a
-statistics facility, probably a wiki compiler, and more.
-
address@hidden Advantages
address@hidden Major Advantages of @acronym{GNUN}
-
-Here is a simple list of situations where we hope this suite would
-prove to be useful.
-
address@hidden
address@hidden
-Automatic rebuild of all translations when the original article
-changes.  This is the most important feature, as it prevents
-accumulation of seriously outdated translations.
-
address@hidden
-Global update of the whole site.  Apply the previous point to the web
-server templates (under @file{server/} in the `www' repository).  A
-single change to such a file will affect literally @emph{all}
-articles, translated or not.
-
address@hidden
-Urgent notices.  Sometimes an ``urgent'' notice is added by the
-webmasters, which should appear on all pages.  Typically this is about
-an event where urgent action is needed, although often it is only
-relevant to a single country or even a particular city.  Such a notice
-will propagate to all pages, and translators may choose whether to
-translate it or not.  For example, the Urdu translation team may
-conclude that there are only a few Urdu speakers in Massachusetts, to
-participate in an event that will happen in Boston, so translating the
-``urgent'' notice may not be very ``urgent'' for Urdu.  However, such
-notice will appear in all translated pages and people who usually read
-gnu.org pages in their native language will see it, so they can take
-action as necessary.  When the notice is removed, often in a week or
-two, it will disappear without translators' intervention, whether they
-translated it or not.
-
address@hidden
-Simplification of the translation process---lots of errors and typos
-come from the fact that translators basically have to duplicate the
-whole HTML markup of the original.  The PO files eliminate most of the
-basic markup, which is where most of the validation errors come from.
-
address@hidden
-Markup consistency site-wide---it would be substantially easier to
-update the site to a future standard, because translations will
-naturally follow the changes in the original articles.  This also
-means that translation teams do not have to undergo the boring process
-of converting their articles to the new @acronym{SSI}-based layout;
-this will be done automatically.
-
address@hidden
-Easy updates by translators.  Modified paragraphs, links, etc. will
-appear as ``fuzzy'' strings in the PO files, newly added ones will
-appear as ``untranslated'', and deleted will appear as ``obsolete''.
-It is substantially easier to update a PO file, where a keystroke
-takes you to the part that needs updating, whatever it may be.
-
address@hidden
-Reporting and statistics.  Since the basis is standard PO files, which
-are the canonical source of the translations, it is easy to manipulate
-them and extract useful information.
address@hidden itemize
-
address@hidden Disadvantages
address@hidden Known Bugs and Limitations
-
-As it happens in real life, we don't wear pink glasses and are aware
-of certain limitations and annoyances of this semi-automatic system.
-
address@hidden
address@hidden
-Often it is hard to figure out where precisely a change was made.  A
-change in one single word in a long paragraph of the HTML article will
-lead to the whole of it being marked as ``fuzzy'' in the PO files.  So
-don't unsubscribe from @email{www-commits@@gnu.org} yet, and be
-prepared to check the CVS history of the original article.
-
address@hidden
-We plan to invoke a build once a day, because doing it more often will
-potentially generate more messages to the mailing list in the form of
-commit notifications.  This has its drawback, since translators will
-have to wait for a day until their PO files are updated, and another
-day for the @address@hidden articles to get generated, after
-they commit the updated POs.
-
address@hidden
-Currently there is no way a translation team can take advantage of
address@hidden while following their own translation process, because
-the suite is tied to the official repository.  We hope that we will
-resolve this problem soon.
address@hidden itemize
-
address@hidden Usage
address@hidden General Usage
-
address@hidden
-If anything may go wrong, it will definitely go wrong.
----Murphy's Law
-
-Murphy is an optimist.
----O'Rielly's Law
address@hidden flushright
address@hidden 1
-
address@hidden currently consists of a few makefiles, scripts and
-optional @address@hidden files, intended to contain
-article-independent but team-specific information.  They are designed
-to reside in the @file{prep/gnun/} directory, but this may change.  In
-all examples in this manual, ``invoking'' means executing on the
-command line @command{make -C prep/gnun/ address@hidden
address@hidden@var{value} @dots{}]} while the working directory is
-the root in the `www' web repository.  For the purpose of brevity, we
-will refer to the above command as simply @command{make}, which is
-equivalent to @command{cd prep/gnun ; make}.  It is desirable never to
-invoke @command{make} with the @option{-k} (@option{--keep-going})
-option, because an eventual error in only one make recipe might create
-a mess in many articles, both original and translated.  Do this with
-caution, and generally only when debugging in a safe environment.
-
-The build process is intended to be invoked by a cron job, although
-manual intervention to a certain degree is possible.
-
address@hidden
-* Invoking GNUN::       How to trigger a (re)build.
-* Main Variables::      Specifying what to build.
-* PO Files::            The gentle art of editing PO files.
address@hidden menu
-
address@hidden Invoking GNUN
address@hidden Invoking GNUN
-
-The central part of @acronym{GNU}nited Nations is a makefile; actually
-a @file{GNUmakefile} since it heavily relies on features and
-extensions available in @acronym{GNU} Make.  Thus, invoking a build
-consists of typing @command{make} on the command line, or within cron.
-If you are deploying the software on a non-GNU machine, probably
address@hidden Make is installed and available as @command{gmake}.  If
-not, you should seriously consider installing it, since as far as we
-know, the build will fail otherwise.  See
address@hidden://www.gnu.org/software/make} for information how to
-download and install @acronym{GNU} Make.
-
-If you don't specify a target, @command{make} by default builds the
-target @code{all}, which in this case is to rebuild all translations
-that are not up-to-date.  However, there are special targets that do
-not depend on the standard @code{all} target, which can be built by
address@hidden @var{target}}.  Some of the variables in the next
-section apply to them, and some do not.
-
address@hidden
-* Runtime Variables::   Variables to control the build process.
-* Special Targets::     Targets that are not built by default.
address@hidden menu
-
address@hidden Runtime Variables
address@hidden Variables to Control the Build Process
-
-The build process has several modes of operation, and they all relate
-to the handling of files that are to be added to the repository or
-performing certain sanity checks at build time.  The variables are
-specified on the command line, after @command{make}, in the form
address@hidden, e.g. @command{make VCS=yes}.  In the future,
-additional features will be implemented in a similar fashion.
-
address@hidden @samp
address@hidden VCS=no
address@hidden @dots{}
-Do not add any files to the repository.  This is the default.  You may
-as well omit to define @code{VCS} entirely; there is no special code
-that expects assigning the value `no'.
-
address@hidden VCS=yes
-Automatically add any new files in the repository.  These are any POT
-files, if they are generated for the first time, and the translated
-articles (@address@hidden) in HTML format.  In addition, if
-there is no @file{prep/gnun/address@hidden file for the
-specific language an article is being generated, an empty file will be
-added.  Finally, any missing PO and their HTML counterparts of the
-server templates will be added, computed on the basis of the
address@hidden variable.
-
address@hidden VCS=always
-Because @acronym{GNU} Make considers the targets up-to-date after a
-successful build, if it was performed with no VCS interaction, the
-important newly created files will not be added (and committed when
-you do @command{cvs commit}) in the repository.  Assigning this value
-enables additional check and forcefully adds all files.  Use it
-sparingly, since it is very slow and generally less reliable.
-
address@hidden VALIDATE=no
address@hidden @dots{}
-Does not perform validation of the HTML articles and PO files.  This
-is the default, and not defining this variable has the same effect.
-
address@hidden VALIDATE=yes
-Validates all original articles before generating the POTs, to ensure
-that the ultimate source is valid XHMTL.  Also, validates all
-generated translations in HTML format and all PO files.  It is highly
-recommended to run the build this way, even if it is a bit tedious to
-fix the errors that are reported as a result of enforcing validation.
address@hidden table
-
-Note that @code{VCS=yes,always} is a valid combination: because POT
-files of the server templates are not handled by @code{always},
-running the build this way will commit any newly added files as
-specified in @code{TEMPLATE_LINGUAS} and will perform additional check
-at the end, @code{cvs add}-ing all necessary files.
-
address@hidden Special Targets
address@hidden Targets Specified on the Command Line
-
-Some targets are not built by default, because they are only useful
-under certain circumstances.  Think of them like semi-automated
-commands or canned command sequences that are more complicated, and
-more importantly, whose arguments are variables computed at the time
address@hidden reads the makefiles---the filesets they affect are
-specific and already defined, one way or another.
-
address@hidden
-* sync::
-* clean::
-* distclean::
address@hidden menu
-
address@hidden sync
address@hidden The @code{sync} target
-
-The @code{sync} target has a simple task: synchronize the
address@hidden English} articles from a canonical repository, like
-`www'.  It is very important that such synchronization happens,
-because it is desirable to develop the software and add more features
-in a testbed, while the `official instance' operates on the official
-repository in a predictable way.
-
-It is recommended that you `build' the @code{sync} target from a cron
-job, some time before the general build occurs.  That way,
-prerequisites (e.g. original @file{.html} articles) will be updated
-from the canonical repository and the subsequent @command{make}
-invocation, possibly run by cron as well, will update all
-translations.
-
-The @code{VCS} variable affects the behavior: if it is defined to
-`yes' then the synchronized files are committed to the `testing'
-repository, e.g. the @var{destination}.  In addition, if a file meant
-to be synchronized disappeared from the @var{source}, a warning mail
-will be sent to the address defined in the @code{devel_addr} variable
-(defined only in @file{GNUmakefile}).  The build will continue without
-failure, and will sync and commit all other files, but will send the
-same email message again if the file is still present in the
address@hidden variable during a subsequent invocation.
-
-In addition, @code{sync} synchronizes all ``verbatim'' server
-templates that are not under @acronym{GNUN}'s control, such as
address@hidden/header.html}, @file{server/footer.html} and their
-translations, as defined in the @code{verbatim-templates} variable.
-This is important, as these files may change in the master repository,
-while the validation of the html files in the development repository
-will be performed with the old templates expanded, thus making this
-specific test more or less bogus.
-
address@hidden has no effect on this target, as well as
address@hidden
-
address@hidden clean
address@hidden The @code{clean} target
-
-Not implemented yet.
-
address@hidden distclean
address@hidden The @code{distclean} target
-
-Not implemented yet.
-
address@hidden Main Variables
address@hidden Defining Articles to be Built
-
-The file @file{gnun.mk} contains variable definitions, based on which
-almost all other important variables are computed.  In other words,
-the variables defined in that file directly affect the overall
-behavior of the build process.
-
-There are two types of variables, which are specifically separated in
-order to make translators' life easier: variables that translators are
-free to modify and variables that are modified by the web-translators
address@hidden because presumably, they are more familiar with
address@hidden Nations' internals.  From a purely technical point
-of view, there is no difference.}, ideally after performing some local
-tests.  A translation team leader should update only
address@hidden and @code{HOME_LINGUAS}; everything else is
-supposed to be built auto-magically, without manual intervention.  If
-not, that is a bug that should be reported and fixed.
-
address@hidden @samp
address@hidden TEMPLATE_LINGUAS
-Add here your language code @emph{if and only if} you have all the
-server templates translated, and have committed
address@hidden/po/address@hidden and
address@hidden/po/address@hidden, as well as the templates
-that are not under @acronym{GNUN}'s control, like
address@hidden/address@hidden and
address@hidden/address@hidden
-
address@hidden HOME_LINGUAS
-Add your language code if you have already committed
address@hidden/address@hidden, that way the homepage for your language
-will be built.  It is not acceptable to have your language code
-defined in this variable, but not in @code{TEMPLATE_LINGUAS}.
-
address@hidden ROOT
-Add here articles that are in the server root, like
address@hidden and @file{provide.html}.  Always write only the
-basename of the article, i.e. if you add these two articles, the value
-of @code{ROOT} should be @code{keepingup provide}.  This is true for
-all the variables that expect values in the form of article names.
-
address@hidden ALL_DIRS
-The list of directories containing articles, like @file{philosophy},
address@hidden, @file{licenses}, etc.
-
address@hidden gnu
address@hidden philosophy
address@hidden @address@hidden
-A space-separated list of basenames for articles residing in
address@hidden, for which POTs will be generated and updated when the
-original article changes.  If an article is missing here, there is no
-way its translations to be maintained via @acronym{GNUN}.
address@hidden table
-
address@hidden PO Files
address@hidden Working with PO Files
-
-We anticipate that some gnu.org translators will find this format odd
-or inconvenient, if they never happened to work with PO files before.
-Don't worry, you will soon get accustomed to it.  It is the
-established format for translations in the Free World, and you should
-have no problems if you have translated software before.
-
-The most efficient way to edit a PO file is using a specialized PO
-editor, because each of them represents and treats gettext messages in
-a consistent and predictable way.  It is possible to edit a PO file
-with an ordinary plain text editor, but extra effort would be
-necessary to make it valid.  Here is a list of widely used PO editors:
-
address@hidden
address@hidden 
-PO mode.  We recommend using @acronym{GNU} Emacs in PO mode, because
-Emacs is the program that is suitable for performing any task when it
-comes to maintaining the @acronym{GNU} Project's website.  Provided
-that you have @acronym{GNU} gettext installed, any @file{.po} file you
-visit should automatically switch to PO mode.  You can enable/disable
-it by @code{M-x po-mode @key{RET}}.  On some @acronym{GNU}/Linux
-distros such as gNewSense, PO mode is available in a separate package,
address@hidden See @uref{http://www.gnu.org/software/gettext}.
-
address@hidden
-gTranslator---the @acronym{GNOME} PO editor.  Has some known bugs, but
-they shouldn't affect gnu.org translations as formulas that express
-plural forms are not used.  See
address@hidden://gtranslator.sourceforge.net}.
-
address@hidden
-KBabel---likewise for @acronym{KDE}.  See
address@hidden://kbabel.kde.org}.
-
address@hidden
-Poedit---another editor that is based on the @code{wxWidgets}
-toolkit.  See @uref{http://www.poedit.net}.
address@hidden itemize
-
address@hidden
-* New Translation::     How to start a new translation.
-* Migrating::           How to migrate an existing translation to a PO
-                          format under @acronym{GNUN}'s control.
-* generic.LANG.html::   Specifying information that will propagate in
-                          every translation in a certain language.
address@hidden menu
-
address@hidden New Translation
address@hidden Starting a New Translation
-
-To start a new translation, the easiest way is to copy the existing
-POT as @address@hidden, where @var{lang} is your language
-code.  For example, to prepare for a new translation of the essay
address@hidden://www.gnu.org/philosophy/freedom-or-copyright.html}, you
-can simply do @command{cd philosophy/po ; cp freedom-or-copyright.pot
address@hidden and then edit the latter.  If
address@hidden does not exist it is because either
-the article is not yet ``templated'' (i.e. migrated to the new style),
-or the @acronym{GNUN} maintainers have not yet added it to the value
-of the appropriate variable in @file{prep/gnun/gnun.mk}.  In that
-case, just ask them to do the necessary in order the POT to be
-generated.
-
-You could also use the @command{msginit} utility that would populate
-the PO file header with the right information, provided your
-environment is set up correctly.  @xref{msginit Invocation, ,,
-gettext, GNU gettext tools}.
-
-The PO file header as generated usually looks like this:
-
address@hidden
address@hidden
-# SOME DESCRIPTIVE TITLE
-# Copyright (C) YEAR Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2008-02-06 16:25-0500\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: ENCODING"
address@hidden group
address@hidden example
-
-You have to edit the header to match the already established
-conventions, and the rules for gnu.org translations.  Here is an
-example of a properly edited header:
-
address@hidden
address@hidden
-# Bulgarian translation of 
http://www.gnu.org/philosophy/@/freedom-or-copyright.html
-# Copyright (C) 2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnu.org article.
-# Yavor Doganov <yavor@@gnu.org>, 2008.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: freedom-or-copyright.html\n"
-"POT-Creation-Date: 2008-02-06 16:25-0500\n"
-"PO-Revision-Date: 2008-02-09 15:23+0200\n"
-"Last-Translator: Yavor Doganov <yavor@@gnu.org>\n"
-"Language-Team: Bulgarian <dict@@fsa-bg.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8-bit"
address@hidden group
address@hidden example
-
-Notice the absence of the ``fuzzy'' marker; you should ``unfuzzy'' the
-header after entering the necessary information (this is done by
-simply pressing @key{TAB} in PO mode).  The @code{PO-Revision-Date}
-is automatically filled in when you save the file in PO mode and in
-most of the other PO editors.
-
-The @code{Lanuage-Team} field should contain the mailing list on which
-the translation team can be reached---sometimes this is the alias
address@hidden@@gnu.org}, but in some cases it is a
-separate, address@hidden list.
-
-There are some special messages that appear in the POT and PO:
-
address@hidden @samp
address@hidden *GNUN-SLOT: TRANSLATOR'S NOTES*
-This is for translator's notes that are injected in the resulting
-translation.  See FIXME:Foo, for more information.  If your
-translation does not have notes, you @emph{must} translate this as a
-space, that is, @key{SPC}.
-
address@hidden *GNUN-SLOT: TRANSLATOR'S CREDITS*
-This is again optional, and should contain the name (and address) of
-the person who made the translation.  For example:
-
address@hidden
-<b>Traduction</b>: Benjamin Drieu <a
-href="mailto:foo@@example.org";>&lt;foo@@example.org&gt;</a>, 2007,
-2008.
address@hidden example
-
-``Translate'' this string as a space (@key{SPC}) if you do not want
-your name to appear there.
address@hidden table
-
-Most of the PO editors do not wrap long lines that inevitably appear
-in @code{msgstr}'s.  If that happens, long lines make reading
-subsequent diffs harder, and are generally annoying for most people.
-If this issue bothers you, you can ``normalize'' the already finished
-PO translation by executing on the command line @command{cat
address@hidden | msgcat - -o @var{file}.po}, before installing it in
-the repository.  Either way, the build system will treat it is a valid
-PO file.
-
-It is highly desirable that you check if the PO file you finished
-translating (or editing) is valid, before committing it.  This is done
-by running @command{msgfmt -cv -o /dev/null @var{file}} or by simply
-pressing @kbd{V} in PO mode.  The build system automatically verifies
-each PO file when invoked with @code{VALIDATE=yes}, but you won't get
-a warm and fuzzy feeling if a stupid typo you made halts the whole
-update of all translations.  Such things happen to everyone, so it is
-a good practice to check before you actually commit.
-
address@hidden Migrating
address@hidden Transforming existing translation in PO format
-
-Migrating an existing translation to a PO file format is basically
-editing the header as described in the previous section, and
-populating each of the messages by copying the already translated text
-and/or markup from the existing translation in HTML format in the
-relevant message.
-
-Typically, you will visit @file{po/address@hidden (in PO mode) and
address@hidden@var{lang}.html} (in HTML mode) in another buffer.  Then you
-can copy a paragraph or an element from the latter and yank it in the
-relevant message in the former.  Be extra careful, since this is the
-time to check @emph{precisely} that the translation corresponds to the
-original.  Further changes will be reflected, but if your ``initial''
-PO file is not a 100% match, that would not necessarily mean that it
-is an improvement.  Since it is very easy to do this kind of check,
-because the relevant @code{msgid} and @code{msgstr} appear one above
-the other in the same buffer (or the similar concept in other PO
-editors), please @emph{do} perform this initial sanity check even if
-you are confident that the translation you have been yanking strings
-from is a completely up-to-date translation.
-
-There is no need to delete the existing HTML translation,
address@hidden will automatically overwrite it.  The only thing a
-translator should do is to commit the PO file in the repository.
-
-When an essay has been translated by several people through the years,
-it is important that this information is recorded and reflected in the
-PO file.  In the future, special targets may be added to enable the
address@hidden to check who translated a particular article, and when.
-
-A recommended way to do this is as follows:
-
address@hidden
address@hidden
-# French translation of http://www.gnu.org/philosophy/@/bsd.html
-# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
-# This file is distributed under the same license as the gnu.org article.
-# C@'edric Corazza <cedric.corazza@@wanadoo.fr>, 2006, 2008.
-# address@hidden Dominguez <taz@@gnu.org>, 2007.
address@hidden group
address@hidden example
-
-In this example, it is clear that C@'edric made the initial
-translation, address@hidden made some changes in 2007, and the original
-translator returned in 2008 and continued maintaining it.
-
address@hidden generic.LANG.html
address@hidden The @address@hidden file
-
-The files @file{prep/gnun/address@hidden are special: if no
-such file exists for your language, an empty file will will be created
-(and added to the repository if specified @code{VCS=yes}).  This file
-is optional, and should contain a short message in your native
-language, ideally providing more information about the translation
-team or where to report bugs.  For example:
-
address@hidden
-<p>To join the Fooish translation team, see <a
-href="http://gnu.org/@/server/@/standards/@/translations/@/www-foo";>the
-Foo team homepage</a>.</p>
address@hidden example
-
-The contents of @address@hidden is injected right after
-the translators' credits, if any, and before the timestamp.  It should
-be valid XHTML markup.
-
-When you modify this file, for example, adding a message to the
-existing empty file or changing a URL, such modification will affect
address@hidden articles of the language @var{lang} in
address@hidden@var{lang}.html}.  The next time a build occurs, all
-translations of the language code @var{lang} (i.e. all
address@hidden@var{lang}.html}, including the homepage), will be modified to
-include the contents of this special file.
-
address@hidden Internals
address@hidden Unexciting Information for @acronym{GNUN}'s Operation
-
-This chapter might be of interest probably only to people who would
-have special interest in the software, plan to enhance it or develop a
-front-end.
-
address@hidden
-* Scripts::      Helper scripts.
-* Rules::        The knotty rules explained.
address@hidden menu
-
address@hidden Scripts
address@hidden Internally Used Scripts
-
-For the time being there are two helper scripts, used internally as
-commands with certain arguments in the makefile rules.  They can be
-invoked separately, as stand-alone programs, and sometimes they are
-useful on their own.
-
address@hidden
-* make-prototype::
-* validate-html::
address@hidden menu
-
address@hidden make-prototype
address@hidden The @command{make-prototype} Script
-
-This is a Guile script which makes the ``prototype'' file,
address@hidden@var{lang}.proto}, from which the POT is generated.
address@hidden is designed in such a way, because it would be no big
-improvement if links to other translations ended up in the POT---it
-would mean that translators would have to manually update their PO
-file when a new translation is added.
-
-In addition, @command{make-prototype} guards the timestamp (the
address@hidden RCS keyword) in order the timestamp of the translation to
-be updated @emph{only} when there are actual changes, being automatic
-or not.
-
-Finally, @command{make-prototype} ``injects'' the artificial elements
-`*GNUN-SLOT: TRANSLATOR'S NOTES*' and `*GNUN-SLOT: TRANSLATOR'S
-CREDITS*', thanks to which it is possible to insert the name of the
-translator and translator's notes, if necessary.  @xref{New
-Translation}.
-
-Here are the options that @command{make-prototype} accepts:
-
address@hidden @option
address@hidden --article
-Process the input file as an article.  This is the default.
-
address@hidden --home
-Process the input article as a homepage.  Specify this when you want
-to create a @file{.proto} file for a homepage.
-
address@hidden -i
address@hidden address@hidden
-Input file, which can be a common article (essay) or a homepage.
-
address@hidden -g
address@hidden address@hidden
-Common notes for a translation team; this is the
address@hidden@var{lang}.html} file.  @xref{generic.LANG.html}.
-
address@hidden -o
address@hidden address@hidden
-The file where to write the output of the script.
-
address@hidden -t
address@hidden address@hidden
-The file containing the translation links.  This makes sense only for
-articles, since the homepage has its own @file{translations.include}
-which gets included via an @acronym{SSI} directive.
address@hidden FIXME: This should be improved, it is not clear.
-
address@hidden --version
-Print copyright and version information on the standard output.
-
address@hidden --help
-Print usage information on stdout.
address@hidden table
-
address@hidden validate-html
address@hidden The @command{validate-html} Script
-
-This is a Bash script whose purpose is to ``validate'' both the
-original and translated articles to make sure that they conform to the
-respective @acronym{W3C} standard.  Sometimes webmasters make
-mistakes, and translators too, so this tool is useful to catch errors
-of that kind.
-
address@hidden enforces XHTML validation at build time if invoked with
address@hidden
-
-The script expects only one @var{file} as an argument and will exit
-with an error if it is not specified (which might be the case when an
-automatic variable is not expanded properly due to a bug in the
-makefile).
-
address@hidden Rules
address@hidden How The Recipes Work
-
-Read the source for now.
-
address@hidden Copying This Manual
address@hidden GNU Free Documentation License
-
address@hidden fdl.texi
-
address@hidden Index
address@hidden Index
-
address@hidden cp
-
address@hidden
-
-Local Variables:
-eval: (add-hook 'write-file-hooks 'time-stamp)
-time-stamp-start: "@set lastupdate "
-time-stamp-end: "$"
-time-stamp-format: "%02d.%02m.%:y"
-compile-command: "texi2pdf -c gnun.texi"
-ispell-local-dictionary: "american"
-End:

Index: prep/gnun/make-prototype
===================================================================
RCS file: prep/gnun/make-prototype
diff -N prep/gnun/make-prototype
--- prep/gnun/make-prototype    19 Feb 2008 07:02:05 -0000      1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,181 +0,0 @@
-#!/usr/bin/guile \
--e main --debug -s
-!#
-
-;; Copyright (C) 2007, 2008 Free Software Foundation, Inc.
-
-;; This file is part of GNUnited Nations.
-
-;; GNUnited Nations is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation, either version 3 of the
-;; License, or (at your option) any later version.
-
-;; GNUnited Nations is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNUnited Nations.  If not, see
-;; <http://www.gnu.org/licenses/>.
-
-(define version-message
-  (string-append
-   "make-prototype (GNUnited Nations) 0.1\n"
-   "Copyright (C) 2008 Free Software Foundation, Inc.\n"
-   "You may redistribute copies of GNUnited Nations\n"
-   "under the terms of the GNU General Public License.\n"
-   "For more information about these matters, see the file named COPYING.\n"))
-
-(define help-message
-  (string-append
-   "Usage: make-prototype OPTION...\n"
-   "\n"
-   "Input format specification:\n"
-   "      --article              Process input file as an article (default)\n"
-   "      --home                 Process input file as a home page\n"
-   "\n"
-   "Input specification:\n"
-   "  -i, --input=FILE           Input file (article or home page)\n"
-   "  -g, --generic=FILE         Generic notes for a language team\n"
-   "\n"
-   "Output options:\n"
-   "  -o, --output=FILE          Output prototype\n"
-   "  -t, --translinks=FILE      Translations links (meaningful for articles 
only)\n"
-   "\n"
-   "      --version              Just print version info and return\n"
-   "      --help                 Print this usage information message\n"
-   "\n"
-   "Report bugs to address@hidden"))
-
-(define option-grammar
-  '((article (value #f))
-    (home (value #f))
-    (input (single-char #\i) (value #t))
-    (generic (single-char #\g) (value #t))
-    (output (single-char #\o) (value #t))
-    (translinks (single-char #\t) (value #t))
-    (version (value #f))
-    (help (value #f))))
-
-(define article-page-regexp
-  "^(.*)(<title>.*)(</div>.*<div id=\"footer\">.*)(<p>.*?[$]Date:.*)(<ul 
class=\"translations-list\">.*</ul>)(.*)$")
-
-(define home-page-regexp
-  "^(.*?)(<title>.*)(</div>.*<div id=\"footer\">.*)(<p>.*?[$]Date:.*)$")
-
-(define skip-tag
-  "gnun")
-
-(define slot-translators-notes
-  (string-append
-   "\n"
-   "<div style=\"font-size: small;\">\n"
-   "<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->\n"
-   "*GNUN-SLOT: TRANSLATOR'S NOTES*</div>\n"))
-
-(define slot-translators-credits
-  (string-append
-  "\n"
-  "<div class=\"translators-credits\">\n"
-  "<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->\n"
-  "*GNUN-SLOT: TRANSLATOR'S CREDITS*</div>\n"))
-
-(define autogenerated-warning
-  "This file is automatically generated by GNUnited Nations!")
-
-(define <skip-tag>
-  (string-append "<" skip-tag ">"))
-
-(define </skip-tag>
-  (string-append "</" skip-tag ">"))
-
-(define <autogenerated-warning>
-  (string-append
-   <skip-tag> </skip-tag> "<!-- " autogenerated-warning " -->" "\n"))
-
-
-(use-modules (ice-9 regex)
-            (ice-9 rdelim)
-            (ice-9 getopt-long))
-
-(define (main args)
-  (let* ((options (catch 'misc-error
-                        (lambda () (getopt-long args option-grammar))
-                        (lambda (key subr message args data)
-                          (die (apply format #f message args)))))
-        (opt (lambda args (apply option-ref options args))))
-    (cond ((opt 'version #f) (version))
-         ((opt 'help #f) (help))
-         ((and (opt 'article #f)
-               (opt 'home #f))
-          (die "conflicting options: `--article' and `--home'"))
-         ((not (opt 'input #f))
-          (die "no input file"))
-         ((not (opt 'generic #f))
-          (die "no generic file"))
-         ((not (opt 'output #f))
-          (die "no output file"))
-         ((opt 'home #f)
-          (and (opt 'translinks #f)
-               (die "`--translinks' makes no sense for home pages"))
-          (make-home (opt 'input #f)
-                     (opt 'generic #f)
-                     (opt 'output #f)))
-         ((opt 'article #t)
-          (or (opt 'translinks #f)
-              (die "no translinks file"))
-          (make-article (opt 'input #f)
-                        (opt 'generic #f)
-                        (opt 'output #f)
-                        (opt 'translinks #f))))))
-
-(define (die message)
-  (display "make-prototype: " (current-error-port))
-  (display message (current-error-port))
-  (newline (current-error-port))
-  (exit 2))
-
-(define (version)
-  (display version-message))
-
-(define (help)
-  (display help-message))
-
-(define (make-article input generic output translinks)
-  (with-input-from-file input
-    (lambda ()
-      (let ((m (string-match article-page-regexp (read-delimited ""))))
-       (with-output-to-file output
-         (lambda ()
-           (display
-            (string-append (match:substring m 1)
-                           <autogenerated-warning>
-                           (match:substring m 2)
-                           slot-translators-notes
-                           (match:substring m 3)
-                           slot-translators-credits
-                           "<" skip-tag ">include(`" generic "')</" skip-tag 
"> "
-                           (match:substring m 4)
-                           "<" skip-tag ">include(`" translinks "')</" 
skip-tag ">"
-                           (match:substring m 6)))))
-       (with-output-to-file translinks
-         (lambda ()
-           (display (match:substring m 5))))))))
-
-(define (make-home input generic output)
-  (with-input-from-file input
-    (lambda ()
-      (let ((m (string-match home-page-regexp (read-delimited ""))))
-       (with-output-to-file output
-         (lambda ()
-           (display
-            (string-append (match:substring m 1)
-                           <autogenerated-warning>
-                           (match:substring m 2)
-                           slot-translators-notes
-                           (match:substring m 3)
-                           slot-translators-credits
-                           "<" skip-tag ">include(`" generic "')</" skip-tag 
"> "
-                           (match:substring m 4)))))))))

Index: prep/gnun/validate-html
===================================================================
RCS file: prep/gnun/validate-html
diff -N prep/gnun/validate-html
--- prep/gnun/validate-html     8 Feb 2008 17:32:27 -0000       1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,63 +0,0 @@
-#!/bin/bash
-
-# Copyright (C) 2008 Free Software Foundation, Inc.
-
-# This file is part of GNUnited Nations.
-
-# GNUnited Nations is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-
-# GNUnited Nations is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with GNUnited Nations.  If not, see <http://www.gnu.org/licenses/>.
-
-set -e
-set -o pipefail
-
-if [ $# -ne 1 ]; then
-    echo 1>&2 Error: The script requires a FILE as argument.
-    exit 1
-fi
-
-ROOT=`dirname $0`/../..
-USERDTD=$HOME/dtd
-
-# Create two tempfiles and mark them for deletion on exit.
-TMP1=`mktemp -t gnun.1.XXXXXX`
-TMP2=`mktemp -t gnun.2.XXXXXX`
-trap "rm -f $TMP1 $TMP2" EXIT
-
-# Expand input file's #include directives and save the result in
-# $TMP1.
-cat $1 | sed "s/<\!--#include virtual=\"\/\?\(.*\)\" -->/include(\`\1')/g" \
-  | m4 -EE -I $ROOT > $TMP1
-
-# Execute xmllint on $TMP1 and save it's output to $TMP2.
-set +o pipefail
-set +e
-cat $TMP1 | xmllint --path "$USERDTD" --loaddtd --nonet --noout - 2> $TMP2
-LINTSTATUS=$?
-set -e
-set -o pipefail
-
-# Parse xmllint's error output (if any) and print it by inserting
-# additional context line after every occurrence of "line X" where X
-# is a decimal number.  It is helpful to show the contents of those
-# mentioned lines, since xmllint runs on intermediate input file (with
-# expanded #include directives) and the translator can not easily look
-# up for references in it.
-cat $TMP2 | sed '
-  /line [[:digit:]]\+/ {
-     p
-     s=^.*line \([[:digit:]]\+\).*$=head -n \1 '"$TMP1"' | tail -n 1=
-     e
-  }'
-
-# Exit with xmlint's original exit status.
-exit $LINTSTATUS




reply via email to

[Prev in Thread] Current Thread [Next in Thread]