* mark all user messages for translation in musicxml2ly
(edit some strings too)
* uniformize case of first character
* mark convert-ly rules for translation, and clean up these strings
a lot
+stderr_write = lilylib.stderr_write
+
+def warning (str):
+ stderr_write (_ ("warning: %s") % str)
def conv(str):
if re.search ('\\\\multi', str):
def conv(str):
if re.search ('\\\\multi', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\multi")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\multi")
+ stderr_write ('\n')
-conversions.append (((0,1,9), conv, '\\header { key = concat + with + operator }'))
+conversions.append (((0,1,9), conv, _ ('\\header { key = concat + with + operator }')))
def conv (str):
if re.search ('\\\\octave', str):
def conv (str):
if re.search ('\\\\octave', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\octave")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\octave")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
# raise FatalConversionError ()
return str
conversions.append ((
# raise FatalConversionError ()
return str
conversions.append ((
- ((0,1,19), conv, 'deprecated \\octave; cannot convert automatically')))
+ ((0,1,19), conv, _ ('deprecated %s') % '\\octave')))
return str
conversions.append ((
return str
conversions.append ((
- ((0,1,20), conv, 'deprecated \\textstyle, new \\key syntax')))
+ ((0,1,20), conv, _ ('deprecated \\textstyle, new \\key syntax'))))
return str
conversions.append ((
return str
conversions.append ((
- ((1,0,0), conv, '0.1.21 -> 1.0.0 ')))
+ ((1,0,0), conv, _ ("bump version for release"))))
def conv(str):
if re.search ('\\\\header', str):
def conv(str):
if re.search ('\\\\header', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % _ ("new \\header format"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("new \\header format"))
+ stderr_write ('\n')
-conversions.append (((1,0,2), conv, '\\header { key = concat + with + operator }'))
+conversions.append (((1,0,2), conv, _ ('\\header { key = concat + with + operator }')))
def conv(str):
if re.search ('[a-zA-Z]+ = *\\translator',str):
def conv(str):
if re.search ('[a-zA-Z]+ = *\\translator',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % _ ("\\translator syntax"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("\\translator syntax"))
+ stderr_write ('\n')
# raise FatalConversionError ()
return str
# raise FatalConversionError ()
return str
def conv(str):
if re.search ('\\\\repeat',str):
def conv(str):
if re.search ('\\\\repeat',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\repeat")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\repeat")
+ stderr_write ('\n')
# raise FatalConversionError ()
return str
conversions.append (((1,0,18), conv,
# raise FatalConversionError ()
return str
conversions.append (((1,0,18), conv,
- '\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative'))
+ _ ('\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative')))
return str
conversions.append (((1,1,52), conv,
return str
conversions.append (((1,1,52), conv,
- 'deprecate \\grouping'))
+ _ ('deprecate %s') % '\\grouping'))
def conv(str):
if re.search ('\\\\repetitions',str):
def conv(str):
if re.search ('\\\\repetitions',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\repetitions")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\repetitions")
+ stderr_write ('\n')
# raise FatalConversionError ()
return str
conversions.append (((1,3,23), conv,
# raise FatalConversionError ()
return str
conversions.append (((1,3,23), conv,
- '\\\\repetitions feature dropped'))
+ _ ('deprecate %s ') % '\\repetitions'))
str = re.sub ("\\\\musicalpitch *{([0-9 -]+)}",
"\\\\musicalpitch #'(\\1)", str)
if re.search ('\\\\notenames',str):
str = re.sub ("\\\\musicalpitch *{([0-9 -]+)}",
"\\\\musicalpitch #'(\\1)", str)
if re.search ('\\\\notenames',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % _ ("new \\notenames format"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("new \\notenames format"))
+ stderr_write ('\n')
return str
conversions.append (((1,3,38), conv, '\musicalpitch { a b c } -> #\'(a b c)'))
return str
conversions.append (((1,3,38), conv, '\musicalpitch { a b c } -> #\'(a b c)'))
def conv (str):
if re.search ('\\[:',str):
def conv (str):
if re.search ('\\[:',str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % _ ("new tremolo format"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("new tremolo format"))
+ stderr_write ('\n')
return str
conversions.append (((1,3,41), conv,
return str
conversions.append (((1,3,41), conv,
return str
conversions.append (((1,3,42), conv,
return str
conversions.append (((1,3,42), conv,
- 'Staff_margin_engraver deprecated, use Instrument_name_engraver'))
+ _ ('Staff_margin_engraver deprecated, use Instrument_name_engraver')))
def conv (str):
if re.search ('\\\\keysignature', str):
def conv (str):
if re.search ('\\\\keysignature', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % _ ("new tremolo format"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % '\\keysignature')
+ stderr_write ('\n')
return str
conversions.append (((1,3,93), conv,
return str
conversions.append (((1,3,93), conv,
- 'property definiton case (eg. onevoice -> oneVoice)'))
+ _ ('change property definiton case (eg. onevoice -> oneVoice)')))
def conv (str):
str = re.sub ('ChordNames*', 'ChordNames', str)
if re.search ('\\\\textscript "[^"]* *"[^"]*"', str):
def conv (str):
str = re.sub ('ChordNames*', 'ChordNames', str)
if re.search ('\\\\textscript "[^"]* *"[^"]*"', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % _ ("new \\textscript markup text"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("new \\textscript markup text"))
+ stderr_write ('\n')
str = re.sub ('\\textscript +("[^"]*")', '\\textscript #\\1', str)
str = re.sub ('\\textscript +("[^"]*")', '\\textscript #\\1', str)
str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str)
return str
str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str)
return str
-conversions.append (((1,3,117), conv, 'identifier names: $!foo_bar_123 -> xfooBarABC'))
+conversions.append (((1,3,117), conv, _ ('identifier names: %s') % '$!foo_bar_123 -> xfooBarABC'))
str = re.sub ('point-and-click +#t', 'point-and-click line-column-location', str)
return str
str = re.sub ('point-and-click +#t', 'point-and-click line-column-location', str)
return str
-conversions.append (((1,3,138), conv, 'point-and-click argument changed to procedure.'))
+conversions.append (((1,3,138), conv, _ ('point-and-click argument changed to procedure.')))
str = re.sub ("([^ \t;#]);", "\\1", str)
return str
str = re.sub ("([^ \t;#]);", "\\1", str)
return str
-conversions.append (((1,3,146), conv, 'semicolons removed'))
+conversions.append (((1,3,146), conv, _('semicolons removed')))
-conversions.append (((1,5,40), conv, 'breakAlignOrder property names'))
+conversions.append (((1,5,40), conv, _ ('%s property names') % 'breakAlignOrder'))
str = re.sub ('textNonEmpty *= *##f', "TextScript \\set #'no-spacing-rods = ##t", str)
return str
str = re.sub ('textNonEmpty *= *##f', "TextScript \\set #'no-spacing-rods = ##t", str)
return str
-conversions.append (((1,5,58), conv, 'deprecate textNonEmpty'))
+conversions.append (((1,5,58), conv, _ ('deprecate %s') % 'textNonEmpty'))
def conv (str):
if re.search (r'\addlyrics',str) \
and re.search ('automaticMelismata', str) == None:
def conv (str):
if re.search (r'\addlyrics',str) \
and re.search ('automaticMelismata', str) == None:
- error_file.write ('\n')
- error_file.write (NOT_SMART % "automaticMelismata; turned on by default since 1.5.67.")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "automaticMelismata; turned on by default since 1.5.67.")
+ stderr_write ('\n')
raise FatalConversionError ()
return str
conversions.append (((1,5,67), conv,
raise FatalConversionError ()
return str
conversions.append (((1,5,67), conv,
- 'automaticMelismata turned on by default'))
+ _ ('automaticMelismata turned on by default')))
def conv(str):
if re.search( r'\\GraceContext', str):
def conv(str):
if re.search( r'\\GraceContext', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "GraceContext")
- error_file.write (FROM_TO \
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "GraceContext")
+ stderr_write (FROM_TO \
% ("GraceContext", "#(add-to-grace-init .. )"))
% ("GraceContext", "#(add-to-grace-init .. )"))
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
str = re.sub ('HaraKiriStaffContext', 'RemoveEmptyStaffContext', str)
return str
raise FatalConversionError ()
str = re.sub ('HaraKiriStaffContext', 'RemoveEmptyStaffContext', str)
return str
-conversions.append (((1,7,19), conv,"remove GraceContext"))
+conversions.append (((1,7,19), conv, _ ("remove %s") % "GraceContext"))
def conv(str):
if re.search( r'-(start|stop)Cluster', str):
def conv(str):
if re.search( r'-(start|stop)Cluster', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % _ ("cluster syntax"))
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("cluster syntax"))
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
return str
raise FatalConversionError ()
return str
-conversions.append (((1,7,24), conv,"cluster syntax"))
+conversions.append (((1,7,24), conv, _ ("cluster syntax")))
str = re.sub (r"\\property *Staff\.(Sustain|Sostenuto|UnaCorda)Pedal *\\revert *#'pedal-type", '', str)
return str
str = re.sub (r"\\property *Staff\.(Sustain|Sostenuto|UnaCorda)Pedal *\\revert *#'pedal-type", '', str)
return str
-conversions.append (((1,7,28), conv,"new Pedal style syntax"))
+conversions.append (((1,7,28), conv, _ ("new Pedal style syntax")))
-conversions.append (((1,9,0), conv, """New relative mode,
-Postfix articulations, new text markup syntax, new chord syntax."""))
+conversions.append (((1,9,0), conv, _ ("""New relative mode,
+Postfix articulations, new text markup syntax, new chord syntax.""")))
def conv (str):
if re.search ("font-style",str):
def conv (str):
if re.search ("font-style",str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "font-style")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "font-style")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
raise FatalConversionError ()
str = re.sub (r'@\\markup', r'-\\markup', str)
return str
str = re.sub (r'@\\markup', r'-\\markup', str)
return str
-conversions.append (((1,9,1), conv, """Remove - before articulation"""))
+conversions.append (((1,9,1), conv, _ ("""Remove - before articulation""")))
def conv (str):
str = re.sub ('ly:set-context-property',
def conv (str):
str = re.sub ('ly:set-context-property',
'acciaccatura', str)
if re.search ("context-spec-music", str):
'acciaccatura', str)
if re.search ("context-spec-music", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "context-spec-music")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "context-spec-music")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
raise FatalConversionError ()
return str
conversions.append (((1,9,3), conv,
return str
conversions.append (((1,9,3), conv,
- """\\acciaccatura misspelling, fingerHorizontalDirection -> fingeringOrientations"""))
+ (_ ("%s misspelling") % "\\acciaccatura") + \
+ ", fingerHorizontalDirection -> fingeringOrientations"))
def conv (str):
if re.search ('\\figures', str):
def conv (str):
if re.search ('\\figures', str):
- error_file.write ("Warning: attempting automatic \\figures conversion. Check results!");
+ warning (_ ("attempting automatic \\figures conversion. Check results!"));
-conversions.append (((1,9,4), conv, 'Swap < > and << >>'))
+conversions.append (((1,9,4), conv, _ ('Swap < > and << >>')))
def conv (str):
if re.search ("ly:get-font", str) :
def conv (str):
if re.search ("ly:get-font", str) :
- error_file.write ('\n')
- error_file.write (NOT_SMART % "(ly:-get-font")
- error_file.write ('\n')
- error_file.write (FROM_TO \
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "(ly:-get-font")
+ stderr_write ('\n')
+ stderr_write (FROM_TO \
% ("(ly:paper-get-font (ly:grob-get-paper foo) .. )",
"(ly:paper-get-font (ly:grob-get-paper foo) .. )"))
% ("(ly:paper-get-font (ly:grob-get-paper foo) .. )",
"(ly:paper-get-font (ly:grob-get-paper foo) .. )"))
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
if re.search ("\\pitch *#", str) :
raise FatalConversionError ()
if re.search ("\\pitch *#", str) :
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\pitch")
- error_file.write ('\n')
- error_file.write ("Use Scheme code to construct arbitrary note events.")
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\pitch")
+ stderr_write ('\n')
+ stderr_write (_ ("Use Scheme code to construct arbitrary note events."))
+ stderr_write ('\n')
raise FatalConversionError ()
return str
raise FatalConversionError ()
return str
-conversions.append (((1,9,6), conv, 'ly:get-font deprecated.'))
+conversions.append (((1,9,6), conv, _ ('deprecate %s') % 'ly:get-font'))
def conv (str):
def sub_alteration (m):
def conv (str):
def sub_alteration (m):
m= re.search ("\\\\outputproperty #([^#]+)[\t\n ]*#'([^ ]+)", str)
if m:
m= re.search ("\\\\outputproperty #([^#]+)[\t\n ]*#'([^ ]+)", str)
if m:
r"""\outputproperty found,
Please hand-edit, using
\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)
r"""\outputproperty found,
Please hand-edit, using
\applyoutput #(outputproperty-compatibility %s '%s <GROB PROPERTY VALUE>)
-as a substitution text.""" % (m.group (1), m.group (2)) )
+as a substitution text.""") % (m.group (1), m.group (2)) )
raise FatalConversionError ()
if re.search ("ly:(make-pitch|pitch-alteration)", str) \
or re.search ("keySignature", str):
raise FatalConversionError ()
if re.search ("ly:(make-pitch|pitch-alteration)", str) \
or re.search ("keySignature", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "pitches")
- error_file.write ('\n')
- error_file.write (
- """The alteration field of Scheme pitches was multiplied by 2
-to support quarter tone accidentals. You must update the following constructs by manually:
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "pitches")
+ stderr_write ('\n')
+ stderr_write (
+ _ ("""The alteration field of Scheme pitches was multiplied by 2
+to support quarter tone accidentals. You must update the following constructs manually:
* calls of ly:make-pitch and ly:pitch-alteration
* keySignature settings made with \property
* calls of ly:make-pitch and ly:pitch-alteration
* keySignature settings made with \property
raise FatalConversionError ()
return str
conversions.append (((1,9,7), conv,
raise FatalConversionError ()
return str
conversions.append (((1,9,7), conv,
- '''use symbolic constants for alterations,
-remove \\outputproperty, move ly:verbose into ly:get-option'''))
+ _ ('''use symbolic constants for alterations,
+remove \\outputproperty, move ly:verbose into ly:get-option''')))
def conv (str):
if re.search ("dash-length",str):
def conv (str):
if re.search ("dash-length",str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "dash-length")
- error_file.write ('\n')
- error_file.write (FROM_TO % ("dash-length", "dash-fraction"))
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "dash-length")
+ stderr_write ('\n')
+ stderr_write (FROM_TO % ("dash-length", "dash-fraction"))
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
return str
raise FatalConversionError ()
return str
str = re.sub (r"\\property ([a-zA-Z]+)\s*\.\s*automaticMelismata\s*=\s*##([ft])", func, str)
return str
str = re.sub (r"\\property ([a-zA-Z]+)\s*\.\s*automaticMelismata\s*=\s*##([ft])", func, str)
return str
-conversions.append (((2,1,4), conv, """removal of automaticMelismata; use melismaBusyProperties instead."""))
+conversions.append (((2,1,4), conv, _ ("""removal of automaticMelismata; use melismaBusyProperties instead.""")))
def conv (str):
if re.search (r'\\partcombine', str):
def conv (str):
if re.search (r'\\partcombine', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "\\partcombine")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "\\partcombine")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
# this rule doesn't really work,
raise FatalConversionError ()
# this rule doesn't really work,
-conversions.append (((2,1,17), conv, """\\partcombine syntax change to \\newpartcombine"""))
+conversions.append (((2,1,17), conv, _ ("\\partcombine syntax change to \\newpartcombine")))
def conv (str):
if re.search ('include "drumpitch', str):
def conv (str):
if re.search ('include "drumpitch', str):
- error_file.write ("Drums found. Enclose drum notes in \\drummode")
+ stderr_write (_ ("Drums found. Enclose drum notes in \\drummode"))
str = re.sub (r'\\include "drumpitch-init.ly"','', str)
str = re.sub (r'\\include "drumpitch-init.ly"','', str)
if re.search ('drums->paper', str):
if re.search ('drums->paper', str):
- error_file.write ("\nDrum notation found. Check file manually!")
+ stderr_write (_ ("\n%s found. Check file manually!\n") % _("Drum notation"))
str = re.sub (r"""\\apply\s+#\(drums->paper\s+'([a-z]+)\)""",
r"""\property DrumStaff.drumStyleTable = #\1-style""",
str)
if re.search ('Thread', str):
str = re.sub (r"""\\apply\s+#\(drums->paper\s+'([a-z]+)\)""",
r"""\property DrumStaff.drumStyleTable = #\1-style""",
str)
if re.search ('Thread', str):
- error_file.write ("\nThread found. Check file manually!\n");
+ stderr_write (_ ("\n%s found. Check file manually!\n") % "Thread");
str = re.sub (r"""(\\once\s*)?\\property\s+Thread\s*\.\s*NoteHead\s*"""
+ r"""\\(set|override)\s*#'style\s*=\s*#'harmonic"""
str = re.sub (r"""(\\once\s*)?\\property\s+Thread\s*\.\s*NoteHead\s*"""
+ r"""\\(set|override)\s*#'style\s*=\s*#'harmonic"""
str = re.sub (r"""Thread""", """Voice""", str)
if re.search ('\bLyrics\b', str):
str = re.sub (r"""Thread""", """Voice""", str)
if re.search ('\bLyrics\b', str):
- error_file.write ("\nLyrics found. Check file manually!\n");
+ stderr_write (_ ("\n%s found. Check file manually!\n") % "Lyrics");
str = re.sub (r"""LyricsVoice""", r"""L@ricsVoice""", str)
str = re.sub (r"""\bLyrics\b""", r"""LyricsVoice""", str)
str = re.sub (r"""LyricsVoice""", r"""L@ricsVoice""", str)
str = re.sub (r"""\bLyrics\b""", r"""LyricsVoice""", str)
-conversions.append (((2,1,19), conv, """Drum notation changes, Removing \\chordmodifiers, \\notenames.
-Harmonic notes. Thread context removed. Lyrics context removed."""))
+conversions.append (((2,1,19), conv, _ ("""Drum notation changes, Removing \\chordmodifiers, \\notenames.
+Harmonic notes. Thread context removed. Lyrics context removed.""")))
def conv (str):
str = re.sub (r'nonevent-skip', 'skip-music', str)
def conv (str):
str = re.sub (r'nonevent-skip', 'skip-music', str)
brew-new-markup-molecule -> Text_item::print
LyricsVoice -> Lyrics
tupletInvisible -> TupletBracket \set #'transparent
brew-new-markup-molecule -> Text_item::print
LyricsVoice -> Lyrics
tupletInvisible -> TupletBracket \set #'transparent
-Grob::preset_extent removed.
-""" ))
+%s.
+""" % (_ ("remove %s") % "Grob::preset_extent")))
str = re.sub ('Molecule', 'Stencil', str)
return str
str = re.sub ('Molecule', 'Stencil', str)
return str
-conversions.append (((2,1,22), conv, """new syntax for property settings:
+conversions.append (((2,1,22), conv, """%s
\\set A.B = #C , \\unset A.B
\\override A.B #C = #D, \\revert A.B #C
\\set A.B = #C , \\unset A.B
\\override A.B #C = #D, \\revert A.B #C
+""" % _ ("new syntax for property settings:")))
def conv (str):
def subst_in_trans (match):
def conv (str):
def subst_in_trans (match):
-conversions.append (((2,1,23), conv, """Property setting syntax in \\translator{ }"""))
+conversions.append (((2,1,23), conv, _ ("Property setting syntax in \\translator{ }")))
+
def conv (str):
str = re.sub (r'music-list\?', 'ly:music-list?', str)
str = re.sub (r'\|\s*~', '~ |', str)
def conv (str):
str = re.sub (r'music-list\?', 'ly:music-list?', str)
str = re.sub (r'\|\s*~', '~ |', str)
str = re.sub (r'ly:get-broken-into', 'ly:spanner-broken-into', str)
str = re.sub (r'Melisma_engraver', 'Melisma_translator', str)
if re.search ("ly:get-paper-variable", str):
str = re.sub (r'ly:get-broken-into', 'ly:spanner-broken-into', str)
str = re.sub (r'Melisma_engraver', 'Melisma_translator', str)
if re.search ("ly:get-paper-variable", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "ly:paper-get-variable")
- error_file.write ('\n')
- error_file.write ('use (ly:paper-lookup (ly:grob-paper ))')
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "ly:paper-get-variable")
+ stderr_write ('\n')
+ stderr_write (_ ('use %s') % '(ly:paper-lookup (ly:grob-paper ))')
+ stderr_write ('\n')
raise FatalConversionError ()
str = re.sub (r'\\defaultAccidentals', "#(set-accidental-style 'default)", str)
raise FatalConversionError ()
str = re.sub (r'\\defaultAccidentals', "#(set-accidental-style 'default)", str)
-conversions.append (((2,1,25), conv, """Scheme grob function renaming"""))
+conversions.append (((2,1,25), conv, _ ("Scheme grob function renaming")))
-conversions.append (((2,1,26), conv, """More Scheme function renaming"""))
+conversions.append (((2,1,26), conv, _ ("More Scheme function renaming")))
def conv (str):
def subst (m):
def conv (str):
def subst (m):
- g = string.atoi (m.group (2))
o = g / 12
g -= o * 12
if g < 0:
o = g / 12
g -= o * 12
if g < 0:
return str
conversions.append (((2, 2, 0), conv,
return str
conversions.append (((2, 2, 0), conv,
- '''clean up version. '''))
+ _ ("bump version for release")))
def conv (str):
return re.sub (r'\\apply\b', r'\\applymusic', str)
def conv (str):
return re.sub (r'\\apply\b', r'\\applymusic', str)
def conv (str):
if re.search ('textheight', str):
def conv (str):
if re.search ('textheight', str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "textheight")
- error_file.write ('\n')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
- error_file.write (
-"""Page layout has been changed, using paper size and margins.
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "textheight")
+ stderr_write ('\n')
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
+ stderr_write (
+_ ("""Page layout has been changed, using paper size and margins.
textheight is no longer used.
textheight is no longer used.
str = re.sub (r'\\OrchestralScoreContext', '\\Score', str)
def func(m):
if m.group(1) not in ['RemoveEmptyStaff',
str = re.sub (r'\\OrchestralScoreContext', '\\Score', str)
def func(m):
if m.group(1) not in ['RemoveEmptyStaff',
return str
conversions.append (((2, 3, 4), conv,
return str
conversions.append (((2, 3, 4), conv,
+ _ ('remove %s') % '\\notes'))
str = re.sub (r'\\addlyrics', r'\\oldaddlyrics', str)
str = re.sub (r'\\newlyrics', r'\\addlyrics', str)
if re.search (r"\\override\s*TextSpanner", str):
str = re.sub (r'\\addlyrics', r'\\oldaddlyrics', str)
str = re.sub (r'\\newlyrics', r'\\addlyrics', str)
if re.search (r"\\override\s*TextSpanner", str):
- error_file.write ("\nWarning: TextSpanner has been split into DynamicTextSpanner and TextSpanner\n")
+ stderr_write ("\nWarning: TextSpanner has been split into DynamicTextSpanner and TextSpanner\n")
return str
conversions.append (((2, 3, 10), conv,
return str
conversions.append (((2, 3, 10), conv,
return str
conversions.append (((2, 3, 16), conv,
return str
conversions.append (((2, 3, 16), conv,
- '''\\foo -> \\foomode (for chords, notes, etc.)
-fold \\new FooContext \\foomode into \\foo.'''))
+ _ ('''\\foo -> \\foomode (for chords, notes, etc.)
+fold \\new FooContext \\foomode into \\foo.''')))
def conv (str):
str = re.sub (r'(slur|stem|phrasingSlur|tie|dynamic|dots|tuplet|arpeggio|)Both', r'\1Neutral', str)
def conv (str):
str = re.sub (r'(slur|stem|phrasingSlur|tie|dynamic|dots|tuplet|arpeggio|)Both', r'\1Neutral', str)
return str
conversions.append (((2, 3, 17), conv,
return str
conversions.append (((2, 3, 17), conv,
- '''\\foo -> \\foomode (for chords, notes, etc.)
-fold \\new FooContext \\foomode into \\foo.'''))
+ '''slurBoth -> slurNeutral, stemBoth -> stemNeutral, etc.
+\\applymusic #(remove-tag 'foo) -> \\removeWithTag 'foo'''))
str = re.sub (r'\\paper', r'\\layout', str)
str = re.sub (r'\\bookpaper', r'\\paper', str)
if re.search ('paper-set-staff-size', str):
str = re.sub (r'\\paper', r'\\layout', str)
str = re.sub (r'\\bookpaper', r'\\paper', str)
if re.search ('paper-set-staff-size', str):
- error_file.write ('''\nWarning: staff size should be changed at top-level
+ warning (_ ('''staff size should be changed at top-level
with
#(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)
with
#(set-global-staff-size <STAFF-HEIGHT-IN-POINT>)
str = re.sub (r'#\(paper-set-staff-size', '%Use set-global-staff-size at toplevel\n% #(layout-set-staff-size', str)
str = re.sub (r'#\(paper-set-staff-size', '%Use set-global-staff-size at toplevel\n% #(layout-set-staff-size', str)
conversions.append (((2, 3, 22),
conv,
conversions.append (((2, 3, 22),
conv,
- '''paper -> layout
- bookpaper -> paper''' ))
+ '''paper -> layout, bookpaper -> paper''' ))
conversions.append (((2, 3, 24),
conv,
conversions.append (((2, 3, 24),
conv,
- '''regularize other identifiers.'''))
+ _ ('''regularize other identifiers''')))
def conv (str):
str = re.sub ('petrucci_c1', 'petrucci-c1', str)
def conv (str):
str = re.sub ('petrucci_c1', 'petrucci-c1', str)
conversions.append (((2, 4, 0),
conv,
conversions.append (((2, 4, 0),
conv,
+ _ ("bump version for release")))
def conv (str):
str = re.sub (r'\\quote\s+"?([a-zA-Z0-9]+)"?\s+([0-9.*/]+)',
r'\\quoteDuring #"\1" { \skip \2 }',
def conv (str):
str = re.sub (r'\\quote\s+"?([a-zA-Z0-9]+)"?\s+([0-9.*/]+)',
r'\\quoteDuring #"\1" { \skip \2 }',
return str
conversions.append (((2, 5, 0),
conv,
return str
conversions.append (((2, 5, 0),
conv,
+ '\\quote -> \\quoteDuring'))
if encoding == 'latin1':
return match.group (2)
if encoding == 'latin1':
return match.group (2)
- error_file.write ('\n')
- error_file.write (NOT_SMART % ("\\encoding: %s" % encoding))
- error_file.write ('\n')
- error_file.write (_ ("LilyPond source must be UTF-8"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % ("\\encoding: %s" % encoding))
+ stderr_write ('\n')
+ stderr_write (_ ("LilyPond source must be UTF-8"))
+ stderr_write ('\n')
- error_file.write (_ ("Try the texstrings backend"))
- error_file.write ('\n')
+ stderr_write (_ ("Try the texstrings backend"))
+ stderr_write ('\n')
- error_file.write ( _("Do something like: %s") % \
+ stderr_write ( _("Do something like: %s") % \
("recode %s..utf-8 FILE" % encoding))
("recode %s..utf-8 FILE" % encoding))
- error_file.write ('\n')
- error_file.write (_ ("Or save as UTF-8 in your editor"))
- error_file.write ('\n')
+ stderr_write ('\n')
+ stderr_write (_ ("Or save as UTF-8 in your editor"))
+ stderr_write ('\n')
raise FatalConversionError ()
return match.group (0)
raise FatalConversionError ()
return match.group (0)
conversions.append (((2, 5, 13),
conv,
conversions.append (((2, 5, 13),
conv,
- '\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click'))
+ _ ('\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click')))
def conv (str):
if re.search ("ly:stencil-set-extent!", str):
def conv (str):
if re.search ("ly:stencil-set-extent!", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "ly:stencil-set-extent!")
- error_file.write ('\n')
- error_file.write ('use (set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "ly:stencil-set-extent!")
+ stderr_write ('\n')
+ stderr_write ('use (set! VAR (ly:make-stencil (ly:stencil-expr VAR) X-EXT Y-EXT))\n')
raise FatalConversionError ()
if re.search ("ly:stencil-align-to!", str):
raise FatalConversionError ()
if re.search ("ly:stencil-align-to!", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % "ly:stencil-align-to!")
- error_file.write ('\n')
- error_file.write ('use (set! VAR (ly:stencil-aligned-to VAR AXIS DIR))\n')
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % "ly:stencil-align-to!")
+ stderr_write ('\n')
+ stderr_write ('use (set! VAR (ly:stencil-aligned-to VAR AXIS DIR))\n')
raise FatalConversionError ()
return str
conversions.append (((2, 5, 17),
conv,
raise FatalConversionError ()
return str
conversions.append (((2, 5, 17),
conv,
- 'ly:stencil-set-extent! removed'))
+ _ ('remove %s') % 'ly:stencil-set-extent!'))
def conv (str):
str = re.sub (r"ly:warn\b", 'ly:warning', str)
def conv (str):
str = re.sub (r"ly:warn\b", 'ly:warning', str)
def conv (str):
if re.search ("(override-|revert-)auto-beam-setting", str)\
or re.search ("autoBeamSettings", str):
def conv (str):
if re.search ("(override-|revert-)auto-beam-setting", str)\
or re.search ("autoBeamSettings", str):
- error_file.write ('\n')
- error_file.write (NOT_SMART % _ ("auto beam settings"))
- error_file.write ('\n')
- error_file.write ('''
+ stderr_write ('\n')
+ stderr_write (NOT_SMART % _ ("auto beam settings"))
+ stderr_write ('\n')
+ stderr_write (_ ('''
Auto beam settings must now specify each interesting moment in a measure
explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.
Auto beam settings must now specify each interesting moment in a measure
explicitely; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.
-''')
- error_file.write (UPDATE_MANUALLY)
- error_file.write ('\n')
+'''))
+ stderr_write (UPDATE_MANUALLY)
+ stderr_write ('\n')
raise FatalConversionError ()
return str
conversions.append (((2, 5, 21),
conv,
raise FatalConversionError ()
return str
conversions.append (((2, 5, 21),
conv,
- 'warn about auto beam settings'))
+ _ ('warn about auto beam settings')))
def conv (str):
str = re.sub (r"unfoldrepeats", 'unfoldRepeats', str)
def conv (str):
str = re.sub (r"unfoldrepeats", 'unfoldRepeats', str)
return str
conversions.append (((2, 5, 25), conv,
return str
conversions.append (((2, 5, 25), conv,
-
- 'unfoldrepeats -> unfoldRepeats,'
- + 'compressmusic -> compressMusic'))
+ 'unfoldrepeats -> unfoldRepeats, compressmusic -> compressMusic'))
def conv (str):
return str
conversions.append (((2, 6, 0), conv,
def conv (str):
return str
conversions.append (((2, 6, 0), conv,
-
- 'dummy rule for 2.6'))
+ _ ("bump version for release")))
return str
conversions.append (((2, 7, 4), conv,
return str
conversions.append (((2, 7, 4), conv,
- '''keyAccidentalOrder->keyAlterationOrder'''))
+ '''keyAccidentalOrder -> keyAlterationOrder'''))
return str
conversions.append (((2, 7, 6), conv,
return str
conversions.append (((2, 7, 6), conv,
- '''Performer_group_performer -> Performer_group, Engraver_group_engraver -> Engraver_group
+ '''Performer_group_performer -> Performer_group, Engraver_group_engraver -> Engraver_group,
inside-slur -> avoid-slur'''))
inside-slur -> avoid-slur'''))
subber, str)
if re.search ('bar-size-procedure', str):
subber, str)
if re.search ('bar-size-procedure', str):
- error_file.write (NOT_SMART % "bar-size-procedure")
+ stderr_write (NOT_SMART % "bar-size-procedure")
if re.search ('space-function', str):
if re.search ('space-function', str):
- error_file.write (NOT_SMART % "space-function")
+ stderr_write (NOT_SMART % "space-function")
if re.search ('verticalAlignmentChildCallback', str):
if re.search ('verticalAlignmentChildCallback', str):
- error_file.write ('verticalAlignmentChildCallback has been deprecated')
+ stderr_write (_ ('verticalAlignmentChildCallback has been deprecated'))
return str
conversions.append (((2, 7, 13), conv,
return str
conversions.append (((2, 7, 13), conv,
- '''layout engine refactoring. [FIXME] '''))
+ '''layout engine refactoring [FIXME]'''))
return str
conversions.append (((2, 7, 14), conv,
return str
conversions.append (((2, 7, 14), conv,
- '''Remove callbacks property, deprecate XY-extent-callback. '''))
+ _ ('Remove callbacks property, deprecate XY-extent-callback.')))
def conv (str):
if re.search ('[XY]-offset-callbacks', str):
def conv (str):
if re.search ('[XY]-offset-callbacks', str):
- error_file.write (NOT_SMART % "[XY]-offset-callbacks")
+ stderr_write (NOT_SMART % "[XY]-offset-callbacks")
if re.search ('position-callbacks', str):
if re.search ('position-callbacks', str):
- error_file.write (NOT_SMART % "position-callbacks")
+ stderr_write (NOT_SMART % "position-callbacks")
return str
conversions.append (((2, 7, 15), conv,
return str
conversions.append (((2, 7, 15), conv,
- '''Use grob closures iso. XY-offset-callbacks.'''))
+ _ ('Use grob closures iso. XY-offset-callbacks.')))
return str
conversions.append (((2, 7, 24), conv,
return str
conversions.append (((2, 7, 24), conv,
- """deprecate number-visibility"""))
+ _ ('deprecate %s') % 'number-visibility'))
def conv (str):
str = re.sub (r"ly:spanner-get-bound", "ly:spanner-bound", str)
def conv (str):
str = re.sub (r"ly:spanner-get-bound", "ly:spanner-bound", str)
return str
conversions.append (((2, 7, 32), conv,
return str
conversions.append (((2, 7, 32), conv,
- """foobar -> foo-bar for \paper, \layout"""))
+ _ ("foobar -> foo-bar for \paper, \layout")))
def conv (str):
str = re.sub ('debug-beam-quanting', 'debug-beam-scoring', str)
def conv (str):
str = re.sub ('debug-beam-quanting', 'debug-beam-scoring', str)
r"""\\override \g<context>TupletNumber #'text = #tuplet-number::calc-fraction-text""", str)
if re.search ('tupletNumberFormatFunction', str):
r"""\\override \g<context>TupletNumber #'text = #tuplet-number::calc-fraction-text""", str)
if re.search ('tupletNumberFormatFunction', str):
- error_file.write ("\n")
- error_file.write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
- error_file.write ("\n")
+ stderr_write ("\n")
+ stderr_write ("tupletNumberFormatFunction has been removed. Use #'text property on TupletNumber")
+ stderr_write ("\n")
str = re.sub (r'\\midi\s*{\s*\\tempo ([0-9]+)\s*([.]*)\s*=\s*([0-9]+)\s*}', sub_tempo, str)
return str
str = re.sub (r'\\midi\s*{\s*\\tempo ([0-9]+)\s*([.]*)\s*=\s*([0-9]+)\s*}', sub_tempo, str)
return str
-conversions.append (((2, 9, 16), conv, """deprecate \\tempo in \\midi"""))
+conversions.append (((2, 9, 16), conv, _ ("deprecate \\tempo in \\midi")))
def conv (str):
str = re.sub ('printfirst-page-number', 'print-first-page-number', str)
def conv (str):
str = re.sub ('printfirst-page-number', 'print-first-page-number', str)
def conv (str):
return str
def conv (str):
return str
-conversions.append (((2, 10, 0), conv, """bump version for release"""))
+conversions.append (((2, 10, 0), conv, _ ("bump version for release")))
-conversions.append (((2, 11, 5), conv, """deprecate cautionary-style. Use AccidentalCautionary properties"""))
+conversions.append (((2, 11, 5), conv, _ ("deprecate cautionary-style. Use AccidentalCautionary properties")))
'standard-alteration-glyph-name-alist')
return str
'standard-alteration-glyph-name-alist')
return str
-conversions.append (((2, 11, 6), conv, """Rename accidental glyphs, use glyph-name-alist."""))
+conversions.append (((2, 11, 6), conv, _ ("Rename accidental glyphs, use glyph-name-alist.")))
r"\override Beam #'breakable", str)
str = re.sub (r'addquote' , 'addQuote', str)
if re.search ("Span_dynamic_performer", str):
r"\override Beam #'breakable", str)
str = re.sub (r'addquote' , 'addQuote', str)
if re.search ("Span_dynamic_performer", str):
- error_file.write ("Span_dynamic_performer has been merged into Dynamic_performer")
+ stderr_write ("Span_dynamic_performer has been merged into Dynamic_performer")
return str
conversions.append (((2, 11, 10), conv, """allowBeamBreak -> Beam #'breakable = ##t
addquote -> addQuote
return str
conversions.append (((2, 11, 10), conv, """allowBeamBreak -> Beam #'breakable = ##t
addquote -> addQuote
str)
if re.search ('edge-text', str):
str)
if re.search ('edge-text', str):
- error_file.write (NOT_SMART % _ ("edge-text settings for TextSpanner."))
- error_file.write (_ ("Use\n\n%s") %
+ stderr_write (NOT_SMART % _ ("edge-text settings for TextSpanner."))
+ stderr_write (_ ("Use\n\n%s") %
"\t\\override TextSpanner #'bound-details #'right #'text = <right-text>\n"
"\t\\override TextSpanner #'bound-details #'left #'text = <left-text>\n")
"\t\\override TextSpanner #'bound-details #'right #'text = <right-text>\n"
"\t\\override TextSpanner #'bound-details #'left #'text = <left-text>\n")
r"scripts.caesura.curved", str)
if re.search ('dash-fraction', str):
r"scripts.caesura.curved", str)
if re.search ('dash-fraction', str):
- error_file.write (NOT_SMART % _ ("all settings related to dashed lines.\n"))
- error_file.write (_ ("Use \\override ... #'style = #'line for solid lines and\n"))
- error_file.write (_ ("\t\\override ... #'style = #'dashed-line for dashed lines."))
+ stderr_write (NOT_SMART % _ ("all settings related to dashed lines.\n"))
+ stderr_write (_ ("Use \\override ... #'style = #'line for solid lines and\n"))
+ stderr_write (_ ("\t\\override ... #'style = #'dashed-line for dashed lines."))
-conversions.append (((2, 11, 35), conv, """scripts.caesura -> scripts.caesura.curved. Use #'style not #'dash-fraction to select solid/dashed lines."""))
+conversions.append (((2, 11, 35), conv, """scripts.caesura -> scripts.caesura.curved.
+""" + _ ("Use #'style not #'dash-fraction to select solid/dashed lines.")))
def conv (str):
str = re.sub (r"setEasyHeads", r"easyHeadsOn", str)
def conv (str):
str = re.sub (r"setEasyHeads", r"easyHeadsOn", str)
default=[os.path.abspath (os.getcwd ())])
p.add_option ('--left-padding',
default=[os.path.abspath (os.getcwd ())])
p.add_option ('--left-padding',
- help="Pad left side of music to align music inspite of uneven bar numbers. (in mm)",
+ help=_ ("pad left side of music to align music inspite of uneven bar numbers (in mm)"),
type="float",
default=3.0)
type="float",
default=3.0)
p.add_option ('--pdf',
action="store_true",
dest="create_pdf",
p.add_option ('--pdf',
action="store_true",
dest="create_pdf",
- help=_ ("Create PDF files for use with PDFTeX"),
+ help=_ ("create PDF files for use with PDFTeX"),
default=False)
p.add_option ('', '--psfonts', action="store_true", dest="psfonts",
help=_ ('''extract all PostScript fonts into INPUT.psfonts for LaTeX
default=False)
p.add_option ('', '--psfonts', action="store_true", dest="psfonts",
help=_ ('''extract all PostScript fonts into INPUT.psfonts for LaTeX
d.duration_log = {1: 0, 2: 1, 4:2, 8:3, 16:4, 32:5, 64:6, 128:7, 256:8, 512:9}.get (rational_len.denominator (), -1)
d.factor = Rational (rational_len.numerator ())
if d.duration_log < 0:
d.duration_log = {1: 0, 2: 1, 4:2, 8:3, 16:4, 32:5, 64:6, 128:7, 256:8, 512:9}.get (rational_len.denominator (), -1)
d.factor = Rational (rational_len.numerator ())
if d.duration_log < 0:
- error_message ("Encountered rational duration with denominator %s, "
- "unable to convert to lilypond duration" %
+ error_message (_ ("Encountered rational duration with denominator %s, "
+ "unable to convert to lilypond duration") %
rational_len.denominator ())
# TODO: Test the above error message
return None
rational_len.denominator ())
# TODO: Test the above error message
return None
self.direction = 0
self.event = None
def print_ly (self, printer):
self.direction = 0
self.event = None
def print_ly (self, printer):
- sys.stderr.write ("Encountered unprocessed marker %s\n" % self)
+ ly.stderr_write (_ ("Encountered unprocessed marker %s\n") % self)
pass
def ly_expression (self):
return ""
pass
def ly_expression (self):
return ""
if func:
ev = func()
else:
if func:
ev = func()
else:
- error_message ('unknown span event %s' % mxl_event)
+ error_message (_ ('unknown span event %s') % mxl_event)
type = mxl_event.get_type ()
type = mxl_event.get_type ()
if span_direction != None:
ev.span_direction = span_direction
else:
if span_direction != None:
ev.span_direction = span_direction
else:
- error_message ('unknown span type %s for %s' % (type, name))
+ error_message (_ ('unknown span type %s for %s') % (type, name))
ev.set_span_type (type)
ev.line_type = getattr (mxl_event, 'line-type', 'solid')
ev.set_span_type (type)
ev.line_type = getattr (mxl_event, 'line-type', 'solid')
continue
if not n.__class__.__name__ == 'Note':
continue
if not n.__class__.__name__ == 'Note':
- error_message ('not a Note or Attributes? %s' % n)
+ error_message (_ ('unexpected %s; expected %s or %s or %s') % (n, 'Note', 'Attributes', 'Barline'))
continue
rest = n.get_maybe_exist_typed_child (musicxml.Rest)
continue
rest = n.get_maybe_exist_typed_child (musicxml.Rest)
if s.get_type () in ('start','stop')]
if slurs:
if len (slurs) > 1:
if s.get_type () in ('start','stop')]
if slurs:
if len (slurs) > 1:
- error_message ('more than 1 slur?')
+ error_message (_ ('cannot have two simultaneous slurs'))
# record the slur status for the next note in the loop
if not grace:
if slurs[0].get_type () == 'start':
# record the slur status for the next note in the loop
if not grace:
if slurs[0].get_type () == 'start':
if len (modes_found) > 1:
if len (modes_found) > 1:
- error_message ('Too many modes found %s' % modes_found.keys ())
+ error_message (_ ('cannot simultaneously have more than one mode: %s') % modes_found.keys ())
if options.relative:
v = musicexp.RelativeMusic ()
if options.relative:
v = musicexp.RelativeMusic ()
part_ly_voices = {}
for n, v in name_voice.items ():
part_ly_voices = {}
for n, v in name_voice.items ():
- progress ("Converting to LilyPond expressions...")
+ progress (_ ("Converting to LilyPond expressions..."))
# musicxml_voice_to_lily_voice returns (lily_voice, {nr->lyrics, nr->lyrics})
part_ly_voices[n] = musicxml_voice_to_lily_voice (v)
# musicxml_voice_to_lily_voice returns (lily_voice, {nr->lyrics, nr->lyrics})
part_ly_voices[n] = musicxml_voice_to_lily_voice (v)
type='string',
dest='output_name',
help=_ ("set output filename to FILE"))
type='string',
dest='output_name',
help=_ ("set output filename to FILE"))
- p.add_option_group ('bugs',
+ p.add_option_group ( _('Bugs'),
description=(_ ("Report bugs via")
+ ''' http://post.gmane.org/post.php'''
'''?group=gmane.comp.gnu.lilypond.bugs\n'''))
description=(_ ("Report bugs via")
+ ''' http://post.gmane.org/post.php'''
'''?group=gmane.comp.gnu.lilypond.bugs\n'''))
def read_musicxml (filename, compressed, use_lxml):
raw_string = None
if compressed:
def read_musicxml (filename, compressed, use_lxml):
raw_string = None
if compressed:
- progress ("Input file %s is compressed, extracting raw MusicXML data" % filename)
+ progress (_ ("Input file %s is compressed, extracting raw MusicXML data") % filename)
z = zipfile.ZipFile (filename, "r")
container_xml = z.read ("META-INF/container.xml")
if not container_xml:
z = zipfile.ZipFile (filename, "r")
container_xml = z.read ("META-INF/container.xml")
if not container_xml:
def convert (filename, options):
def convert (filename, options):
- progress ("Reading MusicXML from %s ..." % filename)
+ progress (_ ("Reading MusicXML from %s ...") % filename)
tree = read_musicxml (filename, options.compressed, options.use_lxml)
parts = tree.get_typed_children (musicxml.Part)
tree = read_musicxml (filename, options.compressed, options.use_lxml)
parts = tree.get_typed_children (musicxml.Part)
driver_ly_name = options.output_name + '.ly'
printer = musicexp.Output_printer()
driver_ly_name = options.output_name + '.ly'
printer = musicexp.Output_printer()
- progress ("Output to `%s'" % defs_ly_name)
+ progress (_ ("Output to `%s'") % defs_ly_name)
printer.set_file (codecs.open (defs_ly_name, 'wb', encoding='utf-8'))
print_ly_preamble (printer, filename)
printer.set_file (codecs.open (defs_ly_name, 'wb', encoding='utf-8'))
print_ly_preamble (printer, filename)
- progress ("Output to `%s'" % driver_ly_name)
+ progress (_ ("Output to `%s'") % driver_ly_name)
printer = musicexp.Output_printer()
printer.set_file (codecs.open (driver_ly_name, 'wb', encoding='utf-8'))
print_ly_preamble (printer, filename)
printer = musicexp.Output_printer()
printer.set_file (codecs.open (driver_ly_name, 'wb', encoding='utf-8'))
print_ly_preamble (printer, filename)
if filename and os.path.exists (filename):
voices = convert (filename, options)
else:
if filename and os.path.exists (filename):
voices = convert (filename, options)
else:
- progress ("Unable to find input file %s" % args[0])
+ progress (_ ("Unable to find input file %s") % args[0])
if __name__ == '__main__':
main()
if __name__ == '__main__':
main()