Split --lifetime into --duration-marquee and --duration-still

This commit is contained in:
Star Brilliant 2014-12-21 01:23:52 +08:00
parent 539242eba2
commit 9fc40a0db7
10 changed files with 178 additions and 151 deletions

View File

@ -19,7 +19,7 @@ Example usage
------------- -------------
```sh ```sh
./danmaku2ass -o foo.ass -s 1920x1080 -fn "MS PGothic" -fs 48 -a 0.8 -l 5 foo.xml ./danmaku2ass -o foo.ass -s 1920x1080 -fn "MS PGothic" -fs 48 -a 0.8 -dm 5 -ds 5 foo.xml
``` ```
Name the output file with same basename but different extension (.ass) as the video. Put them into the same directory and most media players will automatically load them. For MPlayer, you will have to specify `-ass` option. Name the output file with same basename but different extension (.ass) as the video. Put them into the same directory and most media players will automatically load them. For MPlayer, you will have to specify `-ass` option.
@ -42,7 +42,7 @@ Command line reference
``` ```
usage: danmaku2ass.py [-h] [-o OUTPUT] -s WIDTHxHEIGHT [-fn FONT] [-fs SIZE] usage: danmaku2ass.py [-h] [-o OUTPUT] -s WIDTHxHEIGHT [-fn FONT] [-fs SIZE]
[-a ALPHA] [-l SECONDS] [-p HEIGHT] [-r] [-a ALPHA] [-dm SECONDS] [-ds SECONDS] [-p HEIGHT] [-r]
FILE [FILE ...] FILE [FILE ...]
positional arguments: positional arguments:
@ -55,13 +55,15 @@ optional arguments:
-s WIDTHxHEIGHT, --size WIDTHxHEIGHT -s WIDTHxHEIGHT, --size WIDTHxHEIGHT
Stage size in pixels Stage size in pixels
-fn FONT, --font FONT -fn FONT, --font FONT
Specify font face [default: sans-serif] Specify font face [default: Helvetica]
-fs SIZE, --fontsize SIZE -fs SIZE, --fontsize SIZE
Default font size [default: 25] Default font size [default: 25]
-a ALPHA, --alpha ALPHA -a ALPHA, --alpha ALPHA
Text opacity Text opacity
-l SECONDS, --lifetime SECONDS -dm SECONDS, --duration-marquee SECONDS
Duration of comment display [default: 5] Duration of scrolling comment display [default: 5]
-ds SECONDS, --duration-still SECONDS
Duration of still comment display [default: 5]
-p HEIGHT, --protect HEIGHT -p HEIGHT, --protect HEIGHT
Reserve blank on the bottom of the stage Reserve blank on the bottom of the stage
-r, --reduce Reduce the amount of comments if stage is full -r, --reduce Reduce the amount of comments if stage is full

View File

