From 9fc40a0db731fe699d3a30c5bc3055c87ed7c135 Mon Sep 17 00:00:00 2001 From: Star Brilliant Date: Sun, 21 Dec 2014 01:23:52 +0800 Subject: [PATCH] Split --lifetime into --duration-marquee and --duration-still --- README.md | 12 ++-- danmaku2ass.py | 35 ++++++----- locale/en/LC_MESSAGES/danmaku2ass.mo | Bin 1649 -> 1805 bytes locale/en/LC_MESSAGES/danmaku2ass.po | 57 ++++++++++-------- locale/ja/LC_MESSAGES/danmaku2ass.mo | Bin 1872 -> 2032 bytes locale/ja/LC_MESSAGES/danmaku2ass.po | 75 +++++++++++++----------- locale/zh_CN/LC_MESSAGES/danmaku2ass.mo | Bin 1618 -> 1760 bytes locale/zh_CN/LC_MESSAGES/danmaku2ass.po | 75 +++++++++++++----------- locale/zh_TW/LC_MESSAGES/danmaku2ass.mo | Bin 1636 -> 1778 bytes locale/zh_TW/LC_MESSAGES/danmaku2ass.po | 75 +++++++++++++----------- 10 files changed, 178 insertions(+), 151 deletions(-) diff --git a/README.md b/README.md index 6011577..9248b09 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/danmaku2ass.py b/danmaku2ass.py index 6343361..87739e5 100755 --- a/danmaku2ass.py +++ b/danmaku2ass.py @@ -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__': diff --git a/locale/en/LC_MESSAGES/danmaku2ass.mo b/locale/en/LC_MESSAGES/danmaku2ass.mo index fe0f8332d38ce466eb5174dc14615baf2204f003..f6a28d998af1ed4f7c950e7ae44f8974e343bc93 100644 GIT binary patch delta 635 zcmaLUy-Pw-7{~E*)mxdCruK%FMHDUOOE%;dO$`w=^bbTYf)r?D;MUdq3=)5;M9TVe9pP&-us;AoS*R7VC^FoxG=OaVuE-l=7=kYj+XTq zGlV&GaSip}I;LQHfryZ>SA6 zP!%+-ZKMJdVNvVzbSfZ?DqsawzyYd&bJTw?Q3YIMg8b%@fhu^h3k^HhSGonQDG?`U zh6(*diL{wfLQM(!2wfHX>QoG!6O!FcSFOfD8K=klbmEgih7lr0bhmyc1D@;K4OVw5 vN9A(qaNkS1DKF}V-Rg0vT&^eGZO41^Z-#RDbUrto%@zxV`gp+a{QJcpyth7b delta 557 zcmXZZzb^w}9LMqJu7{phRsBkk6q62Z4nfj^LANdzD+{~CXt+rtqC+bNgUxEuRU-D9 z7)<;D76u!M_vh*NNxt{G=f^$IC(pGC-}&^t6kR#mG&M)PQf2BQ;6clV&W&M=12~IX zw}4u=i51+#2+zzG4$|-7I9{7~I7R=dKcBicUUCe4U=2TU31>3S4dFIw<0k6B9h|@; z%;TwzcdUPpzl=X(5g+(i!JkpVUr_seVa25^VwQJTH@8s98>r+>b03xb*yhhs!P}_d zH>lt}RPZ0vzJI6#LpD|LMO5$&EOWkV*uVkm*1@+CQz7&VO4ipVI)IDv2PlMopTemP zQ+_HS)E^AudgNDlPD7~x*Plh(|#)^ diff --git a/locale/en/LC_MESSAGES/danmaku2ass.po b/locale/en/LC_MESSAGES/danmaku2ass.po index ed20d8d..873891a 100644 --- a/locale/en/LC_MESSAGES/danmaku2ass.po +++ b/locale/en/LC_MESSAGES/danmaku2ass.po @@ -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 \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" diff --git a/locale/ja/LC_MESSAGES/danmaku2ass.mo b/locale/ja/LC_MESSAGES/danmaku2ass.mo index 9aa99a32bc840b761784dc6b3844659288c83011..f7718616846957a0db1ef02e483680999822480d 100644 GIT binary patch delta 625 zcmZ9}O-lkn7{Kw_&9zL+QnU9gB#25|tq=r>$V-O~^#Qs>FM<_i$3VJt@f3?tPy~Tp z!b{%jOGM`oI`m?fI(Vy~{}X$N9_E?f%rNXcGke$i;muclj-n#E$UgFc941dSI>OYI zYR4EFIES)t9z(c>lX!>|c!LgnvwcS=^E&$R)7IOdR8XnB3Nw%mNp#~ZMsWd0a3347 zg!17s%E8wdzx` zIn_bRE67X9b9RyvvcHLxn^M1OBPHa8{)hZ(2_8ymPU}(g_e)(~QtJO3%}iP>Ltk~} zR(7|u+053umC-}ivhFc*dzoyulF>_=I~I?`V}qudoJv%>9b=lac2IaK6s@!och=5M Mp34`NwBgZz06BI)d;kCd delta 561 zcmXZZzb^zq6u|MfYj53J?l_#}R)T2!TG>6JkkC*_H2eW{dX+}8g-8^L+~p!FjgscJ zm53f8Q3wftfQC*X;rsUHC2u}EvokmQ-hCAx3(0%QX$Ubu4wBF05P4`Z5P4gq2R+PT zfVyu4b>AY6<0d+IU_3&Xc@2B<%y@-m=C`f)iM;UOv+#k__=#g!X%lJ3CDb2YMZIth z`*0gOao?=h%)E)etlyx1_%(-h-vdtI8!n(rHL)Zj%RK0Y9pfJAm!Dt-PmN6+Wqxno ze`AUH53Zxnp$Ion&mS{**uWUiF~lbf@DHcBUjoY1N>>=P>#S$dWz_a*C3=~LRR*ep_pUjh5Sdr8yw8%!jS-MG&E@k1>LwhT|vo9<^s)o_ba6C6Z8>PF> Oq*cGnRnxNjYW)L|)i0+2 diff --git a/locale/ja/LC_MESSAGES/danmaku2ass.po b/locale/ja/LC_MESSAGES/danmaku2ass.po index af48765..f4e84e2 100644 --- a/locale/ja/LC_MESSAGES/danmaku2ass.po +++ b/locale/ja/LC_MESSAGES/danmaku2ass.po @@ -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 \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" diff --git a/locale/zh_CN/LC_MESSAGES/danmaku2ass.mo b/locale/zh_CN/LC_MESSAGES/danmaku2ass.mo index b2053f08dbc581da9f60215b9414c68ca5d4cfeb..14046cd1eae3f8f15c82c1dd4d6a3263aad5bc08 100644 GIT binary patch delta 624 zcmZ9}JxD@P6u|NOUOw}sVyS(IhDHc2K6 zc4GzQ!Bv!lZ!nAv^x?Z+@924$%|EP^SO#F^zuGyv4 z-JN2wu)X0F%($~``mEAkp;)XH%!=X7WXH3aL^_?DnsFkow!3wA_I7mb*jB>*adFzJ KUe;_YZ~OxJN;`5F@6Yx5Cf|GA^W*OMKHtycb0K*zd2K_?lS||aStTzW9z@PHW*P(Zv4YxH zL+xu|g!|~>h4l(Y8Mkl-Z>$|GGkzSdC+3xxJQE+df?v3dizCL2;STD@d#D4OIEzPE zz;ip_vg14aWBvh)l8;sR6IO753;2yylW;RuRcU06ty`#@H>^!mmk#Xu395iItl>54 zfUaHdTL-AZ-|YG?mKc{gG~|2}@uHjVqPnhP6slgK_Nfqkq|oiPpGIY!QTJ4s+Nu~Q z=g1tX0w+nu#E|Ss4Q7fA=u#FzT6Yh7efQSM$7}U?JzU+~-iXsv?!`{6gIseLH BEldCa diff --git a/locale/zh_CN/LC_MESSAGES/danmaku2ass.po b/locale/zh_CN/LC_MESSAGES/danmaku2ass.po index 1d0a7ad..e043d58 100644 --- a/locale/zh_CN/LC_MESSAGES/danmaku2ass.po +++ b/locale/zh_CN/LC_MESSAGES/danmaku2ass.po @@ -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 \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" diff --git a/locale/zh_TW/LC_MESSAGES/danmaku2ass.mo b/locale/zh_TW/LC_MESSAGES/danmaku2ass.mo index af2fb2e50a8eb158623a77e7f43d7a6792c47237..0355e5b8152be7a1cf4f5f2c0f241f547813a6b7 100644 GIT binary patch delta 625 zcmZ9}ze@sP7{KxOF3&QRO6`YTp%Ow%rWOP?Ns~j+KTu0l92^DN6op$$@=?s-4&`|@({bI-kmzQUDu#8*|s1UW@Mk!iAKFc4W& zsS(Vfg)1oMN|?ZHT)-2Y#~buvSNnl});)~kw|1ycsWGK0YKDm%C}0qan88(?#Ut#; zI?9V1C>LL03?DFrZ+gF{*D((Nu%E)XNcHjo%M3OaF~R+6ok^OFW9=nMK`rgQ_7SBM zZS5zHvo<*_=O-DYkQAmcgL2Ut@+enZM)`n4w7FlMF^S+cCb5O`#a)!YATOm=iq5G~ zQo10Wl6Fb~5^{cklme+s4U-bmq5mPjT7pI?!|y#C(dhuwAyUft8-pyuo@H(Y%A5Op zuIudXc#fIyHq4M!K5$&O>6mpRn9I-QbIEMBu(;HW`%J^%xxITmt$MbV^uM3iI*p5_ HZIz5)6tzGT delta 557 zcmXZYEl`5(diVW#e7GbyUpQJDTtyhRQ>hWe}eS2psPR|41OYd?`?;kZpEC&Dp diff --git a/locale/zh_TW/LC_MESSAGES/danmaku2ass.po b/locale/zh_TW/LC_MESSAGES/danmaku2ass.po index dcc23a1..47d0a89 100644 --- a/locale/zh_TW/LC_MESSAGES/danmaku2ass.po +++ b/locale/zh_TW/LC_MESSAGES/danmaku2ass.po @@ -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 \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"