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
./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.
@ -42,7 +42,7 @@ Command line reference
```
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 ...]
positional arguments:
@ -55,13 +55,15 @@ optional arguments:
-s WIDTHxHEIGHT, --size WIDTHxHEIGHT
Stage size in pixels
-fn FONT, --font FONT
Specify font face [default: sans-serif]
Specify font face [default: Helvetica]
-fs SIZE, --fontsize SIZE
Default font size [default: 25]
-a ALPHA, --alpha ALPHA
Text opacity
-l SECONDS, --lifetime SECONDS
Duration of comment display [default: 5]
-dm SECONDS, --duration-marquee SECONDS
Duration of scrolling comment display [default: 5]
-ds SECONDS, --duration-still SECONDS
Duration of still comment display [default: 5]
-p HEIGHT, --protect HEIGHT
Reserve blank on the bottom of the stage
-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)
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)
WriteASSHead(f, width, height, fontface, fontsize, alpha, styleid)
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
rowmax = height-bottomReserved-i[7]
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]:
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
else:
row += freerows or 1
@ -574,7 +574,7 @@ def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsi
if not reduced:
row = FindAlternativeRow(rows, i, height, bottomReserved)
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':
WriteCommentBilibiliPositioned(f, i, width, height, styleid)
elif i[4] == 'acfunpos':
@ -587,7 +587,7 @@ def ProcessComments(comments, f, width, height, bottomReserved, fontface, fontsi
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
rowmax = height-bottomReserved
targetRow = None
@ -595,20 +595,20 @@ def TestFreeRows(rows, c, row, width, height, bottomReserved, lifetime):
while row < rowmax and res < c[7]:
if 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
row += 1
res += 1
else:
try:
thresholdTime = c[0]-lifetime*(1-width/(c[8]+width))
thresholdTime = c[0]-duration_marquee*(1-width/(c[8]+width))
except ZeroDivisionError:
thresholdTime = c[0]-lifetime
thresholdTime = c[0]-duration_marquee
while row < rowmax and res < c[7]:
if targetRow != rows[c[4]][row]:
targetRow = rows[c[4]][row]
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
except ZeroDivisionError:
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])
styles = []
if c[4] == 1:
styles.append('\\an8\\pos(%(halfwidth)d, %(row)d)' % {'halfwidth': width/2, 'row': row})
duration = duration_still
elif c[4] == 2:
styles.append('\\an2\\pos(%(halfwidth)d, %(row)d)' % {'halfwidth': width/2, 'row': ConvertType2(row, height, bottomReserved)})
duration = duration_still
elif c[4] == 3:
styles.append('\\move(%(neglen)d, %(row)d, %(width)d, %(row)d)' % {'width': width, 'row': row, 'neglen': -math.ceil(c[8])})
duration = duration_marquee
else:
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):
styles.append('\\fs%.0f' % c[6])
if c[5] != 0xffffff:
styles.append('\\c&H%s&' % ConvertColor(c[5]))
if c[5] == 0x000000:
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):
@ -762,7 +766,7 @@ def export(func):
@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
comments = ReadComments(input_files, font_size)
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')
else:
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:
if output_file and fo != output_file:
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('-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('-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('-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'))
@ -825,7 +830,7 @@ def main():
height = int(height)
except ValueError:
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__':

Binary file not shown.

View File

@ -2,105 +2,110 @@ msgid ""
msgstr ""
"Project-Id-Version: Danmaku2ASS\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"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\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
msgid "Invalid comment: %s"
msgstr "Invalid comment: %s"
#: danmaku2ass.py:158 danmaku2ass.py:192 danmaku2ass.py:235 danmaku2ass.py:317
#: danmaku2ass.py:319 danmaku2ass.py:437 danmaku2ass.py:480 danmaku2ass.py:538
#: danmaku2ass.py:162 danmaku2ass.py:196 danmaku2ass.py:239 danmaku2ass.py:323
#: danmaku2ass.py:325 danmaku2ass.py:439 danmaku2ass.py:483 danmaku2ass.py:585
#, python-format
msgid "Invalid comment: %r"
msgstr "Invalid comment: %r"
#: danmaku2ass.py:688 danmaku2ass.py:736
#: danmaku2ass.py:769 danmaku2ass.py:818
msgid "(FONT) sans-serif"
msgstr "(FONT) Helvetica"
#: danmaku2ass.py:717
#: danmaku2ass.py:798
#, python-format
msgid "Unknown comment file format: %s"
msgstr "Unknown comment file format: %s"
#: danmaku2ass.py:734
#: danmaku2ass.py:816
msgid "OUTPUT"
msgstr "OUTPUT"
#: danmaku2ass.py:734
#: danmaku2ass.py:816
msgid "Output file"
msgstr "Output file"
#: danmaku2ass.py:735
#: danmaku2ass.py:817
msgid "WIDTHxHEIGHT"
msgstr "WIDTHxHEIGHT"
#: danmaku2ass.py:735
#: danmaku2ass.py:817
msgid "Stage size in pixels"
msgstr "Stage size in pixels"
#: danmaku2ass.py:736
#: danmaku2ass.py:818
msgid "FONT"
msgstr "FONT"
#: danmaku2ass.py:736
#: danmaku2ass.py:818
#, python-format
msgid "Specify font face [default: %s]"
msgstr "Specify font face [default: %s]"
#: danmaku2ass.py:737
#: danmaku2ass.py:819
msgid "SIZE"
msgstr "SIZE"
#: danmaku2ass.py:737
#: danmaku2ass.py:819
#, python-format
msgid "Default font size [default: %s]"
msgstr "Default font size [default: %s]"
#: danmaku2ass.py:738
#: danmaku2ass.py:820
msgid "ALPHA"
msgstr "ALPHA"
#: danmaku2ass.py:738
#: danmaku2ass.py:820
msgid "Text opacity"
msgstr "Text opacity"
#: danmaku2ass.py:739
#: danmaku2ass.py:821 danmaku2ass.py:822
msgid "SECONDS"
msgstr "SECONDS"
#: danmaku2ass.py:739
#: danmaku2ass.py:821
#, python-format
msgid "Duration of comment display [default: %s]"
msgstr "Duration of comment display [default: %s]"
msgid "Duration of scrolling 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"
msgstr "HEIGHT"
#: danmaku2ass.py:740
#: danmaku2ass.py:823
msgid "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"
msgstr "Reduce the amount of comments if stage is full"
#: danmaku2ass.py:742
#: danmaku2ass.py:825
msgid "FILE"
msgstr "FILE"
#: danmaku2ass.py:742
#: danmaku2ass.py:825
msgid "Comment file to be processed"
msgstr "Comment file to be processed"
#: danmaku2ass.py:749
#: danmaku2ass.py:832
#, python-format
msgid "Invalid stage size: %r"
msgstr "Invalid stage size: %r"

Binary file not shown.

View File

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

View File

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

View File

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