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 Makefile...


From: Yavor Doganov
Subject: trans-coord/gnun/server/gnun ChangeLog Makefile...
Date: Tue, 20 Jan 2009 21:31:34 +0000

CVSROOT:        /sources/trans-coord
Module name:    trans-coord
Changes by:     Yavor Doganov <yavor>   09/01/20 21:31:34

Modified files:
        gnun/server/gnun: ChangeLog Makefile.am 
Added files:
        gnun/server/gnun/doc: Makefile.am fdl.texi gnun.texi 
Removed files:
        gnun/server/gnun: fdl.texi gnun.texi 

Log message:
        Move the documentation to a sub-directory.
        * Makefile.am (SUBDIRS): Define to `doc' and use the += operator
        for the Automake conditional.
        (info_TEXINFOS, gnun_TEXINFOS): Move to...
        * doc/Makefile.am: ...a new file.
        * gnun.texi:
        * fdl.texi: Move to...
        * doc/gnun.texi:
        * doc/fdl.texi: ...their own directory.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/ChangeLog?cvsroot=trans-coord&r1=1.120&r2=1.121
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/Makefile.am?cvsroot=trans-coord&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/fdl.texi?cvsroot=trans-coord&r1=1.2&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/gnun.texi?cvsroot=trans-coord&r1=1.42&r2=0
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/doc/Makefile.am?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/doc/fdl.texi?cvsroot=trans-coord&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/trans-coord/gnun/server/gnun/doc/gnun.texi?cvsroot=trans-coord&rev=1.1

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/trans-coord/trans-coord/gnun/server/gnun/ChangeLog,v
retrieving revision 1.120
retrieving revision 1.121
diff -u -b -r1.120 -r1.121
--- ChangeLog   19 Jan 2009 13:28:01 -0000      1.120
+++ ChangeLog   20 Jan 2009 21:31:32 -0000      1.121
@@ -1,3 +1,15 @@
+2009-01-20  Yavor Doganov  <address@hidden>
+
+       Move the documentation to a sub-directory.
+       * Makefile.am (SUBDIRS): Define to `doc' and use the += operator
+       for the Automake conditional.
+       (info_TEXINFOS, gnun_TEXINFOS): Move to...
+       * doc/Makefile.am: ...a new file.
+       * gnun.texi:
+       * fdl.texi: Move to...
+       * doc/gnun.texi:
+       * doc/fdl.texi: ...their own directory.
+
 2009-01-19  Yavor Doganov  <address@hidden>
 
        Add support for Subversion repositories.

Index: Makefile.am
===================================================================
RCS file: /sources/trans-coord/trans-coord/gnun/server/gnun/Makefile.am,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- Makefile.am 3 Dec 2008 18:25:02 -0000       1.7
+++ Makefile.am 20 Jan 2009 21:31:33 -0000      1.8
@@ -1,4 +1,4 @@
-# Copyright (C) 2008 Free Software Foundation, Inc.
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
 
 # This file is part of GNUnited Nations.
 
@@ -17,8 +17,10 @@
 
 ACLOCAL_AMFLAGS = -I m4
 
+SUBDIRS = doc
+
 if NO_DTD
-SUBDIRS = dtd
+SUBDIRS += dtd
 endif
 
 pkglibexecdir = $(libexecdir)/$(PACKAGE)
@@ -50,9 +52,6 @@
 gnun-validate-html: $(srcdir)/gnun-validate-html.in
 validate-html-notify: $(srcdir)/validate-html-notify.in
 
-info_TEXINFOS = gnun.texi
-gnun_TEXINFOS = fdl.texi
-
 doc_DATA = TODO
 
 EXTRA_DIST = GNUmakefile gnun.mk GNUmakefile.team \

Index: doc/Makefile.am
===================================================================
RCS file: doc/Makefile.am
diff -N doc/Makefile.am
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ doc/Makefile.am     20 Jan 2009 21:31:33 -0000      1.1
@@ -0,0 +1,19 @@
+# Copyright (C) 2009 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/>.
+
+info_TEXINFOS = gnun.texi
+gnun_TEXINFOS = fdl.texi