@ -552,7 +552,7 @@ def ConvertFlashRotation(rotY, rotZ, X, Y, width, height):
return (trX, trY, WrapAngle(outX), WrapAngle(outY), WrapAngle(outZ), scaleXY*100, scaleXY*100) return (trX, trY, WrapAngle(outX), WrapAngle(outY), WrapAngle(outZ), scaleXY*100, scaleXY*100)
def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsize, alpha, lifetime, reduced, progress_callback): def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsize, alpha, duration_marquee, duration_still, reduced, progress_callback):
styleid = 'Danmaku2ASS_%04x' % random.randint(0, 0xffff) styleid = 'Danmaku2ASS_%04x' % random.randint(0, 0xffff)
WriteASSHead(f, width, height, fontface, fontsize, alpha, styleid) WriteASSHead(f, width, height, fontface, fontsize, alpha, styleid)
rows = [[None]*(height-bottomReserved+1) for i in range(4)] rows = [[None]*(height-bottomReserved+1) for i in range(4)]
@ -563,10 +563,10 @@ def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsi
row = 0 row = 0
rowmax = height-bottomReserved-i[7] rowmax = height-bottomReserved-i[7]
while row <= rowmax: while row <= rowmax:
freerows = TestFreeRows(rows, i, row, width, height, bottomReserved, lifetime) freerows = TestFreeRows(rows, i, row, width, height, bottomReserved, duration_marquee, duration_still)
if freerows >= i[7]: if freerows >= i[7]:
MarkCommentRow(rows, i, row) MarkCommentRow(rows, i, row)
WriteComment(f, i, row, width, height, bottomReserved, fontsize, lifetime, styleid) WriteComment(f, i, row, width, height, bottomReserved, fontsize, duration_marquee, duration_still, styleid)
break break
else: else:
row += freerows or 1 row += freerows or 1
@ -574,7 +574,7 @@ def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsi
if not reduced: if not reduced:
row = FindAlternativeRow(rows, i, height, bottomReserved) row = FindAlternativeRow(rows, i, height, bottomReserved)
MarkCommentRow(rows, i, row) MarkCommentRow(rows, i, row)
WriteComment(f, i, row, width, height, bottomReserved, fontsize, lifetime, styleid) WriteComment(f, i, row, width, height, bottomReserved, fontsize, duration_marquee, duration_still, styleid)
elif i[4] == 'bilipos': elif i[4] == 'bilipos':
WriteCommentBilibiliPositioned(f, i, width, height, styleid) WriteCommentBilibiliPositioned(f, i, width, height, styleid)
elif i[4] == 'acfunpos': elif i[4] == 'acfunpos':
@ -587,7 +587,7 @@ def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsi
progress_callback(len(comments), len(comments)) progress_callback(len(comments), len(comments))
def TestFreeRows(rows, c, row, width, height, bottomReserved, lifetime): def TestFreeRows(rows, c, row, width, height, bottomReserved, duration_marquee, duration_still):
res = 0 res = 0
rowmax = height-bottomReserved rowmax = height-bottomReserved
targetRow = None targetRow = None
@ -595,20 +595,20 @@ def TestFreeRows(rows, c, row, width, height, bottomReserved, lifetime):
while row < rowmax and res < c[7]: while row < rowmax and res < c[7]:
if targetRow != rows[c[4]][row]: if targetRow != rows[c[4]][row]:
targetRow = rows[c[4]][row] targetRow = rows[c[4]][row]
if targetRow and targetRow[0]+lifetime > c[0]: if targetRow and targetRow[0]+duration_still > c[0]:
break break
row += 1 row += 1
res += 1 res += 1
else: else:
try: try:
thresholdTime = c[0]-lifetime*(1-width/(c[8]+width)) thresholdTime = c[0]-duration_marquee*(1-width/(c[8]+width))
except ZeroDivisionError: except ZeroDivisionError:
thresholdTime = c[0]-lifetime thresholdTime = c[0]-duration_marquee
while row < rowmax and res < c[7]: while row < rowmax and res < c[7]:
if targetRow != rows[c[4]][row]: if targetRow != rows[c[4]][row]:
targetRow = rows[c[4]][row] targetRow = rows[c[4]][row]
try: try:
if targetRow and (targetRow[0] > thresholdTime or targetRow[0]+targetRow[8]*lifetime/(targetRow[8]+width) > c[0]): if targetRow and (targetRow[0] > thresholdTime or targetRow[0]+targetRow[8]*duration_marquee/(targetRow[8]+width) > c[0]):
break break
except ZeroDivisionError: except ZeroDivisionError:
pass pass
@ -661,24 +661,28 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
) )
def WriteComment(f, c, row, width, height, bottomReserved, fontsize, lifetime, styleid): def WriteComment(f, c, row, width, height, bottomReserved, fontsize, duration_marquee, duration_still, styleid):
text = ASSEscape(c[3]) text = ASSEscape(c[3])
styles = [] styles = []
if c[4] == 1: if c[4] == 1:
styles.append('\\an8\\pos(%(halfwidth)d, %(row)d)' % {'halfwidth': width/2, 'row': row}) styles.append('\\an8\\pos(%(halfwidth)d, %(row)d)' % {'halfwidth': width/2, 'row': row})
duration = duration_still
elif c[4] == 2: elif c[4] == 2:
styles.append('\\an2\\pos(%(halfwidth)d, %(row)d)' % {'halfwidth': width/2, 'row': ConvertType2(row, height, bottomReserved)}) styles.append('\\an2\\pos(%(halfwidth)d, %(row)d)' % {'halfwidth': width/2, 'row': ConvertType2(row, height, bottomReserved)})
duration = duration_still
elif c[4] == 3: elif c[4] == 3:
styles.append('\\move(%(neglen)d, %(row)d, %(width)d, %(row)d)' % {'width': width, 'row': row, 'neglen': -math.ceil(c[8])}) styles.append('\\move(%(neglen)d, %(row)d, %(width)d, %(row)d)' % {'width': width, 'row': row, 'neglen': -math.ceil(c[8])})
duration = duration_marquee
else: else:
styles.append('\\move(%(width)d, %(row)d, %(neglen)d, %(row)d)' % {'width': width, 'row': row, 'neglen': -math.ceil(c[8])}) styles.append('\\move(%(width)d, %(row)d, %(neglen)d, %(row)d)' % {'width': width, 'row': row, 'neglen': -math.ceil(c[8])})
duration = duration_marquee
if not (-1 < c[6]-fontsize < 1): if not (-1 < c[6]-fontsize < 1):
styles.append('\\fs%.0f' % c[6]) styles.append('\\fs%.0f' % c[6])
if c[5] != 0xffffff: if c[5] != 0xffffff:
styles.append('\\c&H%s&' % ConvertColor(c[5])) styles.append('\\c&H%s&' % ConvertColor(c[5]))
if c[5] == 0x000000: if c[5] == 0x000000:
styles.append('\\3c&HFFFFFF&') styles.append('\\3c&HFFFFFF&')
f.write('Dialogue: 2,%(start)s,%(end)s,%(styleid)s,,0000,0000,0000,,{%(styles)s}%(text)s\n' % {'start': ConvertTimestamp(c[0]), 'end': ConvertTimestamp(c[0]+lifetime), 'styles': ''.join(styles), 'text': text, 'styleid': styleid}) f.write('Dialogue: 2,%(start)s,%(end)s,%(styleid)s,,0000,0000,0000,,{%(styles)s}%(text)s\n' % {'start': ConvertTimestamp(c[0]), 'end': ConvertTimestamp(c[0]+duration), 'styles': ''.join(styles), 'text': text, 'styleid': styleid})
def ASSEscape(s): def ASSEscape(s):
@ -762,7 +766,7 @@ def export(func):
@export @export
def Danmaku2ASS(input_files, output_file, stage_width, stage_height, reserve_blank=0, font_face=_('(FONT) sans-serif')[7:], font_size=25.0, text_opacity=1.0, comment_duration=5.0, is_reduce_comments=False, progress_callback=None): def Danmaku2ASS(input_files, output_file, stage_width, stage_height, reserve_blank=0, font_face=_('(FONT) sans-serif')[7:], font_size=25.0, text_opacity=1.0, duration_marquee=5.0, duration_still=5.0, is_reduce_comments=False, progress_callback=None):
fo = None fo = None
comments = ReadComments(input_files, font_size) comments = ReadComments(input_files, font_size)
try: try:
@ -770,7 +774,7 @@ def Danmaku2ASS(input_files, output_file, stage_width, stage_height, reserve_bla
fo = ConvertToFile(output_file, 'w', encoding='utf-8-sig', errors='replace', newline='\r\n') fo = ConvertToFile(output_file, 'w', encoding='utf-8-sig', errors='replace', newline='\r\n')
else: else:
fo = sys.stdout fo = sys.stdout
ProcessComments(comments, fo, stage_width, stage_height, reserve_blank, font_face, font_size, text_opacity, comment_duration, is_reduce_comments, progress_callback) ProcessComments(comments, fo, stage_width, stage_height, reserve_blank, font_face, font_size, text_opacity, duration_marquee, duration_still, is_reduce_comments, progress_callback)
finally: finally:
if output_file and fo != output_file: if output_file and fo != output_file:
fo.close() fo.close()
@ -814,7 +818,8 @@ def main():
parser.add_argument('-fn', '--font', metavar=_('FONT'), help=_('Specify font face [default: %s]') % _('(FONT) sans-serif')[7:], default=_('(FONT) sans-serif')[7:]) parser.add_argument('-fn', '--font', metavar=_('FONT'), help=_('Specify font face [default: %s]') % _('(FONT) sans-serif')[7:], default=_('(FONT) sans-serif')[7:])
parser.add_argument('-fs', '--fontsize', metavar=_('SIZE'), help=(_('Default font size [default: %s]') % 25), type=float, default=25.0) parser.add_argument('-fs', '--fontsize', metavar=_('SIZE'), help=(_('Default font size [default: %s]') % 25), type=float, default=25.0)
parser.add_argument('-a', '--alpha', metavar=_('ALPHA'), help=_('Text opacity'), type=float, default=1.0) parser.add_argument('-a', '--alpha', metavar=_('ALPHA'), help=_('Text opacity'), type=float, default=1.0)
parser.add_argument('-l', '--lifetime', metavar=_('SECONDS'), help=_('Duration of comment display [default: %s]') % 5, type=float, default=5.0) parser.add_argument('-dm', '--duration-marquee', metavar=_('SECONDS'), help=_('Duration of scrolling comment display [default: %s]') % 5, type=float, default=5.0)
parser.add_argument('-ds', '--duration-still', metavar=_('SECONDS'), help=_('Duration of still comment display [default: %s]') % 5, type=float, default=5.0)
parser.add_argument('-p', '--protect', metavar=_('HEIGHT'), help=_('Reserve blank on the bottom of the stage'), type=int, default=0) parser.add_argument('-p', '--protect', metavar=_('HEIGHT'), help=_('Reserve blank on the bottom of the stage'), type=int, default=0)
parser.add_argument('-r', '--reduce', action='store_true', help=_('Reduce the amount of comments if stage is full')) parser.add_argument('-r', '--reduce', action='store_true', help=_('Reduce the amount of comments if stage is full'))
parser.add_argument('file', metavar=_('FILE'), nargs='+', help=_('Comment file to be processed')) parser.add_argument('file', metavar=_('FILE'), nargs='+', help=_('Comment file to be processed'))
@ -825,7 +830,7 @@ def main():
height = int(height) height = int(height)
except ValueError: except ValueError:
raise ValueError(_('Invalid stage size: %r') % args.size) raise ValueError(_('Invalid stage size: %r') % args.size)
Danmaku2ASS(args.file, args.output, width, height, args.protect, args.font, args.fontsize, args.alpha, args.lifetime, args.reduce) Danmaku2ASS(args.file, args.output, width, height, args.protect, args.font, args.fontsize, args.alpha, args.duration_marquee, args.duration_still, args.reduce)
if __name__ == '__main__': if __name__ == '__main__':

Binary file not shown.

View File

@ -2,105 +2,110 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Danmaku2ASS\n" "Project-Id-Version: Danmaku2ASS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-03 16:50+0800\n" "POT-Creation-Date: 2014-12-21 00:44+0800\n"
"Last-Translator: Star Brilliant <m13253@hotmail.com>\n" "Last-Translator: Star Brilliant <m13253@hotmail.com>\n"
"Language: en\n" "Language: en\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: danmaku2ass.py:139 danmaku2ass.py:178 danmaku2ass.py:208 #: danmaku2ass.py:143 danmaku2ass.py:182 danmaku2ass.py:212
#, python-format #, python-format
msgid "Invalid comment: %s" msgid "Invalid comment: %s"
msgstr "Invalid comment: %s" msgstr "Invalid comment: %s"
#: danmaku2ass.py:158 danmaku2ass.py:192 danmaku2ass.py:235 danmaku2ass.py:317 #: danmaku2ass.py:162 danmaku2ass.py:196 danmaku2ass.py:239 danmaku2ass.py:323
#: danmaku2ass.py:319 danmaku2ass.py:437 danmaku2ass.py:480 danmaku2ass.py:538 #: danmaku2ass.py:325 danmaku2ass.py:439 danmaku2ass.py:483 danmaku2ass.py:585
#, python-format #, python-format
msgid "Invalid comment: %r" msgid "Invalid comment: %r"
msgstr "Invalid comment: %r" msgstr "Invalid comment: %r"
#: danmaku2ass.py:688 danmaku2ass.py:736 #: danmaku2ass.py:769 danmaku2ass.py:818
msgid "(FONT) sans-serif" msgid "(FONT) sans-serif"
msgstr "(FONT) Helvetica" msgstr "(FONT) Helvetica"
#: danmaku2ass.py:717 #: danmaku2ass.py:798
#, python-format #, python-format
msgid "Unknown comment file format: %s" msgid "Unknown comment file format: %s"
msgstr "Unknown comment file format: %s" msgstr "Unknown comment file format: %s"
#: danmaku2ass.py:734 #: danmaku2ass.py:816
msgid "OUTPUT" msgid "OUTPUT"
msgstr "OUTPUT" msgstr "OUTPUT"
#: danmaku2ass.py:734 #: danmaku2ass.py:816
msgid "Output file" msgid "Output file"
msgstr "Output file" msgstr "Output file"
#: danmaku2ass.py:735 #: danmaku2ass.py:817
msgid "WIDTHxHEIGHT" msgid "WIDTHxHEIGHT"
msgstr "WIDTHxHEIGHT" msgstr "WIDTHxHEIGHT"
#: danmaku2ass.py:735 #: danmaku2ass.py:817
msgid "Stage size in pixels" msgid "Stage size in pixels"
msgstr "Stage size in pixels" msgstr "Stage size in pixels"
#: danmaku2ass.py:736 #: danmaku2ass.py:818
msgid "FONT" msgid "FONT"
msgstr "FONT" msgstr "FONT"
#: danmaku2ass.py:736 #: danmaku2ass.py:818
#, python-format #, python-format
msgid "Specify font face [default: %s]" msgid "Specify font face [default: %s]"
msgstr "Specify font face [default: %s]" msgstr "Specify font face [default: %s]"
#: danmaku2ass.py:737 #: danmaku2ass.py:819
msgid "SIZE" msgid "SIZE"
msgstr "SIZE" msgstr "SIZE"
#: danmaku2ass.py:737 #: danmaku2ass.py:819
#, python-format #, python-format
msgid "Default font size [default: %s]" msgid "Default font size [default: %s]"
msgstr "Default font size [default: %s]" msgstr "Default font size [default: %s]"
#: danmaku2ass.py:738 #: danmaku2ass.py:820
msgid "ALPHA" msgid "ALPHA"
msgstr "ALPHA" msgstr "ALPHA"
#: danmaku2ass.py:738 #: danmaku2ass.py:820
msgid "Text opacity" msgid "Text opacity"
msgstr "Text opacity" msgstr "Text opacity"
#: danmaku2ass.py:739 #: danmaku2ass.py:821 danmaku2ass.py:822
msgid "SECONDS" msgid "SECONDS"
msgstr "SECONDS" msgstr "SECONDS"
#: danmaku2ass.py:739 #: danmaku2ass.py:821
#, python-format #, python-format
msgid "Duration of comment display [default: %s]" msgid "Duration of scrolling comment display [default: %s]"
msgstr "Duration of comment display [default: %s]" msgstr "Duration of scrolling comment display [default: %s]"
#: danmaku2ass.py:740 #: danmaku2ass.py:822
#, python-format
msgid "Duration of still comment display [default: %s]"
msgstr "Duration of still comment display [default: %s]"
#: danmaku2ass.py:823
msgid "HEIGHT" msgid "HEIGHT"
msgstr "HEIGHT" msgstr "HEIGHT"
#: danmaku2ass.py:740 #: danmaku2ass.py:823
msgid "Reserve blank on the bottom of the stage" msgid "Reserve blank on the bottom of the stage"
msgstr "Reserve blank on the bottom of the stage" msgstr "Reserve blank on the bottom of the stage"
#: danmaku2ass.py:741 #: danmaku2ass.py:824
msgid "Reduce the amount of comments if stage is full" msgid "Reduce the amount of comments if stage is full"
msgstr "Reduce the amount of comments if stage is full" msgstr "Reduce the amount of comments if stage is full"
#: danmaku2ass.py:742 #: danmaku2ass.py:825
msgid "FILE" msgid "FILE"
msgstr "FILE" msgstr "FILE"
#: danmaku2ass.py:742 #: danmaku2ass.py:825
msgid "Comment file to be processed" msgid "Comment file to be processed"
msgstr "Comment file to be processed" msgstr "Comment file to be processed"
#: danmaku2ass.py:749 #: danmaku2ass.py:832
#, python-format #, python-format
msgid "Invalid stage size: %r" msgid "Invalid stage size: %r"
msgstr "Invalid stage size: %r" msgstr "Invalid stage size: %r"

Binary file not shown.

View File

@ -2,105 +2,110 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Danmaku2ASS\n" "Project-Id-Version: Danmaku2ASS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-03 16:50+0800\n" "POT-Creation-Date: 2014-12-21 00:47+0800\n"
"Last-Translator: Star Brilliant <m13253@hotmail.com>\n" "Last-Translator: Star Brilliant <m13253@hotmail.com>\n"
"Language: ja\n" "Language: ja\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: danmaku2ass.py:139 danmaku2ass.py:178 danmaku2ass.py:208 #: danmaku2ass.py:143 danmaku2ass.py:182 danmaku2ass.py:212
#, python-format #, python-format
msgid "Invalid comment: %s" msgid "Invalid comment: %s"
msgstr "無効なコメント:%s" msgstr "無効なコメント:%s"
#: danmaku2ass.py:158 danmaku2ass.py:192 danmaku2ass.py:235 danmaku2ass.py:317 #: danmaku2ass.py:162 danmaku2ass.py:196 danmaku2ass.py:239 danmaku2ass.py:323
#: danmaku2ass.py:319 danmaku2ass.py:437 danmaku2ass.py:480 danmaku2ass.py:538 #: danmaku2ass.py:325 danmaku2ass.py:439 danmaku2ass.py:483 danmaku2ass.py:585
#, python-format #, python-format
msgid "Invalid comment: %r" msgid "Invalid comment: %r"
msgstr "無効なコメント:%r" msgstr "無効なコメント:%r"
#: danmaku2ass.py:688 danmaku2ass.py:736 #: danmaku2ass.py:769 danmaku2ass.py:818
msgid "(FONT) sans-serif" msgid "(FONT) sans-serif"
msgstr "(FONT) MS PGothic" msgstr "(FONT) MS PGothic"
#: danmaku2ass.py:717 #: danmaku2ass.py:798
#, python-format #, python-format
msgid "Unknown comment file format: %s" msgid "Unknown comment file format: %s"
msgstr "未知のコメントファイル形式:%s" msgstr "未知のコメントファイル形式:%s"
#: danmaku2ass.py:734 #: danmaku2ass.py:816
msgid "OUTPUT" msgid "OUTPUT"
msgstr "出力" msgstr "出力"
#: danmaku2ass.py:734 #: danmaku2ass.py:816
msgid "Output file" msgid "Output file"
msgstr "出力ファイル" msgstr "出力ファイル"
#: danmaku2ass.py:735 #: danmaku2ass.py:817
msgid "WIDTHxHEIGHT"
msgstr "幅x高"
#: danmaku2ass.py:735
msgid "Stage size in pixels" msgid "Stage size in pixels"
msgstr "ピクセル単位でステージのサイズ" msgstr "ピクセル単位でステージのサイズ"
#: danmaku2ass.py:736 #: danmaku2ass.py:817
msgid "WIDTHxHEIGHT"
msgstr "幅x高"
#: danmaku2ass.py:818
msgid "FONT" msgid "FONT"
msgstr "フォント" msgstr "フォント"
#: danmaku2ass.py:736 #: danmaku2ass.py:818
#, python-format #, python-format
msgid "Specify font face [default: %s]" msgid "Specify font face [default: %s]"
msgstr "フォントを指定する [デフォルト: %s]" msgstr "フォントを指定する [デフォルト: %s]"
#: danmaku2ass.py:737 #: danmaku2ass.py:819
msgid "SIZE"
msgstr "サイズ"
#: danmaku2ass.py:737
#, python-format #, python-format
msgid "Default font size [default: %s]" msgid "Default font size [default: %s]"
msgstr "デフォルトのフォントサイズ [デフォルト: %s]" msgstr "デフォルトのフォントサイズ [デフォルト: %s]"
#: danmaku2ass.py:738 #: danmaku2ass.py:819
msgid "SIZE"
msgstr "サイズ"
#: danmaku2ass.py:820
msgid "ALPHA" msgid "ALPHA"
msgstr "アルファ" msgstr "アルファ"
#: danmaku2ass.py:738 #: danmaku2ass.py:820
msgid "Text opacity" msgid "Text opacity"
msgstr "テキストの不透明度" msgstr "テキストの不透明度"
#: danmaku2ass.py:739 #: danmaku2ass.py:821
#, python-format
msgid "Duration of scrolling comment display [default: %s]"
msgstr "運動コメント表示の時間 [デフォルト: %s]"
#: danmaku2ass.py:821 danmaku2ass.py:822
msgid "SECONDS" msgid "SECONDS"
msgstr "秒数" msgstr "秒数"
#: danmaku2ass.py:739 #: danmaku2ass.py:822
#, python-format #, python-format
msgid "Duration of comment display [default: %s]" msgid "Duration of still comment display [default: %s]"
msgstr "コメント表示の時間 [デフォルト: %s]" msgstr "静止コメント表示の時間 [デフォルト: %s]"
#: danmaku2ass.py:740 #: danmaku2ass.py:823
msgid "HEIGHT" msgid "HEIGHT"
msgstr "高度" msgstr "高度"
#: danmaku2ass.py:740 #: danmaku2ass.py:823
msgid "Reserve blank on the bottom of the stage" msgid "Reserve blank on the bottom of the stage"
msgstr "ステージの下にブランクを予備する" msgstr "ステージの下にブランクを予備する"
#: danmaku2ass.py:741 #: danmaku2ass.py:824
msgid "Reduce the amount of comments if stage is full" msgid "Reduce the amount of comments if stage is full"
msgstr "ステージがいっぱいになったのときにコメントの量を減らす" msgstr "ステージがいっぱいになったのときにコメントの量を減らす"
#: danmaku2ass.py:742 #: danmaku2ass.py:825
msgid "FILE"
msgstr "ファイル"
#: danmaku2ass.py:742
msgid "Comment file to be processed" msgid "Comment file to be processed"
msgstr "ファイルが処理されるコメント" msgstr "ファイルが処理されるコメント"
#: danmaku2ass.py:749 #: danmaku2ass.py:825
msgid "FILE"
msgstr "ファイル"
#: danmaku2ass.py:832
#, python-format #, python-format
msgid "Invalid stage size: %r" msgid "Invalid stage size: %r"
msgstr "無効なステージサイズ:%r" msgstr "無効なステージサイズ:%r"

View File

@ -2,105 +2,110 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Danmaku2ASS\n" "Project-Id-Version: Danmaku2ASS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-03 16:50+0800\n" "POT-Creation-Date: 2014-12-21 00:47+0800\n"
"Last-Translator: Star Brilliant <m13253@hotmail.com>\n" "Last-Translator: Star Brilliant <m13253@hotmail.com>\n"
"Language: zh_CN\n" "Language: zh_CN\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: danmaku2ass.py:139 danmaku2ass.py:178 danmaku2ass.py:208 #: danmaku2ass.py:143 danmaku2ass.py:182 danmaku2ass.py:212
#, python-format #, python-format
msgid "Invalid comment: %s" msgid "Invalid comment: %s"
msgstr "无效弹幕:%s" msgstr "无效弹幕:%s"
#: danmaku2ass.py:158 danmaku2ass.py:192 danmaku2ass.py:235 danmaku2ass.py:317 #: danmaku2ass.py:162 danmaku2ass.py:196 danmaku2ass.py:239 danmaku2ass.py:323
#: danmaku2ass.py:319 danmaku2ass.py:437 danmaku2ass.py:480 danmaku2ass.py:538 #: danmaku2ass.py:325 danmaku2ass.py:439 danmaku2ass.py:483 danmaku2ass.py:585
#, python-format #, python-format
msgid "Invalid comment: %r" msgid "Invalid comment: %r"
msgstr "无效弹幕:%r" msgstr "无效弹幕:%r"
#: danmaku2ass.py:688 danmaku2ass.py:736 #: danmaku2ass.py:769 danmaku2ass.py:818
msgid "(FONT) sans-serif" msgid "(FONT) sans-serif"
msgstr "(FONT) SimHei" msgstr "(FONT) SimHei"
#: danmaku2ass.py:717 #: danmaku2ass.py:798
#, python-format #, python-format
msgid "Unknown comment file format: %s" msgid "Unknown comment file format: %s"
msgstr "未知的弹幕文件格式:%s" msgstr "未知的弹幕文件格式:%s"
#: danmaku2ass.py:734 #: danmaku2ass.py:816
msgid "OUTPUT" msgid "OUTPUT"
msgstr "输出" msgstr "输出"
#: danmaku2ass.py:734 #: danmaku2ass.py:816
msgid "Output file" msgid "Output file"
msgstr "输出文件" msgstr "输出文件"
#: danmaku2ass.py:735 #: danmaku2ass.py:817
msgid "WIDTHxHEIGHT"
msgstr "宽x高"
#: danmaku2ass.py:735
msgid "Stage size in pixels" msgid "Stage size in pixels"
msgstr "舞台尺寸的像素数目" msgstr "舞台尺寸的像素数目"
#: danmaku2ass.py:736 #: danmaku2ass.py:817
msgid "WIDTHxHEIGHT"
msgstr "宽x高"
#: danmaku2ass.py:818
msgid "FONT" msgid "FONT"
msgstr "字体" msgstr "字体"
#: danmaku2ass.py:736 #: danmaku2ass.py:818
#, python-format #, python-format
msgid "Specify font face [default: %s]" msgid "Specify font face [default: %s]"
msgstr "指定字体名称 [默认: %s]" msgstr "指定字体名称 [默认: %s]"
#: danmaku2ass.py:737 #: danmaku2ass.py:819
msgid "SIZE"
msgstr "尺寸"
#: danmaku2ass.py:737
#, python-format #, python-format
msgid "Default font size [default: %s]" msgid "Default font size [default: %s]"
msgstr "默认字号 [默认: %s]" msgstr "默认字号 [默认: %s]"
#: danmaku2ass.py:738 #: danmaku2ass.py:819
msgid "SIZE"
msgstr "尺寸"
#: danmaku2ass.py:820
msgid "ALPHA" msgid "ALPHA"
msgstr "ALPHA" msgstr "ALPHA"
#: danmaku2ass.py:738 #: danmaku2ass.py:820
msgid "Text opacity" msgid "Text opacity"
msgstr "文字不透明度" msgstr "文字不透明度"
#: danmaku2ass.py:739 #: danmaku2ass.py:821
#, python-format
msgid "Duration of scrolling comment display [default: %s]"
msgstr "滚动弹幕显示时长 [默认: %s]"
#: danmaku2ass.py:821 danmaku2ass.py:822
msgid "SECONDS" msgid "SECONDS"
msgstr "秒数" msgstr "秒数"
#: danmaku2ass.py:739 #: danmaku2ass.py:822
#, python-format #, python-format
msgid "Duration of comment display [default: %s]" msgid "Duration of still comment display [default: %s]"
msgstr "弹幕显示时长 [默认: %s]" msgstr "静止弹幕显示时长 [默认: %s]"
#: danmaku2ass.py:740 #: danmaku2ass.py:823
msgid "HEIGHT" msgid "HEIGHT"
msgstr "高度" msgstr "高度"
#: danmaku2ass.py:740 #: danmaku2ass.py:823
msgid "Reserve blank on the bottom of the stage" msgid "Reserve blank on the bottom of the stage"
msgstr "在舞台底部预留空位" msgstr "在舞台底部预留空位"
#: danmaku2ass.py:741 #: danmaku2ass.py:824
msgid "Reduce the amount of comments if stage is full" msgid "Reduce the amount of comments if stage is full"
msgstr "在舞台满时减少弹幕数量" msgstr "在舞台满时减少弹幕数量"
#: danmaku2ass.py:742 #: danmaku2ass.py:825
msgid "FILE"
msgstr "文件"
#: danmaku2ass.py:742
msgid "Comment file to be processed" msgid "Comment file to be processed"
msgstr "将要处理的弹幕文件" msgstr "将要处理的弹幕文件"
#: danmaku2ass.py:749 #: danmaku2ass.py:825
msgid "FILE"
msgstr "文件"
#: danmaku2ass.py:832
#, python-format #, python-format
msgid "Invalid stage size: %r" msgid "Invalid stage size: %r"
msgstr "无效舞台尺寸:%r" msgstr "无效舞台尺寸:%r"

View File

@ -2,105 +2,110 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Danmaku2ASS\n" "Project-Id-Version: Danmaku2ASS\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-02-03 16:50+0800\n" "POT-Creation-Date: 2014-12-21 00:47+0800\n"
"Last-Translator: Star Brilliant <m13253@hotmail.com>\n" "Last-Translator: Star Brilliant <m13253@hotmail.com>\n"
"Language: zh_TW\n" "Language: zh_TW\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: danmaku2ass.py:139 danmaku2ass.py:178 danmaku2ass.py:208 #: danmaku2ass.py:143 danmaku2ass.py:182 danmaku2ass.py:212
#, python-format #, python-format
msgid "Invalid comment: %s" msgid "Invalid comment: %s"
msgstr "無效彈幕:%s" msgstr "無效彈幕:%s"
#: danmaku2ass.py:158 danmaku2ass.py:192 danmaku2ass.py:235 danmaku2ass.py:317 #: danmaku2ass.py:162 danmaku2ass.py:196 danmaku2ass.py:239 danmaku2ass.py:323
#: danmaku2ass.py:319 danmaku2ass.py:437 danmaku2ass.py:480 danmaku2ass.py:538 #: danmaku2ass.py:325 danmaku2ass.py:439 danmaku2ass.py:483 danmaku2ass.py:585
#, python-format #, python-format
msgid "Invalid comment: %r" msgid "Invalid comment: %r"
msgstr "無效彈幕:%r" msgstr "無效彈幕:%r"
#: danmaku2ass.py:688 danmaku2ass.py:736 #: danmaku2ass.py:769 danmaku2ass.py:818
msgid "(FONT) sans-serif" msgid "(FONT) sans-serif"
msgstr "(FONT) Microsoft JhengHei" msgstr "(FONT) Microsoft JhengHei"
#: danmaku2ass.py:717 #: danmaku2ass.py:798
#, python-format #, python-format
msgid "Unknown comment file format: %s" msgid "Unknown comment file format: %s"
msgstr "未知的彈幕檔案格式:%s" msgstr "未知的彈幕檔案格式:%s"
#: danmaku2ass.py:734 #: danmaku2ass.py:816
msgid "OUTPUT" msgid "OUTPUT"
msgstr "輸出" msgstr "輸出"
#: danmaku2ass.py:734 #: danmaku2ass.py:816
msgid "Output file" msgid "Output file"
msgstr "輸出檔案" msgstr "輸出檔案"
#: danmaku2ass.py:735 #: danmaku2ass.py:817
msgid "WIDTHxHEIGHT"
msgstr "寬x高"
#: danmaku2ass.py:735
msgid "Stage size in pixels" msgid "Stage size in pixels"
msgstr "舞臺尺寸的畫素數目" msgstr "舞臺尺寸的畫素數目"
#: danmaku2ass.py:736 #: danmaku2ass.py:817
msgid "WIDTHxHEIGHT"
msgstr "寬x高"
#: danmaku2ass.py:818
msgid "FONT" msgid "FONT"
msgstr "字型" msgstr "字型"
#: danmaku2ass.py:736 #: danmaku2ass.py:818
#, python-format #, python-format
msgid "Specify font face [default: %s]" msgid "Specify font face [default: %s]"
msgstr "指定字型名稱 [默認: %s]" msgstr "指定字型名稱 [默認: %s]"
#: danmaku2ass.py:737 #: danmaku2ass.py:819
msgid "SIZE"
msgstr "尺寸"
#: danmaku2ass.py:737
#, python-format #, python-format
msgid "Default font size [default: %s]" msgid "Default font size [default: %s]"
msgstr "默認字型大小 [默認: %s]" msgstr "默認字型大小 [默認: %s]"
#: danmaku2ass.py:738 #: danmaku2ass.py:819
msgid "SIZE"
msgstr "尺寸"
#: danmaku2ass.py:820
msgid "ALPHA" msgid "ALPHA"
msgstr "ALPHA" msgstr "ALPHA"
#: danmaku2ass.py:738 #: danmaku2ass.py:820
msgid "Text opacity" msgid "Text opacity"
msgstr "文字不透明度" msgstr "文字不透明度"
#: danmaku2ass.py:739 #: danmaku2ass.py:821
#, python-format
msgid "Duration of scrolling comment display [default: %s]"
msgstr "滾動彈幕顯示時長 [默認: %s]"
#: danmaku2ass.py:821 danmaku2ass.py:822
msgid "SECONDS" msgid "SECONDS"
msgstr "秒數" msgstr "秒數"
#: danmaku2ass.py:739 #: danmaku2ass.py:822
#, python-format #, python-format
msgid "Duration of comment display [default: %s]" msgid "Duration of still comment display [default: %s]"
msgstr "彈幕顯示時長 [默認: %s]" msgstr "靜止彈幕顯示時長 [默認: %s]"
#: danmaku2ass.py:740 #: danmaku2ass.py:823
msgid "HEIGHT" msgid "HEIGHT"
msgstr "高度" msgstr "高度"
#: danmaku2ass.py:740 #: danmaku2ass.py:823
msgid "Reserve blank on the bottom of the stage" msgid "Reserve blank on the bottom of the stage"
msgstr "在舞臺底部預留空位" msgstr "在舞臺底部預留空位"
#: danmaku2ass.py:741 #: danmaku2ass.py:824
msgid "Reduce the amount of comments if stage is full" msgid "Reduce the amount of comments if stage is full"
msgstr "在舞臺滿時減少彈幕數量" msgstr "在舞臺滿時減少彈幕數量"
#: danmaku2ass.py:742 #: danmaku2ass.py:825
msgid "FILE"
msgstr "檔案"
#: danmaku2ass.py:742
msgid "Comment file to be processed" msgid "Comment file to be processed"
msgstr "將要處理的彈幕檔案" msgstr "將要處理的彈幕檔案"
#: danmaku2ass.py:749 #: danmaku2ass.py:825
msgid "FILE"
msgstr "檔案"
#: danmaku2ass.py:832
#, python-format #, python-format
msgid "Invalid stage size: %r" msgid "Invalid stage size: %r"
msgstr "無效舞臺尺寸:%r" msgstr "無效舞臺尺寸:%r"