]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into lilypond/translation
authorFrancisco Vila <francisco.vila@hispalinux.es>
Fri, 24 Feb 2012 18:18:26 +0000 (19:18 +0100)
committerFrancisco Vila <francisco.vila@hispalinux.es>
Fri, 24 Feb 2012 18:18:26 +0000 (19:18 +0100)
39 files changed:
Documentation/GNUmakefile
Documentation/notation/percussion.itely
Documentation/notation/spacing.itely
Documentation/po/GNUmakefile
Documentation/snippets/new/centering-markup-on-note-heads-automatically.ly
Documentation/snippets/new/defining-an-engraver-in-scheme-ambitus-engraver.ly
Documentation/snippets/new/numbers-as-easy-note-heads.ly
Documentation/web/news-front.itexi
Documentation/web/news.itexi
GNUmakefile.in
VERSION
configure.in
input/regression/extratoken.ly [new file with mode: 0644]
input/regression/lilypond-book/GNUmakefile
input/regression/scheme-engraver-instance.ly
input/regression/scheme-engraver.ly
input/regression/scheme-text-spanner.ly
lily/GNUmakefile
lily/context-def.cc
lily/include/listener.hh
lily/lexer.ll
lily/parser.yy
lily/scheme-engraver.cc
ly/event-listener.ly
make/doc-i18n-root-rules.make
make/doc-i18n-root-vars.make
make/lilypond-book-rules.make
make/lilypond-book-vars.make
make/ly-rules.make
make/mutopia-targets.make
mf/GNUmakefile
po/it.po
scm/music-functions.scm
scm/translation-functions.scm
scripts/build/run-and-check.sh [new file with mode: 0755]
scripts/build/www_post.py
stepmake/aclocal.m4
stepmake/stepmake/texinfo-rules.make
stepmake/stepmake/texinfo-vars.make

index 22da2d8fa8d73a3746c11f5d9d64f641fb45fda1..5f04dc880cf1297f4f37d1297e2ff161344313a5 100644 (file)
@@ -195,7 +195,7 @@ endif
 ### Rules
 
 $(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+       $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<"  "$*.makeinfo.log"
 
 txt-to-html: $(OUT_TXT_FILES) $(OUT_TXT_FILES:%.txt=%.html)
 
@@ -231,11 +231,11 @@ endif
 # Ugh, using '%' twice not possible
 $(outdir)/notation/notation.xml: $(outdir)/notation.texi
        mkdir -p $(dir $@)
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<
+       $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<"  "$*.makeinfoxml.log"
 
 $(outdir)/internals/internals.xml: $(outdir)/internals.texi
        mkdir -p $(dir $@)
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<
+       $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$(dir $@) --docbook $<"  "$*.makeinfoxml.log"
 
 $(outdir)/learning.texi $(outdir)/notation.texi: $(OUT_PDF_IMAGES)
 
index e04acdf42c01c8c2bdce7af708104f73dc0a8b13..cc4dd03a2c335bfff16d20a54dd5c591042be23d 100644 (file)
@@ -144,7 +144,7 @@ as described in @ref{Tremolo repeats}.
 }
 @end lilypond
 
-Sticking can be indicated by placing placing markup for @code{"R"}
+Sticking can be indicated by placing a markup for @code{"R"}
 or @code{"L"} above or below notes, as discussed in
 @ref{Direction and placement}.  The @code{staff-padding} property
 may be overridden to achieve a pleasing baseline.
index c1603fb22bf03baa99874500c8bbac1fa36e578a..6b7f49e6bbca1395162a27ea0bf9c032e33f40f2 100644 (file)
@@ -349,7 +349,7 @@ example orchestral scores.
 
 If set to false, systems will spread vertically down the last
 page.  Pieces that amply fill two pages or more should have this
-set to true.  It also affects the last page of book parts, i.e.
+set to false.  It also affects the last page of book parts, i.e.
 parts of a book created with @code{\bookpart} blocks.
 
 @end table
@@ -468,6 +468,10 @@ collisions.
 
 @end itemize
 
+For multi-page scores with a ragged bottom on the last page, the last
+page uses the same spacing as the preceding page, provided there is
+enough space for that.
+
 Specific methods for modifying alists are discussed in
 @ref{Modifying alists}.  The following example demonstrates the
 two ways these alists can be modified.  The first declaration
index 9849b93546593a2eff8351f432708b95d8f595ae..7fe191f1d5a3a9600d8405b0ed51e0966b9927ab 100644 (file)
@@ -12,7 +12,7 @@ DOC_PO_SOURCES = python/auxiliar/postprocess_html.py \
  scripts/auxiliar/tely-gettext.py scripts/auxiliar/translations-status.py
 TELY_FILES = $(shell ls $(depth)/Documentation/*.tely)
 TELY_FILES += $(foreach l, $(LANGS), $(shell ls $(depth)/Documentation/$(l)/*.tely))
-LSR_LYS := $(shell ls $(depth)/Documentation/snippets/*.ly)
+LSR_LYS = $(shell ls $(depth)/Documentation/snippets/*.ly)
 TELY_FILES += $(LSR_LYS:%.ly=../%.ly)
 
 messages: $(outdir)/messages
index 47169a559bd1c801a0e18a3336793f2869e5b813..2d1ec280efcac961a26279716ee1fe3f56d15da0 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.14.0"
+\version "2.15.31"
 
 \header {
   lsrtags = "text, tweaks-and-overrides, contexts-and-engravers"
@@ -17,29 +17,23 @@ been shifted via @code{force-hshift}.
 #(define (Text_align_engraver ctx)
   (let ((scripts '())
         (note-column #f))
-
-    `((acknowledgers
-       (note-column-interface
-        . ,(lambda (trans grob source)
-             ;; cache NoteColumn in this Voice context
-             (set! note-column grob)))
-
-       (text-script-interface
-        . ,(lambda (trans grob source)
-             ;; whenever a TextScript is acknowledged,
-             ;; add it to `scripts' list
-             (set! scripts (cons grob scripts)))))
-
-      (stop-translation-timestep
-       . ,(lambda (trans)
-            ;; if any TextScript grobs exist,
-            ;; set NoteColumn as X-parent
-            (and (pair? scripts)
-                 (for-each (lambda (script)
-                             (set! (ly:grob-parent script X) note-column))
-                           scripts))
-            ;; clear scripts ready for next timestep
-            (set! scripts '()))))))
+    (make-engraver
+     (acknowledgers
+      ((note-column-interface trans grob source)
+       ;; cache NoteColumn in this Voice context
+       (set! note-column grob))
+      ((text-script-interface trans grob source)
+       ;; whenever a TextScript is acknowledged,
+       ;; add it to `scripts' list
+       (set! scripts (cons grob scripts))))
+     ((stop-translation-timestep trans)
+      ;; if any TextScript grobs exist,
+      ;; set NoteColumn as X-parent
+      (for-each (lambda (script)
+                 (set! (ly:grob-parent script X) note-column))
+               scripts)
+      ;; clear scripts ready for next timestep
+      (set! scripts '())))))
 
 \layout {
   \context {
index 379dc69147c3e608845aabccf44041bd0aff84c1..8958cd9e128f9f56a1261983465966afd98253be 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.14.0"
+\version "2.15.31"
 
 \header {
 
 %%% Grob utilities
 %%%
 %%% These are literal rewrites of some C++ methods used by the ambitus engraver.
-#(define (ly:event::in-event-class event class-name)
-   "Check if @var{event} the given class.
-Rewrite of @code{Stream_event::internal_in_event_class} from @file{lily/stream-event.cc}."
-   (memq class-name (ly:make-event-class (ly:event-property event 'class))))
 
 #(define (ly:separation-item::add-conditional-item grob grob-item)
    "Add @var{grob-item} to the array of conditional elements of @var{grob}.
@@ -188,7 +184,7 @@ position of middle C and key signature from @var{translator}'s context."
    ;; Get the event that caused the note-grob creation
    ;; and check that it is a note-event.
    (let ((note-event (ly:grob-property note-grob 'cause)))
-     (if (ly:event::in-event-class note-event 'note-event)
+     (if (ly:in-event-class? note-event 'note-event)
          ;; get the pitch from the note event
          (let ((pitch (ly:event-property note-event 'pitch)))
            ;; if this pitch is lower than the current ambitus lower
@@ -292,23 +288,24 @@ position of middle C and key signature from @var{translator}'s context."
    (lambda (context)
      (let ((ambitus #f))
        ;; when music is processed: make the ambitus object, if not already built
-       `((process-music . ,(lambda (translator)
-                             (if (not ambitus)
-                                 (set! ambitus (make-ambitus translator)))))
-         ;; set the ambitus clef and key signature state
-         (stop-translation-timestep . ,(lambda (translator)
-                                         (if ambitus
-                                             (initialize-ambitus-state ambitus translator))))
-         ;; when a note-head grob is built, update the ambitus notes
-         (acknowledgers
-          (note-head-interface . ,(lambda (engraver grob source-engraver)
-                                    (if ambitus
-                                        (update-ambitus-notes ambitus grob)))))
-         ;; finally, typeset the ambitus according to its upper and lower notes
-         ;; (if any).
-         (finalize . ,(lambda (translator)
-                        (if ambitus
-                            (typeset-ambitus ambitus translator))))))))
+       (make-engraver
+       ((process-music translator)
+        (if (not ambitus)
+            (set! ambitus (make-ambitus translator))))
+       ;; set the ambitus clef and key signature state
+       ((stop-translation-timestep translator)
+        (if ambitus
+            (initialize-ambitus-state ambitus translator)))
+       ;; when a note-head grob is built, update the ambitus notes
+       (acknowledgers
+          ((note-head-interface engraver grob source-engraver)
+          (if ambitus
+              (update-ambitus-notes ambitus grob))))
+       ;; finally, typeset the ambitus according to its upper and lower notes
+       ;; (if any).
+       ((finalize translator)
+        (if ambitus
+            (typeset-ambitus ambitus translator)))))))
 
 %%%
 %%% Example
index 03e0578af27e012b19d97a9fa3ef3036eca76bd1..2b86eb9f1aa2ae13654fc17e472ec1da1ad06992 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.14.0"
+\version "2.15.31"
 
 \header {
   lsrtags = "pitches"
@@ -15,21 +15,19 @@ object it sees.
 }
 
 #(define Ez_numbers_engraver
-   (list
-    (cons 'acknowledgers
-          (list
-           (cons 'note-head-interface
-                 (lambda (engraver grob source-engraver)
-                   (let* ((context (ly:translator-context engraver))
-                          (tonic-pitch (ly:context-property context 'tonic))
-                          (tonic-name (ly:pitch-notename tonic-pitch))
-                          (grob-pitch
-                           (ly:event-property (event-cause grob) 'pitch))
-                          (grob-name (ly:pitch-notename grob-pitch))
-                          (delta (modulo (- grob-name tonic-name) 7))
-                          (note-names
-                           (make-vector 7 (number->string (1+ delta)))))
-                     (ly:grob-set-property! grob 'note-names note-names))))))))
+   (make-engraver
+    (acknowledgers
+     ((note-head-interface engraver grob source-engraver)
+      (let* ((context (ly:translator-context engraver))
+            (tonic-pitch (ly:context-property context 'tonic))
+            (tonic-name (ly:pitch-notename tonic-pitch))
+            (grob-pitch
+             (ly:event-property (event-cause grob) 'pitch))
+            (grob-name (ly:pitch-notename grob-pitch))
+            (delta (modulo (- grob-name tonic-name) 7))
+            (note-names
+             (make-vector 7 (number->string (1+ delta)))))
+       (ly:grob-set-property! grob 'note-names note-names))))))
 
 #(set-global-staff-size 26)
 
index 72935e8a773072fda59f73053726908c366f8d5f..9e265f68877031eeb9e2b7699a66080aec40ee4b 100644 (file)
 
 
 @newsItem
-@subsubheading LilyPond 2.15.29 released!  @emph{Feb 9, 2012}
-
-We are happy to announce the release of LilyPond 2.15.29.  This
-release contains the usual number of bugfixes.
-
-It is strongly recommended that normal users do @strong{not} use
-this release, and instead use the stable 2.14 version.  Please
-note that due to a few Critical bugs, this is not the next release
-candidate.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond 2.15.28 released!  @emph{Feb 3, 2012}
-
-We are happy to announce the release of LilyPond 2.15.28.  This
-release contains the usual number of bugfixes.
-
-It is strongly recommended that normal users do @strong{not} use
-this release, and instead use the stable 2.14 version.  Please
-note that due to a few Critical bugs, this is not the next release
-candidate.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond 2.15.27 released!  @emph{Jan 24, 2012}
-
-We are happy to announce the release of LilyPond 2.15.27.  This
-release contains the usual number of bugfixes.
-
-It is strongly recommended that normal users do @strong{not} use
-this release, and instead use the stable 2.14 version.  Please
-note that due to a few Critical bugs, this is not the next release
-candidate.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading The LilyPond Report #23. @emph{Jan 20, 2012}
-
-The @emph{LilyPond Report} is back, with developer
-David Kastrup as a new editor!  This issue features
-an exposé on some of the new, handy commands
-recently added to LilyPond, as well as an interview
-with LilyPond contributor and composer Mike Solomon.
-
-Come
-@uref{http://news.lilynet.net/?The-LilyPond-Report-23, read
-LilyPond Report 23} now; comments and contributions are
-+warmly encouraged!
-
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond 2.15.26 released!  @emph{Jan 16, 2012}
-
-We are happy to announce the release of LilyPond 2.15.26.  This
-release contains the usual number of bugfixes.
-
-It is strongly recommended that normal users do @strong{not} use
-this release, and instead use the stable 2.14 version.  Please
-note that due to a few Critical bugs, this is not the next release
-candidate.
-
-The 2.15.25 has been skipped due to build problems.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond 2.15.24 released!  @emph{Jan 07, 2012}
-
-We are happy to announce the release of LilyPond 2.15.24.  This
-release contains the usual number of bugfixes.
-
-It is strongly recommended that normal users do @strong{not} use
-this release, and instead use the stable 2.14 version.  Please
-note that due to a few Critical bugs, this is not the next release
-candidate.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond 2.15.23 released!  @emph{Dec 21, 2011}
-
-We are happy to announce the release of LilyPond 2.15.23.  This
-release contains the usual number of bugfixes.
-
-It is strongly recommended that normal users do @strong{not} use
-this release, and instead use the stable 2.14 version.  Please
-note that due to a few Critical bugs, this is not the next release
-candidate.
+@subsubheading Release candidate 3 of 2.16 - LilyPond 2.15.30 released!  @emph{Feb 17, 2012}
+
+LilyPond 2.15.30 is out; this is the third release candidate of
+the upcoming 2.16 stable release.  All users are invited to
+experiment with this version.  New features since 2.14.2 are
+listed in the @qq{Changes} manual on the website section about
+@ref{Development}.
+
+There are no known Critical issues with this release.  If no
+Critical bugs are found, then the official 2.16.0 release will be
+on 02 March 2012.  If you discover any problems, please send us
+@ref{Bug reports}.
 
 @newsEnd
 
index 11555cdb451ad3d7fc81c1e518e381aac74c33bc..c5fd9cc014244814485e5aabd89a3609d088809e 100644 (file)
@@ -27,6 +27,109 @@ NOTE:
 @end ignore
 
 
+@newsItem
+@subsubheading LilyPond 2.15.29 released!  @emph{Feb 9, 2012}
+
+We are happy to announce the release of LilyPond 2.15.29.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.  Please
+note that due to a few Critical bugs, this is not the next release
+candidate.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.15.28 released!  @emph{Feb 3, 2012}
+
+We are happy to announce the release of LilyPond 2.15.28.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.  Please
+note that due to a few Critical bugs, this is not the next release
+candidate.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.15.27 released!  @emph{Jan 24, 2012}
+
+We are happy to announce the release of LilyPond 2.15.27.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.  Please
+note that due to a few Critical bugs, this is not the next release
+candidate.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #23. @emph{Jan 20, 2012}
+
+The @emph{LilyPond Report} is back, with developer
+David Kastrup as a new editor!  This issue features
+an exposé on some of the new, handy commands
+recently added to LilyPond, as well as an interview
+with LilyPond contributor and composer Mike Solomon.
+
+Come
+@uref{http://news.lilynet.net/?The-LilyPond-Report-23, read
+LilyPond Report 23} now; comments and contributions are
++warmly encouraged!
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.15.26 released!  @emph{Jan 16, 2012}
+
+We are happy to announce the release of LilyPond 2.15.26.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.  Please
+note that due to a few Critical bugs, this is not the next release
+candidate.
+
+The 2.15.25 has been skipped due to build problems.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.15.24 released!  @emph{Jan 07, 2012}
+
+We are happy to announce the release of LilyPond 2.15.24.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.  Please
+note that due to a few Critical bugs, this is not the next release
+candidate.
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.15.23 released!  @emph{Dec 21, 2011}
+
+We are happy to announce the release of LilyPond 2.15.23.  This
+release contains the usual number of bugfixes.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.  Please
+note that due to a few Critical bugs, this is not the next release
+candidate.
+
+@newsEnd
+
+
 @newsItem
 @subsubheading LilyPond 2.15.22 released!  @emph{Dec 15, 2011}
 
index 2cd9723edc0191ab2f90c469be18b1c1d8148f8f..bd2d0ce5a37156b2e4dfef095a64d15f9683ece1 100644 (file)
@@ -128,6 +128,8 @@ WEB_TRACKED_FILES = $(filter-out $(outdir)/index.html, \
                     $(shell bash -O nullglob -c "echo $(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}")) \
                     $(shell bash -O nullglob -c "echo input/$(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") \
                     $(shell bash -O nullglob -c "echo input/*/$(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") \
+                    $(shell bash -O nullglob -c "echo input/*/*/$(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") \
+                    $(shell bash -O nullglob -c "echo input/regression/lilypond-book/$(outdir)/*.{info,tex}") \
                     $(shell bash -O nullglob -c "echo Documentation/$(outdir)/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}") \
                     $(shell bash -O nullglob -c "echo Documentation/$(outdir)/*/*.{midi,html,pdf,png,jpg,jpeg,txt,ly,ily,signature,css,zip,js,idx,php}")
 
diff --git a/VERSION b/VERSION
index 0f2688971592a1013f3b4c4815d581c1cf5bccff..533839d81a7d155290d776936cba0fc4e6db266f 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=15
-PATCH_LEVEL=30
+PATCH_LEVEL=31
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.14.2
-VERSION_DEVEL=2.15.29
+VERSION_DEVEL=2.15.30
index b2fc7f4be7cfa6b7e845e56e8e901cef327d4155..0189be15b2aedb767832d777eccd8c6955dde845 100644 (file)
@@ -210,7 +210,7 @@ STEPMAKE_PERL(OPTIONAL)
 
 STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.11)
 STEPMAKE_PROGS(TEXI2HTML, texi2html, OPTIONAL, 1.82)
-STEPMAKE_PROGS(DBLATEX, dblatex, OPTIONAL)
+STEPMAKE_PROGS(DBLATEX, dblatex, OPTIONAL, 0.1.4)
 STEPMAKE_PROGS(PDFLATEX, pdflatex, OPTIONAL)
 STEPMAKE_PROGS(NETPBM, pngtopnm, OPTIONAL)
 STEPMAKE_PROGS(IMAGEMAGICK, convert, OPTIONAL)
diff --git a/input/regression/extratoken.ly b/input/regression/extratoken.ly
new file mode 100644 (file)
index 0000000..754b1f5
--- /dev/null
@@ -0,0 +1,20 @@
+\header {
+  texidoc = "A mode switching command like @code{\\lyricsto} will
+`pop state' when seeing the lookahead token @code{\\time}, a music
+function, after its non-delimited argument.  This must not cause the
+extra token parsing state for the music function to disappear."
+}
+
+\paper {
+  ragged-right = ##t
+}
+
+\version "2.15.31"
+
+x=\lyrics { oh }
+
+<< 
+  \new Voice = m { c'4 r r }
+  \lyricsto "m" \x
+  \time 3/4
+>>
index 4cec06b66140d5f77e9982743d6b87208d5b259f..ff6cd10b481b54ed7e7e2b6de5910cb28c2bd8f6 100644 (file)
@@ -33,5 +33,12 @@ $(outdir)/collated-files.list: $(OUT_FILES)
 $(outdir)/suffix-texi.texi: suffix-texi.texi $(outdir)/version.itexi $(DOCUMENTATION_LOCALE_TARGET) $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
        LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
 
+# Due to automatic language detection the standard rule using the script
+# extract_texi_filenames would create .es.xref-map for these files. The
+# following rule is to circumvent this for the purpose of the build. For
+# the regression tests the .xref-map files are empty and not used anyway.
+$(XREF_MAPS_DIR)/texinfo-include-language-detection.xref-map $(XREF_MAPS_DIR)/texinfo-language-detection.xref-map: %:
+       touch $@
+
 # Prevent parallel lilypond-book instances for this subdir
 .NOTPARALLEL:
index d78e85a5db27cfe4bedbaa6526b90db66c0e3149..fa32f95200fe176a32b7822cfa8cce475a823cb9 100644 (file)
@@ -8,7 +8,7 @@
 
 }
 
-\version "2.14.0"
+\version "2.15.31"
 
 \layout {
   \context {
          (set! instance-counter (1+ instance-counter))
          (let ((instance-id instance-counter)
                (private-note-counter 0))
-           `((listeners
-              (note-event
-               . ,(lambda (engraver event)
-                    (set! private-note-counter (1+ private-note-counter))
-                    (let ((text (ly:engraver-make-grob engraver 'TextScript event)))
-                      (ly:grob-set-property! text 'text
-                                             (format #f "~a.~a" instance-id
-                                                     private-note-counter))))))))))
+          (make-engraver
+           (listeners
+              ((note-event engraver event)
+              (set! private-note-counter (1+ private-note-counter))
+              (let ((text (ly:engraver-make-grob engraver 'TextScript event)))
+                (ly:grob-set-property! text 'text
+                                       (format #f "~a.~a" instance-id
+                                               private-note-counter)))))))))
   }
 }
 
index 115429f90cc4a5fb98c534dc5cfbeb421c82a223..0be6f0d94719f2064eb8f28793a6e129ce79ba04 100644 (file)
@@ -5,68 +5,49 @@
 
 }
 
