From e5a34ee47ea7ab8e9537b7623b91e77284926ed4 Mon Sep 17 00:00:00 2001 From: SoulMelody Date: Mon, 22 Jan 2024 11:45:55 +0800 Subject: [PATCH] update translations --- libresvip/plugins/svip3/svip3-zh_CN.po | 13 +- libresvip/plugins/svp/svp-zh_CN.po | 28 +- libresvip/plugins/vpr/vpr-zh_CN.po | 18 +- libresvip/plugins/vsq/vsq-zh_CN.po | 39 +- libresvip/plugins/vsq/vsq_parser.py | 10 +- libresvip/plugins/vsqx/vsqx-zh_CN.po | 14 +- .../locales/zh_CN/LC_MESSAGES/libresvip.mo | Bin 50197 -> 51841 bytes pyproject.toml | 2 +- translations/libresvip-zh_CN.po | 350 +++++++++++------- translations/libresvip_python-zh_CN.po | 168 +++++---- 10 files changed, 396 insertions(+), 246 deletions(-) diff --git a/libresvip/plugins/svip3/svip3-zh_CN.po b/libresvip/plugins/svip3/svip3-zh_CN.po index 6b06c74a8..2ae221980 100644 --- a/libresvip/plugins/svip3/svip3-zh_CN.po +++ b/libresvip/plugins/svip3/svip3-zh_CN.po @@ -3,15 +3,20 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-06-15 01:09+0800\n" +"POT-Creation-Date: 2024-01-22 11:14+0800\n" "PO-Revision-Date: 2023-05-26 09:07+0000\n" "Last-Translator: admin \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 3.9.0\n" +"X-Generator: Translate Toolkit 3.12.1\n" +#: .svip3.name +msgid "Svip3" +msgstr "" + +#: .svip3.file_format #: .svip3.format_desc msgid "Netease Cloud Music XStudio project file" msgstr "网易云音乐·X Studio 工程文件" @@ -19,3 +24,7 @@ msgstr "网易云音乐·X Studio 工程文件" #: .svip3.description msgid "Conversion plugin for Netease Cloud Music XStudio project file" msgstr "网易云音乐·X Studio 工程转换插件" + +#: .svip3.messages[0] +msgid "Unsupported pinyin:" +msgstr "不支持的拼音:" diff --git a/libresvip/plugins/svp/svp-zh_CN.po b/libresvip/plugins/svp/svp-zh_CN.po index bca94b585..3a75e02d0 100644 --- a/libresvip/plugins/svp/svp-zh_CN.po +++ b/libresvip/plugins/svp/svp-zh_CN.po @@ -3,14 +3,14 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-09-22 16:19+0800\n" +"POT-Creation-Date: 2024-01-22 11:14+0800\n" "PO-Revision-Date: 2023-05-26 09:07+0000\n" "Last-Translator: admin \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 3.10.1\n" +"X-Generator: Translate Toolkit 3.12.1\n" #: .svp.name msgid "SynthV Studio" @@ -179,3 +179,27 @@ msgid "" msgstr "" "减小采样间隔可提高参数曲线的精准度,但可能造成渲染卡顿(例如 Synthesizer V " "Studio Pro + AI 声库)。请根据硬件配置与实际体验酌情设置此值。" + +#: .svp.dump[2].title +msgid "Override default language for the voicebank" +msgstr "指定声库的默认语种" + +#: .svp.dump[2].choices[0].text +msgid "Mandarin" +msgstr "普通话" + +#: .svp.dump[2].choices[1].text +msgid "Cantonese" +msgstr "粤语" + +#: .svp.dump[2].choices[2].text +msgid "Japanese" +msgstr "日语" + +#: .svp.dump[2].choices[3].text +msgid "English" +msgstr "英语" + +#: .svp.dump[2].choices[4].text +msgid "Spanish" +msgstr "西班牙语" diff --git a/libresvip/plugins/vpr/vpr-zh_CN.po b/libresvip/plugins/vpr/vpr-zh_CN.po index 7adabd501..c331e5312 100644 --- a/libresvip/plugins/vpr/vpr-zh_CN.po +++ b/libresvip/plugins/vpr/vpr-zh_CN.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 12:54+0800\n" +"POT-Creation-Date: 2024-01-22 11:14+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -25,6 +25,16 @@ msgstr "新版Vocaloid工程格式" msgid "Conversion plugin for New Vocaloid project file" msgstr "新版Vocaloid工程格式转换插件" +#: .vpr.load[0].title +msgid "Extract audio" +msgstr "解压音频文件" + +#: .vpr.load[0].description +msgid "" +"Extract audio from vocaloid project for later use if the path does not exist " +"(this option has the side effect of writing additional files)" +msgstr "若音频文件路径不存在,则从vocaloid工程文件中解压以供后续使用(此选项有写入额外文件的副作用)" + #: .vpr.dump[0].title msgid "Is AI Singer" msgstr "是否AI歌手" @@ -56,3 +66,9 @@ msgstr "默认歌手名" #: .vpr.dump[3].description msgid "Default singer name of voicebank" msgstr "默认声库对应的歌手名" + +#: .vpr.messages[0] +msgid "" +"Phonemes of all notes were set to \"la\". Please use \"Job\" -> \"Convert " +"Phonemes to Match Languages in the menu of VOCALOID to reset them." +msgstr "所有音符的音素都被设为了\"la\"。请使用VOCALOID菜单中的「任务」->「发音符号匹配」功能来重置音素。" diff --git a/libresvip/plugins/vsq/vsq-zh_CN.po b/libresvip/plugins/vsq/vsq-zh_CN.po index cc0ae3077..81c98914d 100644 --- a/libresvip/plugins/vsq/vsq-zh_CN.po +++ b/libresvip/plugins/vsq/vsq-zh_CN.po @@ -1,17 +1,16 @@ #. extracted from -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-08-04 09:38+0800\n" +"POT-Creation-Date: 2024-01-22 11:14+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 3.9.2\n" +"X-Generator: Translate Toolkit 3.12.1\n" #: .vsq.name msgid "Vsq" @@ -25,6 +24,28 @@ msgstr "Vocaloid 2 序列文件" msgid "Conversion plugin for Vocaloid 2 sequence file" msgstr "Vocaloid 2 序列文件转换插件" +#: .vsq.load[0].title +#: .vsq.dump[1].title +msgid "Lyric text encoding" +msgstr "歌词编码" + +#: .vsq.load[0].description +#: .vsq.dump[1].description +msgid "Unless the lyrics are garbled, this option should not be changed." +msgstr "除非歌词出现乱码,否则不应更改此设置。" + +#: .vsq.load[1].title +msgid "The way to handle breath notes" +msgstr "换气音符处理方式" + +#: .vsq.load[1].choices[0].text +msgid "Ignore all breath notes" +msgstr "忽略所有换气音符" + +#: .vsq.load[1].choices[1].text +msgid "Keep as normal notes" +msgstr "保留为普通音符" + #: .vsq.dump[0].title msgid "Ticks per beat" msgstr "每拍ticks数" @@ -38,10 +59,8 @@ msgstr "" "即 parts per quarter, 又名 ticks per quarter " "note,每四分音符的脉冲数。除非你知道这是什么,否则不应更改此设置。" -#: .vsq.dump[1].title -msgid "Lyric text encoding" -msgstr "歌词编码" - -#: .vsq.dump[1].description -msgid "Unless the lyrics are garbled, this option should not be changed." -msgstr "除非歌词出现乱码,否则不应更改此设置。" +#: .vsq.messages[0] +msgid "" +"Phonemes of all notes were set to \"la\". Please reset them to make it sound " +"correctly." +msgstr "所有音符的音素都被设为了\"la\"。请重置音素以使其正确发音。" diff --git a/libresvip/plugins/vsq/vsq_parser.py b/libresvip/plugins/vsq/vsq_parser.py index 00818d78e..f13fa703b 100644 --- a/libresvip/plugins/vsq/vsq_parser.py +++ b/libresvip/plugins/vsq/vsq_parser.py @@ -194,11 +194,11 @@ def parse_notes(self, vsq_track: configparser.ConfigParser, tick_prefix: int) -> lyric_value, phoneme_value = vsq_track.get( lyric_handle, "L0", fallback="," ).split(",")[:2] - if ( - self.options.breath == BreathOption.IGNORE - and BREATH_PATTERN.fullmatch(phoneme_value.strip('"')) is not None - ): - continue + if BREATH_PATTERN.fullmatch(phoneme_value.strip('"')) is not None: + if self.options.breath == BreathOption.IGNORE: + continue + else: + lyric_value = phoneme_value notes.append( Note( start_pos=tick, diff --git a/libresvip/plugins/vsqx/vsqx-zh_CN.po b/libresvip/plugins/vsqx/vsqx-zh_CN.po index 9cf2e052c..09d73b9f1 100644 --- a/libresvip/plugins/vsqx/vsqx-zh_CN.po +++ b/libresvip/plugins/vsqx/vsqx-zh_CN.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-23 12:54+0800\n" +"POT-Creation-Date: 2024-01-22 11:14+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -59,3 +59,15 @@ msgstr "默认歌手名" #: .vsqx.dump[4].description msgid "Default singer name of voicebank" msgstr "默认声库对应的歌手名" + +#: .vsqx.messages[0] +msgid "" +"Phonemes of all notes were set to \"la\". Please use \"Lyrics\" -> \"Convert " +"Phonemes\" in the menu of VOCALOID3 to reset them." +msgstr "所有音符的音素都被设为了\"la\"。请使用VOCALOID3菜单中的「歌词」->「音位变换」功能来重置音素。" + +#: .vsqx.messages[1] +msgid "" +"Phonemes of all notes were set to \"la\". Please use \"Lyrics\" -> \"Convert " +"Phonemes\" in the menu of VOCALOID4 to reset them." +msgstr "所有音符的音素都被设为了\"la\"。请使用VOCALOID4菜单中的「歌词」->「音位变换」功能来重置音素。" diff --git a/libresvip/res/locales/zh_CN/LC_MESSAGES/libresvip.mo b/libresvip/res/locales/zh_CN/LC_MESSAGES/libresvip.mo index ebf35644443947706efa72379bd158d7216ca648..67ca97adc34f49d8ef4b525a98aa2895ea48c231 100644 GIT binary patch delta 10963 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 Mv-O4V>>C*RKO-uf@Bjb+ delta 9314 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 J_Ip}~{}1?6ohASP diff --git a/pyproject.toml b/pyproject.toml index 3d3dff5da..2952495e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,7 +57,7 @@ dependencies = [ "zstd<2.0.0,>=1.5.5.1; platform_python_implementation == \"PyPy\"", ] name = "libresvip" -version = "1.0.0" +version = "1.0.1" description = "Universal Converter for Singing Voice Projects" readme = "README.md" diff --git a/translations/libresvip-zh_CN.po b/translations/libresvip-zh_CN.po index f61e3d46d..0e2c7db1b 100644 --- a/translations/libresvip-zh_CN.po +++ b/translations/libresvip-zh_CN.po @@ -351,94 +351,94 @@ msgstr "在命令行模式中不支持设置 {} 选项" msgid "Set {} to {}" msgstr "已将 {} 设置为 {}" -#: ../libresvip/cli/commands/plugin.py:24 +#: ../libresvip/cli/commands/plugin.py:26 msgid "The plugin is successfully disabled." msgstr "插件已成功禁用。" -#: ../libresvip/cli/commands/plugin.py:26 +#: ../libresvip/cli/commands/plugin.py:28 msgid "Failed to disable the plugin!" msgstr "插件禁用失败!" -#: ../libresvip/cli/commands/plugin.py:33 +#: ../libresvip/cli/commands/plugin.py:35 msgid "The plugin is successfully enabled." msgstr "插件已成功启用。" -#: ../libresvip/cli/commands/plugin.py:35 +#: ../libresvip/cli/commands/plugin.py:37 msgid "Failed to enable the plugin!" msgstr "插件启用失败!" -#: ../libresvip/cli/commands/plugin.py:37 +#: ../libresvip/cli/commands/plugin.py:39 msgid "Unable to find the plugin." msgstr "无法找到该插件。" -#: ../libresvip/cli/commands/plugin.py:50 +#: ../libresvip/cli/commands/plugin.py:52 msgid "Cannot find plugin " msgstr "未找到插件 " -#: ../libresvip/cli/commands/plugin.py:56 +#: ../libresvip/cli/commands/plugin.py:58 msgid "No plugins are currently installed." msgstr "目前尚未安装任何插件。" -#: ../libresvip/cli/commands/plugin.py:59 +#: ../libresvip/cli/commands/plugin.py:61 msgid "No." msgstr "序号" -#: ../libresvip/cli/commands/plugin.py:60 +#: ../libresvip/cli/commands/plugin.py:62 msgid "Name" msgstr "名称" -#: ../libresvip/cli/commands/plugin.py:62 ../libresvip/web/pages.py:172 +#: ../libresvip/cli/commands/plugin.py:64 ../libresvip/web/pages.py:180 msgid "Author" msgstr "作者" -#: ../libresvip/cli/commands/plugin.py:63 +#: ../libresvip/cli/commands/plugin.py:65 msgid "Identifier" msgstr "标识符" -#: ../libresvip/cli/commands/plugin.py:64 +#: ../libresvip/cli/commands/plugin.py:66 msgid "Applicable file format" msgstr "适用格式" -#: ../libresvip/cli/commands/plugin.py:83 +#: ../libresvip/cli/commands/plugin.py:85 msgid "Plugin: " msgstr "插件: " -#: ../libresvip/cli/commands/plugin.py:85 +#: ../libresvip/cli/commands/plugin.py:87 msgid "Author: " msgstr "作者: " -#: ../libresvip/cli/commands/plugin.py:89 +#: ../libresvip/cli/commands/plugin.py:91 msgid "Website: " msgstr "主页: " -#: ../libresvip/cli/commands/plugin.py:94 +#: ../libresvip/cli/commands/plugin.py:96 msgid "This plugin is applicable to" msgstr "此插件适用于" -#: ../libresvip/cli/commands/plugin.py:99 +#: ../libresvip/cli/commands/plugin.py:101 msgid "" "If you want to use this plugin, please specify '-i {}' (input) or '-o " "{}' (output) when converting." msgstr "若要使用此插件,请在转换时指定 \"-i {}\"(输入)或 \"-o {}\"(输出)。" -#: ../libresvip/cli/commands/plugin.py:104 +#: ../libresvip/cli/commands/plugin.py:106 msgid "Description: " msgstr "描述: " -#: ../libresvip/cli/commands/plugin.py:105 +#: ../libresvip/cli/commands/plugin.py:107 msgid "input" msgstr "输入" -#: ../libresvip/cli/commands/plugin.py:105 +#: ../libresvip/cli/commands/plugin.py:107 msgid "output" msgstr "输出" -#: ../libresvip/cli/commands/plugin.py:114 +#: ../libresvip/cli/commands/plugin.py:115 msgid "This plugin supports the following {} conversion options:" msgstr "本插件可指定以下{}转换选项:" #: ../libresvip/cli/commands/plugin.py:127 -#: ../libresvip/cli/commands/plugin.py:158 +#: ../libresvip/cli/commands/plugin.py:152 msgid "Default: " msgstr "默认值:" @@ -446,7 +446,7 @@ msgstr "默认值:" msgid "Available values:" msgstr "可用值如下:" -#: ../libresvip/cli/commands/plugin.py:152 +#: ../libresvip/cli/commands/plugin.py:146 msgid "Available fields:" msgstr "可用值如下:" @@ -474,122 +474,126 @@ msgstr "使其它音轨静音" msgid "Output Options:" msgstr "导出选项:" -#: ../libresvip/model/relative_pitch_curve.py:86 +#: ../libresvip/model/relative_pitch_curve.py:95 msgid "Notes Overlapped" msgstr "音符重叠" -#: ../libresvip/web/pages.py:162 +#: ../libresvip/web/pages.py:170 msgid "name" msgstr "名称" -#: ../libresvip/web/pages.py:182 ../libresvip/web/pages.py:199 -#: ../libresvip/web/pages.py:825 ../libresvip/web/pages.py:841 -#: ../libresvip/web/pages.py:943 ../libresvip/web/pages.py:987 +#: ../libresvip/web/pages.py:190 ../libresvip/web/pages.py:207 +#: ../libresvip/web/pages.py:833 ../libresvip/web/pages.py:849 +#: ../libresvip/web/pages.py:947 ../libresvip/web/pages.py:999 msgid "file_format" msgstr "文件格式" -#: ../libresvip/web/pages.py:189 +#: ../libresvip/web/pages.py:197 msgid "description" msgstr "描述" -#: ../libresvip/web/pages.py:321 +#: ../libresvip/web/pages.py:325 msgid "Invalid integer" msgstr "无效的整数" -#: ../libresvip/web/pages.py:325 +#: ../libresvip/web/pages.py:329 msgid "Invalid float" msgstr "无效的浮点数" -#: ../libresvip/web/pages.py:425 ../libresvip/web/pages.py:447 +#: ../libresvip/web/pages.py:440 ../libresvip/web/pages.py:469 msgid "Copy to clipboard" msgstr "复制到剪贴板" -#: ../libresvip/web/pages.py:430 ../libresvip/web/pages.py:452 -#: ../libresvip/web/pages.py:587 ../libresvip/web/pages.py:919 -#: ../libresvip/web/pages.py:957 ../libresvip/web/pages.py:1003 +#: ../libresvip/web/pages.py:445 ../libresvip/web/pages.py:474 +#: ../libresvip/web/pages.py:602 ../libresvip/web/pages.py:923 +#: ../libresvip/web/pages.py:965 ../libresvip/web/pages.py:1022 msgid "Close" msgstr "关闭" -#: ../libresvip/web/pages.py:585 +#: ../libresvip/web/pages.py:600 msgid "Conversion Progress" msgstr "转换进度" -#: ../libresvip/web/pages.py:590 +#: ../libresvip/web/pages.py:605 msgid "Conversion Failed" msgstr "转换失败" -#: ../libresvip/web/pages.py:593 +#: ../libresvip/web/pages.py:608 msgid "Conversion Successful" msgstr "转换成功" -#: ../libresvip/web/pages.py:648 ../libresvip/web/pages.py:687 +#: ../libresvip/web/pages.py:661 ../libresvip/web/pages.py:698 msgid "All files (*.*)" msgstr "所有文件 (*.*)" -#: ../libresvip/web/pages.py:672 +#: ../libresvip/web/pages.py:685 msgid "Save failed!" msgstr "保存失败!" -#: ../libresvip/web/pages.py:684 +#: ../libresvip/web/pages.py:695 msgid "Compressed Archive (*.zip)" msgstr "压缩文件 (*.zip)" -#: ../libresvip/web/pages.py:695 +#: ../libresvip/web/pages.py:706 msgid "Saved" msgstr "已保存" -#: ../libresvip/web/pages.py:779 ../libresvip/web/pages.py:799 +#: ../libresvip/web/pages.py:787 ../libresvip/web/pages.py:807 msgid "Convert" msgstr "转换" -#: ../libresvip/web/pages.py:788 ../libresvip/web/pages.py:1015 +#: ../libresvip/web/pages.py:796 ../libresvip/web/pages.py:1034 msgid "Import project" msgstr "导入工程" -#: ../libresvip/web/pages.py:816 ../libresvip/web/pages.py:946 +#: ../libresvip/web/pages.py:824 ../libresvip/web/pages.py:950 msgid "Import format" msgstr "导入工程格式" -#: ../libresvip/web/pages.py:833 ../libresvip/web/pages.py:990 +#: ../libresvip/web/pages.py:841 ../libresvip/web/pages.py:1002 msgid "Export format" msgstr "导出工程格式" -#: ../libresvip/web/pages.py:846 +#: ../libresvip/web/pages.py:854 msgid "Switch Theme" msgstr "切换主题" -#: ../libresvip/web/pages.py:868 +#: ../libresvip/web/pages.py:876 msgid "Switch Language" msgstr "切换语言" -#: ../libresvip/web/pages.py:920 +#: ../libresvip/web/pages.py:924 msgid "Help" msgstr "帮助" -#: ../libresvip/web/pages.py:934 +#: ../libresvip/web/pages.py:938 msgid "Choose file format" msgstr "选择格式" -#: ../libresvip/web/pages.py:967 +#: ../libresvip/web/pages.py:975 msgid "Auto detect import format" msgstr "自动检测导入格式" -#: ../libresvip/web/pages.py:974 +#: ../libresvip/web/pages.py:982 msgid "Reset list when import format changed" msgstr "切换格式时重置列表" -#: ../libresvip/web/pages.py:1069 +#: ../libresvip/web/pages.py:1092 msgid "Drag and drop files here or click to upload" msgstr "拖放文件或点击导入" -#: ../libresvip/web/pages.py:1092 +#: ../libresvip/web/pages.py:1121 msgid "Export" msgstr "导出" -#: ../libresvip/web/pages.py:1093 +#: ../libresvip/web/pages.py:1122 msgid "Advanced Options" msgstr "高级选项" +#: ../libresvip/utils.py:134 +msgid "Audio file not found: " +msgstr "未找到音频文件:" + #: .acep.name msgid "ACE Studio" msgstr "" @@ -906,55 +910,55 @@ msgstr "AISingers Studio 工程文件" msgid "Conversion plugin for AISingers Studio project file" msgstr "AISingers Studio 工程文件转换插件" -#: .ccs.name +#: .ccs.name msgid "CeVIO" msgstr "" -#: .ccs.file_format +#: .ccs.file_format msgid "CeVIO Creative Studio Project file" msgstr "CeVIO Creative Studio工程文件" -#: .ccs.description +#: .ccs.description msgid "Conversion plugin for CeVIO Creative Studio project file" msgstr "CeVIO Creative Studio工程文件转换插件" -#: .ccs.dump[0].title +#: .ccs.dump[0].title msgid "Default Singer Name" msgstr "默认歌手名称" -#: .ccs.dump[1].title +#: .ccs.dump[1].title msgid "Default Voicebank ID" msgstr "默认声库ID" -#: .ccs.dump[2].title +#: .ccs.dump[2].title msgid "Default Voicebank Version" msgstr "默认声库版本" -#: .ccs.messages[0] +#: .ccs.messages[0] msgid "Pitch value is out of bounds" msgstr "音高值越界" -#: .ds.name +#: .ds.name msgid "DiffSinger" msgstr "" -#: .ds.file_format .ds.format_desc +#: .ds.file_format .ds.format_desc msgid "DiffSinger parameters file" msgstr "DiffSinger参数文件" -#: .ds.description +#: .ds.description msgid "DiffSinger plugin." msgstr "DiffSinger 参数格式转换插件。" -#: .ds.dump[0].title .ds.load[0].title +#: .ds.dump[0].title .ds.load[0].title msgid "Dictionary Name" msgstr "词典名称" -#: .ds.dump[1].title +#: .ds.dump[1].title msgid "Split threshold (in seconds)" msgstr "分段长度(秒)" -#: .ds.dump[1].description +#: .ds.dump[1].description msgid "" "This option controls the segmentation strategy during conversion. When the " "value of this option is negative, no segmentation is performed; when the " @@ -970,57 +974,57 @@ msgstr "" "小长度。设置合理的分段策略能够在合成时减少显存占用的同时最大化利用性能,并提" "升合成效果。" -#: .ds.dump[2].title +#: .ds.dump[2].title msgid "Minimum interval (in milliseconds)" msgstr "分段音符间隔(毫秒)" -#: .ds.dump[2].description +#: .ds.dump[2].description msgid "" "This option controls the minimum interval between notes. It is recommended " "to set it to a value greater than 300 milliseconds." msgstr "此选项控制分段时的音符间隔阈值。建议不小于 300 毫秒。" -#: .ds.dump[3].title +#: .ds.dump[3].title msgid "Seed" msgstr "随机种子" -#: .ds.dump[3].description +#: .ds.dump[3].description msgid "" "A fixed random seed can get a stable and reproducible synthesis effect. This " "option takes effect when the non-negative value is set." msgstr "固定随机种子可以得到稳定可复现的合成效果。此选项设置非负值时生效。" -#: .ds.dump[4].title +#: .ds.dump[4].title msgid "Export gender parameter" msgstr "导出性别参数" -#: .ds.dump[5].title +#: .ds.dump[5].title msgid "Indentation" msgstr "JSON缩进空格数" -#: .ds.dump[5].description +#: .ds.dump[5].description msgid "" "The number of spaces used for indentation. When the value is negative, no " "formatting is performed." msgstr "为负时不进行格式化。" -#: .ds.dump[6].title +#: .ds.dump[6].title msgid "Track index" msgstr "音轨序号" -#: .ds.dump[6].description +#: .ds.dump[6].description msgid "Start from 0, -1 means automatic selection" msgstr "从0开始,-1表示自动选择" -#: .ds.messages[0] +#: .ds.messages[0] msgid "Cannot find dict." msgstr "无法找到词典文件" -#: .ds.messages[1] .ds.messages[0] +#: .ds.messages[1] .ds.messages[0] msgid "The source file lacks phoneme parameters." msgstr "源文件缺少音素参数" -#: .ds.messages[2] .ds.messages[1] +#: .ds.messages[2] .ds.messages[1] msgid "" "The selected dictionary does not contain the pronunciation “{}”. Please " "check the pronunciation or try another dictionary." @@ -1034,15 +1038,15 @@ msgstr "DeepVocal工程文件" msgid "Conversion plugin for dv file" msgstr "dv 格式转换插件。" -#: .gj.name +#: .gj.name msgid "gjgj" msgstr "" -#: .gj.file_format .gj.format_desc +#: .gj.file_format .gj.format_desc msgid "Gejigeji project file" msgstr "歌叽歌叽工程文件" -#: .gj.description +#: .gj.description msgid "" "Conversion plugin for Gejigeji project file.\n" "Only Gejigeji v2.0 spec is supported." @@ -1050,17 +1054,17 @@ msgstr "" "歌叽歌叽工程格式转换插件。\n" "仅支持歌叽歌叽2.0版本。" -#: .gj.dump[0].title +#: .gj.dump[0].title msgid "Average sampling interval for the volume parameter" msgstr "音量参数平均采样间隔" -#: .gj.dump[0].description +#: .gj.dump[0].description msgid "" "The unit is Tick. The larger the value, the smoother the editor; the smaller " "the value, the more accurate the volume parameter." msgstr "单位为Tick。数值越大,编辑器越流畅;数值越小,音量参数越精确。" -#: .gj.messages[0] +#: .gj.messages[0] msgid "Unsupported pinyin:" msgstr "不支持的拼音:" @@ -1644,23 +1648,27 @@ msgstr "预期外的枚举值" msgid "Root not found" msgstr "未找到根对象" -#: .svip3.format_desc +#: .svip3.name +msgid "Svip3" +msgstr "" + +#: .svip3.file_format .svip3.format_desc msgid "Netease Cloud Music XStudio project file" msgstr "网易云音乐·X Studio 工程文件" -#: .svip3.description +#: .svip3.description msgid "Conversion plugin for Netease Cloud Music XStudio project file" msgstr "网易云音乐·X Studio 工程转换插件" -#: .svp.name +#: .svp.name msgid "SynthV Studio" msgstr "" -#: .svp.file_format .svp.format_desc +#: .svp.file_format .svp.format_desc msgid "Synthesizer V Studio project file" msgstr "Synthesizer V Studio 工程文件" -#: .svp.description +#: .svp.description msgid "" "Conversion plugin for Synthesizer V Studio project file, it supports reading " "and writing of all parameters including notes, lyrics, parameter curve, note " @@ -1672,11 +1680,11 @@ msgstr "" "性、音符组、即时音高模式在内所有数据的读取与写入。\n" "请注意:输入带有重叠音符的工程文件是未定义的行为,可能导致无法预料的异常。" -#: .svp.load[0].title +#: .svp.load[0].title msgid "Always follow instant pitch mode" msgstr "遵循即时音高模式设置" -#: .svp.load[0].description +#: .svp.load[0].description msgid "" "When this option is turned off, the default pitch curve will always be " "imported regardless of the project setting. If you have tuned the pitch " @@ -1685,37 +1693,37 @@ msgstr "" "关闭此选项时,无论工程文件是否开启了即时音高模式,都只会考虑原始的默认音高。" "若您基于即时音高模式进行了调校,建议打开此选项。" -#: .svp.load[1].title +#: .svp.load[1].title msgid "Pitch input mode" msgstr "音高信息输入模式" -#: .svp.load[1].choices[0].text +#: .svp.load[1].choices[0].text msgid "Full pitch curve" msgstr "输入完整音高曲线" -#: .svp.load[1].choices[0].description +#: .svp.load[1].choices[0].description msgid "Input the full pitch curve regardless of editing" msgstr "不论是否经过编辑,均输入整条音高曲线" -#: .svp.load[1].choices[1].text +#: .svp.load[1].choices[1].text msgid "Edited part only (vibrato mode)" msgstr "仅输入已编辑部分(颤音模式)" -#: .svp.load[1].choices[1].description +#: .svp.load[1].choices[1].description msgid "" "Input the edited part of pitch curve; default vibrato will be imported if " "not edited" msgstr "仅输入已编辑部分的音高曲线;未经编辑的默认颤音也将被导入" -#: .svp.load[1].choices[2].text +#: .svp.load[1].choices[2].text msgid "Edited part only (plain mode)" msgstr "仅输入已编辑部分(平整模式)" -#: .svp.load[1].choices[2].description +#: .svp.load[1].choices[2].description msgid "Input the edited part of pitch curve; default vibrato will be ignored" msgstr "仅输入已编辑部分的音高曲线;未经编辑的默认颤音将被忽略" -#: .svp.load[1].description +#: .svp.load[1].description msgid "" "This option controls the range of pitch curve to be imported and the " "judgment condition. The definition of “edited part” is: the pitch deviation " @@ -1725,43 +1733,43 @@ msgstr "" "本选项控制音高曲线被导入的范围和判定条件。其中“经过编辑”的定义为:参数面板中" "的音高偏差、颤音包络和音符属性中的音高转变、颤音中的任意一项经过编辑。" -#: .svp.load[2].title +#: .svp.load[2].title msgid "The way to handle breath notes" msgstr "换气音符处理方式" -#: .svp.load[2].choices[0].text +#: .svp.load[2].choices[0].text msgid "Ignore all breath notes" msgstr "忽略所有换气音符" -#: .svp.load[2].choices[1].text +#: .svp.load[2].choices[1].text msgid "Keep as normal notes" msgstr "保留为普通音符" -#: .svp.load[2].choices[2].text +#: .svp.load[2].choices[2].text msgid "Convert to breath mark" msgstr "转换为换气标记" -#: .svp.load[3].title +#: .svp.load[3].title msgid "The way to handle note groups" msgstr "音符组导入方式" -#: .svp.load[3].choices[0].text +#: .svp.load[3].choices[0].text msgid "Split all to tracks" msgstr "全部拆分为轨道" -#: .svp.load[3].choices[0].description +#: .svp.load[3].choices[0].description msgid "Generate a track for each note group reference" msgstr "为每个音符组引用生成一个单独的音轨" -#: .svp.load[3].choices[1].text +#: .svp.load[3].choices[1].text msgid "Keep original position" msgstr "保留原始位置" -#: .svp.load[3].choices[1].description +#: .svp.load[3].choices[1].description msgid "Split note groups to separate tracks only when notes overlap" msgstr "仅在出现音符重叠时将音符组拆分至单独的音轨" -#: .svp.load[3].description +#: .svp.load[3].description msgid "" "Notice: If there are too many note groups, please choose “Keep original " "position” to avoid excessive track count. But if there are notes that are " @@ -1773,44 +1781,44 @@ msgstr "" "间、音符组与主组之间存在时间轴上紧挨(但不重叠)的音符,则建议选择“拆分为轨" "道”以确保段落划分不被破坏。" -#: .svp.dump[0].title +#: .svp.dump[0].title msgid "The way to handle vibrato notes" msgstr "自动颤音处理方式" -#: .svp.dump[0].choices[0].text +#: .svp.dump[0].choices[0].text msgid "All removed" msgstr "全部抹平" -#: .svp.dump[0].choices[0].description +#: .svp.dump[0].choices[0].description msgid "" "All notes will be set to 0 vibrato depth to ensure the output pitch curve is " "the same as input" msgstr "所有音符的颤音深度将被设置为 0,以保证输出的音高曲线与输入一致" -#: .svp.dump[0].choices[1].text +#: .svp.dump[0].choices[1].text msgid "All kept" msgstr "全部保留" -#: .svp.dump[0].choices[1].description +#: .svp.dump[0].choices[1].description msgid "" "Keep all notes' default vibrato, but may cause inconsistent pitch curves" msgstr "保持所有音符的默认颤音,但可能造成输入与输出音高曲线不一致" -#: .svp.dump[0].choices[2].text +#: .svp.dump[0].choices[2].text msgid "Hybrid mode" msgstr "混合保留" -#: .svp.dump[0].choices[2].description +#: .svp.dump[0].choices[2].description msgid "Remove vibrato in edited part, keep default vibrato in other parts" msgstr "在输入音高被编辑过的区域去除颤音,其余部分保留默认颤音" -#: .svp.dump[1].title +#: .svp.dump[1].title msgid "" "Set the average sampling interval of parameter points to improve performance " "(0 means no limit)" msgstr "设置参数点的平均采样间隔以改善性能(0 为无限制)" -#: .svp.dump[1].description +#: .svp.dump[1].description msgid "" "Reduce the sampling interval to improve the accuracy of parameter curves, " "but may cause rendering lag (e.g. Synthesizer V Studio Pro + AI voicebank). " @@ -1820,15 +1828,31 @@ msgstr "" "减小采样间隔可提高参数曲线的精准度,但可能造成渲染卡顿(例如 Synthesizer V " "Studio Pro + AI 声库)。请根据硬件配置与实际体验酌情设置此值。" -#: .tssln.name +#: .svp.dump[2].title +msgid "Override default language for the voicebank" +msgstr "指定声库的默认语种" + +#: .svp.dump[2].choices[0].text +msgid "Mandarin" +msgstr "普通话" + +#: .svp.dump[2].choices[1].text +msgid "Cantonese" +msgstr "粤语" + +#: .svp.dump[2].choices[4].text +msgid "Spanish" +msgstr "西班牙语" + +#: .tssln.name msgid "TSSln" msgstr "" -#: .tssln.file_format +#: .tssln.file_format msgid "Techno-Speech Solution file" msgstr "Techno-Speech 项目文件" -#: .tssln.description +#: .tssln.description msgid "" "Conversion plugin for VoiSona project file (Only versions 1.8.0 and later " "are supported)" @@ -1882,46 +1906,66 @@ msgstr "Vogen 工程格式转换插件" msgid "Please enter the singer's English name." msgstr "请输入完整无误的歌手英文名字。" -#: .vpr.name +#: .vpr.name msgid "Vpr" msgstr "" -#: .vpr.file_format .vpr.format_desc +#: .vpr.file_format .vpr.format_desc msgid "New Vocaloid Project file" msgstr "新版Vocaloid工程格式" -#: .vpr.description +#: .vpr.description msgid "Conversion plugin for New Vocaloid project file" msgstr "新版Vocaloid工程格式转换插件" -#: .vpr.dump[0].title +#: .vpr.load[0].title +msgid "Extract audio" +msgstr "解压音频文件" + +#: .vpr.load[0].description +msgid "" +"Extract audio from vocaloid project for later use if the path does not exist " +"(this option has the side effect of writing additional files)" +msgstr "" +"若音频文件路径不存在,则从vocaloid工程文件中解压以供后续使用(此选项有写入额" +"外文件的副作用)" + +#: .vpr.dump[0].title msgid "Is AI Singer" msgstr "是否AI歌手" -#: .vpr.dump[0].description +#: .vpr.dump[0].description msgid "The default voicebank is AI singer or not" msgstr "默认声库是否属于AI类型" -#: .vpr.dump[1].title +#: .vpr.dump[1].title msgid "Default language" msgstr "默认语言" -#: .vpr.dump[1].description +#: .vpr.dump[1].description msgid "Default language id of voicebank and notes" msgstr "声库及音符的默认语言" -#: .vpr.dump[2].title +#: .vpr.dump[2].title msgid "Default Comp ID" msgstr "默认的CompID" -#: .vpr.dump[2].description +#: .vpr.dump[2].description msgid "Default comp_id of voicebank" msgstr "默认声库对应的comp_id" -#: .vpr.dump[3].description +#: .vpr.dump[3].description msgid "Default singer name of voicebank" msgstr "默认声库对应的歌手名" +#: .vpr.messages[0] +msgid "" +"Phonemes of all notes were set to \"la\". Please use \"Job\" -> \"Convert " +"Phonemes to Match Languages in the menu of VOCALOID to reset them." +msgstr "" +"所有音符的音素都被设为了\"la\"。请使用VOCALOID菜单中的「任务」->「发音符号匹" +"配」功能来重置音素。" + #: .vshp.format_desc msgid "VocalShifter project file" msgstr "VocalShifter 工程文件" @@ -1958,42 +2002,64 @@ msgstr "VocalSharp 工程格式" msgid "Conversion plugin for VocalSharp project file" msgstr "VocalSharp格式转换插件" -#: .vsq.name +#: .vsq.name msgid "Vsq" msgstr "" -#: .vsq.file_format +#: .vsq.file_format msgid "Vocaloid 2 Sequence file" msgstr "Vocaloid 2 序列文件" -#: .vsq.description +#: .vsq.description msgid "Conversion plugin for Vocaloid 2 sequence file" msgstr "Vocaloid 2 序列文件转换插件" -#: .vsqx.name +#: .vsq.messages[0] +msgid "" +"Phonemes of all notes were set to \"la\". Please reset them to make it sound " +"correctly." +msgstr "所有音符的音素都被设为了\"la\"。请重置音素以使其正确发音。" + +#: .vsqx.name msgid "Vsqx" msgstr "" -#: .vsqx.file_format +#: .vsqx.file_format msgid "Vocaloid Sequence XML file" msgstr "Vocaloid XML序列文件" -#: .vsqx.description +#: .vsqx.description msgid "Conversion plugin for Vocaloid Sequence XML file" msgstr "Vocaloid XML序列格式转换插件" -#: .vsqx.dump[0].title +#: .vsqx.dump[0].title msgid "VSQX Version" msgstr "VSQX文件版本" -#: .vsqx.dump[1].title +#: .vsqx.dump[1].title msgid "Pretty XML" msgstr "美化XML" -#: .vsqx.dump[1].description +#: .vsqx.dump[1].description msgid "Whether to output pretty XML" msgstr "是否导出美化显示的XML" +#: .vsqx.messages[0] +msgid "" +"Phonemes of all notes were set to \"la\". Please use \"Lyrics\" -> \"Convert " +"Phonemes\" in the menu of VOCALOID3 to reset them." +msgstr "" +"所有音符的音素都被设为了\"la\"。请使用VOCALOID3菜单中的「歌词」->「音位变换」" +"功能来重置音素。" + +#: .vsqx.messages[1] +msgid "" +"Phonemes of all notes were set to \"la\". Please use \"Lyrics\" -> \"Convert " +"Phonemes\" in the menu of VOCALOID4 to reset them." +msgstr "" +"所有音符的音素都被设为了\"la\"。请使用VOCALOID4菜单中的「歌词」->「音位变换」" +"功能来重置音素。" + #: .y77.name msgid "Y77" msgstr "" diff --git a/translations/libresvip_python-zh_CN.po b/translations/libresvip_python-zh_CN.po index 949d96194..6133f7c3f 100644 --- a/translations/libresvip_python-zh_CN.po +++ b/translations/libresvip_python-zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2024-01-01 23:29+0800\n" +"POT-Creation-Date: 2024-01-22 11:13+0800\n" "PO-Revision-Date: 2023-05-28 22:49+0800\n" "Last-Translator: \n" "Language: zh_CN\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.14.0\n" +"Generated-By: Babel 2.10.3\n" #: ../libresvip/cli/commands/conf.py:22 msgid "Setting {} is not supported in cli mode." @@ -26,102 +26,102 @@ msgstr "在命令行模式中不支持设置 {} 选项" msgid "Set {} to {}" msgstr "已将 {} 设置为 {}" -#: ../libresvip/cli/commands/plugin.py:24 +#: ../libresvip/cli/commands/plugin.py:26 msgid "The plugin is successfully disabled." msgstr "插件已成功禁用。" -#: ../libresvip/cli/commands/plugin.py:26 +#: ../libresvip/cli/commands/plugin.py:28 msgid "Failed to disable the plugin!" msgstr "插件禁用失败!" -#: ../libresvip/cli/commands/plugin.py:33 +#: ../libresvip/cli/commands/plugin.py:35 msgid "The plugin is successfully enabled." msgstr "插件已成功启用。" -#: ../libresvip/cli/commands/plugin.py:35 +#: ../libresvip/cli/commands/plugin.py:37 msgid "Failed to enable the plugin!" msgstr "插件启用失败!" -#: ../libresvip/cli/commands/plugin.py:37 +#: ../libresvip/cli/commands/plugin.py:39 msgid "Unable to find the plugin." msgstr "无法找到该插件。" -#: ../libresvip/cli/commands/plugin.py:50 +#: ../libresvip/cli/commands/plugin.py:52 msgid "Cannot find plugin " msgstr "未找到插件 " -#: ../libresvip/cli/commands/plugin.py:56 +#: ../libresvip/cli/commands/plugin.py:58 msgid "No plugins are currently installed." msgstr "目前尚未安装任何插件。" -#: ../libresvip/cli/commands/plugin.py:59 +#: ../libresvip/cli/commands/plugin.py:61 msgid "No." msgstr "序号" -#: ../libresvip/cli/commands/plugin.py:60 +#: ../libresvip/cli/commands/plugin.py:62 msgid "Name" msgstr "名称" -#: ../libresvip/cli/commands/plugin.py:61 ../libresvip/web/pages.py:168 +#: ../libresvip/cli/commands/plugin.py:63 ../libresvip/web/pages.py:176 msgid "Version" msgstr "版本" -#: ../libresvip/cli/commands/plugin.py:62 ../libresvip/web/pages.py:172 +#: ../libresvip/cli/commands/plugin.py:64 ../libresvip/web/pages.py:180 msgid "Author" msgstr "作者" -#: ../libresvip/cli/commands/plugin.py:63 +#: ../libresvip/cli/commands/plugin.py:65 msgid "Identifier" msgstr "标识符" -#: ../libresvip/cli/commands/plugin.py:64 +#: ../libresvip/cli/commands/plugin.py:66 msgid "Applicable file format" msgstr "适用格式" -#: ../libresvip/cli/commands/plugin.py:83 +#: ../libresvip/cli/commands/plugin.py:85 msgid "Plugin: " msgstr "插件: " -#: ../libresvip/cli/commands/plugin.py:84 ../libresvip/web/pages.py:891 +#: ../libresvip/cli/commands/plugin.py:86 ../libresvip/web/pages.py:895 msgid "Version: " msgstr "版本: " -#: ../libresvip/cli/commands/plugin.py:85 +#: ../libresvip/cli/commands/plugin.py:87 msgid "Author: " msgstr "作者: " -#: ../libresvip/cli/commands/plugin.py:89 +#: ../libresvip/cli/commands/plugin.py:91 msgid "Website: " msgstr "主页: " -#: ../libresvip/cli/commands/plugin.py:94 +#: ../libresvip/cli/commands/plugin.py:96 msgid "This plugin is applicable to" msgstr "此插件适用于" -#: ../libresvip/cli/commands/plugin.py:99 +#: ../libresvip/cli/commands/plugin.py:101 msgid "" "If you want to use this plugin, please specify '-i {}' (input) or '-o {}'" " (output) when converting." msgstr "若要使用此插件,请在转换时指定 \"-i {}\"(输入)或 \"-o {}\"(输出)。" -#: ../libresvip/cli/commands/plugin.py:104 +#: ../libresvip/cli/commands/plugin.py:106 msgid "Description: " msgstr "描述: " -#: ../libresvip/cli/commands/plugin.py:105 +#: ../libresvip/cli/commands/plugin.py:107 msgid "input" msgstr "输入" -#: ../libresvip/cli/commands/plugin.py:105 +#: ../libresvip/cli/commands/plugin.py:107 msgid "output" msgstr "输出" -#: ../libresvip/cli/commands/plugin.py:114 +#: ../libresvip/cli/commands/plugin.py:115 msgid "This plugin supports the following {} conversion options:" msgstr "本插件可指定以下{}转换选项:" #: ../libresvip/cli/commands/plugin.py:127 -#: ../libresvip/cli/commands/plugin.py:158 +#: ../libresvip/cli/commands/plugin.py:152 msgid "Default: " msgstr "默认值:" @@ -129,7 +129,7 @@ msgstr "默认值:" msgid "Available values:" msgstr "可用值如下:" -#: ../libresvip/cli/commands/plugin.py:152 +#: ../libresvip/cli/commands/plugin.py:146 msgid "Available fields:" msgstr "可用值如下:" @@ -157,217 +157,221 @@ msgstr "使其它音轨静音" msgid "Output Options:" msgstr "导出选项:" -#: ../libresvip/model/relative_pitch_curve.py:86 +#: ../libresvip/model/relative_pitch_curve.py:95 msgid "Notes Overlapped" msgstr "音符重叠" -#: ../libresvip/web/pages.py:162 +#: ../libresvip/web/pages.py:170 msgid "name" msgstr "名称" -#: ../libresvip/web/pages.py:182 ../libresvip/web/pages.py:199 -#: ../libresvip/web/pages.py:825 ../libresvip/web/pages.py:841 -#: ../libresvip/web/pages.py:943 ../libresvip/web/pages.py:987 +#: ../libresvip/web/pages.py:190 ../libresvip/web/pages.py:207 +#: ../libresvip/web/pages.py:833 ../libresvip/web/pages.py:849 +#: ../libresvip/web/pages.py:947 ../libresvip/web/pages.py:999 msgid "file_format" msgstr "文件格式" -#: ../libresvip/web/pages.py:188 +#: ../libresvip/web/pages.py:196 msgid "Introduction" msgstr "简介" -#: ../libresvip/web/pages.py:189 +#: ../libresvip/web/pages.py:197 msgid "description" msgstr "描述" -#: ../libresvip/web/pages.py:207 +#: ../libresvip/web/pages.py:215 msgid "Input Options" msgstr "输入选项" -#: ../libresvip/web/pages.py:208 +#: ../libresvip/web/pages.py:216 msgid "[Import as " msgstr "[ 导入自 " -#: ../libresvip/web/pages.py:216 +#: ../libresvip/web/pages.py:224 msgid "Output Options" msgstr "输出选项" -#: ../libresvip/web/pages.py:217 +#: ../libresvip/web/pages.py:225 msgid "[Export to " msgstr "[ 导出为 " -#: ../libresvip/web/pages.py:321 +#: ../libresvip/web/pages.py:325 msgid "Invalid integer" msgstr "无效的整数" -#: ../libresvip/web/pages.py:325 +#: ../libresvip/web/pages.py:329 msgid "Invalid float" msgstr "无效的浮点数" -#: ../libresvip/web/pages.py:425 ../libresvip/web/pages.py:447 +#: ../libresvip/web/pages.py:440 ../libresvip/web/pages.py:469 msgid "Copy to clipboard" msgstr "复制到剪贴板" -#: ../libresvip/web/pages.py:430 ../libresvip/web/pages.py:452 -#: ../libresvip/web/pages.py:587 ../libresvip/web/pages.py:919 -#: ../libresvip/web/pages.py:957 ../libresvip/web/pages.py:1003 +#: ../libresvip/web/pages.py:445 ../libresvip/web/pages.py:474 +#: ../libresvip/web/pages.py:602 ../libresvip/web/pages.py:923 +#: ../libresvip/web/pages.py:965 ../libresvip/web/pages.py:1022 msgid "Close" msgstr "关闭" -#: ../libresvip/web/pages.py:467 +#: ../libresvip/web/pages.py:487 msgid "Remove" msgstr "移除" -#: ../libresvip/web/pages.py:569 +#: ../libresvip/web/pages.py:584 msgid "Converting" msgstr "转换中" -#: ../libresvip/web/pages.py:585 +#: ../libresvip/web/pages.py:600 msgid "Conversion Progress" msgstr "转换进度" -#: ../libresvip/web/pages.py:590 +#: ../libresvip/web/pages.py:605 msgid "Conversion Failed" msgstr "转换失败" -#: ../libresvip/web/pages.py:593 +#: ../libresvip/web/pages.py:608 msgid "Conversion Successful" msgstr "转换成功" -#: ../libresvip/web/pages.py:648 ../libresvip/web/pages.py:687 +#: ../libresvip/web/pages.py:661 ../libresvip/web/pages.py:698 msgid "All files (*.*)" msgstr "所有文件 (*.*)" -#: ../libresvip/web/pages.py:672 +#: ../libresvip/web/pages.py:685 msgid "Save failed!" msgstr "保存失败!" -#: ../libresvip/web/pages.py:684 +#: ../libresvip/web/pages.py:695 msgid "Compressed Archive (*.zip)" msgstr "压缩文件 (*.zip)" -#: ../libresvip/web/pages.py:695 +#: ../libresvip/web/pages.py:706 msgid "Saved" msgstr "已保存" -#: ../libresvip/web/pages.py:779 ../libresvip/web/pages.py:799 +#: ../libresvip/web/pages.py:787 ../libresvip/web/pages.py:807 msgid "Convert" msgstr "转换" -#: ../libresvip/web/pages.py:788 ../libresvip/web/pages.py:1015 +#: ../libresvip/web/pages.py:796 ../libresvip/web/pages.py:1034 msgid "Import project" msgstr "导入工程" -#: ../libresvip/web/pages.py:808 ../libresvip/web/pages.py:1039 +#: ../libresvip/web/pages.py:816 ../libresvip/web/pages.py:1058 msgid "Clear Task List" msgstr "清空所有导入" -#: ../libresvip/web/pages.py:814 ../libresvip/web/pages.py:983 +#: ../libresvip/web/pages.py:822 ../libresvip/web/pages.py:995 msgid "Swap Input and Output" msgstr "上下交换" -#: ../libresvip/web/pages.py:816 ../libresvip/web/pages.py:946 +#: ../libresvip/web/pages.py:824 ../libresvip/web/pages.py:950 msgid "Import format" msgstr "导入工程格式" -#: ../libresvip/web/pages.py:833 ../libresvip/web/pages.py:990 +#: ../libresvip/web/pages.py:841 ../libresvip/web/pages.py:1002 msgid "Export format" msgstr "导出工程格式" -#: ../libresvip/web/pages.py:846 +#: ../libresvip/web/pages.py:854 msgid "Switch Theme" msgstr "切换主题" -#: ../libresvip/web/pages.py:856 +#: ../libresvip/web/pages.py:864 msgid "Light" msgstr "浅色" -#: ../libresvip/web/pages.py:861 +#: ../libresvip/web/pages.py:869 msgid "Dark" msgstr "深色" -#: ../libresvip/web/pages.py:866 +#: ../libresvip/web/pages.py:874 msgid "System" msgstr "跟随系统" -#: ../libresvip/web/pages.py:868 +#: ../libresvip/web/pages.py:876 msgid "Switch Language" msgstr "切换语言" -#: ../libresvip/web/pages.py:888 ../libresvip/web/pages.py:926 +#: ../libresvip/web/pages.py:892 ../libresvip/web/pages.py:930 msgid "About" msgstr "关于" -#: ../libresvip/web/pages.py:890 +#: ../libresvip/web/pages.py:894 msgid "LibreSVIP" msgstr "" -#: ../libresvip/web/pages.py:894 +#: ../libresvip/web/pages.py:898 msgid "Author: SoulMelody" msgstr "作者: " -#: ../libresvip/web/pages.py:898 +#: ../libresvip/web/pages.py:902 msgid "Author's Profile" msgstr "作者主页" -#: ../libresvip/web/pages.py:904 +#: ../libresvip/web/pages.py:908 msgid "Repo URL" msgstr "仓库地址" -#: ../libresvip/web/pages.py:909 +#: ../libresvip/web/pages.py:913 msgid "" "LibreSVIP is an open-sourced, liberal and extensionable framework that " "can convert your singing synthesis projects between different file " "formats." msgstr "LibreSVIP 是一个开源、自由、插件化的歌声合成工程文件中介与转换平台。" -#: ../libresvip/web/pages.py:914 +#: ../libresvip/web/pages.py:918 msgid "" "All people should have the right and freedom to choose. That's why we're " "committed to giving you a second chance to keep your creations free from " "the constraints of platforms and coterie." msgstr "所有人都应享有选择的权利和自由。因此,我们致力于为您带来第二次机会,使您的创作免受平台的制约与圈子的束缚。" -#: ../libresvip/web/pages.py:920 +#: ../libresvip/web/pages.py:924 msgid "Help" msgstr "帮助" -#: ../libresvip/web/pages.py:934 +#: ../libresvip/web/pages.py:938 msgid "Choose file format" msgstr "选择格式" -#: ../libresvip/web/pages.py:966 ../libresvip/web/pages.py:1012 +#: ../libresvip/web/pages.py:974 ../libresvip/web/pages.py:1031 msgid "View Detail Information" msgstr "查看详细信息" -#: ../libresvip/web/pages.py:967 +#: ../libresvip/web/pages.py:975 msgid "Auto detect import format" msgstr "自动检测导入格式" -#: ../libresvip/web/pages.py:974 +#: ../libresvip/web/pages.py:982 msgid "Reset list when import format changed" msgstr "切换格式时重置列表" -#: ../libresvip/web/pages.py:1043 +#: ../libresvip/web/pages.py:1062 msgid "Remove Tasks With Other Extensions" msgstr "过滤多余项目" -#: ../libresvip/web/pages.py:1057 +#: ../libresvip/web/pages.py:1080 msgid "Continue Adding files" msgstr "继续添加文件" -#: ../libresvip/web/pages.py:1069 +#: ../libresvip/web/pages.py:1092 msgid "Drag and drop files here or click to upload" msgstr "拖放文件或点击导入" -#: ../libresvip/web/pages.py:1083 +#: ../libresvip/web/pages.py:1108 msgid "Start Conversion" msgstr "开始转换" -#: ../libresvip/web/pages.py:1092 +#: ../libresvip/web/pages.py:1121 msgid "Export" msgstr "导出" -#: ../libresvip/web/pages.py:1093 +#: ../libresvip/web/pages.py:1122 msgid "Advanced Options" msgstr "高级选项" +#: ../libresvip/utils.py:134 +msgid "Audio file not found: " +msgstr "未找到音频文件:" +