]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/contributor/doc-work.itexi
Docs: update translations script and instructions in the CG
[lilypond.git] / Documentation / contributor / doc-work.itexi
index c0ec504b7b4a488fc38b5df8e10389ed448957aa..67f23b573249554d1c9c1d4b15a447697e6fca64 100644 (file)
@@ -2,13 +2,24 @@
 @node Documentation work
 @chapter Documentation work
 
+There are currently 11 manuals for LilyPond, not including the
+translations.  Each book is available in HTML, PDF, and info.  The
+documentation is written in a language called @code{texinfo} --
+this allows us to generate different output formats from a single
+set of source files.
+
+To organize multiple authors working on the documentation, we use a
+Version Control System (VCS) called git, previously discussed in
+@ref{Starting with Git}.
+
 @menu
 * Introduction to documentation work::
 * Documentation suggestions::
 * Texinfo introduction and usage policy::
 * Documentation policy::
 * Tips for writing docs::
-* Updating docs with convert-ly::
+* Scripts to ease doc work::
+* Docstrings in scheme::
 * Translating the documentation::
 @end menu
 
@@ -190,7 +201,7 @@ so on); list the subdirectory of each manual to determine the filename
 of the specific chapter you wish to modify.
 
 Developer manuals live in @file{Documentation/} too.  Currently there is
-only one: the Contributors' Guide @file{contrib-guide.texi} you are
+only one: the Contributor's Guide @file{contrib-guide.texi} you are
 reading.
 
 Snippet files are part of documentation, and the Snippet List (SL) lives
@@ -238,18 +249,8 @@ Nodes must be included inside a
 @end example
 
 @noindent
-construct.  These are easily constructed with the emacs
-@code{M-x texinfo-all-menus-update} construct, or by this
-command-line script:
-
-@example
-#!/bin/sh
-emacs $1 -batch -f texinfo-all-menus-update -f save-buffer
-@end example
-
-@noindent
-(save the above as something like @command{texinfo-menus.sh}, make
-it executable, then run @command{texinfo-menus.sh foo.itely})
+construct.  These are easily constructed with automatic tools; see
+@ref{Scripts to ease doc work}.
 
 
 @node LilyPond formatting
@@ -278,12 +279,16 @@ Again, LilyPond does not strictly require this, but it is a useful
 standard to follow.
 
 @item
-Examples should end with a complete bar if possible.
+If possible, only write one bar per line.
+
+@item
+If you only have one bar per line, omit bar checks.  If you
+must put more than one bar per line (not recommended), then include bar
+checks.
 
 @item
-If possible, only write one bar per line.  The notes on each
-line should be an independent line -- tweaks should occur on their
-own line if possible.  Bad:
+Tweaks should, if possible, also occur on their own line.
+Bad:
 
 @example
 \override textscript #'padding = #3 c1^"hi"
@@ -338,9 +343,9 @@ LSR snippets are linked with
 excepted in Templates, where `doctitle' may be omitted.
 
 @item
-Avoid long stretches of input code.  Noone is going to read
-them in print.  Please create a smaller example.  (the smaller
-example does not need to be minimal, however)
+Avoid long stretches of input code.  Nobody is going to read
+them in print.  Create small examples. However, this does not mean
+it has be minimal.
 
 @item
 Specify durations for at least the first note of every bar.
@@ -360,18 +365,12 @@ not:          \chordmode @{c e g@}
 but instead:  \chordmode @{ c e g @}
 @end example
 
-@item
-If you only have one bar per line, omit bar checks.  If you
-put more than one bar per line (not recommended), then include bar
-checks.
-
 @item
 If you want to work on an example outside of the manual (for
 easier/faster processing), use this header:
 
 @example
 \paper @{
-  #(define dump-extents #t)
   indent = 0\mm
   line-width = 160\mm - 2.0 * 0.4\in
   ragged-right = ##t
@@ -396,9 +395,9 @@ Documentation Editor.
 @itemize
 
 @item
-Lines should be less than 72 characters long.  (I personally
-recommend writing with 66-char lines, but don't bother modifying
-existing material.)
+Lines should be less than 72 characters long.  (We personally
+recommend writing with 66-char lines, but do not bother modifying
+existing material).
 
 @item
 Do not use tabs.
@@ -508,7 +507,7 @@ Do not use @@itemize @@bullet.
 To get LilyPond version, use @@version@{@} (this does not work
 inside LilyPond snippets).  If you write "@@version@{@}" (enclosed
 with quotes), or generally if @@version@{@} is not followed by a
-space, tere will be an ugly line break in PDF output unless you
+space, there will be an ugly line break in PDF output unless you
 enclose it with
 
 @example
@@ -526,22 +525,35 @@ enclose it with
 @subsection Syntax survey
 
 @itemize
+@item
+@@bs - Generates a backslash inside @@warning.
+    Any `\' used inside @@warning (and @@q or @@qq) must be written as `@@bs@{@}'
+    (texinfo would also allow \\, but this breaks with PDF output).
+
 @item
 @@c - single line comments
   "@@c NOTE:" is a comment which should remain in the final
   version.  (gp only command ;)