-\version "2.14.0"
+\version "2.15.31"
 
 \layout {
   \context {
     \Voice
     \consists
-    #(list
-      (cons 'initialize
-       (lambda (trans)
-       (display (list "initialize"
-                 (ly:context-current-moment
-                  (ly:translator-context trans)) "\n") (current-error-port))))
-      (cons 'start-translation-timestep
-       (lambda (trans)
-       (display (list "start-trans"
-                 (ly:context-current-moment
-                  (ly:translator-context trans)) "\n") (current-error-port))))
-      (cons 'listeners
-       (list
-       (cons 'rest-event (lambda (engraver event)
-                          (let*
-                           ((x (ly:engraver-make-grob engraver 'TextScript event)))
-                           (display (list "caught event" event "\ncreate:\n" x "\n") (current-error-port))
-                           (ly:grob-set-property! x 'text "hi"))
-                          ))
-       ))
-      (cons 'acknowledgers
-       (list
-       (cons 'note-head-interface
-        (lambda (engraver grob source-engraver)
-         (display (list "saw head: " grob " coming from " source-engraver) (current-error-port))
-         ))
-       ))
-      (cons 'end-acknowledgers
-       (list
-       (cons 'beam-interface
-        (lambda (engraver grob source-engraver)
-         (display (list "saw end of beam: " grob " coming from " source-engraver) (current-error-port))
-         ))
-       ))
-      (cons 'process-music
-       (lambda (trans)
-       (display (list "process-music"
-                 (ly:context-current-moment
-                  (ly:translator-context trans)) "\n") (current-error-port))))
-      (cons 'process-acknowledged
-       (lambda (trans)
-       (display (list "process-acknowledged"
-                 (ly:context-current-moment
-                  (ly:translator-context trans)) "\n") (current-error-port))))
-      (cons 'stop-translation-timestep
-       (lambda (trans)
-       (display (list "stop-trans"
-                 (ly:context-current-moment
-                  (ly:translator-context trans)) "\n") (current-error-port))))
-      (cons 'finalize
-       (lambda (trans)
-       (display (list "finalize"
-                 (ly:context-current-moment
-                  (ly:translator-context trans)) "\n") (current-error-port))))
-    )
-
+    #(make-engraver
+      ((initialize trans)
+       (display (list "initialize"
+                     (ly:context-current-moment
+                      (ly:translator-context trans)) "\n") (current-error-port)))
+      ((start-translation-timestep trans)
+       (display (list "start-trans"
+                     (ly:context-current-moment
+                      (ly:translator-context trans)) "\n") (current-error-port)))
+      (listeners
+       ((rest-event engraver event)
+       (let*
+           ((x (ly:engraver-make-grob engraver 'TextScript event)))
+         (display (list "caught event" event "\ncreate:\n" x "\n") (current-error-port))
+         (ly:grob-set-property! x 'text "hi"))))
+      (acknowledgers
+       ((note-head-interface engraver grob source-engraver)
+       (display (list "saw head: " grob " coming from " source-engraver) (current-error-port))))
+      (end-acknowledgers
+       ((beam-interface engraver grob source-engraver)
+       (display (list "saw end of beam: " grob " coming from " source-engraver) (current-error-port))))
+      ((process-music trans)
+       (display (list "process-music"
+                     (ly:context-current-moment
+                      (ly:translator-context trans)) "\n") (current-error-port)))
+      ((process-acknowledged trans)
+       (display (list "process-acknowledged"
+                     (ly:context-current-moment
+                      (ly:translator-context trans)) "\n") (current-error-port)))
+      ((stop-translation-timestep trans)
+       (display (list "stop-trans"
+                     (ly:context-current-moment
+                      (ly:translator-context trans)) "\n") (current-error-port)))
+      ((finalize trans)
+       (display (list "finalize"
+                     (ly:context-current-moment
+                      (ly:translator-context trans)) "\n") (current-error-port))))
                }}
 
 
index 6541f05a3463941d0e0b7d8cc350dbb4c4061227..c0204d55c71865f3c35ae69d28387916725b9adf 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.14.0"
+\version "2.15.31"
 
 \header {
   texidoc = "Use @code{define-event-class}, scheme engraver methods,
@@ -119,64 +119,58 @@ schemeTextSpannerEngraver =
          (finished '())
          (current-event '())
          (event-drul '(() . ())))
-     (list (cons 'listeners
-                 (list (cons 'scheme-text-span-event
-                             (lambda (engraver event)
-                               (if (= START (ly:event-property event 'span-direction))
-                                   (set-car! event-drul event)
-                                   (set-cdr! event-drul event))))))
-           (cons 'acknowledgers
-                 (list (cons 'note-column-interface
-                             (lambda (engraver grob source-engraver)
-                               (if (ly:spanner? span)
-                                   (begin
-                                     (ly:pointer-group-interface::add-grob span 'note-columns grob)
-                                     (add-bound-item span grob)))
-                               (if (ly:spanner? finished)
-                                   (begin
-                                     (ly:pointer-group-interface::add-grob finished 'note-columns grob)
-                                     (add-bound-item finished grob)))))))
-           (cons 'process-music
-                 (lambda (trans)
-                   (if (ly:stream-event? (cdr event-drul))
-                       (if (null? span)
-                           (ly:warning "You're trying to end a scheme text spanner but you haven't started one.")
-                           (begin (set! finished span)
-                                  (ly:engraver-announce-end-grob trans finished current-event)
-                                  (set! span '())
-                                  (set! current-event '())
-                                  (set-cdr! event-drul '()))))
-                   (if (ly:stream-event? (car event-drul))
-                       (begin (set! current-event (car event-drul))
-                              (set! span (ly:engraver-make-grob trans 'SchemeTextSpanner current-event))
-                              (set-axis! span Y)
-                              (set-car! event-drul '())))))
-           (cons 'stop-translation-timestep
-                 (lambda (trans)
-                   (if (and (ly:spanner? span)
-                            (null? (ly:spanner-bound span LEFT)))
-                       (set! (ly:spanner-bound span LEFT)
-                             (ly:context-property context 'currentMusicalColumn)))
-                   (if (ly:spanner? finished)
-                       (begin
-                         (if (null? (ly:spanner-bound finished RIGHT))
-                             (set! (ly:spanner-bound finished RIGHT)
-                                   (ly:context-property context 'currentMusicalColumn)))
-                         (set! finished '())
-                         (set! event-drul '(() . ()))))))
-           (cons 'finalize
-                 (lambda (trans)
-                   (if (ly:spanner? finished)
-                       (begin
-                         (if (null? (ly:spanner-bound finished RIGHT))
-                             (set! (ly:spanner-bound finished RIGHT)
-                                   (ly:context-property context 'currentMusicalColumn)))
-                         (set! finished '())))
-                   (if (ly:spanner? span)
-                       (begin
-                         (ly:warning "I think there's a dangling scheme text spanner :-(")
-                         (ly:grob-suicide! span)
-                         (set! span '()))))))))
+     (make-engraver
+      (listeners ((scheme-text-span-event engraver event)
+                 (if (= START (ly:event-property event 'span-direction))
+                     (set-car! event-drul event)
+                     (set-cdr! event-drul event))))
+      (acknowledgers ((note-column-interface engraver grob source-engraver)
+                     (if (ly:spanner? span)
+                         (begin
+                           (ly:pointer-group-interface::add-grob span 'note-columns grob)
+                           (add-bound-item span grob)))
+                     (if (ly:spanner? finished)
+                         (begin
+                           (ly:pointer-group-interface::add-grob finished 'note-columns grob)
+                           (add-bound-item finished grob)))))
+      ((process-music trans)
+       (if (ly:stream-event? (cdr event-drul))
+          (if (null? span)
+              (ly:warning "You're trying to end a scheme text spanner but you haven't started one.")
+              (begin (set! finished span)
+                     (ly:engraver-announce-end-grob trans finished current-event)
+                     (set! span '())
+                     (set! current-event '())
+                     (set-cdr! event-drul '()))))
+       (if (ly:stream-event? (car event-drul))
+          (begin (set! current-event (car event-drul))
+                 (set! span (ly:engraver-make-grob trans 'SchemeTextSpanner current-event))
+                 (set-axis! span Y)
+                 (set-car! event-drul '()))))
+      ((stop-translation-timestep trans)
+       (if (and (ly:spanner? span)
+               (null? (ly:spanner-bound span LEFT)))
+          (set! (ly:spanner-bound span LEFT)
+                (ly:context-property context 'currentMusicalColumn)))
+       (if (ly:spanner? finished)
+          (begin
+            (if (null? (ly:spanner-bound finished RIGHT))
+                (set! (ly:spanner-bound finished RIGHT)
+                      (ly:context-property context 'currentMusicalColumn)))
+            (set! finished '())
+            (set! event-drul '(() . ())))))
+      ((finalize trans)
+       (if (ly:spanner? finished)
+          (begin
+            (if (null? (ly:spanner-bound finished RIGHT))
+                (set! (ly:spanner-bound finished RIGHT)
+                      (ly:context-property context 'currentMusicalColumn)))
+            (set! finished '())))
+       (if (ly:spanner? span)
+          (begin
+            (ly:warning "I think there's a dangling scheme text spanner :-(")
+            (ly:grob-suicide! span)
+            (set! span '())))))))
 
 schemeTextSpannerStart =
 #(make-span-event 'SchemeTextSpanEvent START)
index ea7785b947c687e39f0ce73cb5c94b29600bb657..1872af74ce740499b504667e426d916c0935a12c 100644 (file)
@@ -86,9 +86,3 @@ $(outdir)/relocate.o: $(outdir)/version.hh
 $(outdir)/warn-scheme.o: $(outdir)/version.hh
 
 local-po: $(outdir)/parser.cc
-
-# ugh.  For --srcdir builds, these must exist to satisfy their broken
-# lexer.dep and parser.dep file entries.
-ifneq ($(configure-srcdir),.)
-.PRECIOUS: $(outdir)/lexer.cc $(outdir)/parser.cc
-endif
index df866c2472a62d7d476b0798ce73ff5270bfe05c..00b10f9616904e6e42e14f92e5af62fffefc064f 100644 (file)
@@ -292,7 +292,9 @@ Context_def::get_translator_names (SCM user_mod) const
       if (ly_symbol2scm ("consists") == tag)
         l1 = scm_cons (arg, l1);
       else if (ly_symbol2scm ("remove") == tag
-               && get_translator (arg))
+               && (scm_is_pair (arg)
+                  || ly_is_procedure (arg)
+                  || get_translator (arg)))
         l1 = scm_delete_x (arg, l1);
     }
 
index 0bc937f2b3b7559e212dd14950aad9d7baf7b121..fb69922493ff6877c5c0388e8491346cac56d493 100644 (file)
@@ -67,6 +67,7 @@ typedef struct
 {
   void (*listen_callback) (void *, SCM);
   void (*mark_callback) (void *);
+  bool (*equal_callback) (void *, void *);
 } Listener_function_table;
 
 class Listener
@@ -81,7 +82,9 @@ public:
   void listen (SCM ev) const;
 
   bool operator == (Listener const &other) const
-  { return target_ == other.target_ && type_ == other.type_; }
+  { return type_ == other.type_
+      && (*type_->equal_callback)((void *) target_, (void *) other.target_ );
+  }
 
   DECLARE_SIMPLE_SMOBS (Listener);
 };
@@ -100,12 +103,18 @@ cl :: method ## _mark (void *self)                      \
   cl *s = (cl *)self;                                   \
   scm_gc_mark (s->self_scm ());                         \
 }                                                       \
+bool                                                    \
+cl :: method ## _is_equal (void *a, void *b)            \
+{                                                       \
+  return a == b;                                        \
+}                                                       \
 Listener                                                \
 cl :: method ## _listener () const                      \
 {                                                       \
   static Listener_function_table callbacks;             \
   callbacks.listen_callback = &cl::method ## _callback; \
   callbacks.mark_callback = &cl::method ## _mark;       \
+  callbacks.equal_callback = &cl::method ## _is_equal;  \
   return Listener (this, &callbacks);                   \
 }
 
@@ -115,6 +124,7 @@ cl :: method ## _listener () const                      \
   inline void name (SCM);                               \
   static void name ## _callback (void *self, SCM ev);   \
   static void name ## _mark (void *self);               \
+  static bool name ## _is_equal (void *a, void *b);    \
   Listener name ## _listener () const
 
 #endif /* LISTENER_HH */
index 8c016f6405da0c1227162d3ccbe5d53484d6645f..c2d8b6baeff1273520aa7a68eb32492ad286ec3e 100644 (file)
@@ -834,10 +834,20 @@ Lily_lexer::push_note_state (SCM tab)
 void
 Lily_lexer::pop_state ()
 {
+       bool extra = (YYSTATE == extratoken);
+
+       if (extra)
+               yy_pop_state ();
+
        if (YYSTATE == notes || YYSTATE == chords)
                pitchname_tab_stack_ = scm_cdr (pitchname_tab_stack_);
 
        yy_pop_state ();
+
+       if (extra) {
+               hidden_state_ = YYSTATE;
+               yy_push_state (extratoken);
+       }
 }
 
 int
index d830cb4c57db08c9acf4e32aafbf03b234d4b587..29f4f2a1e0fddabd54aebd9cc6e257d014aafd14 100644 (file)
@@ -1952,16 +1952,19 @@ context_mod:
        | context_def_mod STRING {
                $$ = scm_list_2 ($1, $2);
        }
-       | context_def_mod embedded_scm {
-          if (ly_symbol2scm ("consists") != $1)
-          {
-            $$ = SCM_EOL;
-             parser->parser_error (@1, _ ("only \\consists takes non-string argument."));
-          }
-          else
-          {
-            $$ = scm_list_2 ($1, $2);
-          }
+       | context_def_mod embedded_scm
+       {
+               if (!scm_is_string ($2)
+                   && ly_symbol2scm ("consists") != $1
+                   && ly_symbol2scm ("remove") != $1)
+               {
+                       $$ = SCM_EOL;
+                       parser->parser_error (@1, _ ("only \\consists and \\remove take non-string argument."));
+               }
+               else
+               {
+                       $$ = scm_list_2 ($1, $2);
+               }
        }
        ;
 
index cde829a60788bec5b140942dad26a6fd75168184..1b1aad924ac1efd10e3bb2c19148646572ca70c2 100644 (file)
@@ -186,10 +186,19 @@ void mark_listen_closure (void *target)
   scm_gc_mark ((SCM)target);
 }
 
+static
+bool equal_listen_closure (void *a, void *b)
+{
+  SCM target_a = (SCM) a;
+  SCM target_b = (SCM) b;
+
+  return ly_is_equal (target_a, target_b);
+}
+
 Listener_function_table listen_closure
 =
 {
-  call_listen_closure, mark_listen_closure
+  call_listen_closure, mark_listen_closure, equal_listen_closure
 };
 
 /* static */
index 71d560b0751070b1b36814d876d7071a77e10578..20615e8c2ae48bc65fd9047ce927264fba313c69 100644 (file)
@@ -32,7 +32,7 @@
 
 
 
-\version "2.15.0"
+\version "2.15.31"
 
 %%%% Helper functions
 
@@ -205,21 +205,19 @@ optionally outputs to the console as well."
 \layout {
   \context {
   \Voice
-  \consists #(list
-              (cons 'listeners
-                    (list
-                     (cons 'tempo-change-event format-tempo)
-                     (cons 'rest-event format-rest)
-                     (cons 'note-event format-note)
-                     (cons 'articulation-event format-articulation)
-                     (cons 'text-script-event format-text)
-                     (cons 'slur-event format-slur)
-                     (cons 'breathing-event format-breathe)
-                     (cons 'dynamic-event format-dynamic)
-                     (cons 'crescendo-event format-cresc)
-                     (cons 'decrescendo-event format-decresc)
-                     (cons 'text-span-event format-textspan)
-                     (cons 'tie-event format-tie)
-                     )))
+  \consists #(make-engraver
+              (listeners
+              (tempo-change-event . format-tempo)
+              (rest-event . format-rest)
+              (note-event . format-note)
+              (articulation-event . format-articulation)
+              (text-script-event . format-text)
+              (slur-event . format-slur)
+              (breathing-event . format-breathe)
+              (dynamic-event . format-dynamic)
+              (crescendo-event . format-cresc)
+              (decrescendo-event . format-decresc)
+              (text-span-event . format-textspan)
+              (tie-event . format-tie)))
   }
 }
index 3cdd664471ffc6541a413c2c4c019950c3d77a9f..289b73bf06586880d5983a98226cc0a2788cd5aa 100644 (file)
@@ -4,22 +4,21 @@
 # Explicitly list the dependencies on generated content
 $(outdir)/web.texi: $(outdir)/weblinks.itexi
 
-$(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(TRANSLATION_LILY_IMAGES)
+$(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html: $(outdir)/%/index.html $(TRANSLATION_LILY_IMAGES)
        mkdir -p $(dir $@)
-       mkdir -p $(outdir)/$*
-       DEPTH=$(depth)/../ $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) --output=$(outdir)/$* $< >$*.splittexi.log 2>&1
        find $(outdir)/$* -name '*.html' | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link --prepend-suffix .$(ISOLANG) hard $(outdir) $(top-build-dir)/Documentation/$(outdir)
 
-$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(TRANSLATION_LILY_IMAGES)
-       DEPTH=$(depth) $(TEXI2HTML) -D bigpage $(TEXI2HTML_FLAGS) --output=$@ $< >$*.bigtexi.log 2>&1
+$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html: $(outdir)/%-big-page.html $(TRANSLATION_LILY_IMAGES)
+       mkdir -p $(dir $@)
+       cp -f $< $@
 
-$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi
-       DEPTH=$(depth) $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $< >$*.texilog 2>&1
+$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html: $(outdir)/%.html
+       mkdir -p $(dir $@)
+       cp -f $< $@
 
-$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf: $(outdir)/%.texi
-       cd $(outdir) && \
-           texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $*.texi && \
-           mkdir -p $(dir $@) && mv $*.pdf $@
+$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf: $(outdir)/%.pdf
+       mkdir -p $(dir $@)
+       cp -f $< $@
 
 $(outdir)/version.%: $(top-src-dir)/VERSION
        $(PYTHON) $(top-src-dir)/scripts/build/create-version-itexi.py > $@
@@ -30,9 +29,6 @@ $(outdir)/weblinks.%: $(top-src-dir)/VERSION
 $(outdir)/%.png: $(top-build-dir)/Documentation/$(outdir)/%.png
        ln -f $< $@
 
-$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map
-       $(buildscript-dir)/extract_texi_filenames -o $(XREF_MAPS_DIR) $(XREF_MAP_FLAGS) --master-map-file=$(XREF_MAPS_DIR)/$*.xref-map $<
-
 $(MASTER_TEXI_FILES): $(ITELY_FILES) $(ITEXI_FILES) $(outdir)/pictures
 
 $(outdir)/pictures:
@@ -45,11 +41,11 @@ $(TRANSLATION_LILY_IMAGES): $(MASTER_TEXI_FILES)
        touch $@
 
 $(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+       $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<" "$*.makeinfo.log"
 
 $(outdir)/index.$(ISOLANG).html: TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT)
 $(outdir)/index.$(ISOLANG).html: TEXI2HTML_SPLIT = $(WEB_TEXI2HTML_SPLIT)
 
 $(outdir)/index.$(ISOLANG).html:
-       DEPTH=$(depth) $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(TEXI2HTML_SPLIT) --output=$(outdir)/ web.texi
+       $(buildscript-dir)/run-and-check "DEPTH=$(depth) $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(TEXI2HTML_SPLIT) --output=$(outdir)/ web.texi" "webtexi.log"
        find $(outdir)/ -name '*.html' | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link --prepend-suffix .$(ISOLANG) hard $(outdir) $(top-build-dir)/Documentation/$(outdir)
index 8c20f494bde0106e624edd30e2a9c140267dcd84..2d7ab99ad0377ed54627087863ff7052d8a6b8d1 100644 (file)
@@ -31,15 +31,9 @@ DOCUMENTATION_INCLUDES = \
   -I $(top-build-dir)/Documentation/$(outdir)
 
 LILYPOND_BOOK_INCLUDES += $(DOCUMENTATION_INCLUDES)
-MAKEINFO_FLAGS += --force --enable-encoding $(DOCUMENTATION_INCLUDES)
+MAKEINFO_FLAGS += --enable-encoding $(DOCUMENTATION_INCLUDES)
 MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
-# texi2html xref map files
-# FIXME: duplicated in stepake/texinfo-vars.make make/doc-i18n-root-vars.make
-XREF_MAPS_DIR=$(top-build-dir)/$(outdir)/xref-maps
-XREF_MAPS_FILES=$(TEXINFO_MANUALS:%=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map)
-XREF_MAP_FLAGS += -I $(outdir) -I $(src-dir) $(DOCUMENTATION_INCLUDES)
-
 WEB_MANUALS=web
 
 ###########
@@ -59,12 +53,8 @@ TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_LANG) $(TEXI2HTML_INIT)
 TEXI2HTML = TOP_SRC_DIR=$(top-src-dir) PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
 ###########
 
-TEXI2PDF_FLAGS += --batch $(DOCUMENTATION_INCLUDES)
+TEXI2PDF_FLAGS +=  $(DOCUMENTATION_INCLUDES)
 TEXI2PDF_FLAGS += -I $(LYS_OUTPUT_DIR)
 
-ifdef QUIET_BUILD
-TEXI2PDF_FLAGS += -q
-endif
-
 DOCUMENTATION_LOCALE_TARGET = $(outdir)/doc-po
 TRANSLATION_LILY_IMAGES = $(outdir)/translation-lily-images
index e5a03790b4ae37d9fee09a56aae7fa5303d8a122..b0cf7663b158b43c687b6749c9b0988c1bd9c223 100644 (file)
@@ -23,7 +23,7 @@ $(outdir)/%.tex:  %.tex
 $(outdir)/%.tex:  %.latex
        $(LILYPOND_BOOK_COMMAND) --pdf -o $(outdir) $<
 
-# Add the tex => pdf rule only if we have dblatex
+# Add the tex => pdf rule only if we have pdflatex
 ifeq (,$(findstring pdflatex,$(MISSING_OPTIONAL)))
 $(outdir)/%.pdf:  $(outdir)/%.tex
        cd $(outdir) && $(PDFLATEX) $(notdir $<)
index 910cadc1200f6c3ab663dd0faf3ae4ab0911253e..fdf025bf6cf585acab99ca8133316fe443f04a63 100644 (file)
@@ -21,7 +21,7 @@ OUT_HTML_FILES = ${HTML_FILES:%.html=$(outdir)/%.html}
 OUT_HTMLY_FILES = ${HTMLY_FILES:%.htmly=$(outdir)/%.html}
 OUT_XML_FILES = ${XML_FILES:%.xml=$(outdir)/%.html}
 # If we have pdflatex, create the pdf, otherwise only the .tex file!
-ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL)))
+ifeq (,$(findstring pdflatex,$(MISSING_OPTIONAL)))
 OUT_LYTEX_FILES = ${LYTEX_FILES:%.lytex=$(outdir)/%.pdf}
 OUT_LATEX_FILES = ${LATEX_FILES:%.latex=$(outdir)/%.pdf}
 OUT_TEX_FILES = ${TEX_FILES:%.tex=$(outdir)/%.pdf}
index 0461e1b9c696c5c71fc738eb8e36b96512f76a29..418d1b9f03ac6cb47c03289acb71c82c260b8b82 100644 (file)
@@ -9,9 +9,10 @@ $(outdir)/%.latex: %.doc $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
 
 
 # This allows -j make option while making sure only one lilypond-book instance
-# is running at the same time
+# is running at the same time, using GNU make's order-only prerequisites so
+# as to not create superficial dependencies between unrelated manuals.
 define CHAIN_RULE
-$(i)
+$(i)
 $(i): 
 endef
 
index 4eeb80ed0c32a9768f3438cc88a3172d14c7ff3e..0d49357e46bb85bcce3a790057f138058119c809 100644 (file)
@@ -1,8 +1,5 @@
 .PHONY: download mutopia png ps scores tar
 
-.PRECIOUS: $(outdir)/%.ps $(outdir)/%-book.ps
-.PRECIOUS: $(outdir)-letter/%.ps
-
 
 all:
 
index 97bcd42ef4f18d0d54f2ff9aeb6426e49b5eac70..ad397159c382974c600e5a4746fcd57bf4916dc9 100644 (file)
@@ -163,8 +163,6 @@ $(PE_SCRIPTS): $(buildscript-dir)/gen-emmentaler-scripts
 ALL_FONTS = $(FETA_FONTS)
 PFB_FILES = $(ALL_FONTS:%=$(outdir)/%.pfb)
 
-.PRECIOUS: $(PFB_FILES)
-
 
 # Make tfm files first, log files last,
 # so that normally log files aren't made twice
index 704517ba28be3baf1068d4ab940965cf4c65d4a2..bb732612298cc74531dca6de7c0b85ae9f800a6b 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -4,20 +4,21 @@
 #
 # Tineke de Munnik <jantien@xs4all.nl>, 1998.
 # Maurizio Umberto Puxeddu <umbpux@tin.it>, 1999
-# Federico Bruni <fedelogy@gmail.com>, 2009-2011.
+# Federico Bruni <fedelogy@gmail.com>, 2009-2012.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.15.9\n"
+"Project-Id-Version: lilypond 2.15.29\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2011-08-02 19:43+0200\n"
-"PO-Revision-Date: 2011-08-08 00:25+0200\n"
+"POT-Creation-Date: 2012-02-04 15:42+0100\n"
+"PO-Revision-Date: 2012-02-22 01:00+0100\n"
 "Last-Translator: Federico Bruni <fedelogy@gmail.com>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
 "Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
 #: fontextract.py:25
 #, python-format
@@ -34,49 +35,72 @@ msgstr "Estratto %s"
 msgid "Writing fonts to %s"
 msgstr "Scrittura dei tipi di carattere su %s"
 
-#: book_snippets.py:519
+#: book_snippets.py:409
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "opzione ly-option deprecata: %s=%s"
 
-#: book_snippets.py:521
+#: book_snippets.py:411
 #, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "traduzione in modalità compatibile: %s=%s"
 
-#: book_snippets.py:524
+#: book_snippets.py:414
 #, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "opzione ly-option deprecata: %s"
 
-#: book_snippets.py:526
+#: book_snippets.py:416
 #, python-format
 msgid "compatibility mode translation: %s"
 msgstr "traduzione in modalità compatibile: %s"
 
-#: book_snippets.py:544
+#: book_snippets.py:533
 #, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "l'opzione ly sconosciuta viene ignorata: %s"
 
-#: book_snippets.py:736
+#: book_snippets.py:741
 #, python-format
-msgid "Opening filter `%s'\n"
-msgstr "Apertura del filtro «%s»\n"
+msgid "Running through filter `%s'"
+msgstr "Esecuzione attraverso il filtro «%s»"
 
-#: book_snippets.py:756
+#: book_snippets.py:761
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "«%s» fallito (%d)"
 
-#: book_snippets.py:757
+#: book_snippets.py:762
 msgid "The error log is as follows:"
 msgstr "Il registro dell'errore è il seguente:"
 
+#: book_snippets.py:882
+#, python-format
+msgid "Converting MusicXML file `%s'...\n"
+msgstr "Conversione del file MusicXML «%s»...\n"
+
+#: book_snippets.py:909
+#, python-format
+msgid ""
+"%s: duplicate filename but different contents of original file,\n"
+"printing diff against existing file."
+msgstr ""
+"%s: il nome del file è duplicato ma i suoi contenuti sono diversi dal\n"
+"file originale, si mostrano le differenze rispetto al file esistente."
+
+#: book_snippets.py:922
+#, python-format
+msgid ""
+"%s: duplicate filename but different contents of converted lilypond file,\n"
+"printing diff against existing file."
+msgstr ""
+"%s: il nome del file è duplicato ma il suo contenuto è diverso dal file lilypond\n"
+"trasformato, si mostrano le differenze rispetto al file esistente."
+
 #: convertrules.py:12
 #, python-format
-msgid "Not smart enough to convert %s"
-msgstr "Non abbastanza intelligente per convertire %s"
+msgid "Not smart enough to convert %s."
+msgstr "Non abbastanza intelligente per convertire %s."
 
 #: convertrules.py:13
 msgid "Please refer to the manual for details, and update manually."
@@ -87,112 +111,115 @@ msgstr "Si consulti il manuale per i dettagli e si aggiorni manualmente."
 msgid "%s has been replaced by %s"
 msgstr "%s è stato sostituito da %s"
 
-#: convertrules.py:24 lilylib.py:85 musicexp.py:17 convert-ly.py:64 warn.cc:66
-#: input.cc:108
+#: convertrules.py:24 lilylib.py:131 warn.cc:223
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "attenzione: %s"
 
-#: convertrules.py:49 convertrules.py:99
+#: convertrules.py:49 convertrules.py:94
 msgid "\\header { key = concat + with + operator }"
 msgstr "\\header { chiave = concat + con + operatore }"
 
-#: convertrules.py:58
+#: convertrules.py:56
 #, python-format
 msgid "deprecated %s"
 msgstr "%s è deprecato"
 
-#: convertrules.py:70
+#: convertrules.py:65
 msgid "deprecated \\textstyle, new \\key syntax"
 msgstr "\\textstyle deprecato, nuova sintassi per \\key"
 
-#: convertrules.py:86 convertrules.py:1905 convertrules.py:2084
-#: convertrules.py:2236 convertrules.py:2566 convertrules.py:2862
-#: convertrules.py:3206
+#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031
+#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800
+#: convertrules.py:3150
 msgid "bump version for release"
 msgstr "aumentare il numero di versione per il rilascio"
 
-#: convertrules.py:103
+#: convertrules.py:97
 msgid "new \\header format"
 msgstr "nuovo formato di \\header"
 
-#: convertrules.py:132
+#: convertrules.py:124
 msgid "\\translator syntax"
 msgstr "sintassi di \\translator"
 
-#: convertrules.py:184
+#: convertrules.py:175
 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
 msgstr "\\repeat NUMERO Alternativa Musicale -> \\repeat FOLDSTR Alternativa Musicale"
 
-#: convertrules.py:216 convertrules.py:699 convertrules.py:1383
-#: convertrules.py:2378
+#: convertrules.py:205 convertrules.py:678 convertrules.py:1350
+#: convertrules.py:2317
 #, python-format
 msgid "deprecate %s"
 msgstr "%s è deprecato"
 
-#: convertrules.py:290
+#: convertrules.py:279
 #, python-format
 msgid "deprecate %s "
 msgstr "%s è deprecato "
 
-#: convertrules.py:319
+#: convertrules.py:305
 msgid "new \\notenames format"
 msgstr "nuovo formato di \\notenames"
 
-#: convertrules.py:337
+#: convertrules.py:321
 msgid "new tremolo format"
 msgstr "nuovo formato di tremolo"
 
-#: convertrules.py:342
+#: convertrules.py:325
 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
 msgstr "Staff_margin_engraver è deprecato, usare Instrument_name_engraver"
 
-#: convertrules.py:395
-msgid "change property definiton case (eg. onevoice -> oneVoice)"
-msgstr "cambiare le maiuscole della definizione di proprietà (es: onevoice -> oneVoice)"
+#: convertrules.py:376
+msgid "change property definition case (eg. onevoice -> oneVoice)"
+msgstr "cambia le maiuscole della definizione di proprietà (es: onevoice -> oneVoice)"
 
-#: convertrules.py:457
+#: convertrules.py:437
 msgid "new \\textscript markup text"
 msgstr "nuovo testo di marcatura \\textscript"
 
-#: convertrules.py:530
+#: convertrules.py:509
 #, python-format
 msgid "identifier names: %s"
 msgstr "nomi dell'identificatore: %s"
 
-#: convertrules.py:569
+#: convertrules.py:548
 msgid "point-and-click argument changed to procedure."
 msgstr "l'argomento point-and-click è stato cambiato in procedura."
 
-#: convertrules.py:611
+#: convertrules.py:590
 msgid "semicolons removed"
 msgstr "punti e virgola eliminati"
 
 #. 40 ?
-#: convertrules.py:654
+#: convertrules.py:633
 #, python-format
 msgid "%s property names"
 msgstr "nomi della proprietà %s"
 
-#: convertrules.py:724
+#: convertrules.py:703
 msgid "automaticMelismata turned on by default"
 msgstr "automaticMelismata attivato per impostazione predefinita"
 
-#: convertrules.py:963 convertrules.py:1682 convertrules.py:1942
-#: convertrules.py:2189
+#: convertrules.py:708
+msgid "automaticMelismata is turned on by default since 1.5.67."
+msgstr "automaticMelismata attivato per impostazione predefinita dalla versione 1.5.67."
+
+#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889
+#: convertrules.py:2134
 #, python-format
 msgid "remove %s"
 msgstr "elimina %s"
 
-#: convertrules.py:1001 convertrules.py:1005
+#: convertrules.py:977 convertrules.py:980
 msgid "cluster syntax"
 msgstr "sintassi dei cluster"
 
-#: convertrules.py:1014
+#: convertrules.py:987
 msgid "new Pedal style syntax"
 msgstr "nuova sintassi di stile del Pedale"
 
-#: convertrules.py:1273
+#: convertrules.py:1246
 msgid ""
 "New relative mode,\n"
 "Postfix articulations, new text markup syntax, new chord syntax."
@@ -200,28 +227,28 @@ msgstr ""
 "Nuovo modo relativo.\n"
 "Articolazioni suffisse, nuova sintassi di marcatura del testo, nuova sintassi degli accordi."
 
-#: convertrules.py:1286
+#: convertrules.py:1259
 msgid "Remove - before articulation"
 msgstr "Elimina - prima dell'articolazione"
 
-#: convertrules.py:1324
+#: convertrules.py:1294
 #, python-format
 msgid "%s misspelling"
 msgstr "errore di digitazione in %s"
 
-#: convertrules.py:1346
+#: convertrules.py:1313
 msgid "Swap < > and << >>"
 msgstr "Scambia < > e << >>"
 
-#: convertrules.py:1349
+#: convertrules.py:1316
 msgid "attempting automatic \\figures conversion.  Check results!"
 msgstr "tentativo di conversione automatica di \\figures.  Controllare i risultati!"
 
-#: convertrules.py:1400
+#: convertrules.py:1362
 msgid "Use Scheme code to construct arbitrary note events."
 msgstr "Usa il codice di Scheme per costruire eventi arbitrari della nota."
 
-#: convertrules.py:1407
+#: convertrules.py:1369
 msgid ""
 "use symbolic constants for alterations,\n"
 "remove \\outputproperty, move ly:verbose into ly:get-option"
@@ -229,7 +256,7 @@ msgstr ""
 "usa costanti simboliche per le alterazioni,\n"
 "togli \\outproperty, sostituisci ly:verbose con ly:get-option"
 
-#: convertrules.py:1432
+#: convertrules.py:1394
 #, python-format
 msgid ""
 "\\outputproperty found,\n"
@@ -246,7 +273,7 @@ msgstr ""
 "\n"
 "come testo sostitutivo."
 
-#: convertrules.py:1446
+#: convertrules.py:1406
 msgid ""
 "The alteration field of Scheme pitches was multiplied by 2\n"
 "to support quarter tone accidentals.  You must update the following constructs manually:\n"
@@ -260,15 +287,15 @@ msgstr ""
 "* chiamate a ly:make-pitch e ly:pitch-alteration\n"
 "* impostazioni di keySignature fatte con \\property\n"
 
-#: convertrules.py:1493
+#: convertrules.py:1449
 msgid "removal of automaticMelismata; use melismaBusyProperties instead."
 msgstr "eliminazione di automaticMelismata; al suo posto usare melismaBusyProperties."
 
-#: convertrules.py:1600
+#: convertrules.py:1556
 msgid "\\partcombine syntax change to \\newpartcombine"
 msgstr "cambio nella sintassi da \\partcombine a \\newpartcombine"
 
-#: convertrules.py:1628
+#: convertrules.py:1581
 msgid ""
 "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
 "Harmonic notes. Thread context removed. Lyrics context removed."
@@ -276,11 +303,11 @@ msgstr ""
 "Cambiamenti della notazione per percussioni, eliminati \\chordmodifiers e \\notenames.\n"
 "Note armoniche. Eliminati i contesti Thread e Lyrics."
 
-#: convertrules.py:1632
+#: convertrules.py:1585
 msgid "Drums found. Enclose drum notes in \\drummode"
 msgstr "Trovate percussioni. Inserisci le note delle percussioni in \\drummode"
 
-#: convertrules.py:1643 convertrules.py:1650 convertrules.py:1661
+#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614
 #, python-format
 msgid ""
 "\n"
@@ -289,32 +316,33 @@ msgstr ""
 "\n"
 "Si è trovato %s. Controlla il file manualmente!\n"
 
-#: convertrules.py:1643
+#: convertrules.py:1596
 msgid "Drum notation"
 msgstr "Notazione delle percussioni"
 
-#: convertrules.py:1702
+#: convertrules.py:1655
 msgid "new syntax for property settings:"
 msgstr "nuova sintassi per le impostazioni delle proprietà:"
 
-#: convertrules.py:1728
+#: convertrules.py:1681
 msgid "Property setting syntax in \\translator{ }"
 msgstr "Sintassi per impostare una proprietà in \\translator{ }"
 
-#: convertrules.py:1767
+#: convertrules.py:1720
 msgid "Scheme grob function renaming"
 msgstr "Rinominare la funzione di grob di Scheme"
 
-#: convertrules.py:1780
+#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142
+#: convertrules.py:2708
 #, python-format
-msgid "use %s"
-msgstr "usa %s"
+msgid "Use %s\n"
+msgstr "Usa %s\n"
 
-#: convertrules.py:1797
+#: convertrules.py:1747
 msgid "More Scheme function renaming"
 msgstr "Rinominare altre funzioni di Scheme"
 
-#: convertrules.py:1924
+#: convertrules.py:1871
 msgid ""
 "Page layout has been changed, using paper size and margins.\n"
 "textheight is no longer used.\n"
@@ -322,7 +350,7 @@ msgstr ""
 "La formattazione di pagina è stata modificata, usando la dimensione del foglio e i margini.\n"
 "textheight non è più usato.\n"
 
-#: convertrules.py:2010
+#: convertrules.py:1957
 msgid ""
 "\\foo -> \\foomode (for chords, notes, etc.)\n"
 "fold \\new FooContext \\foomode into \\foo."
@@ -330,7 +358,7 @@ msgstr ""
 "\\foo -> \\foomode (per accordi, note, etc.)\n"
 "inserire \\new FooContext \\foomode in \\foo."
 
-#: convertrules.py:2048
+#: convertrules.py:1995
 msgid ""
 "staff size should be changed at top-level\n"
 "with\n"
@@ -344,40 +372,40 @@ msgstr ""
 "  #(set-global-staff-size <ALTEZZA-DEL-RIGO-IN-PUNTI>)\n"
 "\n"
 
-#: convertrules.py:2068
+#: convertrules.py:2015
 msgid "regularize other identifiers"
 msgstr "normalizza altri identificatori"
 
-#: convertrules.py:2136
+#: convertrules.py:2083
 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
 msgstr "\\encoding: ricodifica intelligente da latin1 a utf-8. Eliminazione di ly:point-and-click"
 
-#: convertrules.py:2149
+#: convertrules.py:2094
 msgid "LilyPond source must be UTF-8"
 msgstr "Il sorgente di LilyPond deve avere la codifica UTF-8"
 
-#: convertrules.py:2152
+#: convertrules.py:2097
 msgid "Try the texstrings backend"
 msgstr "Prova il backend textstrings"
 
-#: convertrules.py:2155
+#: convertrules.py:2100
 #, python-format
 msgid "Do something like: %s"
 msgstr "Fai qualcosa come: %s"
 
-#: convertrules.py:2158
+#: convertrules.py:2103
 msgid "Or save as UTF-8 in your editor"
 msgstr "O salva in formato UTF-8 nel tuo editor"
 
-#: convertrules.py:2212
+#: convertrules.py:2153
 msgid "warn about auto beam settings"
 msgstr "attenzione alle impostazioni delle travature automatiche"
 
-#: convertrules.py:2217
+#: convertrules.py:2157
 msgid "auto beam settings"
 msgstr "impostazioni delle travature automatiche"
 
-#: convertrules.py:2219
+#: convertrules.py:2158
 msgid ""
 "\n"
 "Auto beam settings must now specify each interesting moment in a measure\n"
@@ -387,39 +415,39 @@ msgstr ""
 "Le impostazioni di travatura automatica ora devono specificare esplicitamente ogni momento\n"
 "interessante in una misura; 1/4 non viene più moltiplicato per coprire anche i momenti 1/2 e 3/4.\n"
 
-#: convertrules.py:2333
+#: convertrules.py:2271
 msgid "verticalAlignmentChildCallback has been deprecated"
 msgstr "verticalAlignmentChildCallback è deprecato"
 
-#: convertrules.py:2337
+#: convertrules.py:2276
 msgid "Remove callbacks property, deprecate XY-extent-callback."
 msgstr "Togli la proprietà di callback, XY-extent-callback è deprecato."
 
-#: convertrules.py:2358
+#: convertrules.py:2297
 msgid "Use grob closures iso. XY-offset-callbacks."
 msgstr "Usa le chiusure del grob al posto di XY-offset-callbacks."
 
-#: convertrules.py:2420
+#: convertrules.py:2359
 msgid "foobar -> foo-bar for \\paper, \\layout"
 msgstr "foobar -> foo-bar per \\paper, \\layout"
 
-#: convertrules.py:2530
+#: convertrules.py:2469
 msgid "deprecate \\tempo in \\midi"
 msgstr "\\tempo in un blocco \\midi è deprecato"
 
-#: convertrules.py:2583
+#: convertrules.py:2522
 msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
 msgstr "cautionary-style è deprecato. Usa le proprietà di AccidentalCautionary"
 
-#: convertrules.py:2596
+#: convertrules.py:2535
 msgid "Rename accidental glyphs, use glyph-name-alist."
 msgstr "Rinomina i glifi delle alterazioni, usa glyph-name-alist."
 
-#: convertrules.py:2651
-msgid "edge-text settings for TextSpanner."
-msgstr "Impostazioni di edge-text per TextSpanner."
+#: convertrules.py:2590
+msgid "edge-text settings for TextSpanner"
+msgstr "Impostazioni di edge-text per TextSpanner"
 
-#: convertrules.py:2652
+#: convertrules.py:2591
 #, python-format
 msgid ""
 "Use\n"
@@ -430,35 +458,35 @@ msgstr ""
 "\n"
 "%s"
 
-#: convertrules.py:2685
+#: convertrules.py:2624
 msgid "Use the `alignment-offsets' sub-property of\n"
 msgstr "Usa «alignment-offsets», sottoproprietà di\n"
 
-#: convertrules.py:2686
+#: convertrules.py:2625
 msgid "NonMusicalPaperColumn #'line-break-system-details\n"
 msgstr "NonMusicalPaperColumn #'line-break-system-details\n"
 
-#: convertrules.py:2687
+#: convertrules.py:2626
 msgid "to set fixed distances between staves.\n"
 msgstr "per impostare distanze fisse tra i righi.\n"
 
-#: convertrules.py:2699
+#: convertrules.py:2638
 msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
 msgstr "Usa #'style e non #'dash-fraction per ottenere linee continue o tratteggiate."
 
-#: convertrules.py:2705
-msgid "all settings related to dashed lines.\n"
-msgstr "tutte le impostazioni relative alle linee tratteggiate.\n"
+#: convertrules.py:2644
+msgid "all settings related to dashed lines"
+msgstr "tutte le impostazioni relative alle linee tratteggiate"
 
-#: convertrules.py:2706
+#: convertrules.py:2645
 msgid "Use \\override ... #'style = #'line for solid lines and\n"
 msgstr "Usa \\override ... #'style = #'line per le linee continue e\n"
 
-#: convertrules.py:2707
+#: convertrules.py:2646
 msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
 msgstr "\t\\override ... #'style = #'dashed-line per le linee tratteggiate."
 
-#: convertrules.py:2743
+#: convertrules.py:2682
 msgid ""
 "metronomeMarkFormatter uses text markup as second argument,\n"
 "fret diagram properties moved to fret-diagram-details."
@@ -466,11 +494,11 @@ msgstr ""
 "il secondo argomento di metronomeMarkFormatter deve essere una marcatura di testo,\n"
 "le proprietà del diagramma dei tasti si trovano ora in fret-diagram-details."
 
-#: convertrules.py:2748
+#: convertrules.py:2688
 msgid "metronomeMarkFormatter got an additional text argument.\n"
 msgstr "metronomeMarkFormatter prende un argomento testuale supplementare.\n"
 
-#: convertrules.py:2749
+#: convertrules.py:2689
 #, python-format
 msgid ""
 "The function assigned to Score.metronomeMarkFunction now uses the signature\n"
@@ -479,43 +507,48 @@ msgstr ""
 "La funzione assegnata a Score.metronomeMarkFunction ora usa l'indicazione\n"
 "%s"
 
-#: convertrules.py:2812
-msgid "\\put-adjacent argument order.\n"
-msgstr "ordine degli argomenti di \\put-adjacent.\n"
+#: convertrules.py:2707
+#, python-format
+msgid "%s in fret-diagram properties"
+msgstr "%s nelle proprietà di fret-diagram"
+
+#: convertrules.py:2751
+msgid "\\put-adjacent argument order"
+msgstr "ordine degli argomenti di \\put-adjacent"
 
-#: convertrules.py:2813
+#: convertrules.py:2752
 msgid "Axis and direction now come before markups:\n"
 msgstr "Asse e direzione ora devono precedere i marcatori:\n"
 
-#: convertrules.py:2814
+#: convertrules.py:2753
 msgid "\\put-adjacent axis dir markup markup."
 msgstr "\\put-adjacent asse direzione marcatore marcatore."
 
-#: convertrules.py:2845
-msgid "re-definition of InnerStaffGroup.\n"
-msgstr "ridefinizione di InnerStaffGroup.\n"
+#: convertrules.py:2784
+msgid "re-definition of InnerStaffGroup"
+msgstr "ridefinizione di InnerStaffGroup"
 
-#: convertrules.py:2851
-msgid "re-definition of InnerChoirStaff.\n"
-msgstr "ridefinizione di InnerChoirStaff.\n"
+#: convertrules.py:2789
+msgid "re-definition of InnerChoirStaff"
+msgstr "ridefinizione di InnerChoirStaff"
 
-#: convertrules.py:2861
+#: convertrules.py:2799
 msgid "Syntax changes for \\addChordShape and \\chord-shape"
 msgstr "Cambiamenti di sintassi per \\addChordShape e \\chord-shape"
 
-#: convertrules.py:2866
+#: convertrules.py:2804
 msgid "stringTuning must be added to addChordShape call.\n"
 msgstr "stringTuning deve essere aggiunto alla chiamata addChordShape.\n"
 
-#: convertrules.py:2872
+#: convertrules.py:2809
 msgid "stringTuning must be added to chord-shape call.\n"
 msgstr "stringTuning deve essere aggiunto alla chiamata chord-shape.\n"
 
-#: convertrules.py:2879
+#: convertrules.py:2815
 msgid "Remove oldaddlyrics"
 msgstr "Elimina oldaddlyrics"
 
-#: convertrules.py:2883
+#: convertrules.py:2819
 msgid ""
 "oldaddlyrics is no longer supported. \n"
 "         Use addlyrics or lyrsicsto instead.\n"
@@ -523,7 +556,7 @@ msgstr ""
 "oldaddlyrics non è più supportato.\n"
 "         Usa addlyrics o lyrsicsto al suo posto.\n"
 
-#: convertrules.py:2889
+#: convertrules.py:2825
 msgid ""
 "keySignature property not reversed any more\n"
 "MIDI 47: orchestral strings -> orchestral harp"
@@ -531,11 +564,11 @@ msgstr ""
 "la proprietà keySignature property non è più invertita\n"
 "MIDI 47: archi orchestrali -> arpa orchestrale"
 
-#: convertrules.py:2894
+#: convertrules.py:2830
 msgid "The alist for Staff.keySignature is no longer in reversed order.\n"
 msgstr "L'alist (association list) di Staff.keySignature non è più in ordine invertito.\n"
 
-#: convertrules.py:2900
+#: convertrules.py:2836
 msgid ""
 "\\bar \".\" now produces a thick barline\n"
 "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
@@ -545,15 +578,15 @@ msgstr ""
 "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
 "I parametri del tratteggiato per le legature di portamento e di valore si trovano ora in dash-definition"
 
-#: convertrules.py:2906
+#: convertrules.py:2842
 msgid "\\bar \".\" now produces a thick barline.\n"
 msgstr "\\bar \".\" ora crea una stanghetta spessa.\n"
 
-#: convertrules.py:2912
+#: convertrules.py:2848
 msgid "Dash parameters for slurs and ties are now in 'dash-details.\n"
 msgstr "I parametri del tratteggiato per le legature di portamento e di valore si trovano ora in 'dash-details.\n"
 
-#: convertrules.py:2917
+#: convertrules.py:2853
 msgid ""
 "Autobeaming rules have changed.  override-auto-beam-setting and\n"
 "revert-auto-beam-setting have been eliminated.\n"
@@ -579,37 +612,27 @@ msgstr ""
 "La definizione esplicita del contesto della dinamica presa dal modello «Piano centered dynamics»\n"
 "è stata sostituita dal nuovo contesto «Dynamics»."
 
-#: convertrules.py:2931
-msgid ""
-"override-auto-beam-setting.\n"
-"   Autobeam settings are now overriden with \\overrideBeamSettings.\n"
-msgstr ""
-"override-auto-beam-setting.\n"
-"   Le impostazioni della disposizione automatica delle travature vengono ora sovrascritte con \\overrideBeamSettings.\n"
+#: convertrules.py:2867
+msgid "    Autobeam settings are now overriden with \\overrideBeamSettings.\n"
+msgstr "    Le impostazioni della disposizione automatica delle travature vengono ora sovrascritte con \\overrideBeamSettings.\n"
 
-#: convertrules.py:2936
-msgid ""
-"override-auto-beam-setting.\n"
-"   Autobeam settings are now reverted with \\revertBeamSettings.\n"
-msgstr ""
-"override-auto-beam-setting.\n"
-"   Le impostazioni della disposizione automatica delle travature vengono ora ripristinate con \\revertBeamSettings.\n"
+#: convertrules.py:2872
+msgid "    Autobeam settings are now reverted with \\revertBeamSettings.\n"
+msgstr "    Le impostazioni della disposizione automatica delle travature vengono ora ripristinate con \\revertBeamSettings.\n"
 
-#: convertrules.py:2941
+#: convertrules.py:2878
 msgid ""
-"beatGrouping. \n"
-"   beatGrouping with a specified context must now be accomplished with\n"
+"    beatGrouping with a specified context must now be accomplished with\n"
 "   \\overrideBeamSettings.\n"
 msgstr ""
-"beatGrouping. \n"
-"   beatGrouping in un contesto specifico ora deve essere ottenuto con\n"
+"    beatGrouping in un contesto specifico ora deve essere ottenuto con\n"
 "   \\overrideBeamSettings.\n"
 
-#: convertrules.py:2947
+#: convertrules.py:2884
 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n"
 msgstr "alignment-offsets è diventato alignment-distances: ora occorre specificare le distanze tra i righi invece dello slittamento (offset) dei righi.\n"
 
-#: convertrules.py:2958
+#: convertrules.py:2895
 msgid ""
 "Remove obsolete engravers/translators: Note_swallow_translator,\n"
 "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n"
@@ -621,23 +644,23 @@ msgstr ""
 "Swallow_performer e String_number_engraver.\n"
 "Nuove variabili per la spaziatura verticale."
 
-#: convertrules.py:2989
-msgid "minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
-msgstr "minimum-Y-extent; la spaziatura verticale non dipende più dall'Y-extent di un VerticalAxisGroup.\n"
+#: convertrules.py:2926
+msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
+msgstr "La spaziatura verticale non dipende più dall'Y-extent di un VerticalAxisGroup.\n"
 
-#: convertrules.py:2995
+#: convertrules.py:2932
 msgid "Unify fetaNumber and fetaDynamic encodings"
 msgstr "Unifica le codifiche di fetaNumber e fetaDynamic"
 
-#: convertrules.py:3000
+#: convertrules.py:2937
 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 msgstr "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 
-#: convertrules.py:3011
+#: convertrules.py:2948
 msgid "\\cresc etc. are now postfix operators"
 msgstr "\\cresc etc. sono ora operatori suffissi"
 
-#: convertrules.py:3017
+#: convertrules.py:2960
 msgid ""
 "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
@@ -645,27 +668,23 @@ msgstr ""
 "Elimina beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings e \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 
-#: convertrules.py:3035
-msgid "\\overrideBeamSettings.  Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
-msgstr "\\overrideBeamSettings.  Usa \\set beamExceptions o \\overrideTimeSignatureSettings.\n"
-
-#: convertrules.py:3039
-msgid "\\revertBeamSettings. Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
-msgstr "\\revertBeamSettings. Usa \\set beamExceptions o \\revertTimeSignatureSettings.\n"
+#: convertrules.py:2978
+msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
+msgstr "Usa \\set beamExceptions o \\overrideTimeSignatureSettings.\n"
 
-#: convertrules.py:3043
-msgid "beamSettings. Use baseMoment, beatStructure, and beamExceptions.\n"
-msgstr "beamSettings. Usa baseMoment, beatStructure, e beamExceptions.\n"
+#: convertrules.py:2982
+msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
+msgstr "Usa \\set beamExceptions o \\revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3047
-msgid "beatLength. Use baseMoment and beatStructure.\n"
-msgstr "beatLength. Usa baseMoment e beatStructure.\n"
+#: convertrules.py:2986
+msgid "Use baseMoment, beatStructure, and beamExceptions.\n"
+msgstr "Usa baseMoment, beatStructure, e beamExceptions.\n"
 
-#: convertrules.py:3051
-msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
-msgstr "setbeatGrouping. Usa baseMoment e beatStructure.\n"
+#: convertrules.py:2990 convertrules.py:2994
+msgid "Use baseMoment and beatStructure.\n"
+msgstr "Usa baseMoment e beatStructure.\n"
 
-#: convertrules.py:3056
+#: convertrules.py:2999
 msgid ""
 "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n"
 "Deprecate negative dash-period for hidden lines: use #'style = #'none instead."
@@ -673,11 +692,11 @@ msgstr ""
 "Diagrammi dei legni: Spostare dimensione, spessore e grafico da lista di argomenti a proprietà.\n"
 "L'uso di dash-period con valori negativi per creare linee nascoste è deprecato: al suo posto usare #'style = #'none."
 
-#: convertrules.py:3061
-msgid "woodwind-diagrams.  Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
-msgstr "Diagrammi dei legni: Sposta dimensione, spessore e grafico in proprietà.  L'unico argomento deve essere la lista di chiavi.\n"
+#: convertrules.py:3004
+msgid "Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
+msgstr "Sposta dimensione, spessore e grafico in proprietà.  L'unico argomento deve essere la lista di chiavi.\n"
 
-#: convertrules.py:3069
+#: convertrules.py:3012
 msgid ""
 "Rename vertical spacing variables.\n"
 "Add fretboard-table argument to savePredefinedFretboard."
@@ -685,23 +704,23 @@ msgstr ""
 "Rinomina le variabili della spaziatura verticale.\n"
 "Aggiungi l'argomento fretboard-table a savePredefinedFretboard."
 
-#: convertrules.py:3087
+#: convertrules.py:3030
 msgid "Rename vertical spacing grob properties."
 msgstr "Rinomina le proprietà di spaziatura verticale dei grob."
 
-#: convertrules.py:3103
+#: convertrules.py:3046
 msgid "Remove \\paper variables head-separation and foot-separation."
 msgstr "Elimina le variabili di \\paper head-separation e foot-separation."
 
-#: convertrules.py:3108
+#: convertrules.py:3050
 msgid "Adjust settings for top-system-spacing instead.\n"
 msgstr "Regola invece le impostazioni di top-system-spacing.\n"
 
-#: convertrules.py:3113
+#: convertrules.py:3054
 msgid "Adjust settings for last-bottom-spacing instead.\n"
 msgstr "Regola invece le impostazioni di last-bottom-spacing.\n"
 
-#: convertrules.py:3119
+#: convertrules.py:3060
 msgid ""
 "Rename space to basic-distance in various spacing alists.\n"
 "Remove HarmonicParenthesesItem grob."
@@ -709,19 +728,19 @@ msgstr ""
 "Rinomina la spaziatura in basic-distance in diverse variabili di spaziatura.\n"
 "Eliminazione del grob HarmonicParenthesesItem."
 
-#: convertrules.py:3127
+#: convertrules.py:3067
 msgid "HarmonicParenthesesItem has been eliminated.\n"
 msgstr "HarmonicParenthesesItem è stato eliminato.\n"
 
-#: convertrules.py:3128
+#: convertrules.py:3068
 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n"
 msgstr "Le parentesi degli armonici fanno parte del grob TabNoteHead.\n"
 
-#: convertrules.py:3133
+#: convertrules.py:3073
 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n"
 msgstr "Rimuove il contesto da overrideTimeSignatureSettings e revertTimeSignatureSettings.\n"
 
-#: convertrules.py:3140
+#: convertrules.py:3080
 msgid ""
 "Change stringTunings from a list of semitones to a list of pitches.\n"
 "Change tenor and baritone ukulele names in string tunings.\n"
@@ -731,241 +750,288 @@ msgstr ""
 "Sostituzione dei nomi dell'ukulele tenore e baritono con accordature.\n"
 "Generazione dei messaggi per la conversione manuale della spaziatura verticale se richiesto."
 
-#: convertrules.py:3180
-msgid "Vertical spacing changes might affect user-defined contexts.  "
-msgstr "Le modifiche della spaziatura verticale possono influire sui contesti definiti dall'utente.  "
+#: convertrules.py:3123
+msgid "Vertical spacing changes might affect user-defined contexts."
+msgstr "Le modifiche della spaziatura verticale possono influire sui contesti definiti dall'utente."
 
-#: convertrules.py:3185
+#: convertrules.py:3129
 msgid "Replace bar-size with bar-extent."
 msgstr "Sostituzione di bar-size con bar-extent."
 
-#: convertrules.py:3197
+#: convertrules.py:3141
 msgid "Woodwind diagrams: Changes to the clarinet diagram."
 msgstr "Diagrammi dei legni: Modifiche al diagramma del clarinetto."
 
-#: convertrules.py:3201
-msgid "woodwind-diagrams.  Clarinet fingering changed to reflect actual anatomy of instrument.\n"
-msgstr "woodwind-diagrams.  La diteggiatura del clarinetto è stata modificata per riflettere l'effettiva anatomia dello strumento.\n"
+#: convertrules.py:3145
+msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n"
+msgstr "La diteggiatura del clarinetto è stata modificata per riflettere l'effettiva anatomia dello strumento.\n"
 
-#: convertrules.py:3211
-msgid "Change in internal property for MultiMeasureRest"
-msgstr "Modifica della proprietà interna di MultiMeasureRest"
-
-#: convertrules.py:3214
-msgid "use-breve-rest.  This internal property has been replaced by round-to-longer-rest and usable-duration-logs.\n"
-msgstr "use-breve-rest.  Questa proprietà interna è stata sostituita da round-to-longer-rest e usable-duration-logs.\n"
-
-#: convertrules.py:3219
+#: convertrules.py:3155
 msgid "Handling of non-automatic footnotes."
 msgstr "Gestione delle note a pié di pagina non automatiche."
 
-#: convertrules.py:3223
+#: convertrules.py:3159
 msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n"
 msgstr "Se si sta usando note a pié di pagina non automatiche, occorre impostare footnote-auto-numbering = ##f nel blocco paper.\n"
 
-#: book_base.py:24
+#: convertrules.py:3164
+msgid "Change in internal property for MultiMeasureRest"
+msgstr "Modifica della proprietà interna di MultiMeasureRest"
+
+#: convertrules.py:3168
+msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n"
+msgstr "Questa proprietà interna è stata sostituita da round-up-to-longer-rest, round-up-exceptions e usable-duration-logs.\n"
+
+#: convertrules.py:3173
+msgid "Creation of a Flag grob and moving of certain Stem properties to this grob"
+msgstr "Creazione del grob Flag e spostamento di alcune proprietà di Stem su questo grob"
+
+#: convertrules.py:3209
+msgid "consistent-broken-slope is now handled through the positions callback.\n"
+msgstr "consistent-broken-slope viene ora gestito attraverso la callback delle posizioni.\n"
+
+#: convertrules.py:3210
+msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
+msgstr "input/regression/beam-broken-classic.ly mostra come vengono gestite ora le travature spezzate.\n"
+
+#: book_base.py:26
 #, python-format
 msgid "file not found: %s"
 msgstr "file non trovato: %s"
 
-#: book_base.py:161
+#: book_base.py:164
 msgid "Output function not implemented"
 msgstr "Funzione di output non implementata"
 
-#: lilylib.py:88 musicxml.py:13 convert-ly.py:67 warn.cc:72 input.cc:114
-#: input.cc:122
+#: lilylib.py:96
+#, python-format
+msgid "Setting loglevel to %s"
+msgstr "Si imposta il loglevel su %s"
+
+#: lilylib.py:99
+#, python-format
+msgid "Unknown or invalid loglevel '%s'"
+msgstr "Loglevel sconosciuto o non valido '%s'"
+
+#: lilylib.py:128 warn.cc:211
 #, c-format, python-format
 msgid "error: %s"
 msgstr "errore: %s"
 
-#: lilylib.py:131
+#: lilylib.py:185
 #, python-format
 msgid "Processing %s.ly"
 msgstr "Elaborazione di %s.ly"
 
-#: lilylib.py:135 lilylib.py:198
+#: lilylib.py:189 lilylib.py:250
 #, python-format
 msgid "Invoking `%s'"
 msgstr "Invocazione di «%s»"
 
-#: lilylib.py:137 lilylib.py:200
+#: lilylib.py:191 lilylib.py:252
 #, python-format
 msgid "Running %s..."
 msgstr "Esecuzione di %s..."
 
-#: lilylib.py:276
+#: lilylib.py:328
 #, python-format
 msgid "Usage: %s"
 msgstr "Uso: %s"
 
-#: musicexp.py:216 musicexp.py:221
+#: musicexp.py:224 musicexp.py:229
 msgid "Language does not support microtones contained in the piece"
 msgstr "La lingua non supporta i microtoni presenti nel brano"
 
-#: musicexp.py:483
+#: musicexp.py:491
 msgid "Tuplet brackets of curved shape are not correctly implemented"
 msgstr "Le parentesi di forma curva per i gruppi irregolari non sono implementate correttamente"
 
-#: musicexp.py:669
+#: musicexp.py:677
 #, python-format
 msgid "unable to set the music %(music)s for the repeat %(repeat)s"
 msgstr "non è stato possibile impostare la musica %(music)s per la ripetizione %(repeat)s"
 
-#: musicexp.py:678
+#: musicexp.py:686
 msgid "encountered repeat without body"
 msgstr "si è incontrata una ripetizione senza corpo"
 
 #. no self.elements!
-#: musicexp.py:848
+#: musicexp.py:856
 #, python-format
 msgid "Grace note with no following music: %s"
 msgstr "Nota di abbellimento non seguita da musica: %s"
 
-#: musicexp.py:1010
+#: musicexp.py:1018
 #, python-format
 msgid "Invalid octave shift size found: %s. Using no shift."
 msgstr "Trovata una dimensione di spostamento dell'ottava non valida: %s. Non si userà alcun spostamento."
 
-#: musicexp.py:1468
+#: musicexp.py:1476
 #, python-format
 msgid "Unable to convert alteration %s to a lilypond expression"
 msgstr "Non si può convertire l'alterazione %s in un'espressione lilypond"
 
 #. TODO: Handle pieces without a time signature!
-#: musicxml.py:358
+#: musicxml.py:361
 msgid "Senza-misura time signatures are not yet supported!"
 msgstr "I segni di tempo senza-misura non sono ancora supportati!"
 
-#: musicxml.py:376
+#: musicxml.py:379
 msgid "Unable to interpret time signature! Falling back to 4/4."
 msgstr "Non è stato possibile interpretare l'indicazione di tempo! Verrà usato il 4/4."
 
-#: musicxml.py:432
+#: musicxml.py:435
 #, python-format
 msgid "Key alteration octave given for a non-existing alteration nr. %s, available numbers: %s!"
 msgstr "Si è inserita un'ottava di alterazione di tonalità per un numero di alterazioni inesistente %s, numeri disponibili: %s!"
 
-#: musicxml.py:520
+#: musicxml.py:523
 #, python-format
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "Impossibile trovare lo strumento con ID=%s\n"
 
-#: book_latex.py:156
+#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is
+#. used to detect relative/absolute paths, so the absolute path is not
+#. detected as such and this command fails:
+#: book_texinfo.py:206
+#, python-format
+msgid "Running texi2pdf on file %s to detect default page settings.\n"
+msgstr "Si esegue texi2pdf sul file %s per individuare le impostazioni predefinite della pagina.\n"
+
+#: book_texinfo.py:228 book_latex.py:209
+msgid "Unable to auto-detect default settings:\n"
+msgstr "Impossibile individuare automaticamente le impostazioni predefinite:\n"
+
+#: book_texinfo.py:240 book_latex.py:221
+#, python-format
+msgid ""
+"Unable to auto-detect default settings:\n"
+"%s"
+msgstr ""
+"Impossibile individuare le impostazioni predefinite:\n"
+"%s"
+
+#: book_latex.py:170
 msgid "cannot find \\begin{document} in LaTeX document"
 msgstr "impossibile trovare \\begin{document} nel documento LaTeX"
 
-#: musicxml2ly.py:224
+#: book_latex.py:188
+#, python-format
+msgid "Running `%s' on file `%s' to detect default page settings.\n"
+msgstr "Esecuzione di \"%s\" sul file \"%s\" per individuare le impostazioni predefinite della pagina.\n"
+
+#: musicxml2ly.py:228
 #, python-format
 msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
 msgstr "Si è trovato un file creato da %s che contiene informazioni sbagliate sulla disposizione delle travature. Tutte le informazioni sulle travature presenti nel file MusicXML verranno ignorate"
 
-#: musicxml2ly.py:240 musicxml2ly.py:242
+#: musicxml2ly.py:247 musicxml2ly.py:249
 #, python-format
 msgid "Unprocessed PartGroupInfo %s encountered"
 msgstr "PartGroupInfo %s rilevato ma non elaborato"
 
-#: musicxml2ly.py:495
+#: musicxml2ly.py:502
 #, python-format
 msgid "Encountered note at %s without type and duration (=%s)"
 msgstr "Trovata una nota in %s senza tipo e durata (=%s)"
 
-#: musicxml2ly.py:515
+#: musicxml2ly.py:522
 #, python-format
 msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
 msgstr "Trovata una durata razionale con denominatore %s, impossibile convertire in una durata di lilypond"
 
-#: musicxml2ly.py:762
+#: musicxml2ly.py:769
 msgid "Unable to extract key signature!"
 msgstr "Impossibile estrarre l'armatura di chiave!"
 
-#: musicxml2ly.py:789
+#: musicxml2ly.py:796
 #, python-format
 msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
 msgstr "modo %s sconosciuto, è richiesto \"major\" o \"minor\" o un modo ecclesiastico!"
 
-#: musicxml2ly.py:927
+#: musicxml2ly.py:934
 #, python-format
 msgid "Encountered unprocessed marker %s\n"
 msgstr "Trovato un marcatore non elaborato %s\n"
 
-#: musicxml2ly.py:1021
+#: musicxml2ly.py:1028
 #, python-format
 msgid "unknown span event %s"
 msgstr "evento di estensione %s sconosciuto"
 
-#: musicxml2ly.py:1031
+#: musicxml2ly.py:1038
 #, python-format
 msgid "unknown span type %s for %s"
 msgstr "tipo di estensione %s sconosciuto per %s"
 
-#: musicxml2ly.py:1451
+#: musicxml2ly.py:1458
 msgid "Unknown metronome mark, ignoring"
 msgstr "Indicazione metronomica sconosciuta, si ignora"
 
 #. TODO: Implement the other (more complex) way for tempo marks!
-#: musicxml2ly.py:1456
+#: musicxml2ly.py:1463
 msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
 msgstr "Indicazioni metronomiche con relazioni complesse (<metronome-note> in MusicXML) non sono ancora implementate."
 
-#: musicxml2ly.py:1658
+#: musicxml2ly.py:1665
 #, python-format
 msgid "Unable to convert chord type %s to lilypond."
 msgstr "Impossibile convertire l'accordo di tipo %s in un'espressione di lilypond."
 
-#: musicxml2ly.py:1807
+#: musicxml2ly.py:1814
 #, python-format
 msgid "drum %s type unknown, please add to instrument_drumtype_dict"
 msgstr "tipo di percussione %s sconosciuto, si prega di aggiungerlo a instrument_drumtype_dict"
 
-#: musicxml2ly.py:1811
+#: musicxml2ly.py:1818
 msgid "cannot find suitable event"
 msgstr "impossibile trovare un evento adatto"
 
-#: musicxml2ly.py:1959
+#: musicxml2ly.py:1966
 #, python-format
 msgid "Negative skip %s (from position %s to %s)"
 msgstr "Salto negativo %s (dalla posizione %s a %s)"
 
-#: musicxml2ly.py:2100
+#: musicxml2ly.py:2107
 #, python-format
 msgid "Negative skip found: from %s to %s, difference is %s"
 msgstr "Trovato un salto negativo: da %s a %s, la differenza è %s"
 
-#: musicxml2ly.py:2181
+#: musicxml2ly.py:2188
 #, python-format
 msgid "unexpected %s; expected %s or %s or %s"
 msgstr "%s inaspettato; previsto %s o %s o %s"
 
-#: musicxml2ly.py:2287
+#: musicxml2ly.py:2294
 msgid "Encountered closing slur, but no slur is open"
 msgstr "Trovata la chiusura di una legatura di portamento, ma non ne è stata aperta alcuna"
 
-#: musicxml2ly.py:2290
+#: musicxml2ly.py:2297
 msgid "Cannot have two simultaneous (closing) slurs"
 msgstr "Due legature di portamento non possono chiudersi simultaneamente"
 
-#: musicxml2ly.py:2299
+#: musicxml2ly.py:2306
 msgid "Cannot have a slur inside another slur"
 msgstr "Due legature di portamento non possono sovrapporsi"
 
-#: musicxml2ly.py:2302
+#: musicxml2ly.py:2309
 msgid "Cannot have two simultaneous slurs"
 msgstr "Due legature di portamento non possono intervenire simultaneamente"
 
-#: musicxml2ly.py:2436
+#: musicxml2ly.py:2443
 #, python-format
 msgid "cannot simultaneously have more than one mode: %s"
 msgstr "non si può avere simultaneamente più di un modo: %s"
 
-#: musicxml2ly.py:2544
+#: musicxml2ly.py:2551
 msgid "Converting to LilyPond expressions..."
 msgstr "Conversione nelle espressioni di LilyPond..."
 
-#: musicxml2ly.py:2555
+#: musicxml2ly.py:2562
 msgid "musicxml2ly [OPTION]... FILE.xml"
 msgstr "musicxml2ly [OPZIONE]... FILE.xml"
 
-#: musicxml2ly.py:2557
+#: musicxml2ly.py:2564
 msgid ""
 "Convert MusicXML from FILE.xml to LilyPond input.\n"
 "If the given filename is -, musicxml2ly reads from the command line.\n"
@@ -973,12 +1039,12 @@ msgstr ""
 "Converte FILE.xml (MusicXML) in input di LilyPond.\n"
 "Se il nome del file è -, musicxml2ly legge dalla riga di comando.\n"
 
-#: musicxml2ly.py:2563 midi2ly.py:1060 abc2ly.py:1386 lilypond-book.py:140
-#: convert-ly.py:98 etf2ly.py:1202 main.cc:159
+#: musicxml2ly.py:2570 midi2ly.py:1060 abc2ly.py:1387 lilypond-book.py:141
+#: convert-ly.py:92 etf2ly.py:1204 main.cc:153
 msgid "show this help and exit"
 msgstr "mostra questo messaggio di aiuto ed esce"
 
-#: musicxml2ly.py:2567
+#: musicxml2ly.py:2574
 msgid ""
 "Copyright (c) 2005--2012 by\n"
 "    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
@@ -990,117 +1056,130 @@ msgstr ""
 "    Jan Nieuwenhuizen <janneke@gnu.org> e\n"
 "    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
 
-#: musicxml2ly.py:2581 midi2ly.py:1091 abc2ly.py:1382 lilypond-book.py:217
-#: convert-ly.py:94 etf2ly.py:1206 main.cc:174
+#: musicxml2ly.py:2588 midi2ly.py:1091 abc2ly.py:1383 lilypond-book.py:232
+#: convert-ly.py:88 etf2ly.py:1208 main.cc:174
 msgid "show version number and exit"
 msgstr "mostra il numero di versione ed esce"
 
-#: musicxml2ly.py:2586 midi2ly.py:1085 lilypond-book.py:209 main.cc:175
+#: musicxml2ly.py:2594 midi2ly.py:1085 lilypond-book.py:224
 msgid "be verbose"
 msgstr "passa in modalità prolissa"
 
-#: musicxml2ly.py:2592
+#: musicxml2ly.py:2600
 msgid "use lxml.etree; uses less memory and cpu time"
 msgstr "usa lxml.etree per limitare il consumo di memoria e i tempi del processore"
 
-#: musicxml2ly.py:2598
+#: musicxml2ly.py:2606
 msgid "input file is a zip-compressed MusicXML file"
 msgstr "il file di input è un file MusicXML compresso in ZIP"
 
-#: musicxml2ly.py:2604
+#: musicxml2ly.py:2612
 msgid "convert pitches in relative mode (default)"
 msgstr "converte le altezze in modo relativo (predefinito)"
 
-#: musicxml2ly.py:2609
+#: musicxml2ly.py:2617
 msgid "convert pitches in absolute mode"
 msgstr "converte le altezze in modo assoluto"
 
-#: musicxml2ly.py:2612
+#: musicxml2ly.py:2620
 msgid "LANG"
 msgstr "LINGUA"
 
-#: musicxml2ly.py:2614
+#: musicxml2ly.py:2622
 msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
 msgstr "usa LINGUA per i nomi delle altezze, ad esempio 'deutsch' per i nomi delle note in tedesco"
 
-#: musicxml2ly.py:2620
+#: musicxml2ly.py:2625 lilypond-book.py:180 convert-ly.py:105
+msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"
+msgstr "Mostra i messaggi di log in base a LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"
+
+#: musicxml2ly.py:2627 lilypond-book.py:164 lilypond-book.py:182
+#: convert-ly.py:107 main.cc:167
+msgid "LOGLEVEL"
+msgstr "LOGLEVEL"
+
+#: musicxml2ly.py:2636
 msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
 msgstr "non converte le direzioni (^, _ o -) per articolazioni, dinamiche, etc."
 
-#: musicxml2ly.py:2626
+#: musicxml2ly.py:2642
 msgid "do not convert exact vertical positions of rests"
 msgstr "non converte le esatte posizioni verticali delle pause"
 
-#: musicxml2ly.py:2632
+#: musicxml2ly.py:2648
 msgid "do not convert the exact page layout and breaks"
 msgstr "non converte l'esatta formattazione di pagina e gli a capo"
 
-#: musicxml2ly.py:2638
+#: musicxml2ly.py:2654
 msgid "do not convert beaming information, use lilypond's automatic beaming instead"
 msgstr "non converte le informazioni relative alle travature, usare invece la disposizione automatica delle travature di lilypond"
 
-#: musicxml2ly.py:2641 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1208
-#: main.cc:165 main.cc:172
+#: musicxml2ly.py:2657 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1210
+#: main.cc:159 main.cc:171
 msgid "FILE"
 msgstr "FILE"
 
-#: musicxml2ly.py:2646
+#: musicxml2ly.py:2662
 msgid "set output filename to FILE, stdout if -"
 msgstr "imposta il nome del file di output su FILE (stdout se -)"
 
+#: musicxml2ly.py:2668
+msgid "add midi-block to .ly file"
+msgstr "aggiunge il blocco midi al file .ly"
+
 #. Translators, please translate this string as
 #. "Report bugs in English via %s",
 #. or if there is a LilyPond users list or forum in your language
 #. "Report bugs in English via %s or in YOUR_LANG via URI"
-#: musicxml2ly.py:2649 midi2ly.py:1104 abc2ly.py:1395 lilypond-book.py:239
-#: convert-ly.py:144 etf2ly.py:1216 main.cc:285
+#: musicxml2ly.py:2672 midi2ly.py:1104 abc2ly.py:1396 lilypond-book.py:259
+#: convert-ly.py:146 etf2ly.py:1218 main.cc:285
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr "Segnalare i bug in inglese attraverso %s"
 
-#: musicxml2ly.py:2729
+#: musicxml2ly.py:2752
 #, python-format
 msgid "unknown part in part-list: %s"
 msgstr "parte sconosciuta in part-list: %s"
 
-#: musicxml2ly.py:2791
+#: musicxml2ly.py:2814
 msgid "Input is compressed, extracting raw MusicXML data from stdin"
 msgstr "L'input è compresso. Estrazione dei dati MusicXML da stdin"
 
-#: musicxml2ly.py:2804
+#: musicxml2ly.py:2827
 #, python-format
 msgid "Input file %s is compressed, extracting raw MusicXML data"
 msgstr "Il file di input %s è compresso. Estrazione dei dati MusicXML"
 
-#: musicxml2ly.py:2834
+#: musicxml2ly.py:2857
 msgid "Reading MusicXML from Standard input ..."
 msgstr "Lettura di MusicXML da Standard input ..."
 
-#: musicxml2ly.py:2836
+#: musicxml2ly.py:2859
 #, python-format
 msgid "Reading MusicXML from %s ..."
 msgstr "Lettura di MusicXML da %s ..."
 
-#: musicxml2ly.py:2869
+#: musicxml2ly.py:2892
 #, python-format
 msgid "Output to `%s'"
 msgstr "Output inviato a «%s»"
 
-#: musicxml2ly.py:2936
+#: musicxml2ly.py:2962
 #, python-format
 msgid "Unable to find input file %s"
 msgstr "Impossibile trovare il file di input %s"
 
-#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:81 etf2ly.py:1189
+#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:75 etf2ly.py:1191
 #, python-format
 msgid "Copyright (c) %s by"
 msgstr "Copyright (c) %s di"
 
-#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:83 etf2ly.py:1191
+#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:77 etf2ly.py:1193
 msgid "Distributed under terms of the GNU General Public License."
 msgstr "Distribuito secondo i termini della GNU General Public License."
 
-#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:84 etf2ly.py:1192
+#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:78 etf2ly.py:1194
 msgid "It comes with NO WARRANTY."
 msgstr "È distribuito con NESSUNA GARANZIA."
 
@@ -1125,7 +1204,7 @@ msgstr "trovate più di 5 voci in un rigo, è probabile che l'output sia sbaglia
 msgid "%s output to `%s'..."
 msgstr "%s output inviato a «%s»..."
 
-#: midi2ly.py:1042 abc2ly.py:1373 lilypond-book.py:122 convert-ly.py:87
+#: midi2ly.py:1042 abc2ly.py:1374 lilypond-book.py:123 convert-ly.py:81
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [OPZIONE]... FILE"
@@ -1167,7 +1246,7 @@ msgstr "imposta la tonalità: ALTERAZIONE=+diesis|-bemolle; MINORE=1"
 msgid "ALT[:MINOR]"
 msgstr "ALTERAZIONE[:MINORE]"
 
-#: midi2ly.py:1069 abc2ly.py:1388 etf2ly.py:1207
+#: midi2ly.py:1069 abc2ly.py:1389 etf2ly.py:1209
 msgid "write output to FILE"
 msgstr "scrive l'output in FILE"
 
@@ -1191,7 +1270,7 @@ msgstr "DURATA*NUMERATORE/DENOMINATORE"
 msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr "consente le durate DURATA*NUMERATORE/DENOMINATORE nei gruppi irregolari"
 
-#: midi2ly.py:1092 lilypond-book.py:220 convert-ly.py:139 etf2ly.py:1210
+#: midi2ly.py:1092 lilypond-book.py:235 convert-ly.py:141 etf2ly.py:1212
 #: main.cc:176
 msgid "show warranty and copyright"
 msgstr "mostra la garanzia e il copyright"
@@ -1208,7 +1287,7 @@ msgstr "Esempi"
 msgid "no files specified on command line."
 msgstr "nessun file specificato nella riga di comando."
 
-#: abc2ly.py:1374
+#: abc2ly.py:1375
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
@@ -1217,11 +1296,11 @@ msgstr ""
 "abc2ly converte file musicali ABC (si veda\n"
 "%s) in input LilyPond.\n"
 
-#: abc2ly.py:1390
+#: abc2ly.py:1391
 msgid "be strict about success"
 msgstr "è severo rispetto all'esito"
 
-#: abc2ly.py:1392
+#: abc2ly.py:1393
 msgid "preserve ABC's notion of beams"
 msgstr "preserva la nozione di travatura di ABC"
 
@@ -1229,7 +1308,7 @@ msgstr "preserva la nozione di travatura di ABC"
 msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
 msgstr "Elaborare i frammenti di codice LilyPond in un documento HTML ibrido, LaTeX, texinfo o DocBook."
 
-#: lilypond-book.py:82 convert-ly.py:46
+#: lilypond-book.py:82 convert-ly.py:48
 msgid "Examples:"
 msgstr "Esempi:"
 
@@ -1242,90 +1321,94 @@ msgstr "LIBRO"
 msgid "Exiting (%d)..."
 msgstr "Uscita (%d)..."
 
-#: lilypond-book.py:127
+#: lilypond-book.py:128
 msgid "FILTER"
 msgstr "FILTRO"
 
-#: lilypond-book.py:130
+#: lilypond-book.py:131
 msgid "pipe snippets through FILTER [default: `convert-ly -n -']"
 msgstr "redirige i frammenti di codice attraverso FILTRO [predefinito: `convert-ly -n -']"
 
-#: lilypond-book.py:134
+#: lilypond-book.py:135
 msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
 msgstr "usa il formato di output FORMATO (texi [predefinito], texi-html, latex, html, docbook)"
 
-#: lilypond-book.py:135
+#: lilypond-book.py:136
 msgid "FORMAT"
 msgstr "FORMATO"
 
-#: lilypond-book.py:142
+#: lilypond-book.py:143
 msgid "add DIR to include path"
 msgstr "aggiunge DIR al percorso di inclusione"
 
-#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:163
-#: lilypond-book.py:173 lilypond-book.py:194 lilypond-book.py:200 main.cc:164
+#: lilypond-book.py:144 lilypond-book.py:151 lilypond-book.py:170
+#: lilypond-book.py:188 lilypond-book.py:209 lilypond-book.py:215 main.cc:158
 msgid "DIR"
 msgstr "DIR"
 
-#: lilypond-book.py:148
+#: lilypond-book.py:149
 msgid "format Texinfo output so that Info will look for images of music in DIR"
 msgstr "formatta l'output di Texinfo in modo che Info cerchi le immagini in DIR"
 
-#: lilypond-book.py:155
+#: lilypond-book.py:156
 msgid "PAD"
 msgstr "PAD"
 
-#: lilypond-book.py:157
+#: lilypond-book.py:158
 msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
 msgstr "aumenta il lato sinistro della musica (in mm) per allinearla nonostante il numero irregolare di battute"
 
-#: lilypond-book.py:162
+#: lilypond-book.py:163
+msgid "Print lilypond log messages according to LOGLEVEL"
+msgstr "Mostra i messaggi di log di lilypond in base a LOGLEVEL"
+
+#: lilypond-book.py:169
 msgid "write lily-XXX files to DIR, link into --output dir"
 msgstr ""
 "scrive i file lily-XXX in DIR e crea un collegamento verso\n"
 "la directory specificata con --output"
 
-#: lilypond-book.py:167
+#: lilypond-book.py:174
 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)"
 msgstr "Carica il PACCHETTO python supplementare (contenente ad esempio un formato di output personalizzato)"
 
-#: lilypond-book.py:168
+#: lilypond-book.py:175
 msgid "PACKAGE"
 msgstr "PACCHETTO"
 
-#: lilypond-book.py:172
+#: lilypond-book.py:187
 msgid "write output to DIR"
 msgstr "scrive l'output in DIR"
 
-#: lilypond-book.py:177
+#: lilypond-book.py:192
 msgid "COMMAND"
 msgstr "COMANDO"
 
-#: lilypond-book.py:178
+#: lilypond-book.py:193
 msgid "process ly_files using COMMAND FILE..."
 msgstr "elabora ly_files con COMANDO FILE..."
 
-#: lilypond-book.py:183
+#: lilypond-book.py:198
 msgid "Redirect the lilypond output"
 msgstr "Redirezione dell'output di lilypond"
 
-#: lilypond-book.py:187
+#: lilypond-book.py:202
 msgid "Compile snippets in safe mode"
 msgstr "Compila i frammenti di codice in modalità sicura"
 
-#: lilypond-book.py:193
+#: lilypond-book.py:208
 msgid "do not fail if no lilypond output is found"
 msgstr "non si interrompe se non si trova alcun output di lilypond"
 
-#: lilypond-book.py:199
+#: lilypond-book.py:214
 msgid "do not fail if no PNG images are found for EPS files"
 msgstr "non si interrompe se non si trovano immagini PNG per i file EPS"
 
-#: lilypond-book.py:205
+#: lilypond-book.py:220
 msgid "write snippet output files with the same base name as their source file"
 msgstr "scrive i file di output dei frammenti di codice con lo stesso nome di base dei file sorgenti"
 
-#: lilypond-book.py:225
+#: lilypond-book.py:240
 msgid ""
 "run executable PROG instead of latex, or in\n"
 "case --pdf option is set instead of pdflatex"
@@ -1333,70 +1416,88 @@ msgstr ""
 "eseguire il PROGRAMMA eseguibile invece di latex, o nel caso in\n"
 "cui viene impostata l'opzione --pdf invece di usare pdflatex"
 
-#: lilypond-book.py:227
+#: lilypond-book.py:242 lilypond-book.py:247
 msgid "PROG"
 msgstr "PROGRAMMA"
 
-#: lilypond-book.py:233
+#: lilypond-book.py:246
+msgid "run executable PROG instead of texi2pdf"
+msgstr "esegue l'eseguibile PROGRAMMA invece di texi2pdf"
+
+#: lilypond-book.py:253
 msgid "create PDF files for use with PDFTeX"
 msgstr "creare file PDF per l'utilizzo con PDFTeX"
 
-#: lilypond-book.py:428
+#: lilypond-book.py:456
 msgid "Writing snippets..."
 msgstr "Scrittura dei frammenti di codice..."
 
-#: lilypond-book.py:434
+#: lilypond-book.py:461
 msgid "Processing..."
 msgstr "In elaborazione..."
 
-#: lilypond-book.py:440
+#: lilypond-book.py:466
 msgid "All snippets are up to date..."
 msgstr "Tutti i frammenti di codice sono aggiornati..."
 
-#: lilypond-book.py:461
+#: lilypond-book.py:485
 #, python-format
 msgid "cannot determine format for: %s"
 msgstr "impossibile determinare il formato per: %s"
 
-#: lilypond-book.py:470
+#: lilypond-book.py:494
 #, python-format
 msgid "%s is up to date."
 msgstr "%s è aggiornato."
 
-#: lilypond-book.py:484
+#: lilypond-book.py:507
 #, python-format
 msgid "Writing `%s'..."
 msgstr "Scrittura di «%s»..."
 
-#: lilypond-book.py:546
+#: lilypond-book.py:568
 msgid "Output would overwrite input file; use --output."
 msgstr "L'output sovrascriverebbe il file di input; usare --output."
 
-#: lilypond-book.py:550
+#: lilypond-book.py:572
 #, python-format
 msgid "Reading %s..."
 msgstr "Lettura di %s..."
 
-#: lilypond-book.py:558
+#: lilypond-book.py:579
 msgid "Dissecting..."
 msgstr "Dissezione di..."
 
-#: lilypond-book.py:570
+#: lilypond-book.py:590
 #, python-format
 msgid "Compiling %s..."
 msgstr "Compilazione di %s"
 
-#: lilypond-book.py:579
+#: lilypond-book.py:598
 #, python-format
 msgid "Processing include: %s"
 msgstr "Elaborazione di include: %s"
 
-#: lilypond-book.py:591
+#: lilypond-book.py:609
 #, python-format
 msgid "Removing `%s'"
 msgstr "Eliminazione di «%s»"
 
-#: convert-ly.py:44
+#: lilypond-book.py:676
+#, python-format
+msgid "Setting LilyPond's loglevel to %s"
+msgstr "Si imposta il loglevel di LilyPond su %s"
+
+#: lilypond-book.py:680
+#, python-format
+msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)"
+msgstr "Si imposta il loglevel di LilyPond su %s (dalla variabile d'ambiente LILYPOND_LOGLEVEL)"
+
+#: lilypond-book.py:683
+msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting"
+msgstr "Si imposta l'output di LilyPond su --verbose, come implicato dall'impostazione di lilypond-book"
+
+#: convert-ly.py:46
 msgid ""
 "Update LilyPond input to newer version.  By default, update from the\n"
 "version taken from the \\version command, to the current LilyPond version."
@@ -1404,69 +1505,69 @@ msgstr ""
 "Aggiorna l'input LilyPond a una nuova versione.  Per impostazione predefinita aggiorna dalla\n"
 "versione presa dal comando \\version alla versione attuale di LilyPond."
 
-#: convert-ly.py:102 convert-ly.py:135
+#: convert-ly.py:96 convert-ly.py:137
 msgid "VERSION"
 msgstr "VERSIONE"
 
-#: convert-ly.py:104
+#: convert-ly.py:98
 msgid "start from VERSION [default: \\version found in file]"
 msgstr "parte dalla VERSIONE [predefinito: \\version del file]"
 
-#: convert-ly.py:107
+#: convert-ly.py:101
 msgid "edit in place"
 msgstr "modifica il file di input"
 
-#: convert-ly.py:111
+#: convert-ly.py:113
 msgid "do not add \\version command if missing"
 msgstr "non aggiunge il comando \\version se non è presente"
 
-#: convert-ly.py:117
+#: convert-ly.py:119
 #, python-format
 msgid "force updating \\version number to %s"
 msgstr "forza l'aggiornamento del numero di \\version a %s"
 
-#: convert-ly.py:123
+#: convert-ly.py:125
 msgid "only update \\version number if file is modified"
 msgstr "aggiorna il numero di \\version solo se il file è modificato"
 
-#: convert-ly.py:129
+#: convert-ly.py:131
 #, python-format
 msgid "show rules [default: -f 0, -t %s]"
 msgstr "mostra le regole [predefinito: -f 0, -t %s]"
 
-#: convert-ly.py:134
+#: convert-ly.py:136
 #, python-format
 msgid "convert to VERSION [default: %s]"
 msgstr "converte a VERSIONE [predefinito: %s]"
 
-#: convert-ly.py:184
+#: convert-ly.py:186
 msgid "Applying conversion: "
 msgstr "Conversione in corso: "
 
-#: convert-ly.py:197
+#: convert-ly.py:202
 msgid "Error while converting"
 msgstr "Errore durante la conversione"
 
-#: convert-ly.py:199
+#: convert-ly.py:204
 msgid "Stopping at last successful rule"
 msgstr "Fermarsi all'ultima regola riuscita"
 
-#: convert-ly.py:224
+#: convert-ly.py:231
 #, python-format
 msgid "Processing `%s'... "
 msgstr "Elaborazione di «%s»... "
 
-#: convert-ly.py:332
+#: convert-ly.py:338
 #, python-format
 msgid "%s: Unable to open file"
 msgstr "%s: Impossibile aprire il file"
 
-#: convert-ly.py:339
+#: convert-ly.py:345
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr "%s: Impossibile determinare la versione. Tralasciato"
 
-#: convert-ly.py:344
+#: convert-ly.py:350
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
@@ -1475,12 +1576,12 @@ msgstr ""
 "%s: Stringa di versione non valida `%s' \n"
 "Le stringhe di versione valide sono composte da tre numeri separati da punti, ad esempio «2.8.12»"
 
-#: etf2ly.py:1195
+#: etf2ly.py:1197
 #, python-format
 msgid "%s [OPTION]... ETF-FILE"
 msgstr "%s [OPZIONE]... FILE-ETF"
 
-#: etf2ly.py:1196
+#: etf2ly.py:1198
 msgid ""
 "Enigma Transport Format is a format used by Coda Music Technology's\n"
 "Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond file.\n"
@@ -1496,20 +1597,51 @@ msgstr "Inglese"
 msgid "Other languages"
 msgstr "Altre lingue"
 
-#: warn.cc:59
+#: warn.cc:56
+#, c-format
+msgid "Log level set to %d\n"
+msgstr "Log level impostato su %d\n"
+
+#: warn.cc:89
+#, c-format
+msgid "unknown log level `%s', using default (INFO)"
+msgstr "log level \"%s\" sconosciuto, si usa quello predefinito (INFO)"
+
+#. Some expected warning was not triggered, so print out a warning.
+#: warn.cc:112
+#, c-format
+msgid "%d expected warning(s) not encountered: "
+msgstr "%d avvertimenti previsti non incontrati: "
+
+#: warn.cc:183
 #, c-format
-msgid "success: %s"
-msgstr "riuscito: %s"
+msgid "fatal error: %s"
+msgstr "errore fatale: %s"
 
-#: warn.cc:86 grob.cc:613 input.cc:97
+#: warn.cc:192
+#, c-format
+msgid "suppressed programming error: %s"
+msgstr "errore di programmazione soppresso: %s"
+
+#: warn.cc:197
 #, c-format
 msgid "programming error: %s"
 msgstr "errore di programmazione: %s"
 
-#: warn.cc:87 input.cc:98
+#: warn.cc:198
 msgid "continuing, cross fingers"
 msgstr "continua, incrociare le dita"
 
+#: warn.cc:207
+#, c-format
+msgid "suppressed error: %s"
+msgstr "errore soppresso: %s"
+
+#: warn.cc:219
+#, c-format
+msgid "suppressed warning: %s"
+msgstr "avvertimento soppresso: %s"
+
 #: getopt-long.cc:153
 #, c-format
 msgid "option `%s' requires an argument"
@@ -1530,35 +1662,43 @@ msgstr "opzione non riconosciuta: «%s»"
 msgid "invalid argument `%s' to option `%s'"
 msgstr "argomento «%s» non valido per l'opzione «%s»"
 
-#: grob.cc:286
-msgid "Infinity or NaN encountered"
-msgstr "incontrato infinito o un valore non numerico"
-
-#: vaticana-ligature.cc:95
-msgid "flexa-height undefined; assuming 0"
-msgstr "flexa-height non definito; si assume 0"
-
-#: vaticana-ligature.cc:100
-msgid "ascending vaticana style flexa"
-msgstr "flexa ascendente in stile vaticana"
+#: flag.cc:110
+#, c-format
+msgid "flag `%s' not found"
+msgstr "non si trova la coda uncinata «%s»"
 
-#: vaticana-ligature.cc:188
-msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr "Vaticana_ligature: unione nulla (delta_pitch == 0)"
+#: flag.cc:130
+#, c-format
+msgid "flag stroke `%s' not found"
+msgstr "non si trova il tratto «%s» della coda uncinata"
 
-#: parse-scm.cc:100
+#: parse-scm.cc:112
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE ha segnalato un errore per l'espressione che inizia qui"
 
-#: rest-collision-engraver.cc:70
-msgid "rhythmic head is not part of a rhythmic column"
-msgstr "la testa ritmica non fa parte di una colonna ritmica"
+#: lily-lexer.cc:255
+msgid "include files are not allowed in safe mode"
+msgstr "l'inclusione di file non è permessa in modalità sicura"
+
+#: lily-lexer.cc:282
+#, c-format
+msgid "identifier name is a keyword: `%s'"
+msgstr "Il nome dell'identificatore è una parola chiave: «%s»"
+
+#: lily-lexer.cc:303 lily-lexer.cc:316
+#, c-format
+msgid "%s:EOF"
+msgstr "%s:EOF"
 
 #. if we get to here, just put everything on one line
 #: constrained-breaking.cc:187 constrained-breaking.cc:205
 msgid "cannot find line breaking that satisfies constraints"
 msgstr "impossibile trovare interruzioni di linea che soddisfino i vincoli"
 
+#: context-property.cc:43
+msgid "need symbol arguments for \\override and \\revert"
+msgstr "sono necessari argomenti simbolici per \\override e \\revert"
+
 #: horizontal-bracket-engraver.cc:62
 msgid "do not have that many brackets"
 msgstr "non ci sono così tante parentesi"
@@ -1567,79 +1707,104 @@ msgstr "non ci sono così tante parentesi"
 msgid "conflicting note group events"
 msgstr "eventi di gruppi di note in conflitto"
 
-#: hyphen-engraver.cc:104
-msgid "removing unterminated hyphen"
-msgstr "eliminazione di un trattino non terminato"
-
-#: hyphen-engraver.cc:118
-msgid "unterminated hyphen; removing"
-msgstr "trattino non terminato; eliminazione"
+#: new-fingering-engraver.cc:113
+msgid "cannot add text scripts to individual note heads"
+msgstr "impossibile aggiungere delle scritte testuali alle teste delle note individuali"
 
-#: pango-font.cc:189 open-type-font.cc:318
-#, c-format
-msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "errore in FT_Get_Glyph_Name (): %s"
+#: new-fingering-engraver.cc:265
+msgid "no placement found for fingerings"
+msgstr "nessuna posizione trovata per le diteggiature"
 
-#: pango-font.cc:205
-#, c-format
-msgid ""
-"Glyph has no name, but font supports glyph naming.\n"
-"Skipping glyph U+%0X, file %s"
-msgstr ""
-"Il glifo non ha un nome, ma il tipo di carattere permette di dare un nome al glifo.\n"
-"Si salta il glifo U+%0X, file %s"
+#: new-fingering-engraver.cc:266
+msgid "placing below"
+msgstr "si colloca in basso"
 
-#: pango-font.cc:242
+#: translator-group.cc:188
 #, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "nessun nome di tipo di carattere PostScript per «%s»"
+msgid "cannot find: `%s'"
+msgstr "impossibile trovare: «%s»"
 
-#: pango-font.cc:291
-msgid "FreeType face has no PostScript font name"
-msgstr "Il tipo FreeType non ha un nome per il tipo di carattere PostScript"
+#: glissando-engraver.cc:158
+msgid "unterminated glissando"
+msgstr "glissando non terminato"
 
 #: midi-item.cc:89
 #, c-format
 msgid "no such MIDI instrument: `%s'"
 msgstr "non esiste questo strumento MIDI: «%s»"
 
+#: open-type-font.cc:44
+#, c-format
+msgid "cannot allocate %lu bytes"
+msgstr "impossibile allocare %lu byte"
+
+#: open-type-font.cc:48
+#, c-format
+msgid "cannot load font table: %s"
+msgstr "impossibile caricare la tabella dei tipi di carattere: %s"
+
+#: open-type-font.cc:53
+#, c-format
+msgid "FreeType error: %s"
+msgstr "Errore FreeType: %s"
+
+#: open-type-font.cc:110
+#, c-format
+msgid "unsupported font format: %s"
+msgstr "formato di tipo di carattere non supportato: %s"
+
+#: open-type-font.cc:112
+#, c-format
+msgid "error reading font file %s: %s"
+msgstr "errore nella lettura del file del tipo di carattere %s: %s"
+
+#: open-type-font.cc:187
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "errore di Freetype in FT_Get_Glyph_Name (): %s"
+
+#: open-type-font.cc:318 pango-font.cc:189
+#, c-format
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "errore in FT_Get_Glyph_Name (): %s"
+
 #: note-heads-engraver.cc:76
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent senza altezza"
 
-#: rest.cc:160
-#, c-format
-msgid "rest `%s' not found"
-msgstr "pausa «%s» non trovata"
+#: skyline-pair.cc:131
+msgid "direction must not be CENTER in ly:skyline-pair::skyline"
+msgstr "in ly:skyline-pair::skyline la direzione non deve essere CENTER"
 
-#: spaceable-grob.cc:94
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "Nessuna separazione tra la colonna %d e la successiva"
+#: hyphen-engraver.cc:104
+msgid "removing unterminated hyphen"
+msgstr "eliminazione di un trattino non terminato"
 
-#: beam-engraver.cc:147
-msgid "already have a beam"
-msgstr "travatura già presente"
+#: hyphen-engraver.cc:118
+msgid "unterminated hyphen; removing"
+msgstr "trattino non terminato; eliminazione"
 
-#: beam-engraver.cc:230
-msgid "unterminated beam"
-msgstr "travatura non terminata"
+#: output-def.cc:235
+msgid "margins do not fit with line-width, setting default values"
+msgstr "i margini non corrispondono con la larghezza del rigo, si impostano i valori predefiniti"
 
-#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
-msgid "stem must have Rhythmic structure"
-msgstr "il gambo deve avere una struttura ritmica"
+#: output-def.cc:242
+msgid "systems run off the page due to improper paper settings, setting default values"
+msgstr "i sistemi escono fuori dalla pagina a causa di errate impostazioni del foglio, si impostano i valori predefiniti"
 
-#: beam-engraver.cc:274
-msgid "stem does not fit in beam"
-msgstr "il gambo non rientra nella travatura"
+#: accidental.cc:200
+#, c-format
+msgid "Could not find glyph-name for alteration %s"
+msgstr "Non si è trovato il nome del glifo per l'alterazione %s"
 
-#: beam-engraver.cc:275
-msgid "beam was started here"
-msgstr "la travatura è iniziata qui"
+#: accidental.cc:215
+msgid "natural alteration glyph not found"
+msgstr "alterazione naturale del glifo non trovata"
 
-#: music-iterator.cc:181
-msgid "Sending non-event to context"
-msgstr "Invio di un non-evento al contesto"
+#: lyric-combine-music-iterator.cc:337
+#, c-format
+msgid "cannot find Voice `%s'"
+msgstr "impossibile trovare la voce (Voice) «%s»"
 
 #: context.cc:148
 #, c-format
@@ -1651,11 +1816,6 @@ msgstr "impossibile trovare o creare un nuovo «%s»"
 msgid "cannot find or create `%s' called `%s'"
 msgstr "impossibile trovare o creare «%s» chiamato «%s»"
 
-#: context.cc:268
-#, c-format
-msgid "Invalid CreateContext event: Cannot create %s context"
-msgstr "Evento CreateContext non valido: impossibile creare il contesto %s"
-
 #: context.cc:399
 #, c-format
 msgid "cannot find or create: `%s'"
@@ -1670,9 +1830,15 @@ msgstr "La classe evento dovrebbe essere un simbolo"
 msgid "Unknown event class %s"
 msgstr "Classe di evento %s sconosciuta"
 
-#: paper-column-engraver.cc:245
-msgid "forced break was overridden by some other event, should you be using bar checks?"
-msgstr "l'interruzione forzata è stata sovrascritta da qualche altro evento, considerare l'uso dei controlli di battuta"
+#: dispatcher.cc:171
+#, c-format
+msgid "Junking event: %s"
+msgstr "Eliminazione dell'evento: %s"
+
+#: auto-change-iterator.cc:74 change-iterator.cc:72
+#, c-format
+msgid "cannot change, already in translator: %s"
+msgstr "impossibile cambiare, già nel traduttore: %s"
 
 #: tie-engraver.cc:117
 msgid "unterminated tie"
@@ -1682,23 +1848,23 @@ msgstr "legatura di valore non terminata"
 msgid "lonely tie"
 msgstr "legatura di valore solitaria"
 
-#: dynamic-engraver.cc:197
+#: dynamic-engraver.cc:193
 msgid "cannot find start of (de)crescendo"
 msgstr "impossibile trovare l'inizio del (de)crescendo"
 
-#: dynamic-engraver.cc:206
+#: dynamic-engraver.cc:200
 msgid "already have a decrescendo"
 msgstr "decrescendo già presente"
 
-#: dynamic-engraver.cc:208
+#: dynamic-engraver.cc:202
 msgid "already have a crescendo"
 msgstr "crescendo già presente"
 
-#: dynamic-engraver.cc:211
+#: dynamic-engraver.cc:205
 msgid "cresc starts here"
 msgstr "cresc inizia qui"
 
-#: dynamic-engraver.cc:339
+#: dynamic-engraver.cc:333
 msgid "unterminated (de)crescendo"
 msgstr "(de)crescendo non terminato"
 
@@ -1706,16 +1872,16 @@ msgstr "(de)crescendo non terminato"
 msgid "Calculating line breaks..."
 msgstr "Calcolo delle interruzioni di linea..."
 
-#: paper-score.cc:135
+#: paper-score.cc:134
 #, c-format
 msgid "Element count %d (spanners %d) "
 msgstr "Conto degli elementi %d (spanner %d)."
 
-#: paper-score.cc:139
+#: paper-score.cc:138
 msgid "Preprocessing graphical objects..."
 msgstr "Pre-elaborazione degli oggetti grafici..."
 
-#: paper-score.cc:163 optimal-page-breaking.cc:208
+#: paper-score.cc:162 optimal-page-breaking.cc:208
 #: page-turn-page-breaking.cc:248
 msgid "Drawing systems..."
 msgstr "Disegno dei sistemi..."
@@ -1768,77 +1934,38 @@ msgstr ""
 msgid "unexpected case fall-through"
 msgstr "caso inatteso e non interpretabile"
 
-#: piano-pedal-engraver.cc:296
+#: piano-pedal-engraver.cc:279
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
 msgstr "previste tre corde per i pedali del pianoforte, trovate: %ld"
 
-#: piano-pedal-engraver.cc:311 piano-pedal-engraver.cc:322
+#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305
 #: piano-pedal-performer.cc:104
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
 msgstr "impossibile trovare l'inizio del pedale del pianoforte: «%s»"
 
-#: piano-pedal-engraver.cc:357
+#: piano-pedal-engraver.cc:340
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
 msgstr "impossibile trovare la parentesi di apertura del pedale del pianoforte: «%s»"
 
-#: input.cc:130 source-file.cc:178 source-file.cc:193
+#: input.cc:138 source-file.cc:178 source-file.cc:193
 msgid "position unknown"
 msgstr "posizione sconosciuta"
 
-#: paper-outputter-scheme.cc:41
-#, c-format
-msgid "Layout output to `%s'..."
-msgstr "Output della formattazione inviato a «%s»..."
-
-#: general-scheme.cc:305
-msgid "infinity or NaN encountered while converting Real number"
-msgstr "si è incontrato infinito o un valore non numerico durante la conversione di un numero reale"
-
-#: general-scheme.cc:306
-msgid "setting to zero"
-msgstr "impostato a zero"
+#: stem.cc:128
+msgid "weird stem size, check for narrow beams"
+msgstr "strana dimensione del gambo, controllare di non avere travature strette"
 
-#: general-scheme.cc:540
-msgid "Found infinity or nan in output. Substituting 0.0"
-msgstr "Trovato infinito o un valore non numerico nell'output. Sostituito con 0.0"
+#: relative-octave-check.cc:49
+msgid "Failed octave check, got: "
+msgstr "Il controllo dell'ottava è fallito, si è ottenuto:"
 
-#: music.cc:150
+#: translator-ctors.cc:65
 #, c-format
-msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr "controllo dell'ottava fallito: previsto \"%s\", trovato: \"%s\""
-
-#: music.cc:218
-msgid "(normalized pitch)"
-msgstr "(altezza normalizzata)"
-
-#: music.cc:222
-#, c-format
-msgid "Transposing %s by %s makes alteration larger than double"
-msgstr "La trasposizione di %s da %s ingrandisce le alterazioni più del doppio"
-
-#: translator-ctors.cc:65
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "traduttore sconosciuto: «%s»"
-
-#: partial-iterator.cc:45
-msgid "trying to use \\partial after the start of a piece"
-msgstr "tentativo di usare \\partial all'inizio di un brano"
-
-#: new-fingering-engraver.cc:105
-msgid "cannot add text scripts to individual note heads"
-msgstr "impossibile aggiungere delle scritte testuali alle teste delle note individuali"
-
-#: new-fingering-engraver.cc:249
-msgid "no placement found for fingerings"
-msgstr "nessuna posizione trovata per le diteggiature"
-
-#: new-fingering-engraver.cc:250
-msgid "placing below"
-msgstr "si colloca in basso"
+msgid "unknown translator: `%s'"
+msgstr "traduttore sconosciuto: «%s»"
 
 #: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72
 msgid "cannot find start of ligature"
@@ -1868,34 +1995,26 @@ msgstr "pausa ignorata: la legatura non può contenere una pausa"
 msgid "ligature was started here"
 msgstr "la legatura è iniziata qui"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "impossibile cambiare, già nel traduttore: %s"
-
-#: accidental-engraver.cc:179
-#, c-format
-msgid "accidental typesetting list must begin with context-name: %s"
-msgstr "la lista tipografica delle alterazioni deve iniziare con context-name: %s"
-
-#: accidental-engraver.cc:209
-#, c-format
-msgid "procedure or context-name expected for accidental rule, found %s"
-msgstr "si aspettava una procedura o un nome di contesto per la regola di alterazione accidentale, si è trovato %s"
+#: tuplet-engraver.cc:110
+msgid "No tuplet to end"
+msgstr "Nessun gruppo irregolare da terminare"
 
-#: ttf.cc:480 ttf.cc:529
+#: ttf.cc:480 ttf.cc:528
 #, c-format
 msgid "font index %d too large for font `%s', using index 0"
 msgstr "l'indice del tipo di carattere %d è troppo grande per il tipo di carattere «%s», si usa l'indice 0"
 
-#: ttf.cc:512 ttf.cc:564
+#: ttf.cc:512 ttf.cc:562
 msgid "font index must be non-negative, using index 0"
 msgstr "l'indice del tipo di carattere deve essere non negativo, si usa l'indice 0"
 
-#: break-alignment-interface.cc:199
-#, c-format
-msgid "No spacing entry from %s to `%s'"
-msgstr "Nessuno spazio da %s a «%s»"
+#: multi-measure-rest.cc:140
+msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
+msgstr "usable-duration-logs deve essere una lista non vuota.  Si ricorre alle pause di semibreve."
+
+#: partial-iterator.cc:45
+msgid "trying to use \\partial after the start of a piece"
+msgstr "tentativo di usare \\partial all'inizio di un brano"
 
 #: minimal-page-breaking.cc:44
 msgid "Calculating page breaks..."
@@ -1921,13 +2040,17 @@ msgstr "l'opzione -dprint-pages del programma non è supportata dal backend «%s
 msgid "program option -dpreview not supported by backend `%s'"
 msgstr "l'opzione -dpreview del programma non è supportata dal backend «%s»"
 
-#: output-def.cc:235
-msgid "margins do not fit with line-width, setting default values"
-msgstr "i margini non corrispondono con la larghezza del rigo, si impostano i valori predefiniti"
+#: episema-engraver.cc:75
+msgid "already have an episema"
+msgstr "episema già presente"
 
-#: output-def.cc:242
-msgid "systems run off the page due to improper paper settings, setting default values"
-msgstr "i sistemi escono fuori dalla pagina a causa di errate impostazioni del foglio, si impostano i valori predefiniti"
+#: episema-engraver.cc:88
+msgid "cannot find start of episema"
+msgstr "impossibile trovare l'inizio dell'episema"
+
+#: episema-engraver.cc:137
+msgid "unterminated episema"
+msgstr "episema non terminato"
 
 #: score-engraver.cc:78
 #, c-format
@@ -1947,7 +2070,16 @@ msgstr "Percorso di ricerca «%s»"
 msgid "Aborting"
 msgstr "Si sospende l'esecuzione"
 
-#: note-collision.cc:494
+#: performance.cc:54
+msgid "Track..."
+msgstr "Traccia..."
+
+#: performance.cc:82
+#, c-format
+msgid "MIDI output to `%s'..."
+msgstr "L'output MIDI è inviato a «%s»..."
+
+#: note-collision.cc:504
 msgid "ignoring too many clashing note columns"
 msgstr "troppe collisioni tra colonne di note, ignorate"
 
@@ -1968,20 +2100,20 @@ msgstr "è già presente uno spanner terminato"
 msgid "giving up"
 msgstr "rinuncia"
 
-#: page-layout-problem.cc:603
+#: page-layout-problem.cc:709
 msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed"
 msgstr "impossibile far entrare la musica nella pagina: richiesta la spaziatura ridotta, ma la pagina è già stata compressa"
 
-#: page-layout-problem.cc:606
+#: page-layout-problem.cc:712
 #, c-format
 msgid "cannot fit music on page: overflow is %f"
 msgstr "impossibile far entrare la musica nella pagina: l'eccesso è %f"
 
-#: page-layout-problem.cc:608
+#: page-layout-problem.cc:714
 msgid "compressing music to fit"
 msgstr "si comprime la musica per farla entrare"
 
-#: page-layout-problem.cc:1047
+#: page-layout-problem.cc:1176
 msgid "staff-affinities should only decrease"
 msgstr "staff-affinities deve solo diminuire"
 
@@ -1998,61 +2130,104 @@ msgstr "rehearsalMark deve avere un valore intero"
 msgid "mark label must be a markup object"
 msgstr "l'etichetta del segno deve essere un oggetto di markup"
 
-#: new-dynamic-engraver.cc:168
-#, c-format
-msgid ""
-"unknown crescendo style: %s\n"
-"defaulting to hairpin."
-msgstr ""
-"stile di crescendo sconosciuto: %s\n"
-"si usa la forcella predefinita."
-
-#: new-dynamic-engraver.cc:233
-#, c-format
-msgid "unterminated %s"
-msgstr "%s non terminato"
-
-#: stem-engraver.cc:102
+#: stem-engraver.cc:105
 msgid "tremolo duration is too long"
 msgstr "la durata del tremolo è troppo lunga"
 
-#: stem-engraver.cc:154
+#: stem-engraver.cc:157
 #, c-format
 msgid "adding note head to incompatible stem (type = %d/%d)"
 msgstr "si aggiunge la testa della nota a un gambo incompatibile (tipo = %d/%d)"
 
-#: stem-engraver.cc:157
+#: stem-engraver.cc:160
 msgid "maybe input should specify polyphonic voices"
 msgstr "forse l'input dovrebbe specificare le voci polifoniche"
 
-#: lily-lexer.cc:265
-msgid "include files are not allowed in safe mode"
-msgstr "l'inclusione di file non è permessa in modalità sicura"
+#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#, c-format
+msgid "cannot find file: `%s'"
+msgstr "impossibile trovare il file: «%s»"
 
-#: lily-lexer.cc:292
+#: includable-lexer.cc:73 lily-parser-scheme.cc:100
 #, c-format
-msgid "identifier name is a keyword: `%s'"
-msgstr "Il nome dell'identificatore è una parola chiave: «%s»"
+msgid "(search path: `%s')"
+msgstr "(percorso di ricerca: «%s»)"
 
-#: lily-lexer.cc:313
+#: relocate.cc:52
 #, c-format
-msgid "error at EOF: %s"
-msgstr "errore alla fine del file (EOF): %s"
+msgid "Setting %s to %s"
+msgstr "Si imposta %s su %s"
 
-#: lyric-combine-music-iterator.cc:337
+#. this warning should only be printed in debug mode!
+#: relocate.cc:73
 #, c-format
-msgid "cannot find Voice `%s'"
-msgstr "impossibile trovare la voce (Voice) «%s»"
+msgid "no such file: %s for %s"
+msgstr "file inesistente: %s per %s"
 
-#: includable-lexer.cc:71 lily-guile.cc:86 lily-parser-scheme.cc:109
+#. this warning should only be printed in debug mode!
+#. this warning should only be printed in debug mode
+#: relocate.cc:84 relocate.cc:102
 #, c-format
-msgid "cannot find file: `%s'"
-msgstr "impossibile trovare il file: «%s»"
+msgid "no such directory: %s for %s"
+msgstr "directory inesistente: %s per %s"
 
-#: includable-lexer.cc:73 lily-parser-scheme.cc:101
+#: relocate.cc:93
 #, c-format
-msgid "(search path: `%s')"
-msgstr "(percorso di ricerca: «%s»)"
+msgid "%s=%s (prepend)\n"
+msgstr "%s=%s (prefisso)\n"
+
+#: relocate.cc:124
+#, c-format
+msgid "not relocating, no %s/ or current/ found under %s"
+msgstr "non si riloca, non si è incontrato %s/ o current/ in %s"
+
+#: relocate.cc:134
+#, c-format
+msgid "Relocation: compile datadir=%s, new datadir=%s"
+msgstr "Rilocazione: compilare datadir=%s, nuova datadir=%s"
+
+#: relocate.cc:146
+#, c-format
+msgid "Relocation: framework_prefix=%s"
+msgstr "Rilocazione: framework_prefix=%s"
+
+#: relocate.cc:186
+#, c-format
+msgid "Relocation: is absolute: argv0=%s\n"
+msgstr "Rilocazione: è assoluta: argv0=%s\n"
+
+#: relocate.cc:192
+#, c-format
+msgid "Relocation: from cwd: argv0=%s\n"
+msgstr "Rilocazione: da cwd: argv0=%s\n"
+
+#: relocate.cc:208
+#, c-format
+msgid ""
+"Relocation: from PATH=%s\n"
+"argv0=%s"
+msgstr ""
+"Rilocazione: da PATH=%s\n"
+"argv0=%s"
+
+#: relocate.cc:235
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr "LILYPONDPREFIX è obsoleto, usare LILYPOND_DATADIR"
+
+#: relocate.cc:360
+#, c-format
+msgid "Relocation file: %s"
+msgstr "File di rilocazione: %s"
+
+#: relocate.cc:364 source-file.cc:65
+#, c-format
+msgid "cannot open file: `%s'"
+msgstr "impossibile aprire il file: «%s»"
+
+#: relocate.cc:394
+#, c-format
+msgid "Unknown relocation command %s"
+msgstr "Comando di rilocazione sconosciuto %s"
 
 #: note-column.cc:135
 msgid "cannot have note heads and rests together on a stem"
@@ -2062,11 +2237,6 @@ msgstr "impossibile avere teste e pause insieme su un gambo"
 msgid "removing beam with no stems"
 msgstr "rimozione delle travature senza gambi"
 
-#. We are completely screwed.
-#: beam.cc:1350
-msgid "no viable initial configuration found: may not find good beam slope"
-msgstr "nessuna configurazione iniziale fattibile trovata: si potrebbe non trovare una buona inclinazione delle travature"
-
 #: staff-performer.cc:257
 msgid "MIDI channel wrapped around"
 msgstr "Numerazione canale MIDI ricominciata"
@@ -2075,43 +2245,64 @@ msgstr "Numerazione canale MIDI ricominciata"
 msgid "remapping modulo 16"
 msgstr "riassegnata con modulo 16"
 
-#: slur-engraver.cc:90 phrasing-slur-engraver.cc:89
+#: dots.cc:48
 #, c-format
-msgid "direction of %s invalid: %d"
-msgstr "direzione di %s non valida: %d"
-
-#: slur-engraver.cc:158
-msgid "unterminated slur"
-msgstr "legatura di portamento non terminata"
-
-#: slur-engraver.cc:183
-msgid "cannot end slur"
-msgstr "impossibile terminare la legatura di portamento"
-
-#. We already have a slur, so give a warning and completely ignore
-#. the new slur.
-#: slur-engraver.cc:200
-msgid "already have slur"
-msgstr "legatura già presente"
+msgid "dot `%s' not found"
+msgstr "punto «%s» non trovato"
 
-#: font-config.cc:39
+#: font-config.cc:38
 msgid "Initializing FontConfig..."
 msgstr "Inizializzazione di FontConfig..."
 
-#: font-config.cc:54 font-config-scheme.cc:151
+#: font-config.cc:53 font-config-scheme.cc:151
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "errore nell'aggiungere la directory dei tipi di carattere: %s"
 
-#: font-config.cc:56 font-config-scheme.cc:153
+#: font-config.cc:55 font-config-scheme.cc:153
 #, c-format
-msgid "adding font directory: %s"
-msgstr "aggiungere la directory dei tipi di carattere: %s"
+msgid "Adding font directory: %s"
+msgstr "Si aggiunge la directory dei tipi di carattere: %s"
 
-#: font-config.cc:60
+#: font-config.cc:58
 msgid "Building font database..."
 msgstr "Creazione del database dei tipi di carattere..."
 
+#: change-iterator.cc:34
+#, c-format
+msgid "cannot change `%s' to `%s'"
+msgstr "impossibile cambiare «%s» in «%s»"
+
+#. FIXME: constant error message.
+#: change-iterator.cc:93
+msgid "cannot find context to switch to"
+msgstr "impossibile trovare il contesto su cui spostarsi"
+
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#: change-iterator.cc:102
+#, c-format
+msgid "not changing to same context type: %s"
+msgstr "non passare allo stesso tipo di contesto: %s"
+
+#. FIXME: uncomprehensable message
+#: change-iterator.cc:106
+msgid "none of these in my family"
+msgstr "nessuno di questi nella mia famiglia"
+
+#: slur.cc:438
+#, c-format
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr "Si ignora il grob per la legatura di portamento: %s. Non si è impostato avoid-slur?"
+
+#: source-file.cc:85
+#, c-format
+msgid "expected to read %d characters, got %d"
+msgstr "si prevedeva di leggere %d caratteri, se ne sono ottenuti %d"
+
 #. find out the ideal number of pages
 #: optimal-page-breaking.cc:62
 msgid "Finding the ideal number of pages..."
@@ -2145,41 +2336,21 @@ msgstr "tentando %d sistemi"
 msgid "best score for this sys-count: %f"
 msgstr "miglior punteggio per questo numero di sistemi: %f"
 
-#: accidental.cc:200
-#, c-format
-msgid "Could not find glyph-name for alteration %s"
-msgstr "Non si è trovato il nome del glifo per l'alterazione %s"
-
-#: accidental.cc:215
-msgid "natural alteration glyph not found"
-msgstr "alterazione naturale del glifo non trovata"
-
-#: system.cc:201
-#, c-format
-msgid "Element count %d"
-msgstr "Numero degli elementi %d"
-
-#: system.cc:402
-#, c-format
-msgid "Grob count %d"
-msgstr "Numero degli oggetti grafici %d"
-
-#: slur.cc:359
-#, c-format
-msgid "Ignoring grob for slur: %s. avoid-slur not set?"
-msgstr "Si ignora il grob per la legatura di portamento: %s. Non si è impostato avoid-slur?"
-
-#: font-config-scheme.cc:167
+#: new-dynamic-engraver.cc:168
 #, c-format
-msgid "failed adding font file: %s"
-msgstr "errore nell'aggiungere il file dei tipi di carattere: %s"
+msgid ""
+"unknown crescendo style: %s\n"
+"defaulting to hairpin."
+msgstr ""
+"stile di crescendo sconosciuto: %s\n"
+"si usa la forcella predefinita."
 
-#: font-config-scheme.cc:169
+#: new-dynamic-engraver.cc:233
 #, c-format
-msgid "adding font file: %s"
-msgstr "aggiungere il file dei tipi di carattere: %s"
+msgid "unterminated %s"
+msgstr "%s non terminato"
 
-#: hairpin.cc:186
+#: hairpin.cc:263
 msgid "decrescendo too small"
 msgstr "decrescendo troppo piccolo"
 
@@ -2187,30 +2358,7 @@ msgstr "decrescendo troppo piccolo"
 msgid "unterminated extender"
 msgstr "estensore non terminato"
 
-#: lily-guile.cc:88
-#, c-format
-msgid "(load path: `%s')"
-msgstr "(percorso di caricamento: «%s»)"
-
-#: lily-guile.cc:431
-#, c-format
-msgid "cannot find property type-check for `%s' (%s)."
-msgstr "impossibile trovare la proprietà type-check per «%s» (%s)."
-
-#: lily-guile.cc:434
-msgid "perhaps a typing error?"
-msgstr "forse un errore di digitazione?"
-
-#: lily-guile.cc:441
-msgid "doing assignment anyway"
-msgstr "compito comunque in corso"
-
-#: lily-guile.cc:453
-#, c-format
-msgid "type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "controllo del tipo per «%s» fallito; il valore «%s» deve essere del tipo «%s»"
-
-#: main.cc:107
+#: main.cc:101
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2222,7 +2370,7 @@ msgstr ""
 "License che permette di modificarlo o distribuirne copie rispettando certe\n"
 "condizioni. Per maggiori informazioni, invocare «%s --warranty».\n"
 
-#: main.cc:113
+#: main.cc:107
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License as \n"
@@ -2254,11 +2402,11 @@ msgstr ""
 "Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:147
+#: main.cc:141
 msgid "SYM[=VAL]"
 msgstr "SIMBOLO[=VALORE]"
 
-#: main.cc:148
+#: main.cc:142
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
@@ -2266,41 +2414,41 @@ msgstr ""
 "imposta l'opzione di Scheme SIMBOLO a VALORE (predefinito: #t).\n"
 "Usare -dhelp per ottenere aiuto."
 
-#: main.cc:152
+#: main.cc:146
 msgid "EXPR"
 msgstr "ESPRESSIONE"
 
-#: main.cc:152
+#: main.cc:146
 msgid "evaluate scheme code"
 msgstr "valuta il codice scheme"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:155
+#: main.cc:149
 msgid "FORMATs"
 msgstr "FORMATO"
 
-#: main.cc:155
+#: main.cc:149
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "scarica FORMATO,...  Anche come opzioni separate:"
 
-#: main.cc:156
+#: main.cc:150
 msgid "generate PDF (default)"
 msgstr "genera PDF (predefinito)"
 
-#: main.cc:157
+#: main.cc:151
 msgid "generate PNG"
 msgstr "genera PNG"
 
-#: main.cc:158
+#: main.cc:152
 msgid "generate PostScript"
 msgstr "genera PostScript"
 
-#: main.cc:161
+#: main.cc:155
 msgid "FIELD"
 msgstr "CAMPO"
 
-#: main.cc:161
+#: main.cc:155
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
@@ -2308,19 +2456,19 @@ msgstr ""
 "scrive il campo di intestazione CAMPO sul\n"
 "file chiamato BASENAME.CAMPO"
 
-#: main.cc:164
+#: main.cc:158
 msgid "add DIR to search path"
 msgstr "aggiunge DIRECTORY ai percorsi di ricerca"
 
-#: main.cc:165
+#: main.cc:159
 msgid "use FILE as init file"
 msgstr "usa FILE come file di inizializzazione"
 
-#: main.cc:168
+#: main.cc:162
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "UTENTE, GRUPPO, GABBIA, DIRECTORY"
 
-#: main.cc:168
+#: main.cc:162
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2328,14 +2476,30 @@ msgstr ""
 "chroot a GABBIA, diventa UTENTE:GRUPPO\n"
 "ed entra in DIRECTORY"
 
-#: main.cc:172
+#: main.cc:167
+msgid ""
+"print log messages according to LOGLEVEL.  Possible values are:\n"
+"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
+msgstr ""
+"mostra i messaggi di log in base a LOGLEVEL.  I valori possibili sono:\n"
+"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) e DEBUG."
+
+#: main.cc:171
 msgid "write output to FILE (suffix will be added)"
 msgstr "scrive l'output su FILE (verrà aggiunto un suffisso)"
 
-#: main.cc:173
+#: main.cc:172
 msgid "relocate using directory of lilypond program"
 msgstr "trasferisce alla directory del programma lilypond"
 
+#: main.cc:173
+msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
+msgstr "nessun progresso, solo messaggi di errore (equivalente al loglevel=ERROR)"
+
+#: main.cc:175
+msgid "be verbose (equivalent to loglevel=DEBUG)"
+msgstr "output dettagliato (equivalente al loglevel=DEBUG)"
+
 #. Do not update the copyright years here, run `make grand-replace'
 #: main.cc:242
 #, c-format
@@ -2414,11 +2578,50 @@ msgstr "non si può cambiare l'id dell'utente in: %d: %s"
 msgid "cannot change working directory to: %s: %s"
 msgstr "non si può passare alla directory di lavoro: %s: %s"
 
-#: main.cc:631
+#: main.cc:639
 #, c-format
 msgid "exception caught: %s"
 msgstr "ricevuta un'eccezione: %s"
 
+#: page-turn-page-breaking.cc:168
+#, c-format
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr "page-turn-page-breaking: interruzione da %d a %d"
+
+#: page-turn-page-breaking.cc:217
+msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
+msgstr "impossibile far entrare il primo cambio di pagina in una pagina singola.  Si consideri la possibilità di impostare first-page-number su un numero pari."
+
+#: page-turn-page-breaking.cc:230
+#, c-format
+msgid "Calculating page and line breaks (%d possible page breaks)..."
+msgstr "Calcolo delle interruzioni di pagina e di linea (%d possibili interruzioni di pagina)..."
+
+#: page-turn-page-breaking.cc:300
+#, c-format
+msgid "break starting at page %d"
+msgstr "l'interruzione comincia alla pagina %d"
+
+#: page-turn-page-breaking.cc:301
+#, c-format
+msgid "\tdemerits: %f"
+msgstr "\tdemeriti: %f"
+
+#: page-turn-page-breaking.cc:302
+#, c-format
+msgid "\tsystem count: %d"
+msgstr "\tnumero dei sistemi: %d"
+
+#: page-turn-page-breaking.cc:303
+#, c-format
+msgid "\tpage count: %d"
+msgstr "\tnumero delle pagine: %d"
+
+#: page-turn-page-breaking.cc:304
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "\tinterruzione precedente: %d"
+
 #: key-signature-interface.cc:77
 #, c-format
 msgid "No glyph found for alteration: %s"
@@ -2428,10 +2631,27 @@ msgstr "Nessun glifo trovato per l'alterazione: %s"
 msgid "alteration not found"
 msgstr "alterazione non trovata"
 
-#: dots.cc:48
+#: music.cc:150
 #, c-format
-msgid "dot `%s' not found"
-msgstr "punto «%s» non trovato"
+msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgstr "controllo dell'ottava fallito: previsto \"%s\", trovato: \"%s\""
+
+#: music.cc:219
+msgid "(normalized pitch)"
+msgstr "(altezza normalizzata)"
+
+#: music.cc:223
+#, c-format
+msgid "Transposing %s by %s makes alteration larger than double"
+msgstr "La trasposizione di %s da %s ingrandisce le alterazioni più del doppio"
+
+#: vaticana-ligature.cc:95
+msgid "flexa-height undefined; assuming 0"
+msgstr "flexa-height non definito; si assume 0"
+
+#: vaticana-ligature.cc:100
+msgid "ascending vaticana style flexa"
+msgstr "flexa ascendente in stile vaticana"
 
 #: translator.cc:356
 #, c-format
@@ -2443,9 +2663,28 @@ msgstr "Due eventi %s simultanei, si butta via questo"
 msgid "Previous %s event here"
 msgstr "L'evento %s precedente sta qui"
 
-#: glissando-engraver.cc:156
-msgid "unterminated glissando"
-msgstr "glissando non terminato"
+#: lily-guile.cc:93
+#, c-format
+msgid "(load path: `%s')"
+msgstr "(percorso di caricamento: «%s»)"
+
+#: lily-guile.cc:416
+#, c-format
+msgid "cannot find property type-check for `%s' (%s)."
+msgstr "impossibile trovare la proprietà type-check per «%s» (%s)."
+
+#: lily-guile.cc:419
+msgid "perhaps a typing error?"
+msgstr "forse un errore di digitazione?"
+
+#: lily-guile.cc:426
+msgid "doing assignment anyway"
+msgstr "compito comunque in corso"
+
+#: lily-guile.cc:438
+#, c-format
+msgid "type check for `%s' failed; value `%s' must be of type `%s'"
+msgstr "controllo del tipo per «%s» fallito; il valore «%s» deve essere del tipo «%s»"
 
 #: text-spanner-engraver.cc:72
 msgid "cannot find start of text spanner"
@@ -2464,6 +2703,26 @@ msgstr "spanner testuale non terminato"
 msgid "clef `%s' not found"
 msgstr "chiave «%s» non trovata"
 
+#: beam-engraver.cc:147
+msgid "already have a beam"
+msgstr "travatura già presente"
+
+#: beam-engraver.cc:230
+msgid "unterminated beam"
+msgstr "travatura non terminata"
+
+#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
+msgid "stem must have Rhythmic structure"
+msgstr "il gambo deve avere una struttura ritmica"
+
+#: beam-engraver.cc:277
+msgid "stem does not fit in beam"
+msgstr "il gambo non rientra nella travatura"
+
+#: beam-engraver.cc:278
+msgid "beam was started here"
+msgstr "la travatura è iniziata qui"
+
 #.
 #. Todo: should make typecheck?
 #.
@@ -2474,142 +2733,105 @@ msgstr "chiave «%s» non trovata"
 msgid "strange time signature found: %d/%d"
 msgstr "si è incontrato uno strano segno di tempo: %d/%d"
 
-#: lily-parser-scheme.cc:83
+#: paper-column-engraver.cc:261
+msgid "forced break was overridden by some other event, should you be using bar checks?"
+msgstr "l'interruzione forzata è stata sovrascritta da qualche altro evento, considerare l'uso dei controlli di battuta"
+
+#: lily-parser-scheme.cc:80
 #, c-format
 msgid "Changing working directory to: `%s'"
 msgstr "Si cambia la directory di lavoro a: «%s»"
 
-#: lily-parser-scheme.cc:100
+#: lily-parser-scheme.cc:84
+#, c-format
+msgid "unable to change directory to: `%s'"
+msgstr "impossibile cambiare la directory a: «%s»"
+
+#: lily-parser-scheme.cc:99
 #, c-format
 msgid "cannot find init file: `%s'"
 msgstr "impossibile trovare il file di init: «%s»"
 
-#: lily-parser-scheme.cc:118
+#: lily-parser-scheme.cc:117
 #, c-format
 msgid "Processing `%s'"
 msgstr "Elaborazione di «%s»"
 
-#: lily-parser-scheme.cc:203
+#: lily-parser-scheme.cc:208
 msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr "ly:parser-parse-string è valido solo con un nuovo parser.  Usare ly:parser-include-string al suo posto."
 
+#: lily-parser-scheme.cc:239
+msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
+msgstr "ly:parse-string-expression è valido solo con un nuovo parser.  Usare ly:parser-include-string al suo posto."
+
+#: font-config-scheme.cc:167
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "errore nell'aggiungere il file dei tipi di carattere: %s"
+
+#: font-config-scheme.cc:169
+#, c-format
+msgid "Adding font file: %s"
+msgstr "Si aggiunge il file dei tipi di carattere: %s"
+
 #: custos.cc:88
 #, c-format
 msgid "custos `%s' not found"
 msgstr "custos «%s» non trovato"
 
-#: program-option-scheme.cc:232
+#: accidental-engraver.cc:179
 #, c-format
-msgid "no such internal option: %s"
-msgstr "opzione interna sconosciuta: %s"
+msgid "accidental typesetting list must begin with context-name: %s"
+msgstr "la lista tipografica delle alterazioni deve iniziare con context-name: %s"
+
+#: accidental-engraver.cc:209
+#, c-format
+msgid "procedure or context-name expected for accidental rule, found %s"
+msgstr "si aspettava una procedura o un nome di contesto per la regola di alterazione accidentale, si è trovato %s"
 
 #: rest-collision.cc:146
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr "impossibile risolvere la collisione di pause: direzione delle pause non impostata"
 
-#: rest-collision.cc:160 rest-collision.cc:275
+#: rest-collision.cc:160 rest-collision.cc:276
 msgid "too many colliding rests"
 msgstr "troppe collisioni tra pause"
 
-#: pdf-scheme.cc:50
-#, c-format
-msgid "Conversion of string `%s' to UTF-16be failed: %s"
-msgstr "Fallita la conversione della stringa \"%s\" in UTF-16be: %s"
-
-#: episema-engraver.cc:75
-msgid "already have an episema"
-msgstr "episema già presente"
-
-#: episema-engraver.cc:88
-msgid "cannot find start of episema"
-msgstr "impossibile trovare l'inizio dell'episema"
-
-#: episema-engraver.cc:137
-msgid "unterminated episema"
-msgstr "episema non terminato"
-
-#: grob-property.cc:34
-#, c-format
-msgid "%d: %s"
-msgstr "%d: %s"
-
-#: grob-property.cc:169
-#, c-format
-msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
-msgstr "dipendenza ciclica: calculation-in-progress incontrato per #'%s (%s)"
-
-#: relocate.cc:53
-#, c-format
-msgid "Setting %s to %s"
-msgstr "Si imposta %s su %s"
-
-#: relocate.cc:73
-#, c-format
-msgid "no such file: %s for %s"
-msgstr "file inesistente: %s per %s"
-
-#: relocate.cc:83 relocate.cc:101
-#, c-format
-msgid "no such directory: %s for %s"
-msgstr "directory inesistente: %s per %s"
-
-#: relocate.cc:93
-#, c-format
-msgid "%s=%s (prepend)\n"
-msgstr "%s=%s (prefisso)\n"
-
-#: relocate.cc:123
-#, c-format
-msgid "not relocating, no %s/ or current/ found under %s"
-msgstr "non si riloca, non si è incontrato %s/ o current/ in %s"
-
-#: relocate.cc:134
-#, c-format
-msgid "Relocation: compile datadir=%s, new datadir=%s"
-msgstr "Rilocazione: compilare datadir=%s, nuova datadir=%s"
-
-#: relocate.cc:147
-#, c-format
-msgid "Relocation: framework_prefix=%s"
-msgstr "Rilocazione: framework_prefix=%s"
-
-#: relocate.cc:188
+#: pango-font.cc:205
 #, c-format
-msgid "Relocation: is absolute: argv0=%s"
-msgstr "Rilocazione: è assoluta: argv0=%s"
+msgid ""
+"Glyph has no name, but font supports glyph naming.\n"
+"Skipping glyph U+%0X, file %s"
+msgstr ""
+"Il glifo non ha un nome, ma il tipo di carattere permette di dare un nome al glifo.\n"
+"Si salta il glifo U+%0X, file %s"
 
-#: relocate.cc:195
+#: pango-font.cc:242
 #, c-format
-msgid "Relocation: from cwd: argv0=%s"
-msgstr "Rilocazione: da cwd: argv0=%s"
+msgid "no PostScript font name for font `%s'"
+msgstr "nessun nome di tipo di carattere PostScript per «%s»"
 
-#: relocate.cc:212
-#, c-format
-msgid ""
-"Relocation: from PATH=%s\n"
-"argv0=%s"
-msgstr ""
-"Rilocazione: da PATH=%s\n"
-"argv0=%s"
+#: pango-font.cc:291
+msgid "FreeType face has no PostScript font name"
+msgstr "Il tipo FreeType non ha un nome per il tipo di carattere PostScript"
 
-#: relocate.cc:239
-msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
-msgstr "LILYPONDPREFIX è obsoleto, usare LILYPOND_DATADIR"
+#: lyric-engraver.cc:186
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr "Le sillabe del testo non hanno note. Usare \\lyricsto o associatedVoice."
 
-#: relocate.cc:365
-#, c-format
-msgid "Relocation file: %s"
-msgstr "File di rilocazione: %s"
+#: page-breaking.cc:277
+msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
+msgstr "si ignorano min-systems-per-page e max-systems-per-page perché è stato impostato systems-per-page"
 
-#: relocate.cc:371 source-file.cc:65
-#, c-format
-msgid "cannot open file: `%s'"
-msgstr "impossibile aprire il file: «%s»"
+#: page-breaking.cc:282
+msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
+msgstr "min-systems-per-page è maggiore di max-systems-per-page, si ignorano entrambi i valori"
 
-#: relocate.cc:401
+#: paper-outputter-scheme.cc:41
 #, c-format
-msgid "Unknown relocation command %s"
-msgstr "Comando di rilocazione sconosciuto %s"
+msgid "Layout output to `%s'..."
+msgstr "Output della formattazione inviato a «%s»..."
 
 #: gregorian-ligature-engraver.cc:70
 #, c-format
@@ -2631,55 +2853,32 @@ msgstr "impossibile applicare «\\~» sulla prima testa della legatura"
 msgid "cannot apply `\\~' on heads with identical pitch"
 msgstr "impossibile applicare «\\~» su teste di identica altezza"
 
-#: translator-group.cc:188
-#, c-format
-msgid "cannot find: `%s'"
-msgstr "impossibile trovare: «%s»"
-
-#: phrasing-slur-engraver.cc:157
-msgid "unterminated phrasing slur"
-msgstr "legatura di frase non terminata"
+#: chord-tremolo-engraver.cc:88
+msgid "No tremolo to end"
+msgstr "Nessun tremolo alla fine"
 
-#: phrasing-slur-engraver.cc:182
-msgid "cannot end phrasing slur"
-msgstr "impossibile chiudere la legatura di frase"
+#: chord-tremolo-engraver.cc:109
+msgid "unterminated chord tremolo"
+msgstr "tremolo dell'accordo non terminato"
 
-#: phrasing-slur-engraver.cc:196
-msgid "already have phrasing slur"
-msgstr "legatura di frase già presente"
+#: general-scheme.cc:390
+#, c-format
+msgid "failed redirecting stderr to `%s'"
+msgstr "fallita la redirezione di stderr su «%s»"
 
-#: lyric-engraver.cc:186
-msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr "Le sillabe del testo non hanno note. Usare \\lyricsto o associatedVoice."
+#: general-scheme.cc:469
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr "Trovato infinito o un valore non numerico nell'output. Sostituito con 0.0"
 
-#: page-breaking.cc:274
-msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
-msgstr "si ignorano min-systems-per-page e max-systems-per-page perché è stato impostato systems-per-page"
-
-#: page-breaking.cc:279
-msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
-msgstr "min-systems-per-page è maggiore di max-systems-per-page, si ignorano entrambi i valori"
-
-#: performance.cc:55
-msgid "Track..."
-msgstr "Traccia..."
-
-#: performance.cc:85
+#: system.cc:200
 #, c-format
-msgid "MIDI output to `%s'..."
-msgstr "L'output MIDI è inviato a «%s»..."
-
-#: tuplet-engraver.cc:107
-msgid "No tuplet to end"
-msgstr "Nessun gruppo irregolare da terminare"
-
-#: chord-tremolo-engraver.cc:88
-msgid "No tremolo to end"
-msgstr "Nessun tremolo alla fine"
+msgid "Element count %d"
+msgstr "Numero degli elementi %d"
 
-#: chord-tremolo-engraver.cc:109
-msgid "unterminated chord tremolo"
-msgstr "tremolo dell'accordo non terminato"
+#: system.cc:466
+#, c-format
+msgid "Grob count %d"
+msgstr "Numero degli oggetti grafici %d"
 
 #: axis-group-engraver.cc:94
 msgid "Axis_group_engraver: vertical group already has a parent"
@@ -2702,16 +2901,16 @@ msgstr "stile cluster sconosciuto «%s»"
 msgid "junking empty cluster"
 msgstr "eliminazione di cluster vuoti"
 
-#: context-property.cc:42
-msgid "need symbol arguments for \\override and \\revert"
-msgstr "sono necessari argomenti simbolici per \\override e \\revert"
-
-#: source-file.cc:85
+#: grob-property.cc:35
 #, c-format
-msgid "expected to read %d characters, got %d"
-msgstr "si prevedeva di leggere %d caratteri, se ne sono ottenuti %d"
+msgid "%d: %s"
+msgstr "%d: %s"
 
-#: axis-group-interface.cc:627
+#: rest-collision-engraver.cc:70
+msgid "rhythmic head is not part of a rhythmic column"
+msgstr "la testa ritmica non fa parte di una colonna ritmica"
+
+#: axis-group-interface.cc:670
 msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr "un oggetto esterno al rigo dovrebbe avere una direzione, si imposta in su come da impostazione predefinita"
 
@@ -2720,19 +2919,20 @@ msgstr "un oggetto esterno al rigo dovrebbe avere una direzione, si imposta in s
 msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr "Coherent_ligature_engraver: impostare `spacing-increment=0.01': ptr=%ul"
 
+#. We are completely screwed.
+#: beam-quanting.cc:853
+msgid "no viable initial configuration found: may not find good beam slope"
+msgstr "nessuna configurazione iniziale fattibile trovata: si potrebbe non trovare una buona inclinazione delle travature"
+
 #: percent-repeat-engraver.cc:147
 msgid "unterminated percent repeat"
 msgstr "ripetizione percentuale non terminata"
 
-#: note-head.cc:75
+#: note-head.cc:85
 #, c-format
 msgid "none of note heads `%s' or `%s' found"
 msgstr "non si è trovata alcuna delle teste delle note «%s» o «%s»"
 
-#: relative-octave-check.cc:49
-msgid "Failed octave check, got: "
-msgstr "Il controllo dell'ottava è fallito, si è ottenuto:"
-
 #. FIXME:
 #: script-engraver.cc:113
 msgid "do not know how to interpret articulation:"
@@ -2742,34 +2942,54 @@ msgstr "non so come interpretare l'articolazione:"
 msgid " scheme encoding: "
 msgstr " codifica di Scheme: "
 
-#: all-font-metrics.cc:153
+#: program-option-scheme.cc:235
 #, c-format
-msgid "cannot find font: `%s'"
-msgstr "impossibile trovare il tipo di carattere: «%s»"
+msgid "no such internal option: %s"
+msgstr "opzione interna sconosciuta: %s"
 
 #: property-iterator.cc:93
 #, c-format
 msgid "not a grob name, `%s'"
 msgstr "non è il nome di un grob, «%s»"
 
+#: all-font-metrics.cc:149
+#, c-format
+msgid "cannot find font: `%s'"
+msgstr "impossibile trovare il tipo di carattere: «%s»"
+
+#: pdf-scheme.cc:50
+#, c-format
+msgid "Conversion of string `%s' to UTF-16be failed: %s"
+msgstr "Fallita la conversione della stringa \"%s\" in UTF-16be: %s"
+
+#: rest.cc:171
+#, c-format
+msgid "rest `%s' not found"
+msgstr "pausa «%s» non trovata"
+
 #: bar-check-iterator.cc:84
 #, c-format
 msgid "barcheck failed at: %s"
 msgstr "controllo di battuta fallito a: %s"
 
-#: stem.cc:114
-msgid "weird stem size, check for narrow beams"
-msgstr "strana dimensione del gambo, controllare di non avere travature strette"
-
-#: stem.cc:652
+#: slur-engraver.cc:92 phrasing-slur-engraver.cc:91
 #, c-format
-msgid "flag `%s' not found"
-msgstr "non si trova la coda uncinata «%s»"
+msgid "direction of %s invalid: %d"
+msgstr "direzione di %s non valida: %d"
 
-#: stem.cc:668
-#, c-format
-msgid "flag stroke `%s' not found"
-msgstr "non si trova il tratto «%s» della coda uncinata"
+#: slur-engraver.cc:166
+msgid "unterminated slur"
+msgstr "legatura di portamento non terminata"
+
+#: slur-engraver.cc:191
+msgid "cannot end slur"
+msgstr "impossibile terminare la legatura di portamento"
+
+#. We already have a slur, so give a warning and completely ignore
+#. the new slur.
+#: slur-engraver.cc:208
+msgid "already have slur"
+msgstr "legatura già presente"
 
 #: global-context-scheme.cc:96 global-context-scheme.cc:114
 msgid "no music found in score"
@@ -2779,7 +2999,7 @@ msgstr "nessuna musica trovata nello spartito"
 msgid "Interpreting music... "
 msgstr "Interpretazione della musica..."
 
-#: global-context-scheme.cc:127
+#: global-context-scheme.cc:126
 #, c-format
 msgid "elapsed time: %.2f seconds"
 msgstr "tempo trascorso: %.2f secondi"
@@ -2789,61 +3009,22 @@ msgstr "tempo trascorso: %.2f secondi"
 msgid "fatal error. Couldn't find type: %s"
 msgstr "errore fatale. Impossibile trovare il tipo: %s"
 
-#: mensural-ligature.cc:171
-msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature: caso inatteso e non interpretabile"
-
-#: mensural-ligature.cc:233
-msgid "Mensural_ligature: (join_right == 0)"
-msgstr "Mensural_ligature: (join_right == 0)"
-
-#: page-turn-page-breaking.cc:168
-#, c-format
-msgid "page-turn-page-breaking: breaking from %d to %d"
-msgstr "page-turn-page-breaking: interruzione da %d a %d"
-
-#: page-turn-page-breaking.cc:217
-msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
-msgstr "impossibile far entrare il primo cambio di pagina in una pagina singola.  Si consideri la possibilità di impostare first-page-number su un numero pari."
-
-#: page-turn-page-breaking.cc:230
-#, c-format
-msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr "Calcolo delle interruzioni di pagina e di linea (%d possibili interruzioni di pagina)..."
-
-#: page-turn-page-breaking.cc:300
-#, c-format
-msgid "break starting at page %d"
-msgstr "l'interruzione comincia alla pagina %d"
-
-#: page-turn-page-breaking.cc:301
-#, c-format
-msgid "\tdemerits: %f"
-msgstr "\tdemeriti: %f"
-
-#: page-turn-page-breaking.cc:302
-#, c-format
-msgid "\tsystem count: %d"
-msgstr "\tnumero dei sistemi: %d"
+#: phrasing-slur-engraver.cc:165
+msgid "unterminated phrasing slur"
+msgstr "legatura di frase non terminata"
 
-#: page-turn-page-breaking.cc:303
-#, c-format
-msgid "\tpage count: %d"
-msgstr "\tnumero delle pagine: %d"
+#: phrasing-slur-engraver.cc:190
+msgid "cannot end phrasing slur"
+msgstr "impossibile chiudere la legatura di frase"
 
-#: page-turn-page-breaking.cc:304
-#, c-format
-msgid "\tprevious break: %d"
-msgstr "\tinterruzione precedente: %d"
+#: phrasing-slur-engraver.cc:204
+msgid "already have phrasing slur"
+msgstr "legatura di frase già presente"
 
-#: lily-parser.cc:105
+#: lily-parser.cc:109
 msgid "Parsing..."
 msgstr "Analisi..."
 
-#: lily-parser.cc:133
-msgid "braces do not match"
-msgstr "le graffe non corrispondono"
-
 #: score.cc:176
 msgid "already have music in score"
 msgstr "musica già presente nello spartito"
@@ -2856,31 +3037,6 @@ msgstr "questa è la musica precedente"
 msgid "errors found, ignoring music expression"
 msgstr "trovati degli errori, si ignora l'espressione musicale"
 
-#: change-iterator.cc:34
-#, c-format
-msgid "cannot change `%s' to `%s'"
-msgstr "impossibile cambiare «%s» in «%s»"
-
-#. FIXME: constant error message.
-#: change-iterator.cc:93
-msgid "cannot find context to switch to"
-msgstr "impossibile trovare il contesto su cui spostarsi"
-
-#. We could change the current translator's id, but that would make
-#. errors hard to catch.
-#.
-#. last->translator_id_string () = get_change
-#. ()->change_to_id_string ();
-#: change-iterator.cc:102
-#, c-format
-msgid "not changing to same context type: %s"
-msgstr "non passare allo stesso tipo di contesto: %s"
-
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
-msgid "none of these in my family"
-msgstr "nessuno di questi nella mia famiglia"
-
 #. If there is no such symbol, we default to the numbered style.
 #. (Here really with a warning!)
 #: time-signature.cc:94
@@ -2898,36 +3054,6 @@ msgstr "Interfaccia «%s» sconosciuta"
 msgid "Grob `%s' has no interface for property `%s'"
 msgstr "Il grob «%s» non ha un'interfaccia per la proprietà «%s»"
 
-#: open-type-font.cc:44
-#, c-format
-msgid "cannot allocate %lu bytes"
-msgstr "impossibile allocare %lu byte"
-
-#: open-type-font.cc:48
-#, c-format
-msgid "cannot load font table: %s"
-msgstr "impossibile caricare la tabella dei tipi di carattere: %s"
-
-#: open-type-font.cc:53
-#, c-format
-msgid "FreeType error: %s"
-msgstr "Errore FreeType: %s"
-
-#: open-type-font.cc:110
-#, c-format
-msgid "unsupported font format: %s"
-msgstr "formato di tipo di carattere non supportato: %s"
-
-#: open-type-font.cc:112
-#, c-format
-msgid "error reading font file %s: %s"
-msgstr "errore nella lettura del file del tipo di carattere %s: %s"
-
-#: open-type-font.cc:187
-#, c-format
-msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr "errore di Freetype in FT_Get_Glyph_Name (): %s"
-
 #: midi-stream.cc:39
 #, c-format
 msgid "cannot open for write: %s: %s"
@@ -2938,142 +3064,154 @@ msgstr "impossibile aprire il file con permesso di scrittura: %s: %s"
 msgid "cannot write to file: `%s'"
 msgstr "impossibile scrivere su file: «%s»"
 
-#: parser.yy:825
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:129
+#, c-format
+msgid "Cyclic markup detected: %s"
+msgstr "Individuato un markup ciclico: %s"
+
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:142
+#, c-format
+msgid "Markup depth exceeds maximal value of %d; Markup: %s"
+msgstr "La profondità di markup eccede il valore massimo di %d; Markup: %s"
+
+#: parser.yy:162 parser.yy:176
+msgid "Too much lookahead"
+msgstr "Troppa ricerca in avanti (lookahead)"
+
+#: parser.yy:827 parser.yy:1193 parser.yy:1226
+msgid "not a context mod"
+msgstr "non è una modalità di contesto"
+
+#: parser.yy:995
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "non si può usare \\paper dentro \\score, usare \\layout al suo posto"
 
-#: parser.yy:849
+#: parser.yy:1019
 msgid "need \\paper for paper block"
 msgstr "è necessario \\paper per il blocco \"paper\""
 
-#: parser.yy:1369
+#: parser.yy:1943
 msgid "only \\consists takes non-string argument."
 msgstr "solo \\consists prende un argomento diverso da una stringa"
 
-#: parser.yy:1382
+#: parser.yy:1956
 msgid "Grob name should be alphanumeric"
 msgstr "Il nome del grob deve essere alfanumerico"
 
-#: parser.yy:1697
-msgid "second argument must be pitch list"
-msgstr "il secondo argomento deve essere una lista di altezze"
+#: parser.yy:2150
+msgid "not a rhythmic event"
+msgstr "non è un evento ritmico"
 
-#: parser.yy:1728 parser.yy:1733 parser.yy:2206
+#: parser.yy:2246 parser.yy:2251
 msgid "have to be in Lyric mode for lyrics"
 msgstr "bisogna essere in modo \"Lyric\" per i testi"
 
-#: parser.yy:1830
+#: parser.yy:2366
 msgid "expecting string as script definition"
 msgstr "ci si aspetta una stringa come definizione dello script"
 
-#: parser.yy:1985 parser.yy:2036
+#: parser.yy:2518 parser.yy:2569
 #, c-format
 msgid "not a duration: %d"
 msgstr "non è una durata: %d"
 
-#: parser.yy:2160
+#: parser.yy:2688
 msgid "have to be in Note mode for notes"
 msgstr "bisogna essere in modo \"Note\" per le note"
 
-#: parser.yy:2221
+#: parser.yy:2737
 msgid "have to be in Chord mode for chords"
 msgstr "bisogna essere in modo \"Chord\" per gli accordi"
 
-#: lexer.ll:192
+#: parser.yy:2997
+msgid "not a markup"
+msgstr "non è un markup"
+
+#: lexer.ll:225
 msgid "stray UTF-8 BOM encountered"
 msgstr "si è incontrato un segno BOM UTF-8 isolato"
 
-#: lexer.ll:196
+#: lexer.ll:228
 msgid "Skipping UTF-8 BOM"
 msgstr "Si ignora il BOM UTF-8"
 
-#: lexer.ll:251
+#: lexer.ll:286
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Si rinomina l'input in: «%s»"
 
-#: lexer.ll:268
+#: lexer.ll:303
 msgid "quoted string expected after \\version"
 msgstr "\\version deve essere seguito da una stringa compresa tra virgolette"
 
-#: lexer.ll:272
+#: lexer.ll:307
 msgid "quoted string expected after \\sourcefilename"
 msgstr "\\sourcefilename deve essere seguito da una stringa compresa tra virgolette"
 
-#: lexer.ll:276
+#: lexer.ll:311
 msgid "integer expected after \\sourcefileline"
 msgstr "\\sourcefileline deve essere seguito da un intero"
 
-#: lexer.ll:289
-msgid "EOF found inside a comment"
-msgstr "fine del file (EOF) trovata in un commento"
-
-#: lexer.ll:304
+#: lexer.ll:334
 msgid "\\maininput not allowed outside init files"
 msgstr "\\maininput non permesso fuori dai file di inizializzazione"
 
-#: lexer.ll:328
+#: lexer.ll:358
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "indentificatore errato o non definito: «%s»"
 
+#: lexer.ll:384
+msgid "string expected after \\include"
+msgstr "stringa prevista dopo \\include"
+
 #. backup rule
-#: lexer.ll:337
+#: lexer.ll:394
 msgid "end quote missing"
 msgstr "mancano le virgolette di chiusura"
 
-#: lexer.ll:487
+#: lexer.ll:556
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr "Trovata una parentesi alla fine del testo.  È stato dimenticato uno spazio?"
 
-#: lexer.ll:597
+#: lexer.ll:671
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr "Trovata una parentesi alla fine della marcatura.  È stato dimenticato uno spazio?"
 
-#: lexer.ll:701
+#: lexer.ll:683
+msgid "EOF found inside a comment"
+msgstr "fine del file (EOF) trovata in un commento"
+
+#: lexer.ll:775
 #, c-format
-msgid "invalid character: `%c'"
-msgstr "carattere non valido: «%c»"
+msgid "invalid character: `%s'"
+msgstr "carattere non valido: «%s»"
 
-#: lexer.ll:822 lexer.ll:823
+#: lexer.ll:868 lexer.ll:869
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "stringa di escape sconosciuta: «\\%s»"
 
-#: lexer.ll:932 lexer.ll:933
+#: lexer.ll:1117 lexer.ll:1118
+msgid "non-UTF-8 input"
+msgstr "input non UTF-8"
+
+#: lexer.ll:1161 lexer.ll:1162
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "file troppo vecchio: %s (il più vecchio che si può gestire è: %s)"
 
-#: lexer.ll:933 lexer.ll:934
+#: lexer.ll:1162 lexer.ll:1163
 msgid "consider updating the input with the convert-ly script"
 msgstr "si consideri di aggiornare l'input con lo script convert-ly"
 
-#: lexer.ll:939 lexer.ll:940
+#: lexer.ll:1168 lexer.ll:1169
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "programma troppo vecchio: %s (il file richiede: %s)"
 
-#: documentation-lib.scm:59
-#, scheme-format
-msgid "Processing ~S..."
-msgstr "Elaborazione di ~S..."
-
-#: documentation-lib.scm:176
-#, scheme-format
-msgid "Writing ~S..."
-msgstr "Scrittura di ~S..."
-
-#: documentation-lib.scm:184
-#, scheme-format
-msgid "cannot find description for property `~S' (~S)"
-msgstr "impossibile trovare la descrizione per la proprietà \"~S\" (~S)"
-
-#: documentation-lib.scm:205
-#, scheme-format
-msgid "cannot find description for property ~S (~S)"
-msgstr "impossibile trovare la descrizione per la proprietà ~S (~S)"
-
 #: parser-clef.scm:141 parser-clef.scm:181
 #, scheme-format
 msgid "unknown clef type `~a'"
@@ -3099,111 +3237,109 @@ msgstr "impossibile trovare un'interfaccia per le proprietà: ~S"
 msgid "unknown Grob interface: ~S"
 msgstr "interfaccia del Grob sconosciuta: ~S"
 
+#: graphviz.scm:64
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Scrittura del grafico «~a»..."
+
+#: parser-ly-from-scheme.scm:71
+msgid "error in #{ ... #}"
+msgstr "errore in #{ ... #}"
+
 #: framework-eps.scm:108
 #, scheme-format
 msgid "Writing ~a..."
 msgstr "Scrittura di ~a..."
 
-#: define-music-properties.scm:21 define-grob-properties.scm:21
-#: define-context-properties.scm:31
+#: output-ps.scm:48
+msgid "Found infinity or nan in output.  Substituting 0.0"
+msgstr "Trovato infinito o un valore non numerico nell'output.  Sostituito con 0.0"
+
+#: output-ps.scm:313 output-svg.scm:556
 #, scheme-format
-msgid "symbol ~S redefined"
-msgstr "simbolo ~S ridefinito"
+msgid "unknown line-cap-style: ~S"
+msgstr "line-cap-style sconosciuto: ~S"
+
+#: output-ps.scm:318 output-svg.scm:562
+#, scheme-format
+msgid "unknown line-join-style: ~S"
+msgstr "line-join-style sconosciuto: ~S"
 
-#: paper.scm:117
+#: paper.scm:120
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size: non è nell'ambito di livello più alto"
 
-#: paper.scm:301
+#: paper.scm:304
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Questo non è un oggetto \\layout {}, ~S"
 
-#: paper.scm:313
+#: paper.scm:316
 #, scheme-format
 msgid "Unknown paper size: ~a"
 msgstr "Dimensione del foglio sconosciuta: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:328
+#: paper.scm:331
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "Si deve usare #(set-paper-size .. ) all'interno di \\paper { ... }"
 
-#: lily.scm:225
-msgid "Using (ice-9 curried-definitions) module\n"
-msgstr "Utilizzazione del modulo (ice-9 curried-definitions)\n"
-
-#: lily.scm:230
-msgid "Guile 1.8\n"
-msgstr "Guile 1.8\n"
-
-#: lily.scm:290
+#: backend-library.scm:27
 #, scheme-format
-msgid "cannot find: ~A"
-msgstr "impossibile trovare ~A"
+msgid "Invoking `~a'..."
+msgstr "Invocazione di «~a»..."
 
-#: lily.scm:350
+#: backend-library.scm:31
 #, scheme-format
-msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr "tipo di argomento errato per ~a. Previsto ~a, trovato ~s"
-
-#: lily.scm:710
-msgid "Compilation successfully completed"
-msgstr "Compilazione completata con successo"
-
-#: lily.scm:711
-msgid "Compilation completed with warnings or errors"
-msgstr "Compilazione completata con avvertimenti o errori"
+msgid "`~a' failed (~a)\n"
+msgstr "«~a» fallito (~a)\n"
 
-#: lily.scm:773
+#: backend-library.scm:90
 #, scheme-format
-msgid "job ~a terminated with signal: ~a"
-msgstr "il lavoro ~a è terminato col segnale ~a"
+msgid "Converting to `~a'...\n"
+msgstr "Conversione a «~a»...\n"
 
-#: lily.scm:776
+#. Do not try to guess the name of the png file,
+#. GS produces PNG files like BASE-page%d.png.
+#: backend-library.scm:99
 #, scheme-format
-msgid ""
-"logfile ~a (exit ~a):\n"
-"~a"
-msgstr ""
-"file di registro ~a (uscita ~a):\n"
-"~a"
+msgid "Converting to ~a..."
+msgstr "Conversione a ~a..."
 
-#: lily.scm:798 lily.scm:876
+#: backend-library.scm:137
 #, scheme-format
-msgid "failed files: ~S"
-msgstr "errore nei file: ~S"
+msgid "Writing header field `~a' to `~a'..."
+msgstr "Scrittura del campo di intestazione «~a» in «~a»..."
 
-#: lily.scm:867
+#: backend-library.scm:187
 #, scheme-format
-msgid "Redirecting output to ~a..."
-msgstr "Redirezione dell'output verso ~a..."
+msgid "missing stencil expression `~S'"
+msgstr "manca l'espressione di stencil «~S»"
 
-#: lily.scm:886
+#: output-svg.scm:47
 #, scheme-format
-msgid "Invoking `~a'...\n"
-msgstr "Chiamata di «~a»...\n"
+msgid "undefined: ~S"
+msgstr "~S indefinito"
 
-#: graphviz.scm:64
+#: output-svg.scm:157
 #, scheme-format
-msgid "Writing graph `~a'..."
-msgstr "Scrittura del grafico «~a»..."
+msgid "cannot decypher Pango description: ~a"
+msgstr "impossibile decifrare la descrizione di Pango: ~a"
 
-#: framework-svg.scm:84
-#, scheme-format
-msgid "Updating font into: ~a"
-msgstr "Aggiornamento dei tipi di carattere in: ~a"
+#: output-svg.scm:237
+msgid "Glyph must have a unicode value"
+msgstr "Un glifo deve avere un valore unicode"
 
-#: layout-beam.scm:40
+#: output-svg.scm:289 output-svg.scm:299
 #, scheme-format
-msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr "Errore nella definizione delle travature. Previste (~S,~S), trovate ~S."
+msgid "cannot find SVG font ~S"
+msgstr "impossibile trovare il tipo di carattere SVG ~S"
 
-#: layout-beam.scm:54
+#: flag-styles.scm:151
 #, scheme-format
-msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr "Errore nella definizione delle travature.  Previste ~S 0, trovate ~S."
+msgid "flag stroke `~a' or `~a' not found"
+msgstr "tipo di coda uncinata sconosciuto: «~a» o «~a»"
 
 #: modal-transforms.scm:38
 msgid "'from' pitch not in scale; ignoring"
@@ -3229,49 +3365,73 @@ msgstr "altezza da invertire non presente nella scala; si ignora"
 msgid "negative replication count; ignoring"
 msgstr "conto di riproduzione negativo; si ignora"
 
-#: backend-library.scm:29 ps-to-png.scm:68
-#, scheme-format
-msgid "Invoking `~a'..."
-msgstr "Invocazione di «~a»..."
+#: to-xml.scm:191
+#, scheme-format
+msgid "assertion failed: ~S"
+msgstr "errore di asserzione: ~S"
+
+#: define-grob-properties.scm:21 define-context-properties.scm:31
+#: define-music-properties.scm:21
+#, scheme-format
+msgid "symbol ~S redefined"
+msgstr "simbolo ~S ridefinito"
+
+#: chord-entry.scm:52
+#, scheme-format
+msgid "Spurious garbage following chord: ~A"
+msgstr "Informazione incomprensibile dopo l'accordo: ~A"
+
+#: lily.scm:234
+msgid "Using (ice-9 curried-definitions) module\n"
+msgstr "Utilizzazione del modulo (ice-9 curried-definitions)\n"
+
+#: lily.scm:237
+msgid "Guile 1.8\n"
+msgstr "Guile 1.8\n"
 
-#: backend-library.scm:34
+#: lily.scm:297
 #, scheme-format
-msgid "`~a' failed (~a)"
-msgstr "«~a» fallito (~a)"
+msgid "cannot find: ~A"
+msgstr "impossibile trovare ~A"
 
-#: backend-library.scm:94
-#, scheme-format
-msgid "Converting to `~a'..."
-msgstr "Conversione a «~a»..."
+#: lily.scm:701
+msgid "Success: compilation successfully completed"
+msgstr "Successo: compilazione completata con successo"
 
-#. Do not try to guess the name of the png file,
-#. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:104
+#: lily.scm:702
+msgid "Compilation completed with warnings or errors"
+msgstr "Compilazione completata con avvertimenti o errori"
+
+#: lily.scm:764
 #, scheme-format
-msgid "Converting to ~a..."
-msgstr "Conversione a ~a..."
+msgid "job ~a terminated with signal: ~a"
+msgstr "il lavoro ~a è terminato col segnale ~a"
 
-#: backend-library.scm:142
+#: lily.scm:767
 #, scheme-format
-msgid "Writing header field `~a' to `~a'..."
-msgstr "Scrittura del campo di intestazione «~a» in «~a»..."
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"file di registro ~a (uscita ~a):\n"
+"~a"
 
-#: backend-library.scm:192
+#: lily.scm:789 lily.scm:869
 #, scheme-format
-msgid "missing stencil expression `~S'"
-msgstr "manca l'espressione di stencil «~S»"
+msgid "failed files: ~S"
+msgstr "errore nei file: ~S"
 
-#: to-xml.scm:191
+#: lily.scm:860
 #, scheme-format
-msgid "assertion failed: ~S"
-msgstr "errore di asserzione: ~S"
+msgid "Redirecting output to ~a..."
+msgstr "Redirezione dell'output verso ~a..."
 
-#: chord-entry.scm:49
+#: lily.scm:879 ps-to-png.scm:66
 #, scheme-format
-msgid "Spurious garbage following chord: ~A"
-msgstr "Informazione incomprensibile dopo l'accordo: ~A"
+msgid "Invoking `~a'...\n"
+msgstr "Chiamata di «~a»...\n"
 
-#: lily-library.scm:758
+#: lily-library.scm:761
 msgid ""
 "Find the index between @var{start} and @var{end} (an integer)\n"
 "which produces the closest match to @var{target-val} if\n"
@@ -3281,131 +3441,118 @@ msgstr ""
 "che produca l'abbinamento più vicino al @var{target-val} quando\n"
 "applicato alla funzione @var{getter}."
 
-#: lily-library.scm:832
+#: lily-library.scm:835
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "unità sconosciuta: ~S"
 
-#: lily-library.scm:858 lily-library.scm:867
-msgid "warning:"
-msgstr "attenzione:"
-
 #: lily-library.scm:860
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr "dichiarazione di \\version assente; si aggiunga ~a per compatibilità futura"
 
-#: lily-library.scm:868
+#: lily-library.scm:866
 msgid "old relative compatibility not used"
 msgstr "compatibilità col vecchio modo relativo non utilizzata"
 
-#: output-ps.scm:48
-msgid "Found infinity or nan in output.  Substituting 0.0"
-msgstr "Trovato infinito o un valore non numerico nell'output.  Sostituito con 0.0"
-
-#: output-ps.scm:299 output-svg.scm:550
+#: framework-svg.scm:84
 #, scheme-format
-msgid "unknown line-cap-style: ~S"
-msgstr "line-cap-style sconosciuto: ~S"
+msgid "Updating font into: ~a"
+msgstr "Aggiornamento dei tipi di carattere in: ~a"
 
-#: output-ps.scm:304 output-svg.scm:556
+#: part-combiner.scm:598
 #, scheme-format
-msgid "unknown line-join-style: ~S"
-msgstr "line-join-style sconosciuto: ~S"
+msgid "quoted music `~a' is empty"
+msgstr "la musica quotata «~a» è vuota"
 
-#: output-svg.scm:47
-#, scheme-format
-msgid "undefined: ~S"
-msgstr "~S indefinito"
+#: music-functions.scm:273
+msgid "More alternatives than repeats.  Junking excess alternatives"
+msgstr "Più alternative che ripetizioni.  Vengono tralasciate le alternative in eccesso"
 
-#: output-svg.scm:151
+#: music-functions.scm:302
 #, scheme-format
-msgid "cannot decypher Pango description: ~a"
-msgstr "impossibile decifrare la descrizione di Pango: ~a"
+msgid "invalid tremolo repeat count: ~a"
+msgstr "numero di ripetizioni di tremolo non valido: ~a"
 
-#: output-svg.scm:231
-msgid "Glyph must have a unicode value"
-msgstr "Un glifo deve avere un valore unicode"
+#: music-functions.scm:634
+msgid "Bad chord repetition"
+msgstr "Ripetizione di accordi sbagliata"
 
-#: output-svg.scm:283 output-svg.scm:293
+#: music-functions.scm:669
 #, scheme-format
-msgid "cannot find SVG font ~S"
-msgstr "impossibile trovare il tipo di carattere SVG ~S"
+msgid "music expected: ~S"
+msgstr "musica attesa: ~S"
 
-#: flag-styles.scm:148
+#: music-functions.scm:985
 #, scheme-format
-msgid "flag stroke `~a' or `~a' not found"
-msgstr "tipo di coda uncinata sconosciuto: «~a» o «~a»"
+msgid "cannot find quoted music: `~S'"
+msgstr "impossibile trovare la musica citata: «~S»"
 
-#: define-note-names.scm:962
-msgid "Select note names language."
-msgstr "Selezione della lingua dei nomi delle note."
+#: music-functions.scm:1123
+msgid "Add @var{octave-shift} to the octave of @var{pitch}."
+msgstr "Aggiungere @var{octave-shift} all'ottava di @var{altezza}."
 
-#: define-note-names.scm:969
+#: music-functions.scm:1183
 #, scheme-format
-msgid "Using `~a' note names..."
-msgstr "Utilizzo di \"~a\" per i nomi delle note..."
+msgid "Unknown octaveness type: ~S "
+msgstr "Tipo di ottava sconosciuto: ~S "
 
-#: define-note-names.scm:972
-#, scheme-format
-msgid "Could not find language `~a'.  Ignoring."
-msgstr "Impossibile trovare il linguaggio \"~a\".  Si ignora."
+#: music-functions.scm:1184
+msgid "Defaulting to 'any-octave."
+msgstr "Applicazione del valore predefinito 'any-octave."
 
-#: define-music-types.scm:747
+#: music-functions.scm:1521
 #, scheme-format
-msgid "symbol expected: ~S"
-msgstr "simbolo atteso: ~S"
+msgid "unknown accidental style: ~S"
+msgstr "stile di alterazione sconosciuto: ~S"
 
-#: define-music-types.scm:750
-#, scheme-format
-msgid "cannot find music object: ~S"
-msgstr "impossibile trovare l'oggetto musicale: ~S"
+#: define-event-classes.scm:80
+msgid "All classes must be the last in their matrilineal line."
+msgstr "Tutte le classi devono essere le ultime della propria linea di discendenza."
 
-#: define-music-types.scm:769
-#, scheme-format
-msgid "unknown repeat type `~S'"
-msgstr "tipo di ripetizione sconosciuto «~S»"
+#: define-event-classes.scm:84
+msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
+msgstr "Tutte le classi devono avere un'ascendenza ben definita nella gerarchia di classe esistente."
 
-#: define-music-types.scm:770
-msgid "See define-music-types.scm for supported repeats"
-msgstr "Si veda define-music-types.scm per le ripetizioni supportate"
+#: define-event-classes.scm:151
+#, scheme-format
+msgid "event class ~A seems to be unused"
+msgstr "la classe di evento ~A sembra essere non utilizzata"
 
-#: translation-functions.scm:350
+#. should be programming-error
+#: define-event-classes.scm:157
 #, scheme-format
-msgid "Negative fret for pitch ~a on string ~a"
-msgstr "Tasto negativo per l'altezza ~a sulla corda ~a"
+msgid "translator listens to nonexisting event class ~A"
+msgstr "il traduttore è in ascolto della classe di evento ~A inesistente"
 
-#: translation-functions.scm:401
+#: markup-macros.scm:331
 #, scheme-format
-msgid "No open string for pitch ~a"
-msgstr "Nessuna corda a vuoto per l'altezza ~a"
+msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgstr "Numero errato di argomenti. Attesi: ~A, trovati ~A: ~S"
 
-#: translation-functions.scm:416 translation-functions.scm:428
+#: markup-macros.scm:337
 #, scheme-format
-msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
-msgstr "La corda richiesta per questa altezza necessita un tasto negativo: corda ~a altezza ~a"
+msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
+msgstr "Argomento non valido in posizione ~A.  Atteso ~A, trovato ~S."
 
-#: translation-functions.scm:419
-msgid "Ignoring string request and recalculating."
-msgstr "Ignorata la richiesta di questa corda, viene ricalcolata."
+#: markup-macros.scm:373
+#, scheme-format
+msgid "Not a markup command: ~A"
+msgstr "Non è un comando di tipo \"markup\": ~A"
 
-#: translation-functions.scm:431
-msgid "Ignoring note in tablature."
-msgstr "Ignorata la nota nell'intavolatura."
+#: define-note-names.scm:962
+msgid "Select note names language."
+msgstr "Selezione della lingua dei nomi delle note."
 
-#: translation-functions.scm:454
+#: define-note-names.scm:968
 #, scheme-format
-msgid "No string for pitch ~a (given frets ~a)"
-msgstr "Nessuna corda per l'altezza ~a (se i tasti sono ~a)"
+msgid "Using `~a' note names..."
+msgstr "Utilizzo di \"~a\" per i nomi delle note..."
 
-#: translation-functions.scm:559
+#: define-note-names.scm:971
 #, scheme-format
-msgid ""
-"No label for fret ~a (on string ~a);\n"
-"only ~a fret labels provided"
-msgstr ""
-"Nessuna etichetta per il tasto ~a (sulla corda ~a);\n"
-"disponibili solo le etichette del tasto ~a"
+msgid "Could not find language `~a'.  Ignoring."
+msgstr "Impossibile trovare il linguaggio \"~a\".  Si ignora."
 
 #: framework-ps.scm:250
 #, scheme-format
@@ -3455,121 +3602,193 @@ msgstr ""
 "  %% Start cut-&-pastable-section\n"
 "  %% ****************************************************************\n"
 
-#: music-functions.scm:268
-msgid "More alternatives than repeats.  Junking excess alternatives"
-msgstr "Più alternative che ripetizioni.  Vengono tralasciate le alternative in eccesso"
-
-#: music-functions.scm:297
+#: layout-beam.scm:40
 #, scheme-format
-msgid "invalid tremolo repeat count: ~a"
-msgstr "numero di ripetizioni di tremolo non valido: ~a"
+msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
+msgstr "Errore nella definizione delle travature. Previste (~S,~S), trovate ~S."
 
-#: music-functions.scm:619
+#: layout-beam.scm:54
 #, scheme-format
-msgid "music expected: ~S"
-msgstr "musica attesa: ~S"
+msgid "Error in beam quanting.  Expected ~S 0, found ~S."
+msgstr "Errore nella definizione delle travature.  Previste ~S 0, trovate ~S."
 
-#. FIXME: uncomprehensable message
-#: music-functions.scm:662
+#: define-music-types.scm:752
 #, scheme-format
-msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
-msgstr "Controllo di battuta fallito.  Avrebbe dovuto trovarsi a ~a invece che a ~a"
+msgid "symbol expected: ~S"
+msgstr "simbolo atteso: ~S"
 
-#: music-functions.scm:845
+#: define-music-types.scm:755
 #, scheme-format
-msgid "cannot find quoted music: `~S'"
-msgstr "impossibile trovare la musica citata: «~S»"
-
-#: music-functions.scm:979
-msgid "Add @var{octave-shift} to the octave of @var{pitch}."
-msgstr "Aggiungere @var{octave-shift} all'ottava di @var{altezza}."
+msgid "cannot find music object: ~S"
+msgstr "impossibile trovare l'oggetto musicale: ~S"
 
-#: music-functions.scm:1039
+#: define-music-types.scm:774
 #, scheme-format
-msgid "Unknown octaveness type: ~S "
-msgstr "Tipo di ottava sconosciuto: ~S "
+msgid "unknown repeat type `~S'"
+msgstr "tipo di ripetizione sconosciuto «~S»"
 
-#: music-functions.scm:1040
-msgid "Defaulting to 'any-octave."
-msgstr "Applicazione del valore predefinito 'any-octave."
+#: define-music-types.scm:775
+msgid "See define-music-types.scm for supported repeats"
+msgstr "Si veda define-music-types.scm per le ripetizioni supportate"
 
-#: music-functions.scm:1378
+#: translation-functions.scm:351
 #, scheme-format
-msgid "unknown accidental style: ~S"
-msgstr "stile di alterazione sconosciuto: ~S"
-
-#: define-event-classes.scm:79
-msgid "All classes must be the last in their matrilineal line."
-msgstr "Tutte le classi devono essere le ultime della propria linea di discendenza."
-
-#: define-event-classes.scm:83
-msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
-msgstr "Tutte le classi devono avere un'ascendenza ben definita nella gerarchia di classe esistente."
+msgid "Negative fret for pitch ~a on string ~a"
+msgstr "Tasto negativo per l'altezza ~a sulla corda ~a"
 
-#: define-event-classes.scm:149
+#: translation-functions.scm:402
 #, scheme-format
-msgid "event class ~A seems to be unused"
-msgstr "la classe di evento ~A sembra essere non utilizzata"
+msgid "No open string for pitch ~a"
+msgstr "Nessuna corda a vuoto per l'altezza ~a"
 
-#. should be programming-error
-#: define-event-classes.scm:155
+#: translation-functions.scm:417 translation-functions.scm:429
 #, scheme-format
-msgid "translator listens to nonexisting event class ~A"
-msgstr "il traduttore è in ascolto della classe di evento ~A inesistente"
+msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
+msgstr "La corda richiesta per questa altezza necessita un tasto negativo: corda ~a altezza ~a"
 
-#: markup.scm:223
-#, scheme-format
-msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
-msgstr "Numero errato di argomenti. Attesi: ~A, trovati ~A: ~S"
+#: translation-functions.scm:420
+msgid "Ignoring string request and recalculating."
+msgstr "Ignorata la richiesta di questa corda, viene ricalcolata."
+
+#: translation-functions.scm:432
+msgid "Ignoring note in tablature."
+msgstr "Ignorata la nota nell'intavolatura."
 
-#: markup.scm:229
+#: translation-functions.scm:455
 #, scheme-format
-msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
-msgstr "Argomento non valido in posizione ~A.  Atteso ~A, trovato ~S."
+msgid "No string for pitch ~a (given frets ~a)"
+msgstr "Nessuna corda per l'altezza ~a (se i tasti sono ~a)"
 
-#: markup.scm:292
+#: translation-functions.scm:560
 #, scheme-format
-msgid "Not a markup command: ~A"
-msgstr "Non è un comando di tipo \"markup\": ~A"
+msgid ""
+"No label for fret ~a (on string ~a);\n"
+"only ~a fret labels provided"
+msgstr ""
+"Nessuna etichetta per il tasto ~a (sulla corda ~a);\n"
+"disponibili solo le etichette del tasto ~a"
 
-#: ps-to-png.scm:74
+#: ps-to-png.scm:70
 #, scheme-format
 msgid "~a exited with status: ~S"
 msgstr "~a è terminato con stato ~S"
 
-#: define-markup-commands.scm:883
+#: define-markup-commands.scm:887
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr "non si è trovato alcun sistema nella marcatura \\score, contiene un blocco \\layout?"
 
-#: define-markup-commands.scm:2561
+#: define-markup-commands.scm:2614
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "Impossibile trovare il glifo ~a"
 
-#: define-markup-commands.scm:2987
+#: define-markup-commands.scm:3040
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "non c'è una graffa che abbia una dimensione di ~S punti"
 
-#: define-markup-commands.scm:2988
+#: define-markup-commands.scm:3041
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr "si applica la dimensione predefinita ~S pt"
 
-#: define-markup-commands.scm:3141
+#: define-markup-commands.scm:3194
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "non è una durata valida per la stringa: ~a"
 
-#: ly-syntax-constructors.scm:51
-msgid "Music head function must return Music object"
-msgstr "Una funzione musicale principale deve restituire un Oggetto musicale"
+#: documentation-lib.scm:59
+#, scheme-format
+msgid "Processing ~S..."
+msgstr "Elaborazione di ~S..."
+
+#: documentation-lib.scm:176
+#, scheme-format
+msgid "Writing ~S..."
+msgstr "Scrittura di ~S..."
+
+#: documentation-lib.scm:188
+#, scheme-format
+msgid "cannot find description for property `~S' (~S)"
+msgstr "impossibile trovare la descrizione per la proprietà \"~S\" (~S)"
+
+#: documentation-lib.scm:209
+#, scheme-format
+msgid "cannot find description for property ~S (~S)"
+msgstr "impossibile trovare la descrizione per la proprietà ~S (~S)"
+
+#: ly-syntax-constructors.scm:65
+#, scheme-format
+msgid "~a function cannot return ~a"
+msgstr "la funzione ~a non può restituire ~a"
+
+#: ly-syntax-constructors.scm:74
+#, scheme-format
+msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
+msgstr "tipo di argomento errato per ~a. Previsto ~a, trovato ~s"
 
-#: ly-syntax-constructors.scm:177
+#: ly-syntax-constructors.scm:187
 #, scheme-format
 msgid "Invalid property operation ~a"
 msgstr "Operazione di proprietà non valida: ~a"
 
+#~ msgid "setbeatGrouping. Use baseMoment and beatStructure.\n"
+#~ msgstr "setbeatGrouping. Usa baseMoment e beatStructure.\n"
+
+#~ msgid "success: %s"
+#~ msgstr "riuscito: %s"
+
+#~ msgid "Infinity or NaN encountered"
+#~ msgstr "incontrato infinito o un valore non numerico"
+
+#~ msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
+#~ msgstr "Vaticana_ligature: unione nulla (delta_pitch == 0)"
+
+#~ msgid "No spring between column %d and next one"
+#~ msgstr "Nessuna separazione tra la colonna %d e la successiva"
+
+#~ msgid "Sending non-event to context"
+#~ msgstr "Invio di un non-evento al contesto"
+
+#~ msgid "Invalid CreateContext event: Cannot create %s context"
+#~ msgstr "Evento CreateContext non valido: impossibile creare il contesto %s"
+
+#~ msgid "infinity or NaN encountered while converting Real number"
+#~ msgstr "si è incontrato infinito o un valore non numerico durante la conversione di un numero reale"
+
+#~ msgid "setting to zero"
+#~ msgstr "impostato a zero"
+
+#~ msgid "No spacing entry from %s to `%s'"
+#~ msgstr "Nessuno spazio da %s a «%s»"
+
+#~ msgid "error at EOF: %s"
+#~ msgstr "errore alla fine del file (EOF): %s"
+
+#~ msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
+#~ msgstr "dipendenza ciclica: calculation-in-progress incontrato per #'%s (%s)"
+
+#~ msgid "Mensural_ligature: unexpected case fall-through"
+#~ msgstr "Mensural_ligature: caso inatteso e non interpretabile"
+
+#~ msgid "Mensural_ligature: (join_right == 0)"
+#~ msgstr "Mensural_ligature: (join_right == 0)"
+
+#~ msgid "braces do not match"
+#~ msgstr "le graffe non corrispondono"
+
+#~ msgid "second argument must be pitch list"
+#~ msgstr "il secondo argomento deve essere una lista di altezze"
+
+#~ msgid "warning:"
+#~ msgstr "attenzione:"
+
+#~ msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
+#~ msgstr "Controllo di battuta fallito.  Avrebbe dovuto trovarsi a ~a invece che a ~a"
+
+#~ msgid "Music head function must return Music object"
+#~ msgstr "Una funzione musicale principale deve restituire un Oggetto musicale"
+
 #~ msgid "vertical spacing has been changed; minimum-Y-extent is obsolete.\n"
 #~ msgstr "la spaziatura verticale è cambiata; minimum-Y-extent è obsoleto.\n"
 
@@ -3630,10 +3849,6 @@ msgstr "Operazione di proprietà non valida: ~a"
 #~ msgid "Incorrect lilypond version: %s (%s, %s)"
 #~ msgstr "versione di mudela errata: %s (%s, %s)"
 
-#, fuzzy
-#~ msgid "junking event: `%s'"
-#~ msgstr "Cosa? Non è una richiesta: `%s'"
-
 #, fuzzy
 #~ msgid "cannot find `%s' context"
 #~ msgstr "non trovo `%s'"
@@ -3677,10 +3892,6 @@ msgstr "Operazione di proprietà non valida: ~a"
 #~ msgid "%s: skipping: `%s'"
 #~ msgstr "% strumento:"
 
-#, fuzzy
-#~ msgid "no such context: %s"
-#~ msgstr "% strumento:"
-
 #, fuzzy
 #~ msgid "Processing `%s'..."
 #~ msgstr "Elaboro..."
index 9ff13189d22b089586d192d86a33c701abae7577..84424584105f1cfd882b07cf55e3e069b29cb706 100644 (file)
@@ -424,6 +424,33 @@ in @var{grob}."
     TrillSpanner))
 
 (define-safe-public (make-voice-props-set n)
+  (make-sequential-music
+   (append
+    (map (lambda (x) (make-grob-property-set x 'direction
+                                                 (if (odd? n) -1 1)))
+        direction-polyphonic-grobs)
+    (list
+     (make-property-set 'graceSettings
+                       ;; TODO: take this from voicedGraceSettings or similar.
+                       '((Voice Stem font-size -3)
+                         (Voice Flag font-size -3)
+                         (Voice NoteHead font-size -3)
+                         (Voice TabNoteHead font-size -4)
+                         (Voice Dots font-size -3)
+                         (Voice Stem length-fraction 0.8)
+                         (Voice Stem no-stem-extend #t)
+                         (Voice Beam beam-thickness 0.384)
+                         (Voice Beam length-fraction 0.8)
+                         (Voice Accidental font-size -4)
+                         (Voice AccidentalCautionary font-size -4)
+                         (Voice Script font-size -3)
+                         (Voice Fingering font-size -8)
+                         (Voice StringNumber font-size -8)))
+
+     (make-grob-property-set 'NoteColumn 'horizontal-shift (quotient n 2))
+     (make-grob-property-set 'MultiMeasureRest 'staff-position (if (odd? n) -4 4))))))
+
+(define-safe-public (make-voice-props-override n)
   (make-sequential-music
    (append
     (map (lambda (x) (make-grob-property-override x 'direction
@@ -954,7 +981,7 @@ set to the @code{location} parameter."
                      (if (null? clef)
                          (make-music 'Music)
                          (make-cue-clef-set clef))
-                     (context-spec-music (make-voice-props-set cue-voice) 'CueVoice "cue")
+                     (context-spec-music (make-voice-props-override cue-voice) 'CueVoice "cue")
                      quote-music
                      (context-spec-music (make-voice-props-revert) 'CueVoice "cue")
                      (if (null? clef)
@@ -963,7 +990,7 @@ set to the @code{location} parameter."
              (set! main-music
                    (make-sequential-music
                     (list
-                     (make-voice-props-set main-voice)
+                     (make-voice-props-override main-voice)
                      main-music
                      (make-voice-props-revert))))
              (set! (ly:music-property quote-music 'element) main-music)))
index d373da0eebcc0079c2e0c8d0e76a747ceba38742..cc94b67acfbeb2aae9c3364d577e937b4d89d5c5 100644 (file)
@@ -658,3 +658,39 @@ only ~a fret labels provided")
   (= 0 (modulo count n)))
 
 (define-public (all-repeat-counts-visible count context) #t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; make-engraver helper macro
+
+(defmacro-public make-engraver forms
+  "Helper macro for creating Scheme engravers.
+
+The usual form for an engraver is an association list (or alist)
+mapping symbols to either anonymous functions or to another such
+alist.
+
+@code{make-engraver} accepts forms where the first element is either
+an argument list starting with the respective symbol, followed by the
+function body (comparable to the way @code{define} is used for
+defining functions), or a single symbol followed by subordinate forms
+in the same manner.  You can also just make an alist pair
+literally (the @samp{car} is quoted automatically) as long as the
+unevaluated @samp{cdr} is not a pair.  This is useful if you already
+have defined your engraver functions separately.
+
+Symbols mapping to a function would be @code{initialize},
+@code{start-translation-timestep}, @code{process-music},
+@code{process-acknowledged}, @code{stop-translation-timestep}, and
+@code{finalize}.  Symbols mapping to another alist specified in the
+same manner are @code{listeners} with the subordinate symbols being
+event classes, and @code{acknowledgers} and @code{end-acknowledgers}
+with the subordinate symbols being interfaces."
+  (let loop ((forms forms))
+    (if (cheap-list? forms)
+       `(list
+         ,@(map (lambda (form)
+                  (if (pair? (car form))
+                      `(cons ',(caar form) (lambda ,(cdar form) ,@(cdr form)))
+                      `(cons ',(car form) ,(loop (cdr form)))))
+                forms))
+       forms)))
diff --git a/scripts/build/run-and-check.sh b/scripts/build/run-and-check.sh
new file mode 100755 (executable)
index 0000000..eb76aa7
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+# The nextline takes the value in parameter one, evaluates it
+# (necessary if it contains spaces) and runs it. > redirects
+# stdout to the logfile given in parameter 2.  2>&1 redirects
+# stderr to stdout (i.e. to the logfile).
+eval $1 > $2 2>&1
+RetVal=$?  # captures the return value of the command
+if [ $RetVal -ne 0 ]; then
+       echo
+       echo "Please check the logfile" $2 "for errors"
+       echo
+fi
+exit $RetVal
index 784a978f20dafc9ffbaa22488caaf1b7451fbf2f..c62e02145a10001ce095d73b851be94d7f5e6a7d 100644 (file)
@@ -43,6 +43,14 @@ dirs, symlinks, files = mirrortree.walk_tree (
         '|'.join ([l.code for l in langdefs.LANGUAGES]) + '))(/|$)',
     find_files = r'.*?\.(?:midi|html|pdf|png|jpe?g|txt|i?ly|signature|css|zip|js|..\.idx|php)$|VERSION',
     exclude_files = r'lily-[0-9a-f]+.*\.(pdf|txt)')
+# extra files: info and tex output from lilypond-book regtests
+extra_files = mirrortree.walk_tree (
+    tree_roots = ['input/regression/lilypond-book'],
+    process_dirs = outdir,
+    exclude_dirs = r'(^|/)(out|out-test)(/|$)',
+    find_files = r'.+\.(info|tex)$',
+    exclude_files = r'lily-[0-9a-f]+.*\.tex')[2]
+files.extend(extra_files)
 
 # actual mirrorring stuff
 html_files = []
index c60521ead3a3923f53e06d39d878957dc3f16c8d..c8e62a95591dc542dc1e4d3354718e3739655f63 100644 (file)
@@ -535,7 +535,7 @@ AC_DEFUN(STEPMAKE_GETTEXT, [
 
 
 AC_DEFUN(STEPMAKE_GUILE, [
-    STEPMAKE_PATH_PROG(GUILE, guile, $1)
+    STEPMAKE_PATH_PROG(GUILE, guile guile1, $1)
 ])
 
 
@@ -577,7 +577,7 @@ AC_DEFUN(STEPMAKE_GUILE_DEVEL, [
     test -n "$target_alias" && target_guile_config=$target_alias-guile-config
     test -n "$host_alias" && host_guile_config=$host_alias-guile-config
     AC_MSG_CHECKING([for guile-config])
-    for guile_config in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config; do
+    for guile_config in $GUILE_CONFIG $target_guile_config $host_guile_config $build_guile_config guile-config guile1-config; do
        AC_MSG_RESULT([$guile_config])
        if ! $guile_config --version > /dev/null 2>&1 ; then
            AC_MSG_WARN([cannot execute $guile_config])
@@ -590,7 +590,7 @@ AC_DEFUN(STEPMAKE_GUILE_DEVEL, [
     done
     STEPMAKE_OPTIONAL_REQUIRED(GUILE_CONFIG, $guile_config, $1)
     if test $? -ne 0; then
-        STEPMAKE_ADD_ENTRY($1, 'guile-config (guile-devel, guile-dev or libguile-dev package)')
+        STEPMAKE_ADD_ENTRY($1, 'guile-config (guile-devel, guile-dev or libguile-dev package) or guile1-config (guile1-devel package)')
     fi 
 
     STEPMAKE_CHECK_SEARCH_RESULT(GUILE_CONFIG)
index a3133d6aeae0e10522058c5accab51c641650f38..7b5da4a65f841673bf4bba89b9ece74bae8c29b8 100644 (file)
@@ -34,44 +34,50 @@ $(outdir)/%.itexi: %.itexi
 
 $(outdir)/%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi
 ifeq ($(WEB_VERSION),yes)
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) -D web_version --output=$@ $<
+       $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) -D web_version --output=$@ $<" "$*.makeinfoweb.log"
 else
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+       $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<" "$*.makeinfo.log"
 endif
 
 $(outdir)/%-big-page.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi
 ifeq ($(WEB_VERSION),yes)
-       DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage -D web_version --output=$@ $<
+       $(buildscript-dir)/run-and-check "DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage -D web_version --output=$@ $<"  "$*.bigtexi.log"
 else
-       DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage --output=$@ $<
+       $(buildscript-dir)/run-and-check "DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage --output=$@ $<"  "$*.bigtexi.log"
 endif
 
 $(outdir)/%.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi
-       DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $<
+       $(buildscript-dir)/run-and-check "DEPTH=$(depth) AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $<"  "$*.texilog.log"
+
 
 $(outdir)/%/index.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/weblinks.itexi $(outdir)/%.html.omf
        mkdir -p $(dir $@)
 ifeq ($(WEB_VERSION),yes)
-       DEPTH=$(depth)/../ AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) -D web_version --output=$(dir $@) $<
+       $(buildscript-dir)/run-and-check "DEPTH=$(depth)/../ AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) -D web_version --output=$(dir $@) $<"  "$*.splittexi.log"
 else
-       DEPTH=$(depth)/../ AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) --output=$(dir $@) $<
+       $(buildscript-dir)/run-and-check "DEPTH=$(depth)/../ AJAX_SEARCH=$(AJAX_SEARCH) $(TEXI2HTML) $(TEXI2HTML_SPLIT) $(TEXI2HTML_FLAGS) --output=$(dir $@) $<"  "$*.splittexi.log"
 endif
 
+ifneq ($(ISOLANG),)
+$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map
+       $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -o $(XREF_MAPS_DIR) --master-map-file=$(XREF_MAPS_DIR)/$*.xref-map $<
+else
 $(XREF_MAPS_DIR)/%.xref-map: $(outdir)/%.texi
        $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -o $(XREF_MAPS_DIR) $<
+endif
 
 $(outdir)/%.info: %.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi $(outdir)/weblinks.itexi
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+       $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<"  "$*.makeinfo.log"
 
 $(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/%.pdf.omf $(outdir)/weblinks.itexi
 ifeq ($(WEB_VERSION),yes)
-       cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -D web_version -I $(abs-src-dir) --quiet $(TEXINFO_PAPERSIZE_OPTION) $(<F)
+       $(buildscript-dir)/run-and-check "cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -D web_version -I $(abs-src-dir) $(TEXINFO_PAPERSIZE_OPTION) $(<F) < /dev/null" "$*.texi2pdf.log"
 else
-       cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -I $(abs-src-dir) --quiet $(TEXINFO_PAPERSIZE_OPTION) $(<F)
+       $(buildscript-dir)/run-and-check "cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -I $(abs-src-dir) $(TEXINFO_PAPERSIZE_OPTION) $(<F) < /dev/null" "$*.texi2pdf.log"
 endif
 
 $(outdir)/%.txt: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/weblinks.itexi
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --no-split --no-headers --output $@ $<
+       $(buildscript-dir)/run-and-check "$(MAKEINFO) -I$(src-dir) -I$(outdir) --no-split --no-headers --output $@ $<"  "$*.makeinfotxt.log"
 
 $(outdir)/%.html.omf: %.texi
        $(call GENERATE_OMF,html)
index 2f2d801ab1210e1bc784306df498c5e84d5b553f..d164356555ded29e50d405e3364a554d27f99f4c 100644 (file)
@@ -33,14 +33,18 @@ TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
 
 DOCUMENTATION_INCLUDES += -I $(top-src-dir)/Documentation
 
-MAKEINFO_FLAGS += --enable-encoding $(DOCUMENTATION_INCLUDES)
+MAKEINFO_FLAGS += --enable-encoding --error-limit=0 $(DOCUMENTATION_INCLUDES)
 MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
 # texi2html xref map files
-# FIXME: duplicated in stepake/texinfo-vars.make make/doc-i18n-root-vars.make
 XREF_MAPS_DIR = $(top-build-dir)/$(outdir)/xref-maps
+ifneq ($(ISOLANG),)
+XREF_MAPS_FILES += $(TEXI_FILES:%.texi=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map) \
+ $(TELY_FILES:%.tely=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map)
+else
 XREF_MAPS_FILES += $(TEXI_FILES:%.texi=$(XREF_MAPS_DIR)/%.xref-map) \
  $(TELY_FILES:%.tely=$(XREF_MAPS_DIR)/%.xref-map)
+endif
 XREF_MAP_FLAGS += -I $(outdir) -I $(src-dir) $(DOCUMENTATION_INCLUDES)
 
 ###########
@@ -53,17 +57,12 @@ TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.ini
 TEXI2HTML_SPLIT = --prefix=index --split=section
 
 TEXI2HTML_INCLUDES += --I=$(src-dir) --I=$(outdir) $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR)
-TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_INIT) $(TEXI2HTML_LANG)
+TEXI2HTML_FLAGS += --error-limit=0 $(TEXI2HTML_INCLUDES) $(TEXI2HTML_INIT) $(TEXI2HTML_LANG)
 TEXI2HTML = TOP_SRC_DIR=$(top-src-dir) PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
 ###########
 
-
 TEXI2PDF_FLAGS += $(DOCUMENTATION_INCLUDES)
 
-ifdef QUIET_BUILD
-TEXI2PDF_FLAGS += -q
-endif
-
 # info stuff
 INFO_INSTALL_FILES = $(wildcard $(addsuffix *, $(INFO_FILES)))
 INFO_INSTALL_COMMAND = $(if $(INFO_INSTALL_FILES),\