Index: doc/fdl.texi
===================================================================
RCS file: doc/fdl.texi
diff -N doc/fdl.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ doc/fdl.texi        20 Jan 2009 21:31:33 -0000      1.1
@@ -0,0 +1,506 @@
address@hidden The GNU Free Documentation License.
address@hidden Version 1.3, 3 November 2008
+
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, 2007, 2008 Free Software Foundation, 
Inc.
address@hidden://fsf.org/}
+
+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.
+
+The ``publisher'' means any person or entity that distributes copies
+of the Document to the public.
+
+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 under this License.  Any attempt
+otherwise to copy, modify, sublicense, or distribute it is void, and
+will automatically terminate your rights under this License.
+
+However, if you cease all violation of this License, then your license
+from a particular copyright holder is reinstated (a) provisionally,
+unless and until the copyright holder explicitly and finally
+terminates your license, and (b) permanently, if the copyright holder
+fails to notify you of the violation by some reasonable means prior to
+60 days after the cessation.
+
+Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, receipt of a copy of some or all of the same material does
+not give you any rights to use it.
+
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.  If the Document
+specifies that a proxy can decide which future versions of this
+License can be used, that proxy's public statement of acceptance of a
+version permanently authorizes you to choose that version for the
+Document.
+
address@hidden
+RELICENSING
+
+``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
+World Wide Web server that publishes copyrightable works and also
+provides prominent facilities for anybody to edit those works.  A
+public wiki that anybody can edit is an example of such a server.  A
+``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
+site means any set of copyrightable works thus published on the MMC
+site.
+
+``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
+license published by Creative Commons Corporation, a not-for-profit
+corporation with a principal place of business in San Francisco,
+California, as well as future copyleft versions of that license
+published by that same organization.
+
+``Incorporate'' means to publish or republish a Document, in whole or
+in part, as part of another Document.
+
+An MMC is ``eligible for relicensing'' if it is licensed under this
+License, and if all works that were first published under this License
+somewhere other than this MMC, and subsequently incorporated in whole
+or in part into the MMC, (1) had no cover texts or invariant sections,
+and (2) were thus incorporated prior to November 1, 2008.
+
+The operator of an MMC Site may republish an MMC contained in the site
+under CC-BY-SA on the same site at any time before August 1, 2009,
+provided the MMC is eligible for relicensing.
+
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.3
+  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: doc/gnun.texi
===================================================================
RCS file: doc/gnun.texi
diff -N doc/gnun.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ doc/gnun.texi       20 Jan 2009 21:31:34 -0000      1.1
@@ -0,0 +1,1811 @@
+\input texinfo
address@hidden %**start of header
address@hidden gnun.info
address@hidden version.texi
address@hidden GNUnited Nations
address@hidden
address@hidden %**end of header
+
address@hidden Please do not use features of Texinfo >> 4.11, which is the 
version
address@hidden available in gNewSense.  Thanks.
+
address@hidden FIXME: Add more xrefs, where appropriate.
address@hidden FIXME: Improve the indexing commands.
+
address@hidden
+
+This manual (updated @value{UPDATED}) is for @acronym{GNU}nited Nations
+(version @value{VERSION}),
+a suite for maintaining translations of www.gnu.org essays and other
address@hidden
address@hidden 1
+Copyright @copyright{} 2008, 2009 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.3 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
address@hidden Software for maintaining www.gnu.org translations
address@hidden (for version @value{VERSION}, @value{UPDATED})
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}.
+* Bugs::                How to report bugs.
+* 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
address@hidden, it is much more closer to localization of
+software documentation, where typically strings (also known as
+``messages'' in gettext's context) are longer than strings in
+programs.  Nevertheless, all points raised still apply.}.  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 server/gnun}.  This is the primary way to invoke
address@hidden, 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.  @xref{New Translation}, 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.
+
address@hidden
+(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.
address@hidden ignore
+
+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.
+
address@hidden FIXME: The following paragraphs should go to a separate section
address@hidden that explains those details like exact paths in www, diagram with
address@hidden 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 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{server/gnun} directory, but this may change.  In all
+examples in this manual, ``invoking'' means executing on the command
+line @code{make -C server/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 @code{cd server/gnun ; make}.  It is desirable never to invoke
address@hidden 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.
+* Webmaster Tips::      The webmaster's guide to GNUnited Nations'
+                          galaxy.
address@hidden menu
+
address@hidden Invoking GNUN
address@hidden Invoking GNUN
address@hidden invoking
address@hidden triggering, build
+
+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
address@hidden variables
address@hidden variable, behavior
+
+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. @code{make VCS=yes}.  In the future,
+additional features will be implemented in a similar fashion.
+
address@hidden @samp
address@hidden VCS
address@hidden CVS
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{server/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 @code{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
address@hidden validation
address@hidden sanity checks
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 NOTIFY
address@hidden mail, notifications
address@hidden NOTIFY=no
address@hidden @dots{}
+Do not send email notifications about errors.  This is the default.
+
address@hidden NOTIFY=yes
+If an error occurs, send a mail with a meaningful subject and the
+error message as body to the concerned party.  The variables
address@hidden, @code{web-addr} and @code{transl-addr} control the
+recipients; normally they should be set to the @acronym{GNUN}
+maintainers, webmasters and translators accordingly.
+
address@hidden VERBOSE
address@hidden output, detailed
address@hidden VERBOSE=yes
+If defined, the value of the variables @code{templates-translated},
address@hidden, @code{ALL_POTS}, @code{articles-translated} and
address@hidden will be printed to the standard output.  This is off by
+default, but recommended in general since it will show a bug in the
+computation of the basic variables.
+
address@hidden GRACE
address@hidden fuzzy strings
address@hidden grace period
address@hidden deferred generation of articles
address@hidden address@hidden
+If defined, ordinary articles that have fuzzy strings and are not older
+than @var{days} will not be regenerated.  This functionality is
+implemented specifically to prevent gratuitous replacement of translated
+strings with the English text when there are only minor formatting
+changes in the original.  The translator has time (the ``grace'' period
+as defined in this variable) to review the changes and unfuzzy the
+strings, while keeping the online translation intact.  Note that this
+variable has no effect on the homepage, the server templates, gnunews
+and all articles defined in the variable @code{no-grace-articles}.
+
address@hidden TEAM
address@hidden variable, team
address@hidden address@hidden
+The translation team which articles need to be checked for
+completeness.  This variable is applicable only for the @code{report}
+target, and is mandatory for it.  @xref{report}.
+
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.
+
+When validation is enabled (i.e. with @code{VALIDATE=yes}), the
+original English articles are validated first, before any commands
+that generate the other files, and @command{make} exits with an error
+on the first encountered article.  This is done on purpose, to prevent
+the propagation of an eventual error in the markup of the original
+article to all translations.
+
+By contrast, validation of the translated @address@hidden is
+performed after it is generated and if @code{VCS=yes} the article will
+be committed in the repository.  The build will fail again and further
+processing of the remaining articles will not be performed, but this
+particular translation will be installed.  The translator has time
+until the next run to fix the error---usually by modifying the
+corresponding @address@hidden file.
+
+If notification is enabled (@code{NOTIFY=yes}), and the build system
+encounters errors (mostly when validating articles), email messages
+will be sent to the party that is expected to fix the error.  The
+subject of the messages always include the problematic article, for
+example:
+
address@hidden
+Subject: [GNUN Error] gnu/gnu.fa.html is not valid XHTML
address@hidden example
+
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::
+* report::
+* triggers::
+* clean::
+* distclean::
address@hidden menu
+
address@hidden sync
address@hidden The @code{sync} target
address@hidden synchronization, repository
+
+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, i.e. 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 report
address@hidden The @code{report} target
address@hidden reporting
address@hidden status, translations
+
+This target exists solely for convenience to translators, enabling them
+to check which articles are not 100% translated and have to be updated.
+The way to check this is by running @code{make report address@hidden,
+where @var{lang} is the language code, as usual.  Thus, to check all
+French translations, one would run
+
address@hidden
+make report TEAM=fr
address@hidden example
+
address@hidden:} This target checks only the PO files; if there are
+translations that are maintained in the old-fashioned way, they are
+not reported since there is no reasonable way to check if they are
+up-to-date.  In fact, this is one of the main reasons GNUN is being
+developed, if you recall.
+
address@hidden triggers
address@hidden The @code{triggers} target
+
+This is a special target intended to be run by the automatic build
+after the main build and @emph{after} @code{cvs commit}.
+
+When a @acronym{GNUN} build completes and some translations fail at the
+XHTML validation stage, the result is checked in the repository, as
+explained earlier (@pxref{Runtime Variables}).  Thus, CVS updates the
address@hidden RCS keyword (or any other keywords, for that matter) and
+resets the file(s) timestamp.  Next time @command{make} is invoked, the
+target appears newer than the prerequisite so no rebuild is triggered.
+The purpose of the @code{triggers} target is to ``save'' the information
+of the faulty targets during the main build, and to touch their
+prerequisites in order such invalid articles not to remain online
+unnoticed.
+
+The @code{triggers} target currently executes the files named
address@hidden@address@hidden in the @file{server/gnun}
+directory---these files are created during the main build and each of
+them contains the command to update the timestamp of the prerequisite
+based on the timestamp of the target that must be rebuilt.  Finally, it
+deletes all those @file{*.hook} files.
+
+To summarize, for effective operation @acronym{GNUN} should be invoked
+automatically as @code{make ; cvs commit -m @dots{} ; make triggers}.
+To illustrate this, here is a concrete example showing the official job
+running at fencepost.gnu.org:
+
address@hidden
address@hidden
+25 4,16 * * *  cd $HOME/projects/www ; cvs -q update &>/dev/null ; \
+                 make -C server/gnun VCS=yes VALIDATE=yes NOTIFY=yes \
+                 VERBOSE=yes GRACE=30 ; cvs commit -m \
+                 "Automatic update by GNUnited Nations." ; \
+                 make -C server/gnun triggers
address@hidden group
address@hidden example
+
+In the future, this target may be extended further to do other useful
+things that should be ``triggered'' after the main build.
+
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
address@hidden variables
address@hidden gnun.mk
+
+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 automagically, without manual intervention.  If
+not, that is a bug that should be reported and fixed.
+
address@hidden @samp
address@hidden TEMPLATE_LINGUAS
address@hidden templates, defining
address@hidden defining templates
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
address@hidden homepage, defining
address@hidden defining homepage
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
address@hidden articles in root directory, defining
address@hidden defining articles in the root dir
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
address@hidden directories, defining
address@hidden defining directories
address@hidden ALL_DIRS
+The list of directories containing articles, like @file{philosophy},
address@hidden, @file{licenses}, etc.
+
address@hidden POT generation, articles
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
address@hidden PO, editing
+
+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 editors
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
address@hidden @heresy
address@hidden Please forgive them, they don't know what they are doing...
+po.vim---ftplugin for the Vim editor.  See
address@hidden://www.vim.org/scripts/script.php?script_id=695}.
address@hidden @end heresy
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.
+* GNU News::            How to handle ``whatsnew'' (a.k.a. ``gnunews'').
+* PO Tips::             Tips and hints for translators.
+* generic.LANG.html::   Specifying information that will propagate in
+                          every translation in a certain language.
+* PO Files and Team::   How to maintain translations in the team's
+                          repository.
address@hidden menu
+
address@hidden New Translation
address@hidden Starting a New Translation
address@hidden translation, new
address@hidden 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/free-sw.html}, you can simply do
address@hidden philosophy/po ; cp free-sw.pot address@hidden and then
+edit the latter.  If @file{free-sw.pot} 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{server/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.  For reference,
+here is a list with all fields explained:
+
address@hidden PO headers
address@hidden @samp
address@hidden Project-Id-Version
+Add here the filename of the original article, without the
+sub-directory, like ``banner.html'' or ``free-sw.html''.
+
address@hidden POT-Creation-Date
+Do not edit this field, it is already set when the POT is created.
+
address@hidden PO-Revision-Date
+Likewise, do not edit.  This field is automatically filled in when you
+save the file with any decent PO editor.
+
address@hidden Last-Translator
+The name and email address of the last translator who have edited the
+translation.  Pay attention that normally this is the name of a member
+of your team, it can be the translation team leader if he/she was the
+person who updated the translation.  For example:
+
address@hidden
+Elvis Parsley <king@@grassland.com>
address@hidden example
+
address@hidden Language-Team
+This 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.  It could be a URL of the team's
+homepage, provided that it contains contact details.  Example:
+
address@hidden
+French <trad-gnu@@april.org>
address@hidden example
+
address@hidden MIME-Version
+Leave it like it is.
+
address@hidden Content-Type
+Usually this is @code{text/plain; charset=UTF-8}; change the charset
+accordingly.
+
address@hidden Content-Transfer-Encoding
+Set this to @code{8bit}.
address@hidden table
+
+Here is an example of a properly edited header:
+
address@hidden
address@hidden
+# Bulgarian translation of http://www.gnu.org/philosophy/@/free-sw.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: free-sw.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).
+
+There are some special messages that appear in the POT and PO:
+
address@hidden @samp
address@hidden notes, translators
address@hidden translators' notes
address@hidden *GNUN-SLOT: TRANSLATOR'S NOTES*
+This is for translator's notes that are injected in the resulting
+translation.  @xref{Notes Slot}, for more information.  If your
+translation does not have notes, you @emph{must} translate this as a
+space, that is, @key{SPC}.
+
address@hidden credits, translators
address@hidden translators' credits
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.  ``Translate'' this string as a
+space (@key{SPC}) if you do not want your name to appear there.
address@hidden Slot}.
address@hidden table
+
address@hidden wrapping long lines
address@hidden long lines, wrap
+Most of the PO editors do not wrap long lines that inevitably appear in
address@hidden'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 @code{cat @var{file}.po | msgcat - -o
address@hidden, before installing it in the repository.  Either way, the
+build system will treat it is a valid PO file.
+
+For those lucky Emacs users, here is a code snippet that you can put
+in your @file{.emacs}; doing @kbd{M-x po-wrap} while in PO mode will
+wrap all long lines:
+
address@hidden
address@hidden
+(defun po-wrap ()
+  "Filter current po-mode buffer through `msgcat' tool to wrap all lines."
+  (interactive)
+  (if (eq major-mode 'po-mode)
+      (let ((tmp-file (make-temp-file "po-wrap."))
+           (tmp-buf (generate-new-buffer "*temp*")))
+       (unwind-protect
+           (progn
+             (write-region (point-min) (point-max) tmp-file nil 1)
+             (if (zerop
+                  (call-process
+                   "msgcat" nil tmp-buf t (shell-quote-argument tmp-file)))
+                 (let ((saved (point))
+                       (inhibit-read-only t))
+                   (delete-region (point-min) (point-max))
+                   (insert-buffer tmp-buf)
+                   (goto-char (min saved (point-max))))
+               (with-current-buffer tmp-buf
+                 (error (buffer-string)))))
+         (kill-buffer tmp-buf)
+         (delete-file tmp-file)))))
address@hidden group
address@hidden lisp
+
+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 @code{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
+* Notes Slot::          How to handle translator's notes.
+* Credits Slot::        Translator's credits.
address@hidden menu
+
address@hidden Notes Slot
address@hidden The Special Slot for Translator's Notes
address@hidden notes, translators
address@hidden translators' notes
+
+Sometimes it is necessary to complement the translation of an essay
+with translator's notes.  The special message @code{*GNUN-SLOT:
+TRANSLATOR'S NOTES*} is designed to serve this purpose.  If your
+translation doesn't have notes, you should ``translate'' the
address@hidden as a space (@key{SPC})---otherwise the text of the
address@hidden will appear in the HTML translation, which is not what
+you want.  Here is an example how to use translators' notes in a PO
+file:
+
address@hidden
address@hidden
+# type: Content of: <p>
+msgid ""
+"To understand the concept, you should think of <q>free</q> "
+"as in <q>free speech,</q> not as in <q>free beer.</q>"
+msgstr ""
+"Translated message, where you want to clarify beer<sup><a "
+"href=\"#TransNote1\">1</a></sup>, presumably because the "
+"expression in your language is different"
address@hidden
address@hidden
+# type: Content of: <div>
+#. TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.
+msgid "*GNUN-SLOT: TRANSLATOR'S NOTES*"
+msgstr ""
+"<b>Translator's notes</b>:\n"
+"<ol>\n"
+"<li id=\"TransNote1\">Note clarifying the text.</li>\n"
+"</ol>\n"
address@hidden group
address@hidden example
+
+Certainly, everything in the @code{msgstr}s should be in your native
+language; we use English here in order the example to be understood by
+everyone.  If you have more notes, each subsequent one should be with
+incremented number, i.e. @samp{TransNote2}, @samp{TransNote3}, etc. and
+you have to add them as more @code{<li>} elements accordingly.
+
+Do not worry about the @code{\n} character---it is inserted
+automatically when you press @key{RET}.  It is not compulsory that
+notes start on a new line, this is the recommended way simply because
+it is easier to edit them.
+
+It is important to follow this specification, because notes will look
+consistently in all languages and will be clearly distinguishable from
+authors' footnotes, if any.  Furthermore, it would be easier to define
+a special @acronym{CSS} class for them, and also to convert the
+translations in other formats such as Texinfo---when these features
+are implemented.
+
address@hidden Credits Slot
address@hidden The Special Slot for Translator's Credits
address@hidden credits, translators
address@hidden translators' credits
+
+Most of the translators usually put their name under the translation,
+in the ``footer'' area.  This is entirely acceptable, since some
+readers prefer to send buggestions directly to the translator.  Also,
+giving credit where credit is due is a natural thing.
+
+Like the previous slot, you should ``translate'' it as a @key{SPC} if
+you don't want your name to appear there.
+
+Here is an example of the recommended way to specify credits:
+
address@hidden
+<b>Traduction</b>: Benjamin Drieu 
+<a href="mailto:foo@@example.org";>&lt;foo@@example.org&gt;</a>,
+2007, 2008.
address@hidden example
+
+It is highly desirable to use this form, but you may omit the email
+address or add the homepage of the translator, provided that the
+translation team leader ensures that it constantly meets the linking
+criteria for gnu.org.  Please follow the @acronym{FSF} HTML Style
+Sheet when adding @acronym{URI}s or other information.
+
address@hidden Migrating
address@hidden Transforming existing translation in PO format
address@hidden migration, translations
address@hidden conversion of existing translations
+
+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 GNU News
address@hidden Special Handling For @acronym{GNU} News
address@hidden gnunews
address@hidden whatsnew
address@hidden gnusflashes
+
+The @acronym{GNU} website has infrastructure for supporting ``What's
+New'', also known as address@hidden News''---see
address@hidden://www.gnu.org/@/server/@/standards/@/README.webmastering.html#polnews}
+for details.  Entries are added in a special plain text file,
address@hidden/whatsnew.txt} and are used to build
address@hidden/whatsnew.include} and @file{gnusflashes.include}.  The
+former is used by @file{server/whatsnew.html}, while the latter is
+included in the homepage.
+
address@hidden has rules for building @file{whatsnew.pot}, which
+contains all necessary strings for
address@hidden/address@hidden,
address@hidden/address@hidden and
address@hidden@var{lang}.include}.  There is nothing unusual in this
+POT file, so it should be translated like any other.  When you commit
address@hidden@var{lang}.po}, it will be used to generate all three
+localized files.  In addition, if there is a homepage for this language,
+it will be rebuilt when @address@hidden is
+generated for the first time in order the translated homepage to include
+it instead of @file{gnusflashes.include}.
+
+Note that localized @acronym{RSS} feeds are not supported on purpose, as
+it would be annoying for subscribers if new items appear in English and
+then once again translated.
+
address@hidden PO Tips
address@hidden Useful Hints For Editing PO Files
address@hidden tips, translators
address@hidden recommendations, PO files
+
+This section contains additional explanations, some in the form of
+advices and recommendations; not all of them are strictly related to
+PO files editing.
+
address@hidden
address@hidden
+When you install a new translation of an article (that is different
+from a server template or the homepage), all you need to do is to add
+your PO file in the appropriate @file{/po} sub-directory and add a
+link to it in the translations list of the original
address@hidden@var{article}.html}.  Use only HTML entities for any non-ASCII
+characters and follow the established scheme.  If language names in
+your native language are not capitalized (unlike for example in
+English or German), you should @emph{not} capitalize the name of your
+language.
+
+In the next build, your @address@hidden@var{lang}.html} will be
+built and the link to it will propagate to all translations, provided
+that they are under @acronym{GNUN}'s control.
+
address@hidden
+If you don't feel comfortable editing @file{gnun.mk}, do not worry.
+Someone from the @acronym{GNUN} maintainers will notice and will amend
address@hidden or @code{HOME_LINGUAS} for you, as
+appropriate.
+
address@hidden
+Dealing with obsolete strings.  Elements which are removed from the
+original articles appear in the PO files as ``obsolete'' strings---the
+translation is not lost, but they are marked in a special way at the
+end of the PO file.  You don't have to update a PO file if it contains
+obsolete strings---do this only if it has ``fuzzy'' or
+``untranslated'', and of course when you want to improve the existing
+translated ones.  Sometimes these obsolete strings are useful, and
+they can save time.  For example, if you anticipate that the deleted
+text may reappear some time in the future, you can preserve the string
+and hopefully it would be marked as ``fuzzy'' when this happens.
+Failing that, you can still copy it and yank it at the appropriate
+place.
+
address@hidden
+You can add comments to every message in a PO file---for example if
+you want to remember that you have to do something, or to remind you
+why this particular message is translated in a special way.  These
+comments do not appear in the generated HTML source.
+
address@hidden
+Sometimes, especially when the original message contains many links,
+it is easier to copy it to @code{msgstr} and edit the latter by
+translating the English text.  In PO mode, this is done by @kbd{C-j}.
+This is useful also for large chunks of text in @code{<pre>} elements,
+which normally you would want to preserve verbatim.
+
address@hidden
+To reduce the load on the webmasters RT queue, please replace
address@hidden@@gnu.org} in the standard footer with
address@hidden@@gnu.org}.
+
address@hidden
+If you translate ``Free Software Foundation, Inc.'' in your native
+language in the copyright notice, then please prepend the English name
+to the @code{<address>}; otherwise it looks awkward in most
+languages.  Example:
+
address@hidden
+# type: Content of: <div><address>
+msgid "51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA"
+msgstr ""
+"Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, "
+"Boston, MA 02110-1301, USA"
address@hidden example
+
address@hidden
+There is absolutely no reason to use HTML entities in translations as a
+replacement for common non-ASCII characters.  They are harder to write
+and serve no purpose.
+
address@hidden
+Wrapping of @code{msgstr} using @kbd{M-q} in Emacs (or other means) is
+considered harmful.  It is best to leave @acronym{GNUN} (or more
+precisely, Po4a) to do the wrapping---that way all generated HTML
+translations will have predictable results.  This will help tremendously
+for the conversion to other formats, like Texinfo.  Also, note that not
+all elements are wrapped by default, so deliberately wrapping the text
+inside the @code{msgstr} could lead to an invalid page or a page that is
+valid, but is rendered incorrectly by the web browser.
address@hidden itemize
+
address@hidden generic.LANG.html
address@hidden The @address@hidden file
address@hidden team information
address@hidden generic notice, translations
+
+The files @file{server/gnun/address@hidden are special: if
+no such file exists for your language, an empty file 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 PO Files and Team
address@hidden Maintaining Translations in Your Team's Repository
address@hidden project repository
address@hidden repository, translation project
address@hidden team maintenance
+
address@hidden operates on the ``official'' Web repository of the
+Savannah project `www', where normally only the coordinators of
+translation teams have write access.  However, all translation teams
+have their own projects, so it is possible to take advantage of Savannah
+as a hosting facility to make the team work more comfortable.
+
+The PO files provide an excellent and natural way to review each other's
+translations, because the translation appears right below the original
+message.  Mutual reviews and proof-reading of translations is a crucial
+part of the process.  Furthermore, team work is great for the community
+spirit; automating some of the operations also result in more time for
+all members to concentrate on the important tasks.
+
+The file @file{GNUmakefile.team} in the @samp{gnun} package is a
+template, aimed for all translation teams who wish to use their own
+project's repository as a place to keep their draft translations, until
+they ripe and are ready to be installed officially.
+
address@hidden team workflow
+The following diagram illustrates a typical workflow---it is applicable
+for small, medium and large teams:
+
address@hidden
address@hidden
++----------+                   +-------------------+
+| ``www''  |                   |   ``www-LANG''    |
+|   Web    |------>---->-------|Sources repository |
+|repository|  automatic merge  +-------------------+
++----------+                         |    |     |
+     |                               |    |     `-- Member A
+     +------------<----<-------------'    |
+                  Leader                  `---Member B
address@hidden group
address@hidden example
+
+All members and the team leader(s) commit in their project's
+repository---when a translation is ready, the leader checks it in in the
+official `www' repository.  If an original article changes,
+a build could be invoked to synchronize (i.e. merge) the changes and
+optionally automatically commit them so that the draft PO files are
+updated.  A translator would then normally update the PO file, and
+commit it again in the project's Sources repository, from where the
+coordinator will pick it up and install it in `www'.
+
+To take advantage of this semi-automation, rename this template
address@hidden as @file{GNUmakefile} and install it in the root
+of your project's Sources repository.  Then create directories and
+sub-directories exactly as they are in `www'.  Do not create the
address@hidden/po} sub-directories; they are redundant here.  Instead, install
+the PO files in the normal locations where the corresponding
address@hidden@var{lang}.html} resides in `www', for example:
+
address@hidden
address@hidden
+Root
+  |
+  |--GNUmakefile
+  |address@hidden
+  |address@hidden
+  |--gnu
+  |   |
+  |   |
+  |   address@hidden
+  |   address@hidden
+  |   address@hidden
+  |
+  |
+  +--philosophy
+  |     |
+  |     |
+  |     address@hidden
+  |     address@hidden
+  |     address@hidden
+  |     address@hidden
+  |
+  address@hidden
address@hidden group
address@hidden example
+
+The next sections explain how to adopt the makefile for your team and
+how to invoke a ``build''.
+
address@hidden
+* GNUmakefile.team Variables::
+* GNUmakefile.team and Cron::
address@hidden menu
+
address@hidden GNUmakefile.team Variables
address@hidden Adopting @file{GNUmakefile.team} For a Specific Team
+
+To adjust the makefile for your team, you need to edit two variables.
+
address@hidden @samp
address@hidden TEAM
+Set this to the language code, like @code{bg} or @code{pt-br}.
+
address@hidden wwwdir
+The relative path to the working copy of the master `www' repository.
+So if you have checked out your project's Sources repository at
address@hidden/projects/address@hidden and the `www' Web repository at
address@hidden/projects/www}, the value of @code{wwwdir} should be
address@hidden/www/}.  Note the slash at the end, it is important.
address@hidden table
+
+Technically speaking, two variants of one language sharing the same
+project and repository (such as @code{zh-cn} and @code{zh-tw}) are not
+supported---patches welcome.  As a workaround, there could be two
+directories with two @file{GNUmakefile}s and each directory having its
+own tree.
+
+Some variables are specified on the command line, and alter the behavior
+of the build process.
+
address@hidden @samp
address@hidden VERBOSE=yes
+Print more information from @command{cvs}, @command{svn} and
address@hidden; off by default.  Note that @code{VERBOSE} can be
+defined to any string, it will have the same effect.
+
address@hidden VCS=yes
+Update both `www' and address@hidden' repositories, then commit the
+merged PO files in the latter repository.  By default, there is no VCS
+interaction.  The VCS of the translation project repository is
+determined automatically; currently only CVS and Subversion repositories
+are supported.
address@hidden table
+
address@hidden Targets in @file{GNUmakefile.team}
+
address@hidden @code
address@hidden update
+Updates the repositories.  Does nothing unless @code{VCS=yes}.
+
address@hidden sync
+Merges all available PO files from the corresponding POT in `www'.
+
address@hidden report
+Verifies which translations are complete, and prints a list (with
+statistics) of those that need to be updated.
address@hidden table
+
address@hidden VCS=yes} is the recommended command to be run periodically.
+To check the status of the translations, run @code{make report}.
+
+Feel free to replace all strings with equivalents in your native
+language and of course---do not hesitate to extend this file and modify
+it as much as you like.  For example, useful extra functionality would
+be a target that will check which files have not yet been committed in
+the official repository, or which files have to be updated there
+(i.e. they were updated by the team members but not installed by the
+coordinator).  Either way, if you come up with something interesting, it
+would be nice to send a message to @email{bug-gnun@@gnu.org}, so that
address@hidden gets updated for all teams' benefit.
+
address@hidden GNUmakefile.team and Cron
address@hidden Automatic Synchronization and Status Reports
address@hidden team maintenance, cron
address@hidden cron, team maintenance
+
+It is convenient to invoke such synchronization automatically, for
+example once every day.  If you have enabled commit notifications for
+the project's repository, any new changes will be visible for
+subscribers.  Here is an example crontab entry:
+
address@hidden
+# m h  dom mon dow   command
+@@daily              cd $HOME/projects/address@hidden ; make VCS=yes
address@hidden example
+
+It is not necessary the job to be run on the team leader's machine,
+since all team members have write access to their project repository.
+
+If desired, you could set up another job to report the status of the
+translations weekly or fortnightly, for example:
+
address@hidden
+# m h  dom mon dow   command
+@@weekly             cd $HOME/projects/address@hidden ; \
+                       make report | mail -s "Weekly statistics" \
+                       address@hidden@@gnu.org
address@hidden example
+
address@hidden:} Most cron implementations do not allow the character
+`\' as a line continuation character---the example shown is made that
+way for better readability.
+
address@hidden Webmaster Tips
address@hidden Tips and Hints for Webmasters
address@hidden tips, webmasters
address@hidden webmaster tips
+
+This section contains some tips and general recommendations for
+webmasters in no particular order---it is not mandatory to follow them,
+but doing so will make translators' lives substantially easier.
+
+First and foremost, respect translators' work---it is ungrateful and
+hard, undoubtedly much harder than translation of programs.  It is
+important to have as many and as better as possible translations, and
+you don't have to make titanic efforts to help.
+
+If you plan to edit a certain page extensively, please do so within the
+period between two adjacent @acronym{GNUN} builds---i.e. within a day.
+That way, the POT will be regenerated only once, and translators who are
+quick to update it immediately won't be disappointed if it changes again
+in the next run.
+
+Use @emph{only} US-ASCII characters and HTML entities for the others.
+This is required because the English text in the articles serves as a
+replacement of the translation when the latter is not complete.  So if
+you use, say, the character @'e (e-acute) directly in an English
+page---which is UTF-8 as declared in @file{server/header.html}, it
+will appear broken on those translated pages who use a different
+encoding.  This specific advice is pretty much mandatory---the build
+fails if the original article contains such characters---but we are
+ready to fix any errors a webmaster makes.
+
+The script @command{gnun-validate-html} is useful for webmasters who
+want to verify if their (potentially intrusive) changes result in a
+valid markup.  Before committing your changes, you can check if it is
+valid by running
+
address@hidden
+gnun-validate-html philosophy/not-ipr.html
address@hidden example
+
address@hidden, for more information.
+
address@hidden Emacs Lisp code goes here...
+
+If you want a comment to be visible for translators, place it
address@hidden the element, for example:
+
address@hidden
+<p>
+<!--TRANSLATORS: Note that foo is bar in this context.-->
+The fooish bar mumbles bazzling.
+</p>
address@hidden example
+
+This will result in:
+
address@hidden
+# type: Content of: <p>
+#. TRANSLATORS: Note that foo is bar in this context.
+msgid "The fooish bar mumbles bazzling."
+msgstr ""
address@hidden example
+
+As per the established convention, start the comment with
address@hidden:} to catch their attention, and do not add a space
+after the beginning of the HTML comment (@code{<!--}), since this will
+unnecessarily indent the comment in the POT.
+
address@hidden:} Any structural diversion from
address@hidden in a specific article is likely to result in
+errors from @acronym{GNUN}.  Any unexpected updates to the server
+templates (such as changing the entire look & feel of the site) will
+most probably break @emph{all} translations under @acronym{GNUN}'s
+control.  Of course, this does not mean that such changes should not
+happen---only that they must be applied in our sandbox first, to
+ensure a smooth transition.
+
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 several 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::
+* gnun-validate-html::
+* mailfail::
+* validate-html-notify::
address@hidden menu
+
address@hidden make-prototype
address@hidden The @command{make-prototype} Script
address@hidden POT generation
address@hidden prototype generation
address@hidden generation, POT, .proto
+
+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 gnun-validate-html
address@hidden The @command{gnun-validate-html} Script
address@hidden validation, XHTML
+
+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 mailfail
address@hidden The @command{mailfail} Script
address@hidden mail, notifications
+
+This is a helper script that runs a command, and mails the output of
+that command in case it exits with a non-zero exit status.
address@hidden depends on @acronym{GNU} Mailutils, or a compatible
+implementation, such as BSD's mailx.
+
+Usage:
+
address@hidden
+mailfail [--dry-run] RCPT SUBJECT CMD [ARG ...]
address@hidden example
+
+The @command{mailfail} script accepts the following options:
+
address@hidden @option
address@hidden --dry-run
+Does not send the email message.
+
address@hidden RCPT
+The recipient of the message in a valid format, like
address@hidden@@somehost.org}.
+
address@hidden SUBJECT
+The subject of the message; if it is longer than a word you should
+guard it with quotes.
+
address@hidden CMD
+The command you want to run and send a mail in case it fails.
+
address@hidden address@hidden
+The arguments of @code{CMD}, if any.
address@hidden table
+
+Here is a typical example, similar to the way it is used in
address@hidden:
+
address@hidden
+mailfail translators@@example.org "Bad PO" msgfmt -cv -o /dev/null bg.po
address@hidden example
+
+This will check the validity of @file{bg.po} with the @command{msgfmt}
+program and in case there are errors, a message will be sent to the
+specified address with `Bad PO' as subject and the error output from
address@hidden as body.
+
address@hidden inherits the exit status of the command being run.
+If an argument is missing, the usage information is printed to the
+standard output and the exit code is 1.
+
address@hidden validate-html-notify
address@hidden The @command{validate-html-notify} Script
+
+This script is a wrapper around @command{gnun-validate-html}
+(@pxref{gnun-validate-html}); it is necessary because it is hard to
+capture the output of the program from a program that itself captures
+the output of another program that it runs.
+
+Usage:
+
address@hidden
+validate-html-notify [--dry-run] RCPT FILE
address@hidden example
+
address@hidden @option
address@hidden --dry-run
+Does not actually send the message, just like @command{mailfail}.
+
address@hidden RCPT
+The recipient of the message.
+
address@hidden FILE
+The HTML file that has to be validated for compliance with the
address@hidden standard.
address@hidden table
+
+The subject of the message is hardcoded in the script, since this
+wrapper has a specific task and cannot be used to invoke an arbitrary
+command---use @command{mailfail} for that.  @xref{mailfail}.
+
address@hidden Rules
address@hidden How The Recipes Work
+
+Read the source code, then please tell us :-)
+
address@hidden Bugs
address@hidden Reporting Bugs
address@hidden bugs, reporting
address@hidden reporting bugs
+
address@hidden Nations, like any other software, is not bug free.
+There are some known bugs and annoyances, which are listed in the
address@hidden file, but it is absolutely certain that there are more
+which we know nothing about.
+
+If you encounter a bug, or if you have suggestions of any kind, please
+do not hesitate to report them at @email{bug-gnun@@gnu.org} or
address@hidden://savannah.gnu.org/@/bugs/@/?group=gnun}.
+
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:
+compile-command: "texi2pdf -c gnun.texi"
+ispell-local-dictionary: "american"
+End:
+
address@hidden  LocalWords:  uref gettext gettext's po html samp lang www 
translinks sw SSI
address@hidden  LocalWords:  indicateurl TODO Pootle wiki CVS POs flushright 
O'Rielly's cd
address@hidden  LocalWords:  webmaster's makefile gmake Runtime VCS itemx cvs 
POTs XHMTL mk
address@hidden  LocalWords:  NOTFIY devel addr LINGUAS ing XHTML distclean 
subsubsection el
address@hidden  LocalWords:  GNUmakefile keepingup basename DIRS basenames RET 
distros KDE
address@hidden  LocalWords:  gTranslator KBabel Poedit wxWidgets cp templated 
msginit msgid
address@hidden  LocalWords:  msgstr charset CHARSET filename UTF unfuzzy SPC 
msgcat emacs
address@hidden  LocalWords:  kbd defun eq tmp buf progn zerop goto msgfmt cv 
href TransNote
address@hidden  LocalWords:  ol li CSS buggestions Traduction Drieu lt FSF 
Corazza pre bg
address@hidden  LocalWords:  prepend Fooish timestamp other's coord workflow br 
wwwdir zh
address@hidden  LocalWords:  cn tw msgmerge unnumberedsubsubsec crontab dom mon 
dow accute
address@hidden  LocalWords:  symlink env fooish bazzling mailfail proto RCS 
stdout BSD's
address@hidden  LocalWords:  Mailutils mailx CMD ARG

Index: fdl.texi
===================================================================
RCS file: fdl.texi
diff -N fdl.texi
--- fdl.texi    3 Nov 2008 17:40:21 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,506 +0,0 @@
address@hidden The GNU Free Documentation License.
address@hidden Version 1.3, 3 November 2008
-
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, 2007, 2008 Free Software Foundation, 
Inc.
address@hidden://fsf.org/}
-
-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.
-
-The ``publisher'' means any person or entity that distributes copies
-of the Document to the public.
-
-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 under this License.  Any attempt
-otherwise to copy, modify, sublicense, or distribute it is void, and
-will automatically terminate your rights under this License.
-
-However, if you cease all violation of this License, then your license
-from a particular copyright holder is reinstated (a) provisionally,
-unless and until the copyright holder explicitly and finally
-terminates your license, and (b) permanently, if the copyright holder
-fails to notify you of the violation by some reasonable means prior to
-60 days after the cessation.
-
-Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, receipt of a copy of some or all of the same material does
-not give you any rights to use it.
-
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.  If the Document
-specifies that a proxy can decide which future versions of this
-License can be used, that proxy's public statement of acceptance of a
-version permanently authorizes you to choose that version for the
-Document.
-
address@hidden
-RELICENSING
-
-``Massive Multiauthor Collaboration Site'' (or ``MMC Site'') means any
-World Wide Web server that publishes copyrightable works and also
-provides prominent facilities for anybody to edit those works.  A
-public wiki that anybody can edit is an example of such a server.  A
-``Massive Multiauthor Collaboration'' (or ``MMC'') contained in the
-site means any set of copyrightable works thus published on the MMC
-site.
-
-``CC-BY-SA'' means the Creative Commons Attribution-Share Alike 3.0
-license published by Creative Commons Corporation, a not-for-profit
-corporation with a principal place of business in San Francisco,
-California, as well as future copyleft versions of that license
-published by that same organization.
-
-``Incorporate'' means to publish or republish a Document, in whole or
-in part, as part of another Document.
-
-An MMC is ``eligible for relicensing'' if it is licensed under this
-License, and if all works that were first published under this License
-somewhere other than this MMC, and subsequently incorporated in whole
-or in part into the MMC, (1) had no cover texts or invariant sections,
-and (2) were thus incorporated prior to November 1, 2008.
-
-The operator of an MMC Site may republish an MMC contained in the site
-under CC-BY-SA on the same site at any time before August 1, 2009,
-provided the MMC is eligible for relicensing.
-
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.3
-  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: gnun.texi
===================================================================
RCS file: gnun.texi
diff -N gnun.texi
--- gnun.texi   19 Jan 2009 13:25:27 -0000      1.42
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,1811 +0,0 @@
-\input texinfo
address@hidden %**start of header
address@hidden gnun.info
address@hidden version.texi
address@hidden GNUnited Nations
address@hidden
address@hidden %**end of header
-
address@hidden Please do not use features of Texinfo >> 4.11, which is the 
version
address@hidden available in gNewSense.  Thanks.
-
address@hidden FIXME: Add more xrefs, where appropriate.
address@hidden FIXME: Improve the indexing commands.
-
address@hidden
-
-This manual (updated @value{UPDATED}) is for @acronym{GNU}nited Nations
-(version @value{VERSION}),
-a suite for maintaining translations of www.gnu.org essays and other
address@hidden
address@hidden 1
-Copyright @copyright{} 2008, 2009 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.3 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
address@hidden Software for maintaining www.gnu.org translations
address@hidden (for version @value{VERSION}, @value{UPDATED})
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}.
-* Bugs::                How to report bugs.
-* 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
address@hidden, it is much more closer to localization of
-software documentation, where typically strings (also known as
-``messages'' in gettext's context) are longer than strings in
-programs.  Nevertheless, all points raised still apply.}.  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 server/gnun}.  This is the primary way to invoke
address@hidden, 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.  @xref{New Translation}, 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.
-
address@hidden
-(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.
address@hidden ignore
-
-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.
-
address@hidden FIXME: The following paragraphs should go to a separate section
address@hidden that explains those details like exact paths in www, diagram with
address@hidden 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 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{server/gnun} directory, but this may change.  In all
-examples in this manual, ``invoking'' means executing on the command
-line @code{make -C server/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 @code{cd server/gnun ; make}.  It is desirable never to invoke
address@hidden 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.
-* Webmaster Tips::      The webmaster's guide to GNUnited Nations'
-                          galaxy.
address@hidden menu
-
address@hidden Invoking GNUN
address@hidden Invoking GNUN
address@hidden invoking
address@hidden triggering, build
-
-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
address@hidden variables
address@hidden variable, behavior
-
-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. @code{make VCS=yes}.  In the future,
-additional features will be implemented in a similar fashion.
-
address@hidden @samp
address@hidden VCS
address@hidden CVS
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{server/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 @code{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
address@hidden validation
address@hidden sanity checks
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 NOTIFY
address@hidden mail, notifications
address@hidden NOTIFY=no
address@hidden @dots{}
-Do not send email notifications about errors.  This is the default.
-
address@hidden NOTIFY=yes
-If an error occurs, send a mail with a meaningful subject and the
-error message as body to the concerned party.  The variables
address@hidden, @code{web-addr} and @code{transl-addr} control the
-recipients; normally they should be set to the @acronym{GNUN}
-maintainers, webmasters and translators accordingly.
-
address@hidden VERBOSE
address@hidden output, detailed
address@hidden VERBOSE=yes
-If defined, the value of the variables @code{templates-translated},
address@hidden, @code{ALL_POTS}, @code{articles-translated} and
address@hidden will be printed to the standard output.  This is off by
-default, but recommended in general since it will show a bug in the
-computation of the basic variables.
-
address@hidden GRACE
address@hidden fuzzy strings
address@hidden grace period
address@hidden deferred generation of articles
address@hidden address@hidden
-If defined, ordinary articles that have fuzzy strings and are not older
-than @var{days} will not be regenerated.  This functionality is
-implemented specifically to prevent gratuitous replacement of translated
-strings with the English text when there are only minor formatting
-changes in the original.  The translator has time (the ``grace'' period
-as defined in this variable) to review the changes and unfuzzy the
-strings, while keeping the online translation intact.  Note that this
-variable has no effect on the homepage, the server templates, gnunews
-and all articles defined in the variable @code{no-grace-articles}.
-
address@hidden TEAM
address@hidden variable, team
address@hidden address@hidden
-The translation team which articles need to be checked for
-completeness.  This variable is applicable only for the @code{report}
-target, and is mandatory for it.  @xref{report}.
-
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.
-
-When validation is enabled (i.e. with @code{VALIDATE=yes}), the
-original English articles are validated first, before any commands
-that generate the other files, and @command{make} exits with an error
-on the first encountered article.  This is done on purpose, to prevent
-the propagation of an eventual error in the markup of the original
-article to all translations.
-
-By contrast, validation of the translated @address@hidden is
-performed after it is generated and if @code{VCS=yes} the article will
-be committed in the repository.  The build will fail again and further
-processing of the remaining articles will not be performed, but this
-particular translation will be installed.  The translator has time
-until the next run to fix the error---usually by modifying the
-corresponding @address@hidden file.
-
-If notification is enabled (@code{NOTIFY=yes}), and the build system
-encounters errors (mostly when validating articles), email messages
-will be sent to the party that is expected to fix the error.  The
-subject of the messages always include the problematic article, for
-example:
-
address@hidden
-Subject: [GNUN Error] gnu/gnu.fa.html is not valid XHTML
address@hidden example
-
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::
-* report::
-* triggers::
-* clean::
-* distclean::
address@hidden menu
-
address@hidden sync
address@hidden The @code{sync} target
address@hidden synchronization, repository
-
-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, i.e. 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 report
address@hidden The @code{report} target
address@hidden reporting
address@hidden status, translations
-
-This target exists solely for convenience to translators, enabling them
-to check which articles are not 100% translated and have to be updated.
-The way to check this is by running @code{make report address@hidden,
-where @var{lang} is the language code, as usual.  Thus, to check all
-French translations, one would run
-
address@hidden
-make report TEAM=fr
address@hidden example
-
address@hidden:} This target checks only the PO files; if there are
-translations that are maintained in the old-fashioned way, they are
-not reported since there is no reasonable way to check if they are
-up-to-date.  In fact, this is one of the main reasons GNUN is being
-developed, if you recall.
-
address@hidden triggers
address@hidden The @code{triggers} target
-
-This is a special target intended to be run by the automatic build
-after the main build and @emph{after} @code{cvs commit}.
-
-When a @acronym{GNUN} build completes and some translations fail at the
-XHTML validation stage, the result is checked in the repository, as
-explained earlier (@pxref{Runtime Variables}).  Thus, CVS updates the
address@hidden RCS keyword (or any other keywords, for that matter) and
-resets the file(s) timestamp.  Next time @command{make} is invoked, the
-target appears newer than the prerequisite so no rebuild is triggered.
-The purpose of the @code{triggers} target is to ``save'' the information
-of the faulty targets during the main build, and to touch their
-prerequisites in order such invalid articles not to remain online
-unnoticed.
-
-The @code{triggers} target currently executes the files named
address@hidden@address@hidden in the @file{server/gnun}
-directory---these files are created during the main build and each of
-them contains the command to update the timestamp of the prerequisite
-based on the timestamp of the target that must be rebuilt.  Finally, it
-deletes all those @file{*.hook} files.
-
-To summarize, for effective operation @acronym{GNUN} should be invoked
-automatically as @code{make ; cvs commit -m @dots{} ; make triggers}.
-To illustrate this, here is a concrete example showing the official job
-running at fencepost.gnu.org:
-
address@hidden
address@hidden
-25 4,16 * * *  cd $HOME/projects/www ; cvs -q update &>/dev/null ; \
-                 make -C server/gnun VCS=yes VALIDATE=yes NOTIFY=yes \
-                 VERBOSE=yes GRACE=30 ; cvs commit -m \
-                 "Automatic update by GNUnited Nations." ; \
-                 make -C server/gnun triggers
address@hidden group
address@hidden example
-
-In the future, this target may be extended further to do other useful
-things that should be ``triggered'' after the main build.
-
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
address@hidden variables
address@hidden gnun.mk
-
-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 automagically, without manual intervention.  If
-not, that is a bug that should be reported and fixed.
-
address@hidden @samp
address@hidden TEMPLATE_LINGUAS
address@hidden templates, defining
address@hidden defining templates
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
address@hidden homepage, defining
address@hidden defining homepage
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
address@hidden articles in root directory, defining
address@hidden defining articles in the root dir
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
address@hidden directories, defining
address@hidden defining directories
address@hidden ALL_DIRS
-The list of directories containing articles, like @file{philosophy},
address@hidden, @file{licenses}, etc.
-
address@hidden POT generation, articles
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
address@hidden PO, editing
-
-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 editors
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
address@hidden @heresy
address@hidden Please forgive them, they don't know what they are doing...
-po.vim---ftplugin for the Vim editor.  See
address@hidden://www.vim.org/scripts/script.php?script_id=695}.
address@hidden @end heresy
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.
-* GNU News::            How to handle ``whatsnew'' (a.k.a. ``gnunews'').
-* PO Tips::             Tips and hints for translators.
-* generic.LANG.html::   Specifying information that will propagate in
-                          every translation in a certain language.
-* PO Files and Team::   How to maintain translations in the team's
-                          repository.
address@hidden menu
-
address@hidden New Translation
address@hidden Starting a New Translation
address@hidden translation, new
address@hidden 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/free-sw.html}, you can simply do
address@hidden philosophy/po ; cp free-sw.pot address@hidden and then
-edit the latter.  If @file{free-sw.pot} 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{server/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.  For reference,
-here is a list with all fields explained:
-
address@hidden PO headers
address@hidden @samp
address@hidden Project-Id-Version
-Add here the filename of the original article, without the
-sub-directory, like ``banner.html'' or ``free-sw.html''.
-
address@hidden POT-Creation-Date
-Do not edit this field, it is already set when the POT is created.
-
address@hidden PO-Revision-Date
-Likewise, do not edit.  This field is automatically filled in when you
-save the file with any decent PO editor.
-
address@hidden Last-Translator
-The name and email address of the last translator who have edited the
-translation.  Pay attention that normally this is the name of a member
-of your team, it can be the translation team leader if he/she was the
-person who updated the translation.  For example:
-
address@hidden
-Elvis Parsley <king@@grassland.com>
address@hidden example
-
address@hidden Language-Team
-This 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.  It could be a URL of the team's
-homepage, provided that it contains contact details.  Example:
-
address@hidden
-French <trad-gnu@@april.org>
address@hidden example
-
address@hidden MIME-Version
-Leave it like it is.
-
address@hidden Content-Type
-Usually this is @code{text/plain; charset=UTF-8}; change the charset
-accordingly.
-
address@hidden Content-Transfer-Encoding
-Set this to @code{8bit}.
address@hidden table
-
-Here is an example of a properly edited header:
-
address@hidden
address@hidden
-# Bulgarian translation of http://www.gnu.org/philosophy/@/free-sw.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: free-sw.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).
-
-There are some special messages that appear in the POT and PO:
-
address@hidden @samp
address@hidden notes, translators
address@hidden translators' notes
address@hidden *GNUN-SLOT: TRANSLATOR'S NOTES*
-This is for translator's notes that are injected in the resulting
-translation.  @xref{Notes Slot}, for more information.  If your
-translation does not have notes, you @emph{must} translate this as a
-space, that is, @key{SPC}.
-
address@hidden credits, translators
address@hidden translators' credits
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.  ``Translate'' this string as a
-space (@key{SPC}) if you do not want your name to appear there.
address@hidden Slot}.
address@hidden table
-
address@hidden wrapping long lines
address@hidden long lines, wrap
-Most of the PO editors do not wrap long lines that inevitably appear in
address@hidden'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 @code{cat @var{file}.po | msgcat - -o
address@hidden, before installing it in the repository.  Either way, the
-build system will treat it is a valid PO file.
-
-For those lucky Emacs users, here is a code snippet that you can put
-in your @file{.emacs}; doing @kbd{M-x po-wrap} while in PO mode will
-wrap all long lines:
-
address@hidden
address@hidden
-(defun po-wrap ()
-  "Filter current po-mode buffer through `msgcat' tool to wrap all lines."
-  (interactive)
-  (if (eq major-mode 'po-mode)
-      (let ((tmp-file (make-temp-file "po-wrap."))
-           (tmp-buf (generate-new-buffer "*temp*")))
-       (unwind-protect
-           (progn
-             (write-region (point-min) (point-max) tmp-file nil 1)
-             (if (zerop
-                  (call-process
-                   "msgcat" nil tmp-buf t (shell-quote-argument tmp-file)))
-                 (let ((saved (point))
-                       (inhibit-read-only t))
-                   (delete-region (point-min) (point-max))
-                   (insert-buffer tmp-buf)
-                   (goto-char (min saved (point-max))))
-               (with-current-buffer tmp-buf
-                 (error (buffer-string)))))
-         (kill-buffer tmp-buf)
-         (delete-file tmp-file)))))
address@hidden group
address@hidden lisp
-
-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 @code{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
-* Notes Slot::          How to handle translator's notes.
-* Credits Slot::        Translator's credits.
address@hidden menu
-
address@hidden Notes Slot
address@hidden The Special Slot for Translator's Notes
address@hidden notes, translators
address@hidden translators' notes
-
-Sometimes it is necessary to complement the translation of an essay
-with translator's notes.  The special message @code{*GNUN-SLOT:
-TRANSLATOR'S NOTES*} is designed to serve this purpose.  If your
-translation doesn't have notes, you should ``translate'' the
address@hidden as a space (@key{SPC})---otherwise the text of the
address@hidden will appear in the HTML translation, which is not what
-you want.  Here is an example how to use translators' notes in a PO
-file:
-
address@hidden
address@hidden
-# type: Content of: <p>
-msgid ""
-"To understand the concept, you should think of <q>free</q> "
-"as in <q>free speech,</q> not as in <q>free beer.</q>"
-msgstr ""
-"Translated message, where you want to clarify beer<sup><a "
-"href=\"#TransNote1\">1</a></sup>, presumably because the "
-"expression in your language is different"
address@hidden
address@hidden
-# type: Content of: <div>
-#. TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.
-msgid "*GNUN-SLOT: TRANSLATOR'S NOTES*"
-msgstr ""
-"<b>Translator's notes</b>:\n"
-"<ol>\n"
-"<li id=\"TransNote1\">Note clarifying the text.</li>\n"
-"</ol>\n"
address@hidden group
address@hidden example
-
-Certainly, everything in the @code{msgstr}s should be in your native
-language; we use English here in order the example to be understood by
-everyone.  If you have more notes, each subsequent one should be with
-incremented number, i.e. @samp{TransNote2}, @samp{TransNote3}, etc. and
-you have to add them as more @code{<li>} elements accordingly.
-
-Do not worry about the @code{\n} character---it is inserted
-automatically when you press @key{RET}.  It is not compulsory that
-notes start on a new line, this is the recommended way simply because
-it is easier to edit them.
-
-It is important to follow this specification, because notes will look
-consistently in all languages and will be clearly distinguishable from
-authors' footnotes, if any.  Furthermore, it would be easier to define
-a special @acronym{CSS} class for them, and also to convert the
-translations in other formats such as Texinfo---when these features
-are implemented.
-
address@hidden Credits Slot
address@hidden The Special Slot for Translator's Credits
address@hidden credits, translators
address@hidden translators' credits
-
-Most of the translators usually put their name under the translation,
-in the ``footer'' area.  This is entirely acceptable, since some
-readers prefer to send buggestions directly to the translator.  Also,
-giving credit where credit is due is a natural thing.
-
-Like the previous slot, you should ``translate'' it as a @key{SPC} if
-you don't want your name to appear there.
-
-Here is an example of the recommended way to specify credits:
-
address@hidden
-<b>Traduction</b>: Benjamin Drieu 
-<a href="mailto:foo@@example.org";>&lt;foo@@example.org&gt;</a>,
-2007, 2008.
address@hidden example
-
-It is highly desirable to use this form, but you may omit the email
-address or add the homepage of the translator, provided that the
-translation team leader ensures that it constantly meets the linking
-criteria for gnu.org.  Please follow the @acronym{FSF} HTML Style
-Sheet when adding @acronym{URI}s or other information.
-
address@hidden Migrating
address@hidden Transforming existing translation in PO format
address@hidden migration, translations
address@hidden conversion of existing translations
-
-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 GNU News
address@hidden Special Handling For @acronym{GNU} News
address@hidden gnunews
address@hidden whatsnew
address@hidden gnusflashes
-
-The @acronym{GNU} website has infrastructure for supporting ``What's
-New'', also known as address@hidden News''---see
address@hidden://www.gnu.org/@/server/@/standards/@/README.webmastering.html#polnews}
-for details.  Entries are added in a special plain text file,
address@hidden/whatsnew.txt} and are used to build
address@hidden/whatsnew.include} and @file{gnusflashes.include}.  The
-former is used by @file{server/whatsnew.html}, while the latter is
-included in the homepage.
-
address@hidden has rules for building @file{whatsnew.pot}, which
-contains all necessary strings for
address@hidden/address@hidden,
address@hidden/address@hidden and
address@hidden@var{lang}.include}.  There is nothing unusual in this
-POT file, so it should be translated like any other.  When you commit
address@hidden@var{lang}.po}, it will be used to generate all three
-localized files.  In addition, if there is a homepage for this language,
-it will be rebuilt when @address@hidden is
-generated for the first time in order the translated homepage to include
-it instead of @file{gnusflashes.include}.
-
-Note that localized @acronym{RSS} feeds are not supported on purpose, as
-it would be annoying for subscribers if new items appear in English and
-then once again translated.
-
address@hidden PO Tips
address@hidden Useful Hints For Editing PO Files
address@hidden tips, translators
address@hidden recommendations, PO files
-
-This section contains additional explanations, some in the form of
-advices and recommendations; not all of them are strictly related to
-PO files editing.
-
address@hidden
address@hidden
-When you install a new translation of an article (that is different
-from a server template or the homepage), all you need to do is to add
-your PO file in the appropriate @file{/po} sub-directory and add a
-link to it in the translations list of the original
address@hidden@var{article}.html}.  Use only HTML entities for any non-ASCII
-characters and follow the established scheme.  If language names in
-your native language are not capitalized (unlike for example in
-English or German), you should @emph{not} capitalize the name of your
-language.
-
-In the next build, your @address@hidden@var{lang}.html} will be
-built and the link to it will propagate to all translations, provided
-that they are under @acronym{GNUN}'s control.
-
address@hidden
-If you don't feel comfortable editing @file{gnun.mk}, do not worry.
-Someone from the @acronym{GNUN} maintainers will notice and will amend
address@hidden or @code{HOME_LINGUAS} for you, as
-appropriate.
-
address@hidden
-Dealing with obsolete strings.  Elements which are removed from the
-original articles appear in the PO files as ``obsolete'' strings---the
-translation is not lost, but they are marked in a special way at the
-end of the PO file.  You don't have to update a PO file if it contains
-obsolete strings---do this only if it has ``fuzzy'' or
-``untranslated'', and of course when you want to improve the existing
-translated ones.  Sometimes these obsolete strings are useful, and
-they can save time.  For example, if you anticipate that the deleted
-text may reappear some time in the future, you can preserve the string
-and hopefully it would be marked as ``fuzzy'' when this happens.
-Failing that, you can still copy it and yank it at the appropriate
-place.
-
address@hidden
-You can add comments to every message in a PO file---for example if
-you want to remember that you have to do something, or to remind you
-why this particular message is translated in a special way.  These
-comments do not appear in the generated HTML source.
-
address@hidden
-Sometimes, especially when the original message contains many links,
-it is easier to copy it to @code{msgstr} and edit the latter by
-translating the English text.  In PO mode, this is done by @kbd{C-j}.
-This is useful also for large chunks of text in @code{<pre>} elements,
-which normally you would want to preserve verbatim.
-
address@hidden
-To reduce the load on the webmasters RT queue, please replace
address@hidden@@gnu.org} in the standard footer with
address@hidden@@gnu.org}.
-
address@hidden
-If you translate ``Free Software Foundation, Inc.'' in your native
-language in the copyright notice, then please prepend the English name
-to the @code{<address>}; otherwise it looks awkward in most
-languages.  Example:
-
address@hidden
-# type: Content of: <div><address>
-msgid "51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA"
-msgstr ""
-"Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, "
-"Boston, MA 02110-1301, USA"
address@hidden example
-
address@hidden
-There is absolutely no reason to use HTML entities in translations as a
-replacement for common non-ASCII characters.  They are harder to write
-and serve no purpose.
-
address@hidden
-Wrapping of @code{msgstr} using @kbd{M-q} in Emacs (or other means) is
-considered harmful.  It is best to leave @acronym{GNUN} (or more
-precisely, Po4a) to do the wrapping---that way all generated HTML
-translations will have predictable results.  This will help tremendously
-for the conversion to other formats, like Texinfo.  Also, note that not
-all elements are wrapped by default, so deliberately wrapping the text
-inside the @code{msgstr} could lead to an invalid page or a page that is
-valid, but is rendered incorrectly by the web browser.
address@hidden itemize
-
address@hidden generic.LANG.html
address@hidden The @address@hidden file
address@hidden team information
address@hidden generic notice, translations
-
-The files @file{server/gnun/address@hidden are special: if
-no such file exists for your language, an empty file 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 PO Files and Team
address@hidden Maintaining Translations in Your Team's Repository
address@hidden project repository
address@hidden repository, translation project
address@hidden team maintenance
-
address@hidden operates on the ``official'' Web repository of the
-Savannah project `www', where normally only the coordinators of
-translation teams have write access.  However, all translation teams
-have their own projects, so it is possible to take advantage of Savannah
-as a hosting facility to make the team work more comfortable.
-
-The PO files provide an excellent and natural way to review each other's
-translations, because the translation appears right below the original
-message.  Mutual reviews and proof-reading of translations is a crucial
-part of the process.  Furthermore, team work is great for the community
-spirit; automating some of the operations also result in more time for
-all members to concentrate on the important tasks.
-
-The file @file{GNUmakefile.team} in the @samp{gnun} package is a
-template, aimed for all translation teams who wish to use their own
-project's repository as a place to keep their draft translations, until
-they ripe and are ready to be installed officially.
-
address@hidden team workflow
-The following diagram illustrates a typical workflow---it is applicable
-for small, medium and large teams:
-
address@hidden
address@hidden
-+----------+                   +-------------------+
-| ``www''  |                   |   ``www-LANG''    |
-|   Web    |------>---->-------|Sources repository |
-|repository|  automatic merge  +-------------------+
-+----------+                         |    |     |
-     |                               |    |     `-- Member A
-     +------------<----<-------------'    |
-                  Leader                  `---Member B
address@hidden group
address@hidden example
-
-All members and the team leader(s) commit in their project's
-repository---when a translation is ready, the leader checks it in in the
-official `www' repository.  If an original article changes,
-a build could be invoked to synchronize (i.e. merge) the changes and
-optionally automatically commit them so that the draft PO files are
-updated.  A translator would then normally update the PO file, and
-commit it again in the project's Sources repository, from where the
-coordinator will pick it up and install it in `www'.
-
-To take advantage of this semi-automation, rename this template
address@hidden as @file{GNUmakefile} and install it in the root
-of your project's Sources repository.  Then create directories and
-sub-directories exactly as they are in `www'.  Do not create the
address@hidden/po} sub-directories; they are redundant here.  Instead, install
-the PO files in the normal locations where the corresponding
address@hidden@var{lang}.html} resides in `www', for example:
-
address@hidden
address@hidden
-Root
-  |
-  |--GNUmakefile
-  |address@hidden
-  |address@hidden
-  |--gnu
-  |   |
-  |   |
-  |   address@hidden
-  |   address@hidden
-  |   address@hidden
-  |
-  |
-  +--philosophy
-  |     |
-  |     |
-  |     address@hidden
-  |     address@hidden
-  |     address@hidden
-  |     address@hidden
-  |
-  address@hidden
address@hidden group
address@hidden example
-
-The next sections explain how to adopt the makefile for your team and
-how to invoke a ``build''.
-
address@hidden
-* GNUmakefile.team Variables::
-* GNUmakefile.team and Cron::
address@hidden menu
-
address@hidden GNUmakefile.team Variables
address@hidden Adopting @file{GNUmakefile.team} For a Specific Team
-
-To adjust the makefile for your team, you need to edit two variables.
-
address@hidden @samp
address@hidden TEAM
-Set this to the language code, like @code{bg} or @code{pt-br}.
-
address@hidden wwwdir
-The relative path to the working copy of the master `www' repository.
-So if you have checked out your project's Sources repository at
address@hidden/projects/address@hidden and the `www' Web repository at
address@hidden/projects/www}, the value of @code{wwwdir} should be
address@hidden/www/}.  Note the slash at the end, it is important.
address@hidden table
-
-Technically speaking, two variants of one language sharing the same
-project and repository (such as @code{zh-cn} and @code{zh-tw}) are not
-supported---patches welcome.  As a workaround, there could be two
-directories with two @file{GNUmakefile}s and each directory having its
-own tree.
-
-Some variables are specified on the command line, and alter the behavior
-of the build process.
-
address@hidden @samp
address@hidden VERBOSE=yes
-Print more information from @command{cvs}, @command{svn} and
address@hidden; off by default.  Note that @code{VERBOSE} can be
-defined to any string, it will have the same effect.
-
address@hidden VCS=yes
-Update both `www' and address@hidden' repositories, then commit the
-merged PO files in the latter repository.  By default, there is no VCS
-interaction.  The VCS of the translation project repository is
-determined automatically; currently only CVS and Subversion repositories
-are supported.
address@hidden table
-
address@hidden Targets in @file{GNUmakefile.team}
-
address@hidden @code
address@hidden update
-Updates the repositories.  Does nothing unless @code{VCS=yes}.
-
address@hidden sync
-Merges all available PO files from the corresponding POT in `www'.
-
address@hidden report
-Verifies which translations are complete, and prints a list (with
-statistics) of those that need to be updated.
address@hidden table
-
address@hidden VCS=yes} is the recommended command to be run periodically.
-To check the status of the translations, run @code{make report}.
-
-Feel free to replace all strings with equivalents in your native
-language and of course---do not hesitate to extend this file and modify
-it as much as you like.  For example, useful extra functionality would
-be a target that will check which files have not yet been committed in
-the official repository, or which files have to be updated there
-(i.e. they were updated by the team members but not installed by the
-coordinator).  Either way, if you come up with something interesting, it
-would be nice to send a message to @email{bug-gnun@@gnu.org}, so that
address@hidden gets updated for all teams' benefit.
-
address@hidden GNUmakefile.team and Cron
address@hidden Automatic Synchronization and Status Reports
address@hidden team maintenance, cron
address@hidden cron, team maintenance
-
-It is convenient to invoke such synchronization automatically, for
-example once every day.  If you have enabled commit notifications for
-the project's repository, any new changes will be visible for
-subscribers.  Here is an example crontab entry:
-
address@hidden
-# m h  dom mon dow   command
-@@daily              cd $HOME/projects/address@hidden ; make VCS=yes
address@hidden example
-
-It is not necessary the job to be run on the team leader's machine,
-since all team members have write access to their project repository.
-
-If desired, you could set up another job to report the status of the
-translations weekly or fortnightly, for example:
-
address@hidden
-# m h  dom mon dow   command
-@@weekly             cd $HOME/projects/address@hidden ; \
-                       make report | mail -s "Weekly statistics" \
-                       address@hidden@@gnu.org
address@hidden example
-
address@hidden:} Most cron implementations do not allow the character
-`\' as a line continuation character---the example shown is made that
-way for better readability.
-
address@hidden Webmaster Tips
address@hidden Tips and Hints for Webmasters
address@hidden tips, webmasters
address@hidden webmaster tips
-
-This section contains some tips and general recommendations for
-webmasters in no particular order---it is not mandatory to follow them,
-but doing so will make translators' lives substantially easier.
-
-First and foremost, respect translators' work---it is ungrateful and
-hard, undoubtedly much harder than translation of programs.  It is
-important to have as many and as better as possible translations, and
-you don't have to make titanic efforts to help.
-
-If you plan to edit a certain page extensively, please do so within the
-period between two adjacent @acronym{GNUN} builds---i.e. within a day.
-That way, the POT will be regenerated only once, and translators who are
-quick to update it immediately won't be disappointed if it changes again
-in the next run.
-
-Use @emph{only} US-ASCII characters and HTML entities for the others.
-This is required because the English text in the articles serves as a
-replacement of the translation when the latter is not complete.  So if
-you use, say, the character @'e (e-acute) directly in an English
-page---which is UTF-8 as declared in @file{server/header.html}, it
-will appear broken on those translated pages who use a different
-encoding.  This specific advice is pretty much mandatory---the build
-fails if the original article contains such characters---but we are
-ready to fix any errors a webmaster makes.
-
-The script @command{gnun-validate-html} is useful for webmasters who
-want to verify if their (potentially intrusive) changes result in a
-valid markup.  Before committing your changes, you can check if it is
-valid by running
-
address@hidden
-gnun-validate-html philosophy/not-ipr.html
address@hidden example
-
address@hidden, for more information.
-
address@hidden Emacs Lisp code goes here...
-
-If you want a comment to be visible for translators, place it
address@hidden the element, for example:
-
address@hidden
-<p>
-<!--TRANSLATORS: Note that foo is bar in this context.-->
-The fooish bar mumbles bazzling.
-</p>
address@hidden example
-
-This will result in:
-
address@hidden
-# type: Content of: <p>
-#. TRANSLATORS: Note that foo is bar in this context.
-msgid "The fooish bar mumbles bazzling."
-msgstr ""
address@hidden example
-
-As per the established convention, start the comment with
address@hidden:} to catch their attention, and do not add a space
-after the beginning of the HTML comment (@code{<!--}), since this will
-unnecessarily indent the comment in the POT.
-
address@hidden:} Any structural diversion from
address@hidden in a specific article is likely to result in
-errors from @acronym{GNUN}.  Any unexpected updates to the server
-templates (such as changing the entire look & feel of the site) will
-most probably break @emph{all} translations under @acronym{GNUN}'s
-control.  Of course, this does not mean that such changes should not
-happen---only that they must be applied in our sandbox first, to
-ensure a smooth transition.
-
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 several 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::
-* gnun-validate-html::
-* mailfail::
-* validate-html-notify::
address@hidden menu
-
address@hidden make-prototype
address@hidden The @command{make-prototype} Script
address@hidden POT generation
address@hidden prototype generation
address@hidden generation, POT, .proto
-
-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 gnun-validate-html
address@hidden The @command{gnun-validate-html} Script
address@hidden validation, XHTML
-
-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 mailfail
address@hidden The @command{mailfail} Script
address@hidden mail, notifications
-
-This is a helper script that runs a command, and mails the output of
-that command in case it exits with a non-zero exit status.
address@hidden depends on @acronym{GNU} Mailutils, or a compatible
-implementation, such as BSD's mailx.
-
-Usage:
-
address@hidden
-mailfail [--dry-run] RCPT SUBJECT CMD [ARG ...]
address@hidden example
-
-The @command{mailfail} script accepts the following options:
-
address@hidden @option
address@hidden --dry-run
-Does not send the email message.
-
address@hidden RCPT
-The recipient of the message in a valid format, like
address@hidden@@somehost.org}.
-
address@hidden SUBJECT
-The subject of the message; if it is longer than a word you should
-guard it with quotes.
-
address@hidden CMD
-The command you want to run and send a mail in case it fails.
-
address@hidden address@hidden
-The arguments of @code{CMD}, if any.
address@hidden table
-
-Here is a typical example, similar to the way it is used in
address@hidden:
-
address@hidden
-mailfail translators@@example.org "Bad PO" msgfmt -cv -o /dev/null bg.po
address@hidden example
-
-This will check the validity of @file{bg.po} with the @command{msgfmt}
-program and in case there are errors, a message will be sent to the
-specified address with `Bad PO' as subject and the error output from
address@hidden as body.
-
address@hidden inherits the exit status of the command being run.
-If an argument is missing, the usage information is printed to the
-standard output and the exit code is 1.
-
address@hidden validate-html-notify
address@hidden The @command{validate-html-notify} Script
-
-This script is a wrapper around @command{gnun-validate-html}
-(@pxref{gnun-validate-html}); it is necessary because it is hard to
-capture the output of the program from a program that itself captures
-the output of another program that it runs.
-
-Usage:
-
address@hidden
-validate-html-notify [--dry-run] RCPT FILE
address@hidden example
-
address@hidden @option
address@hidden --dry-run
-Does not actually send the message, just like @command{mailfail}.
-
address@hidden RCPT
-The recipient of the message.
-
address@hidden FILE
-The HTML file that has to be validated for compliance with the
address@hidden standard.
address@hidden table
-
-The subject of the message is hardcoded in the script, since this
-wrapper has a specific task and cannot be used to invoke an arbitrary
-command---use @command{mailfail} for that.  @xref{mailfail}.
-
address@hidden Rules
address@hidden How The Recipes Work
-
-Read the source code, then please tell us :-)
-
address@hidden Bugs
address@hidden Reporting Bugs
address@hidden bugs, reporting
address@hidden reporting bugs
-
address@hidden Nations, like any other software, is not bug free.
-There are some known bugs and annoyances, which are listed in the
address@hidden file, but it is absolutely certain that there are more
-which we know nothing about.
-
-If you encounter a bug, or if you have suggestions of any kind, please
-do not hesitate to report them at @email{bug-gnun@@gnu.org} or
address@hidden://savannah.gnu.org/@/bugs/@/?group=gnun}.
-
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:
-compile-command: "texi2pdf -c gnun.texi"
-ispell-local-dictionary: "american"
-End:
-
address@hidden  LocalWords:  uref gettext gettext's po html samp lang www 
translinks sw SSI
address@hidden  LocalWords:  indicateurl TODO Pootle wiki CVS POs flushright 
O'Rielly's cd
address@hidden  LocalWords:  webmaster's makefile gmake Runtime VCS itemx cvs 
POTs XHMTL mk
address@hidden  LocalWords:  NOTFIY devel addr LINGUAS ing XHTML distclean 
subsubsection el
address@hidden  LocalWords:  GNUmakefile keepingup basename DIRS basenames RET 
distros KDE
address@hidden  LocalWords:  gTranslator KBabel Poedit wxWidgets cp templated 
msginit msgid
address@hidden  LocalWords:  msgstr charset CHARSET filename UTF unfuzzy SPC 
msgcat emacs
address@hidden  LocalWords:  kbd defun eq tmp buf progn zerop goto msgfmt cv 
href TransNote
address@hidden  LocalWords:  ol li CSS buggestions Traduction Drieu lt FSF 
Corazza pre bg
address@hidden  LocalWords:  prepend Fooish timestamp other's coord workflow br 
wwwdir zh
address@hidden  LocalWords:  cn tw msgmerge unnumberedsubsubsec crontab dom mon 
dow accute
address@hidden  LocalWords:  symlink env fooish bazzling mailfail proto RCS 
stdout BSD's
address@hidden  LocalWords:  Mailutils mailx CMD ARG




reply via email to

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