-@item
-@@ignore ... @@end ignore - multi-line comment
 
 @item
 @@cindex - General index. Please add as many as you can.  Don't
   capitalize the first word.
+
 @item
-@@funindex - is for a \lilycommand.
+@@code@{@} - typeset in a tt-font. Use for actual lilypond code or
+  property/context names.  If the name contains a space, wrap
+  the entire thing inside @@w@{@@code@{  @}@}.
 
 @item
-@@example ... @@end ignore - example text that should be set as a
+@@example ... @@end example - example text that should be set as a
   blockquote.  Any @{@} must be escaped with @@@{ @}@@
+
+@item
+@@funindex - is for a \lilycommand.
+
+@item
+@@ignore ... @@end ignore - multi-line comment
+
 @item
 @@itemize @@item
 A @@item
@@ -549,54 +561,73 @@ B ... @@end itemize - for bulleted lists.
   Do not compress vertically like this.
 
 @item
-@@code@{@} - typeset in a tt-font. Use for actual lilypond code or
-  property/context names.  If the name contains a space, wrap
-  the entire thing inside @@w@{@@code@{  @}@}.
-@item
 @@notation@{@} - refers to pieces of notation, e.g.
   "@@notation@{cres.@}".  Also use to specific lyrics ("the
   @@notation@{A - men@} is centered").  Only use once per subsection
   per term.
+
 @item
 @@q@{@} - Single quotes. Used for `vague' terms.
+
 @item
 @@qq@{@} - Double quotes.  Used for actual quotes ("he said") or for
   introducing special input modes.
 
 @item
-@@tie@{@} - Variables or numbers which consist of a single character
-  (probably followed by a punctuation mark) should be tied
-  properly, either to the previous or the next word.  Example:
-    "The letter@@tie@{@}@@q@{I@} is skipped"
+@@rchanges@{@} - link to Changes.
 
 @item
-@@var - Use for variables.
-@item
-@@warning@{@} - produces a "Note: " box. Use for important messages.
+@@rcontrib@{@} - link to Contributor's Guide.
 
 @item
-@@bs - Generates a backslash inside @@warning.
-    Any `\' used inside @@warning (and @@q or @@qq) must be written as `@@bs@{@}'
-    (texinfo would also allow \\, but this breaks with PDF output).
+@@ref@{@} - link within current manual (type the exact node name inside the
+@{@}).
 
 @item
-@@ref@{@} - normal references (type the exact node name inside the
-@{@}).
+@@ressay@{@} - link to Engraving Essay.
+
 @item
-@@ruser@{@} - link to the NR.
+@@rextend@{@} - link to Extending LilyPond.
+
 @item
-@@rlearning@{@} - link to the LM.
+@@rglos@{@} - link to the Music Glossary.
+
 @item
-@@rglos@{@} - link to the MG.
+@@rinternals@{@} - link to the Internals Reference.
+
 @item
-@@rprogram@{@} - link to the AU.
+@@rlearning@{@} - link to Learning Manual.
+
 @item
 @@rlsr@{@} - link to a Snippet section.
+
+@item
+@@rprogram@{@} - link to Application Usage.
+
+@item
+@@ruser@{@} - link to Notation Reference.
+
 @item
-@@rinternals@{@} - link to the IR.
+@@rweb@{@} - link to General Informaion.
+
+@item
+@@tie@{@} - Variables or numbers which consist of a single character
+  (probably followed by a punctuation mark) should be tied
+  properly, either to the previous or the next word.  Example:
+    "The letter@@tie@{@}@@q@{I@} is skipped"
+
 @item
 @@uref@{@} - link to an external url.
 
+@item
+@@var - Use for variables.
+
+@item
+@@version@{@} - Return the current LilyPond version string
+
+@item
+@@warning@{@} - produces a "Note: " box. Use for important messages.
+
 @end itemize
 
 
@@ -790,6 +821,9 @@ Notation Reference:
 Application Usage:
 @@rprogram@{blah@}.
 
+Extending LilyPond:
+@@rextend@{frob@}.
+
 Installed Files:
 @@file@{path/to/dir/blahz@}.
 
@@ -849,12 +883,26 @@ documentation, but they are not checked during compilation.
 However, if you compile the documentation, a script called
 check_texi_refs can help you with checking and fixing these
 cross-references; for information on usage, cd into a source tree
-where documentation has been built, cd into Documentation and look
-for check-xrefs and fix-xrefs targets in 'make help' output.  Note
-that you have to find yourself the source files to fix
+where documentation has been built, cd into Documentation and run:
+
+@example
+make check-xrefs
+make fix-xrefs
+@end example
+
+Note that you have to find yourself the source files to fix
 cross-references in the generated documentation such as the
 Internals Reference; e.g. you can grep scm/ and lily/.
 
+@c temporary?  how long will kainhofer be used?  -gp
+Also of interest may be the linkdoc checks on kainhofer.com.  Be
+warned that these docs are not completely rebuilt every day, so it
+might not accurately reflect the current state of the docs.
+
+@example
+@uref{http://kainhofer.com/~lilypond/linkdoc/}
+@end example
+
 
 @node General writing
 @subsection General writing
@@ -1045,12 +1093,42 @@ would be ideal if every significant known issue had a workaround to avoid
 the difficulty.
 
 @seealso
-
 @ref{Adding and editing snippets}.
 
 
-@node Updating docs with convert-ly
-@section Updating doc with @command{convert-ly}
+@node Scripts to ease doc work
+@section Scripts to ease doc work
+
+@subheading Stripping whitespace
+
+@c TODO: should this be documented elsewhere?  It's useful for
+@c more than just docs.
+To remove extra whitespace from the ends of lines, run
+
+@example
+scripts/auxiliar/strip-whitespace.py Documentation/FILENAME
+@end example
+
+
+@subheading Sectioning commands
+
+@warning{These commands add whitespace.}
+
+The emacs @code{M-x texinfo-all-menus-update} command will
+regenerate @@menu blocks.  This can also be run with this
+command-line script:
+
+@example
+#!/bin/sh
+emacs $1 -batch -f texinfo-all-menus-update -f save-buffer
+@end example
+
+@noindent
+(save the above as something like @command{texinfo-menus.sh}, make
+it executable, then run @command{texinfo-menus.sh foo.itely})
+
+
+@subheading Updating doc with @command{convert-ly}
 
 cd into @file{Documentation/} and run
 
@@ -1063,9 +1141,30 @@ This also updates translated documentation.
 
 
 
+@node Docstrings in scheme
+@section Docstrings in scheme
+
+Material in the Internals reference is generated automatically
+from our source code.  Any doc work on Internals therefore
+requires modifying files in @file{scm/*.scm}.  Texinfo is allowed
+in these docstrings.
+
+Most documentation writers never touch these, though.  If you want
+to work on them, please ask for help.
+
+
 @node Translating the documentation
 @section Translating the documentation
 
+The mailing list @code{translations@@lilynet.net} is dedicated to
+LilyPond web site and documentation translation; on this list, you will
+get support from the Translations Meister and experimented translators,
+and we regularly discuss translations issues common to all languagues.
+All people interested in LilyPond translations are invited to subscribe
+to this list regardless of the amount of their contribution, by sending
+an email to @code{translations-request@@lilynet.net} with subject
+@code{subscribe} and an empty message body.
+
 @menu
 * Getting started with documentation translation::
 * Documentation translation details::
@@ -1077,8 +1176,8 @@ This also updates translated documentation.
 @node Getting started with documentation translation
 @subsection Getting started with documentation translation
 
-First, get the sources from the Git repository, see @ref{Documentation
-translations source code}.
+First, get the sources from the Git repository, see
+@ref{Downloading remote branches}.
 
 @menu
 * Translation requirements::
@@ -1105,12 +1204,12 @@ motivation and a suitable system, it can be very useful to build at
 least the documentation so that you can check the output yourself and
 more quickly; if you are interested, see @ref{Compiling from source}.
 
-@menu
-@end menu
 
 @node Which documentation can be translated
 @unnumberedsubsubsec Which documentation can be translated
 
+FIXME: take into account the new web site integration in main sources.
+
 The makefiles and scripts infrastructure currently supports translation
 of the following documentation:
 
@@ -1169,8 +1268,7 @@ Finally, add a language definition for your language in
 
 Before starting the real translation work, it is recommended to commit
 changes you made so far to Git, so e.g. you are able to get back to
-this state of the sources easily if needed; see @ref{Sharing your
-changes}.
+this state of the sources easily if needed; see @ref{Making commits}.
 
 
 @node Documentation translation details
@@ -1182,9 +1280,8 @@ All files should be encoded in UTF-8.
 
 @menu
 * Files to be translated::
-* Translating the Learning Manual and other Texinfo documentation::
-* Translating the Notation Reference and Application Usage::
-* Translating the Documentation index index.html.in::
+* Translating the Web site and other Texinfo documentation::
+* Adding a Texinfo manual::
 @end menu
 
 @node Files to be translated
@@ -1192,8 +1289,8 @@ All files should be encoded in UTF-8.
 
 @include contributor/doc-translation-list.itexi
 
-@node Translating the Learning Manual and other Texinfo documentation
-@unnumberedsubsubsec Translating the Learning Manual and other Texinfo documentation
+@node Translating the Web site and other Texinfo documentation
+@unnumberedsubsubsec Translating the Web site and other Texinfo documentation
 
 @iftex
 @vskip 12pt
@@ -1263,7 +1360,19 @@ for each untranslated node with something like
 @@untranslated
 @end example
 
-@noindent
+@warning{you do not have to translate the node name of a cross-reference
+to a node that you do not have translated.  If you do, you must define
+an @qq{empty} node like explained just above; this will produce a
+cross-reference with the translated node name in output, although the
+target node will still be in English.  On the opposite, if all
+cross-references that refer to an untranslated node use the node name in
+English, then you do not have to define such an @qq{empty} node, and the
+cross-reference text will appear in English in the output.  The choice
+between these two strategies implies its particular maintenance
+requirements and is left to the translators, although the opinion of the
+Translation meister leans towards not translating these
+cross-references.}
+
 Finally, press in Emacs @key{C-c C-u C-a} to update or generate
 menus. This process should be made easier in the future, when the helper
 script @command{texi-langutils.py} and the makefile target are updated.
@@ -1278,6 +1387,11 @@ through the Free Translation Project.
 Take care of using typographic rules for your language, especially in
 @file{macros.itexi}.
 
+If you wonder whether a word, phrase or larger piece of text should be
+translated, whether it is an argument of a Texinfo command or a small
+piece sandwiched between two Texinfo commands, try to track whether and
+where it appears in PDF and/or HTML output as visible text.  This piece
+of advice is especially useful for translating @file{macros.itexi}.
 
 Please keep verbatim copies of music snippets (in @code{@@lilypond}
 blocs).  However, some music snippets containing text that shows in
@@ -1330,28 +1444,39 @@ and editing snippets}.
 names, file names and comments should be translated.
 
 Finally, please carefully apply every rule exposed in @ref{Texinfo
-introduction and usage policy}, and @ref{Documentation policy}.  If
-one of these rules conflicts with a rule specific to your language,
-please ask the Translation meister and/or the Documentation Editors on
-@email{lilypond-devel@@gnu.org}.
+introduction and usage policy}, and @ref{Documentation policy}.  If one
+of these rules conflicts with a rule specific to your language, please
+ask the Translation meister on @email{translations@@lilynet.net} list
+and/or the Documentation Editors on @email{lilypond-devel@@gnu.org}
+list.
+
 
+@node Adding a Texinfo manual
+@unnumberedsubsubsec Adding a Texinfo manual
 
-@node Translating the Notation Reference and Application Usage
-@unnumberedsubsubsec Translating the Notation Reference and Application Usage
+In order to start translating a new manual whose basename is @var{FOO},
+do
 
-Copy @file{notation.tely} (or @file{application.tely},
-respectively) into @file{@var{MY-LANGUAGE}}, then translate this
-file and run @code{skeleton-update} -- see @ref{Updating documentation
-translation}.  Your are now ready to translate the Notation Reference
-(Application Usage, respectively) exactly like the Learning Manual.
+@example
+cd Documentation/@var{MY-LANGUAGE}
+cp ../@var{FOO}.tely .
+mkdir @var{FOO}
+cp web/GNUmakefile @var{FOO}
+@end example
 
+@noindent
+then append @var{FOO} to variable @code{SUBDIRS} in
+Documentation/@var{MY-LANGUAGE}/GNUmakefile, then translate file
+@var{MY-LANGUAGE}/@var{FOO}.tely and run @code{skeleton-update}:
 
-@node Translating the Documentation index index.html.in
-@unnumberedsubsubsec Translating the Documentation index @file{index.html.in}
+@example
+cd Documentation/
+make ISOLANG=@var{MY-LANGUAGE} TEXI_LANGUTIL_FLAGS=--head-only skeleton-update
+@end example
 
-Unlike almost all HTML pages in this documentation, links in this page
-are not tweaked by @file{postprocess_html.py}, so links should be
-manually edited to link to existing translations.
+@noindent
+Your are now ready to translate the new manual exactly like the web site
+or the Learning Manual.
 
 
 @node Documentation translation maintenance
@@ -1386,6 +1511,11 @@ revision of the translation.  To check a single file, cd into
 make CHECKED_FILES=@var{MY_LANGUAGE}/@var{manual}/@var{foo}.itely check-translation
 @end example
 
+@noindent
+In case this file has been renamed since you last updated the
+translation, you should specify both old and new file names,
+e.g. @code{CHECKED_FILES=@var{MY_LANGUAGE}/@{@var{manual},user@}/@var{foo}.itely}.
+
 To see only which files need to be updated, do
 
 @example
@@ -1413,7 +1543,6 @@ up-to-dateness percentages for each translated file, and update word
 counts of documentation files in this Guide.
 
 @seealso
-
 @ref{Maintaining without updating translations}.
 
 
@@ -1442,9 +1571,9 @@ diff cannot be generated or is bigger than the file in English itself,
 the full file in English will be opened instead.
 
 Texinfo skeleton files, i.e. @file{.itely} files not yet translated,
-containing only the Texinfo structure can be updated automatically:
-whenever @command{make check-translation} shows that such files should
-be updated, run from @file{Documentation/}
+containing only the first node of the original file in English can be
+updated automatically: whenever @command{make check-translation} shows
+that such files should be updated, run from @file{Documentation/}
 
 @example
 make ISOLANG=@var{MY_LANGUAGE} skeleton-update
@@ -1498,7 +1627,6 @@ Use this command with caution, and keep in mind it will not be really
 useful until translations are stabilized after the end of GDP and GOP.
 
 @seealso
-
 @ref{Maintaining without updating translations},
 @ref{Adding and editing snippets}.