From 66553e106d52119d33fec3fbcd94b74aeb9fc63e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=BE=E7=88=B1=E5=88=86=E4=BA=AB?= <27200289+wuaishare@users.noreply.github.com> Date: Fri, 16 Jan 2026 16:21:29 +0800 Subject: [PATCH] Update zh translations with improved, consistent Simplified Chinese UI copy. (#3752) --- .../translations/zh/LC_MESSAGES/messages.mo | Bin 23427 -> 44046 bytes .../translations/zh/LC_MESSAGES/messages.po | 1523 ++++++----------- 2 files changed, 520 insertions(+), 1003 deletions(-) diff --git a/changedetectionio/translations/zh/LC_MESSAGES/messages.mo b/changedetectionio/translations/zh/LC_MESSAGES/messages.mo index 865b7851c640c835059342568eb4f54b951367fd..d4124a1eba73b483959cb029d3bebbe0c1b62ce1 100644 GIT binary patch literal 44046 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 E54}X^TmS$7 literal 23427 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\n" -"Language: zh\n" +"PO-Revision-Date: 2026-01-16 06:40+0800\n" +"Last-Translator: 吾爱分享 \n" "Language-Team: zh \n" -"Plural-Forms: nplurals=1; plural=0;\n" +"Language: zh\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" "Generated-By: Babel 2.17.0\n" +"X-Generator: Poedit 3.8\n" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:241 #: changedetectionio/flask_app.py:214 changedetectionio/flask_app.py:226 -#: changedetectionio/flask_app.py:247 -#: changedetectionio/realtime/socket_server.py:171 +#: changedetectionio/flask_app.py:247 changedetectionio/realtime/socket_server.py:171 msgid "Not yet" -msgstr "还没有" +msgstr "尚未" #: changedetectionio/flask_app.py:534 msgid "Already logged in" -msgstr "" +msgstr "已登录" #: changedetectionio/flask_app.py:536 msgid "You must be logged in, please log in." -msgstr "" +msgstr "需要登录,请先登录。" #: changedetectionio/flask_app.py:551 -#, fuzzy msgid "Incorrect password" -msgstr "密码" +msgstr "密码错误" #: changedetectionio/forms.py:63 changedetectionio/forms.py:243 msgid "" -"At least one time interval (weeks, days, hours, minutes, or seconds) must" -" be specified." -msgstr "" +"At least one time interval (weeks, days, hours, minutes, or seconds) must be " +"specified." +msgstr "必须指定至少一个时间间隔(周、天、小时、分钟或秒)。" #: changedetectionio/forms.py:64 msgid "" -"At least one time interval (weeks, days, hours, minutes, or seconds) must" -" be specified when not using global settings." -msgstr "" +"At least one time interval (weeks, days, hours, minutes, or seconds) must be " +"specified when not using global settings." +msgstr "未使用全局设置时,必须指定至少一个时间间隔(周、天、小时、分钟或秒)。" #: changedetectionio/forms.py:164 msgid "Invalid time format. Use HH:MM." -msgstr "时间格式无效。使用时:分。" +msgstr "时间格式无效,请使用 HH:MM。" #: changedetectionio/forms.py:180 msgid "Not a valid timezone name" msgstr "不是有效的时区名称" #: changedetectionio/forms.py:183 -#, fuzzy msgid "not set" -msgstr "还没有" +msgstr "未设置" #: changedetectionio/forms.py:184 -#, fuzzy msgid "Start At" -msgstr "设置" +msgstr "开始时间" #: changedetectionio/forms.py:185 -#, fuzzy msgid "Run duration" -msgstr "暂无信息" +msgstr "运行时长" #: changedetectionio/forms.py:188 msgid "Use time scheduler" -msgstr "使用时间调度器" +msgstr "使用时间调度" #: changedetectionio/forms.py:198 msgid "Optional timezone to run in" -msgstr "运行时的可选时区" +msgstr "运行时使用的可选时区" #: changedetectionio/forms.py:212 msgid "Monday" @@ -99,7 +95,7 @@ msgstr "周四" #: changedetectionio/forms.py:216 msgid "Friday" -msgstr "星期五" +msgstr "周五" #: changedetectionio/forms.py:217 msgid "Saturday" @@ -107,40 +103,37 @@ msgstr "周六" #: changedetectionio/forms.py:218 msgid "Sunday" -msgstr "星期日" +msgstr "周日" #: changedetectionio/forms.py:251 msgid "Weeks" -msgstr "周数" +msgstr "周" #: changedetectionio/forms.py:251 changedetectionio/forms.py:252 #: changedetectionio/forms.py:253 changedetectionio/forms.py:254 #: changedetectionio/forms.py:255 changedetectionio/forms.py:955 msgid "Should contain zero or more seconds" -msgstr "应包含零或更多秒" +msgstr "应为 0 或更多秒" #: changedetectionio/forms.py:252 msgid "Days" msgstr "天" #: changedetectionio/forms.py:253 -#, fuzzy msgid "Hours" -msgstr "密码" +msgstr "小时" #: changedetectionio/forms.py:254 -#, fuzzy msgid "Minutes" -msgstr "沉默的" +msgstr "分钟" #: changedetectionio/forms.py:255 -#, fuzzy msgid "Seconds" msgstr "秒" #: changedetectionio/forms.py:460 msgid "Notification Body and Title is required when a Notification URL is used" -msgstr "使用通知 URL 时需要通知正文和标题" +msgstr "使用通知 URL 时,必须填写通知正文和标题" #: changedetectionio/forms.py:489 #, python-format @@ -150,90 +143,82 @@ msgstr "“%s”不是有效的 AppRise URL。" #: changedetectionio/forms.py:562 changedetectionio/forms.py:581 #, python-format msgid "RegEx '%s' is not a valid regular expression." -msgstr "RegEx“%s”不是有效的正则表达式。" +msgstr "正则表达式“%s”无效。" #: changedetectionio/forms.py:622 changedetectionio/forms.py:637 #, python-format msgid "'%s' is not a valid XPath expression. (%s)" -msgstr "“%s”不是有效的 XPath 表达式。 (%s)" +msgstr "“%s”不是有效的 XPath 表达式。(%s)" #: changedetectionio/forms.py:657 #, python-format msgid "'%s' is not a valid JSONPath expression. (%s)" -msgstr "“%s”不是有效的 JSONPath 表达式。 (%s)" +msgstr "“%s”不是有效的 JSONPath 表达式。(%s)" #: changedetectionio/forms.py:679 #, python-format msgid "'%s' is not a valid jq expression. (%s)" -msgstr "“%s”不是有效的 jq 表达式。 (%s)" +msgstr "“%s”不是有效的 jq 表达式。(%s)" #: changedetectionio/forms.py:725 msgid "Empty value not allowed." -msgstr "不允许为空值。" +msgstr "不允许为空。" #: changedetectionio/forms.py:727 msgid "Invalid value." -msgstr "无效值。" +msgstr "值无效。" #: changedetectionio/forms.py:732 msgid "Watch" -msgstr "监控" +msgstr "监控项" #: changedetectionio/forms.py:733 changedetectionio/forms.py:766 msgid "Processor" msgstr "处理器" #: changedetectionio/forms.py:734 -#, fuzzy msgid "Edit > Watch" -msgstr "编辑 > 监控" +msgstr "编辑 > 监控项" #: changedetectionio/forms.py:747 changedetectionio/forms.py:994 -#, fuzzy msgid "Fetch Method" -msgstr "设置获取方法" +msgstr "抓取方式" #: changedetectionio/forms.py:748 -#, fuzzy msgid "Notification Body" -msgstr "暂无信息" +msgstr "通知正文" #: changedetectionio/forms.py:749 -#, fuzzy msgid "Notification format" -msgstr "暂无信息" +msgstr "通知格式" #: changedetectionio/forms.py:750 -#, fuzzy msgid "Notification Title" -msgstr "暂无信息" +msgstr "通知标题" #: changedetectionio/forms.py:751 -#, fuzzy msgid "Notification URL List" -msgstr "暂无信息" +msgstr "通知 URL 列表" #: changedetectionio/forms.py:752 msgid "Processor - What do you want to achieve?" -msgstr "处理器 - 您想要实现什么?" +msgstr "处理器 - 您想实现什么?" #: changedetectionio/forms.py:753 msgid "Default timezone for watch check scheduler" -msgstr "手表检查调度程序的默认时区" +msgstr "监控检查调度器的默认时区" #: changedetectionio/forms.py:754 -#, fuzzy msgid "Wait seconds before extracting text" -msgstr "提取文本前几秒。" +msgstr "提取文本前等待秒数" #: changedetectionio/forms.py:754 msgid "Should contain one or more seconds" -msgstr "应包含一秒或多秒" +msgstr "应为 1 秒或以上" #: changedetectionio/forms.py:767 -#, fuzzy msgid "URLs" -msgstr "网址" +msgstr "URL" #: changedetectionio/forms.py:768 msgid "Upload .xlsx file" @@ -244,43 +229,36 @@ msgid "Must be .xlsx file!" msgstr "必须是 .xlsx 文件!" #: changedetectionio/forms.py:769 -#, fuzzy msgid "File mapping" -msgstr "文件映射类型。" +msgstr "文件映射" #: changedetectionio/forms.py:773 -#, fuzzy msgid "Operation" -msgstr "用户界面选项" +msgstr "操作" #: changedetectionio/forms.py:776 -#, fuzzy msgid "Selector" -msgstr "选择方式:" +msgstr "选择器" #: changedetectionio/forms.py:777 -#, fuzzy msgid "value" -msgstr "暂停" +msgstr "值" #: changedetectionio/forms.py:796 msgid "Use global settings for time between check and scheduler." -msgstr "使用全局设置检查和调度程序之间的时间。" +msgstr "检查间隔与调度时间使用全局设置。" #: changedetectionio/forms.py:798 -#, fuzzy msgid "CSS/JSONPath/JQ/XPath Filters" -msgstr "CSS/xPath 过滤器" +msgstr "CSS/JSONPath/JQ/XPath 过滤器" #: changedetectionio/forms.py:800 changedetectionio/forms.py:996 -#, fuzzy msgid "Remove elements" -msgstr "按元素选择" +msgstr "移除元素" #: changedetectionio/forms.py:802 -#, fuzzy msgid "Extract text" -msgstr "提取数据" +msgstr "提取文本" #: changedetectionio/blueprint/imports/templates/import.html:106 #: changedetectionio/forms.py:804 @@ -288,28 +266,24 @@ msgid "Title" msgstr "标题" #: changedetectionio/forms.py:806 -#, fuzzy msgid "Ignore lines containing" -msgstr "忽略任何匹配的行" +msgstr "忽略包含以下内容的行" #: changedetectionio/forms.py:808 -#, fuzzy msgid "Request body" -msgstr "要求" +msgstr "请求正文" #: changedetectionio/forms.py:809 -#, fuzzy msgid "Request method" -msgstr "要求" +msgstr "请求方法" #: changedetectionio/forms.py:810 msgid "Ignore status codes (process non-2xx status codes as normal)" -msgstr "忽略状态代码(正常处理非 2xx 状态代码)" +msgstr "忽略状态代码(正常处理非 2xx 状态码)" #: changedetectionio/forms.py:811 -#, fuzzy msgid "Only trigger when unique lines appear in all history" -msgstr "仅当出现唯一线条时触发" +msgstr "仅当全历史中出现新的唯一行时触发" #: changedetectionio/blueprint/ui/templates/edit.html:336 #: changedetectionio/forms.py:812 @@ -318,30 +292,27 @@ msgstr "删除重复的文本行" #: changedetectionio/forms.py:813 msgid "Sort text alphabetically" -msgstr "按字母顺序对文本进行排序" +msgstr "按字母顺序排序文本" #: changedetectionio/forms.py:814 changedetectionio/forms.py:1023 msgid "Strip ignored lines" -msgstr "去掉忽略的行" +msgstr "去除忽略的行" #: changedetectionio/forms.py:815 -#, fuzzy msgid "Trim whitespace before and after text" -msgstr "删除每行文本前后的所有空格" +msgstr "去除文本前后空白" #: changedetectionio/forms.py:817 -#, fuzzy msgid "Added lines" -msgstr "登录" +msgstr "新增行" #: changedetectionio/forms.py:818 msgid "Replaced/changed lines" -msgstr "更换/更改线路" +msgstr "替换/更改的行" #: changedetectionio/forms.py:819 -#, fuzzy msgid "Removed lines" -msgstr "已删除" +msgstr "删除的行" #: changedetectionio/forms.py:821 msgid "Keyword triggers - Trigger/wait for text" @@ -349,16 +320,16 @@ msgstr "关键字触发器 - 触发/等待文本" #: changedetectionio/forms.py:824 msgid "Block change-detection while text matches" -msgstr "文本匹配时阻止更改检测" +msgstr "文本匹配时阻止变更检测" #: changedetectionio/forms.py:825 msgid "Execute JavaScript before change detection" -msgstr "在更改检测之前执行 JavaScript" +msgstr "在变更检测前执行 JavaScript" #: changedetectionio/blueprint/tags/templates/groups-overview.html:17 #: changedetectionio/forms.py:827 changedetectionio/forms.py:1051 msgid "Save" -msgstr "节省" +msgstr "保存" #: changedetectionio/forms.py:829 msgid "Proxy" @@ -366,7 +337,7 @@ msgstr "代理" #: changedetectionio/forms.py:831 msgid "Send a notification when the filter can no longer be found on the page" -msgstr "当页面上找不到过滤器时发送通知" +msgstr "当页面上找不到该过滤器时发送通知" #: changedetectionio/blueprint/settings/templates/settings.html:22 #: changedetectionio/blueprint/tags/templates/edit-tag.html:32 @@ -376,38 +347,36 @@ msgid "Notifications" msgstr "通知" #: changedetectionio/forms.py:832 -#, fuzzy msgid "Muted" -msgstr "沉默的" +msgstr "静音" #: changedetectionio/forms.py:832 -#, fuzzy msgid "On" -msgstr "没有任何" +msgstr "开启" #: changedetectionio/forms.py:833 msgid "Attach screenshot to notification (where possible)" -msgstr "将屏幕截图附加到通知(如果可能)" +msgstr "(如可用)在通知中附加截图" #: changedetectionio/forms.py:835 msgid "Match" -msgstr "# 手表" +msgstr "匹配" #: changedetectionio/forms.py:835 msgid "Match all of the following" -msgstr "匹配以下所有内容" +msgstr "匹配以下全部" #: changedetectionio/forms.py:835 msgid "Match any of the following" -msgstr "匹配以下任意一项" +msgstr "匹配以下任意" #: changedetectionio/forms.py:837 msgid "Use page in list" -msgstr "使用列表中的页面<标题>" +msgstr "列表中使用页面 <title>" #: changedetectionio/forms.py:854 msgid "Body must be empty when Request Method is set to GET" -msgstr "当请求方法设置为 GET 时,正文必须为空" +msgstr "当请求方法为 GET 时,请求正文必须为空" #: changedetectionio/forms.py:863 changedetectionio/forms.py:877 #: changedetectionio/forms.py:892 @@ -418,12 +387,12 @@ msgstr "模板语法配置无效:%(error)s" #: changedetectionio/forms.py:867 changedetectionio/forms.py:881 #, python-format msgid "Invalid template syntax: %(error)s" -msgstr "无效的模板语法:%(error)s" +msgstr "模板语法无效:%(error)s" #: changedetectionio/forms.py:896 #, python-format msgid "Invalid template syntax in \"%(header)s\" header: %(error)s" -msgstr "" +msgstr "“%(header)s”请求头中的模板语法无效:%(error)s" #: changedetectionio/forms.py:920 changedetectionio/forms.py:932 msgid "Name" @@ -431,15 +400,15 @@ msgstr "名称" #: changedetectionio/forms.py:921 msgid "Proxy URL" -msgstr "代理网址" +msgstr "代理 URL" #: changedetectionio/forms.py:926 msgid "Proxy URLs must start with http://, https:// or socks5://" -msgstr "代理 URL 必须以 http://、https:// 或ocks5:// 开头" +msgstr "代理 URL 必须以 http://、https:// 或 socks5:// 开头" #: changedetectionio/forms.py:933 msgid "Browser connection URL" -msgstr "浏览器连接网址" +msgstr "浏览器连接 URL" #: changedetectionio/forms.py:938 msgid "Browser URLs must start with wss:// or ws://" @@ -447,11 +416,11 @@ msgstr "浏览器 URL 必须以 wss:// 或 ws:// 开头" #: changedetectionio/forms.py:944 msgid "Plaintext requests" -msgstr "明文请求" +msgstr "纯文本请求" #: changedetectionio/forms.py:946 msgid "Chrome requests" -msgstr "Chrome请求" +msgstr "Chrome 请求" #: changedetectionio/forms.py:952 msgid "Default proxy" @@ -459,11 +428,11 @@ msgstr "默认代理" #: changedetectionio/forms.py:953 msgid "Random jitter seconds ± check" -msgstr "随机抖动秒±检查" +msgstr "检查间隔随机抖动秒数 ±" #: changedetectionio/forms.py:957 msgid "Number of fetch workers" -msgstr "取货工人数量" +msgstr "抓取工作线程数" #: changedetectionio/forms.py:960 msgid "Should be between 1 and 50" @@ -471,7 +440,7 @@ msgstr "应介于 1 到 50 之间" #: changedetectionio/forms.py:962 msgid "Requests timeout in seconds" -msgstr "请求超时(以秒为单位)" +msgstr "请求超时(秒)" #: changedetectionio/forms.py:965 msgid "Should be between 1 and 999" @@ -479,29 +448,27 @@ msgstr "应介于 1 到 999 之间" #: changedetectionio/forms.py:970 msgid "Default User-Agent overrides" -msgstr "默认用户代理覆盖" +msgstr "默认 User-Agent 覆盖" #: changedetectionio/forms.py:976 msgid "Both a name, and a Proxy URL is required." -msgstr "名称和代理 URL 都是必需的。" +msgstr "名称和代理 URL 都是必填项。" #: changedetectionio/forms.py:980 msgid "Open 'History' page in a new tab" -msgstr "在新选项卡中打开“历史记录”页面" +msgstr "在新标签页中打开“历史记录”" #: changedetectionio/forms.py:981 -#, fuzzy msgid "Realtime UI Updates Enabled" -msgstr "离线实时更新" +msgstr "启用实时界面更新" #: changedetectionio/forms.py:982 -#, fuzzy msgid "Favicons Enabled" -msgstr "考虑启用" +msgstr "启用站点图标" #: changedetectionio/forms.py:983 msgid "Use page <title> in watch overview list" -msgstr "在观看概览列表中使用页面<标题>" +msgstr "在监控概览列表中使用页面 <title>" #: changedetectionio/forms.py:988 msgid "API access token security check enabled" @@ -509,21 +476,19 @@ msgstr "已启用 API 访问令牌安全检查" #: changedetectionio/forms.py:989 msgid "Notification base URL override" -msgstr "通知基础URL" +msgstr "通知基础 URL 覆盖" #: changedetectionio/forms.py:993 msgid "Treat empty pages as a change?" -msgstr "将空页视为更改?" +msgstr "将空页面视为变更?" #: changedetectionio/forms.py:995 -#, fuzzy msgid "Ignore Text" -msgstr "错误文本" +msgstr "忽略文本" #: changedetectionio/forms.py:997 -#, fuzzy msgid "Ignore whitespace" -msgstr "忽略空格" +msgstr "忽略空白" #: changedetectionio/forms.py:1004 #: changedetectionio/processors/image_ssim_diff/forms.py:50 @@ -532,11 +497,11 @@ msgstr "必须介于 0 到 100 之间" #: changedetectionio/forms.py:1011 msgid "Pager size" -msgstr "寻呼机尺寸" +msgstr "分页大小" #: changedetectionio/forms.py:1014 msgid "Should be atleast zero (disabled)" -msgstr "应至少为零(禁用)" +msgstr "应至少为 0(表示禁用)" #: changedetectionio/forms.py:1016 msgid "RSS Content format" @@ -544,78 +509,76 @@ msgstr "RSS 内容格式" #: changedetectionio/forms.py:1017 msgid "RSS <description> body built from" -msgstr "RSS <描述> 正文构建于" +msgstr "RSS <description> 内容来源" #: changedetectionio/forms.py:1018 msgid "RSS \"System default\" template override" -msgstr "" +msgstr "RSS “系统默认”模板覆盖" #: changedetectionio/forms.py:1020 -#, fuzzy msgid "Remove password" -msgstr "密码" +msgstr "移除密码" #: changedetectionio/forms.py:1021 msgid "Render anchor tag content" -msgstr "渲染锚标记内容" +msgstr "渲染 a 标签内容" #: changedetectionio/forms.py:1022 msgid "Allow anonymous access to watch history page when password is enabled" -msgstr "启用密码后允许匿名访问观看历史页面" +msgstr "启用密码时允许匿名访问监控历史页面" #: changedetectionio/forms.py:1024 msgid "Hide muted watches from RSS feed" -msgstr "从 RSS 源中隐藏静音的手表" +msgstr "在 RSS 中隐藏静音的监控项" #: changedetectionio/forms.py:1027 msgid "Enable RSS reader mode " -msgstr "启用 RSS 阅读器模式" +msgstr "启用 RSS 阅读模式" #: changedetectionio/forms.py:1028 msgid "Number of changes to show in watch RSS feed" -msgstr "观看 RSS 源中显示的更改数量" +msgstr "监控项 RSS 中显示的变更数量" #: changedetectionio/forms.py:1030 changedetectionio/forms.py:1035 msgid "Should contain zero or more attempts" -msgstr "应包含零次或多次尝试" +msgstr "应为 0 或更多次" #: changedetectionio/forms.py:1032 msgid "Number of times the filter can be missing before sending a notification" -msgstr "发送通知之前过滤器可能丢失的次数" +msgstr "过滤器缺失达到多少次后发送通知" #: changedetectionio/forms.py:1055 msgid "RegEx to extract" -msgstr "要提取的正则表达式" +msgstr "用于提取的正则表达式" #: changedetectionio/forms.py:1056 -#, fuzzy msgid "Extract as CSV" -msgstr "提取数据" +msgstr "提取为 CSV" #: changedetectionio/store.py:386 #, python-brace-format msgid "Error fetching metadata for {}" -msgstr "" +msgstr "获取 {} 的元数据失败" #: changedetectionio/store.py:390 msgid "Watch protocol is not permitted or invalid URL format" -msgstr "" +msgstr "监控协议不允许或 URL 格式无效" #: changedetectionio/blueprint/backups/__init__.py:86 msgid "A backup is already running, check back in a few minutes" -msgstr "" +msgstr "备份正在进行中,请几分钟后再查看" #: changedetectionio/blueprint/backups/__init__.py:90 msgid "Maximum number of backups reached, please remove some" -msgstr "" +msgstr "备份数量已达上限,请先删除部分备份" #: changedetectionio/blueprint/backups/__init__.py:98 msgid "Backup building in background, check back in a few minutes." -msgstr "" +msgstr "备份正在后台生成,请几分钟后再查看。" #: changedetectionio/blueprint/backups/__init__.py:161 msgid "Backups were deleted." -msgstr "" +msgstr "备份已删除。" #: changedetectionio/blueprint/backups/templates/overview.html:6 #: changedetectionio/templates/base.html:282 @@ -629,9 +592,9 @@ msgstr "备份正在运行!" #: changedetectionio/blueprint/backups/templates/overview.html:13 msgid "" -"Here you can download and request a new backup, when a backup is " -"completed you will see it listed below." -msgstr "" +"Here you can download and request a new backup, when a backup is completed you " +"will see it listed below." +msgstr "在此可下载并请求新的备份,备份完成后会在下方列表中显示。" #: changedetectionio/blueprint/backups/templates/overview.html:19 msgid "Mb" @@ -651,60 +614,59 @@ msgstr "删除备份" #: changedetectionio/blueprint/imports/importer.py:45 msgid "" -"Importing 5,000 of the first URLs from your list, the rest can be " -"imported again." -msgstr "" +"Importing 5,000 of the first URLs from your list, the rest can be imported again." +msgstr "仅导入列表前 5,000 个 URL,其余可稍后继续导入。" #: changedetectionio/blueprint/imports/importer.py:78 #, python-brace-format msgid "{} Imported from list in {:.2f}s, {} Skipped." -msgstr "" +msgstr "从列表导入 {} 条,用时 {:.2f} 秒,跳过 {} 条。" #: changedetectionio/blueprint/imports/importer.py:98 msgid "Unable to read JSON file, was it broken?" -msgstr "" +msgstr "无法读取 JSON 文件,文件是否损坏?" #: changedetectionio/blueprint/imports/importer.py:102 msgid "JSON structure looks invalid, was it broken?" -msgstr "" +msgstr "JSON 结构无效,文件是否损坏?" #: changedetectionio/blueprint/imports/importer.py:139 #, python-brace-format msgid "{} Imported from Distill.io in {:.2f}s, {} Skipped." -msgstr "" +msgstr "从 Distill.io 导入 {} 条,用时 {:.2f} 秒,跳过 {} 条。" #: changedetectionio/blueprint/imports/importer.py:160 #: changedetectionio/blueprint/imports/importer.py:239 msgid "Unable to read export XLSX file, something wrong with the file?" -msgstr "" +msgstr "无法读取导出的 XLSX 文件,文件是否有问题?" #: changedetectionio/blueprint/imports/importer.py:200 #: changedetectionio/blueprint/imports/importer.py:268 #, python-brace-format msgid "Error processing row number {}, URL value was incorrect, row was skipped." -msgstr "" +msgstr "处理第 {} 行时出错,URL 值不正确,已跳过该行。" #: changedetectionio/blueprint/imports/importer.py:214 #: changedetectionio/blueprint/imports/importer.py:297 #, python-brace-format msgid "" -"Error processing row number {}, check all cell data types are correct, " -"row was skipped." -msgstr "" +"Error processing row number {}, check all cell data types are correct, row was " +"skipped." +msgstr "处理第 {} 行时出错,请检查单元格数据类型是否正确,已跳过该行。" #: changedetectionio/blueprint/imports/importer.py:218 #, python-brace-format msgid "{} imported from Wachete .xlsx in {:.2f}s" -msgstr "" +msgstr "从 Wachete .xlsx 导入 {} 条,用时 {:.2f} 秒" #: changedetectionio/blueprint/imports/importer.py:301 #, python-brace-format msgid "{} imported from custom .xlsx in {:.2f}s" -msgstr "" +msgstr "从自定义 .xlsx 导入 {} 条,用时 {:.2f} 秒" #: changedetectionio/blueprint/imports/templates/import.html:9 msgid "URL List" -msgstr "网址列表" +msgstr "URL 列表" #: changedetectionio/blueprint/imports/templates/import.html:10 msgid "Distill.io" @@ -712,47 +674,46 @@ msgstr "Distill.io" #: changedetectionio/blueprint/imports/templates/import.html:11 msgid ".XLSX & Wachete" -msgstr ".XLSX 和瓦切特" +msgstr ".XLSX 与 Wachete" #: changedetectionio/blueprint/imports/templates/import.html:20 msgid "" -"Enter one URL per line, and optionally add tags for each URL after a " -"space, delineated by comma (,):" -msgstr "" +"Enter one URL per line, and optionally add tags for each URL after a space, " +"delineated by comma (,):" +msgstr "每行输入一个 URL,可在 URL 后用空格追加标签,标签以逗号 (,) 分隔:" #: changedetectionio/blueprint/imports/templates/import.html:22 msgid "Example:" -msgstr "例子:" +msgstr "示例:" #: changedetectionio/blueprint/imports/templates/import.html:23 msgid "URLs which do not pass validation will stay in the textarea." -msgstr "未通过验证的 URL 将保留在文本区域中。" +msgstr "未通过验证的 URL 会保留在文本框中。" #: changedetectionio/blueprint/imports/templates/import.html:44 msgid "" -"Copy and Paste your Distill.io watch 'export' file, this should be a JSON" -" file." -msgstr "" +"Copy and Paste your Distill.io watch 'export' file, this should be a JSON file." +msgstr "复制并粘贴 Distill.io 监控的“导出”文件(JSON)。" #: changedetectionio/blueprint/imports/templates/import.html:45 msgid "This is" -msgstr "这是" +msgstr "这项功能为" #: changedetectionio/blueprint/imports/templates/import.html:45 msgid "experimental" -msgstr "实验性的" +msgstr "实验性" #: changedetectionio/blueprint/imports/templates/import.html:45 msgid "supported fields are" -msgstr "支持的字段有" +msgstr ",支持的字段有" #: changedetectionio/blueprint/imports/templates/import.html:45 msgid "the rest (including" -msgstr "其余的(包括" +msgstr "其余字段(包括" #: changedetectionio/blueprint/imports/templates/import.html:45 msgid "are ignored." -msgstr "被忽略。" +msgstr ")将被忽略。" #: changedetectionio/blueprint/imports/templates/import.html:48 msgid "How to export?" @@ -760,11 +721,11 @@ msgstr "如何导出?" #: changedetectionio/blueprint/imports/templates/import.html:49 msgid "Be sure to set your default fetcher to Chrome if required." -msgstr "如果需要,请务必将默认提取器设置为 Chrome。" +msgstr "如有需要,请将默认抓取器设置为 Chrome。" #: changedetectionio/blueprint/imports/templates/import.html:91 msgid "Table of custom column and data types mapping for the" -msgstr "自定义列和数据类型映射表" +msgstr "用于以下内容的自定义列与数据类型映射表" #: changedetectionio/blueprint/imports/templates/import.html:91 msgid "Custom mapping" @@ -776,7 +737,7 @@ msgstr "文件映射类型。" #: changedetectionio/blueprint/imports/templates/import.html:95 msgid "Column #" -msgstr "柱子 #" +msgstr "列 #" #: changedetectionio/blueprint/imports/templates/import.html:101 msgid "Type" @@ -784,64 +745,63 @@ msgstr "类型" #: changedetectionio/blueprint/imports/templates/import.html:104 msgid "none" -msgstr "没有任何" +msgstr "无" #: changedetectionio/blueprint/imports/templates/import.html:105 msgid "URL" -msgstr "网址" +msgstr "URL" #: changedetectionio/blueprint/imports/templates/import.html:107 msgid "CSS/xPath filter" -msgstr "CSS/xPath 过滤器" +msgstr "CSS/XPath 过滤器" #: changedetectionio/blueprint/imports/templates/import.html:108 msgid "Group / Tag name(s)" -msgstr "观看组/标签" +msgstr "分组/标签名称" #: changedetectionio/blueprint/imports/templates/import.html:109 msgid "Recheck time (minutes)" -msgstr "复检时间(分钟)" +msgstr "复检间隔(分钟)" #: changedetectionio/blueprint/imports/templates/import.html:116 msgid "Import" -msgstr "进口" +msgstr "导入" #: changedetectionio/blueprint/settings/__init__.py:64 msgid "Password protection removed." -msgstr "" +msgstr "已移除密码保护。" #: changedetectionio/blueprint/settings/__init__.py:98 #, python-brace-format msgid "Worker count adjusted: {}" -msgstr "" +msgstr "工作线程数已调整:{}" #: changedetectionio/blueprint/settings/__init__.py:100 msgid "Dynamic worker adjustment not supported for sync workers" -msgstr "" +msgstr "同步工作线程不支持动态调整" #: changedetectionio/blueprint/settings/__init__.py:102 #, python-brace-format msgid "Error adjusting workers: {}" -msgstr "" +msgstr "调整工作线程时出错:{}" #: changedetectionio/blueprint/settings/__init__.py:107 msgid "Password protection enabled." -msgstr "" +msgstr "已启用密码保护。" #: changedetectionio/blueprint/settings/__init__.py:126 -#, fuzzy msgid "Settings updated." -msgstr "设置" +msgstr "设置已更新。" #: changedetectionio/blueprint/settings/__init__.py:129 #: changedetectionio/blueprint/ui/edit.py:283 #: changedetectionio/processors/extract.py:105 msgid "An error occurred, please see below." -msgstr "" +msgstr "发生错误,请查看下方详情。" #: changedetectionio/blueprint/settings/__init__.py:179 msgid "API Key was regenerated." -msgstr "" +msgstr "API Key 已重新生成。" #: changedetectionio/blueprint/settings/templates/notification-log.html:7 msgid "Notification debug log" @@ -851,11 +811,11 @@ msgstr "通知调试日志" #: changedetectionio/blueprint/tags/templates/edit-tag.html:27 #: changedetectionio/blueprint/ui/templates/edit.html:47 msgid "General" -msgstr "一般的" +msgstr "通用" #: changedetectionio/blueprint/settings/templates/settings.html:23 msgid "Fetching" -msgstr "获取" +msgstr "抓取" #: changedetectionio/blueprint/settings/templates/settings.html:24 msgid "Global Filters" @@ -863,11 +823,11 @@ msgstr "全局过滤器" #: changedetectionio/blueprint/settings/templates/settings.html:25 msgid "UI Options" -msgstr "用户界面选项" +msgstr "界面选项" #: changedetectionio/blueprint/settings/templates/settings.html:26 msgid "API" -msgstr "应用程序编程接口" +msgstr "API" #: changedetectionio/blueprint/settings/templates/settings.html:27 msgid "RSS" @@ -875,11 +835,11 @@ msgstr "RSS" #: changedetectionio/blueprint/settings/templates/settings.html:28 msgid "Time & Date" -msgstr "时间和日期" +msgstr "时间与日期" #: changedetectionio/blueprint/settings/templates/settings.html:29 msgid "CAPTCHA & Proxies" -msgstr "验证码和代理" +msgstr "验证码与代理" #: changedetectionio/blueprint/settings/templates/settings.html:35 msgid "Info" @@ -887,7 +847,7 @@ msgstr "信息" #: changedetectionio/blueprint/settings/templates/settings.html:46 msgid "Default recheck time for all watches, current system minimum is" -msgstr "所有手表默认复检时间,当前系统最小值为" +msgstr "所有监控项的默认复检间隔,当前系统最小值为" #: changedetectionio/blueprint/settings/templates/settings.html:46 msgid "seconds" @@ -899,15 +859,15 @@ msgstr "更多信息" #: changedetectionio/blueprint/settings/templates/settings.html:390 msgid "Python version:" -msgstr "Python版本:" +msgstr "Python 版本:" #: changedetectionio/blueprint/settings/templates/settings.html:391 msgid "Plugins active:" -msgstr "插件活跃:" +msgstr "已启用插件:" #: changedetectionio/blueprint/settings/templates/settings.html:399 msgid "No plugins active" -msgstr "没有激活的插件" +msgstr "未启用任何插件" #: changedetectionio/blueprint/settings/templates/settings.html:405 msgid "Back" @@ -915,58 +875,56 @@ msgstr "返回" #: changedetectionio/blueprint/settings/templates/settings.html:406 msgid "Clear Snapshot History" -msgstr "清除/重置历史记录" +msgstr "清除快照历史" #: changedetectionio/blueprint/tags/__init__.py:46 #, python-brace-format msgid "The tag \"{}\" already exists" -msgstr "" +msgstr "标签“{}”已存在" #: changedetectionio/blueprint/tags/__init__.py:50 -#, fuzzy msgid "Tag added" -msgstr "额外" +msgstr "标签已添加" #: changedetectionio/blueprint/tags/__init__.py:75 #, python-brace-format msgid "Tag deleted and removed from {} watches" -msgstr "" +msgstr "标签已删除,并从 {} 个监控项中移除" #: changedetectionio/blueprint/tags/__init__.py:87 #, python-brace-format msgid "Tag unlinked removed from {} watches" -msgstr "" +msgstr "标签已解绑,并从 {} 个监控项中移除" #: changedetectionio/blueprint/tags/__init__.py:97 msgid "All tags deleted" -msgstr "" +msgstr "已删除所有标签" #: changedetectionio/blueprint/tags/__init__.py:109 msgid "Tag not found" -msgstr "" +msgstr "未找到标签" #: changedetectionio/blueprint/tags/__init__.py:184 -#, fuzzy msgid "Updated" -msgstr "沉默的" +msgstr "已更新" #: changedetectionio/blueprint/tags/templates/edit-tag.html:28 #: changedetectionio/blueprint/ui/templates/edit.html:56 #: changedetectionio/blueprint/ui/templates/edit.html:386 msgid "Filters & Triggers" -msgstr "过滤器和触发器" +msgstr "过滤器与触发器" #: changedetectionio/blueprint/tags/templates/edit-tag.html:50 msgid "These settings are" -msgstr "设置" +msgstr "这些设置会" #: changedetectionio/blueprint/tags/templates/edit-tag.html:50 msgid "added" -msgstr "额外" +msgstr "应用" #: changedetectionio/blueprint/tags/templates/edit-tag.html:50 msgid "to any existing watch configurations." -msgstr "任何现有的手表配置。" +msgstr "到现有的所有监控项配置中。" #: changedetectionio/blueprint/tags/templates/edit-tag.html:53 #: changedetectionio/blueprint/ui/templates/edit.html:321 @@ -981,37 +939,37 @@ msgstr "谨慎使用!" #: changedetectionio/blueprint/tags/templates/edit-tag.html:73 #: changedetectionio/blueprint/ui/templates/edit.html:269 msgid "This will easily fill up your email storage quota or flood other storages." -msgstr "这将很容易填满您的电子邮件存储配额或淹没其他存储。" +msgstr "这很容易占满邮件存储配额或淹没其他存储。" #: changedetectionio/blueprint/tags/templates/edit-tag.html:80 #: changedetectionio/blueprint/ui/templates/edit.html:276 msgid "Look out!" -msgstr "退出" +msgstr "注意!" #: changedetectionio/blueprint/tags/templates/edit-tag.html:80 #: changedetectionio/blueprint/ui/templates/edit.html:276 msgid "Lookout!" -msgstr "退出" +msgstr "注意!" #: changedetectionio/blueprint/tags/templates/edit-tag.html:81 #: changedetectionio/blueprint/ui/templates/edit.html:277 msgid "There are" -msgstr "有" +msgstr "当前有" #: changedetectionio/blueprint/tags/templates/edit-tag.html:81 #: changedetectionio/blueprint/ui/templates/edit.html:277 msgid "system-wide notification URLs enabled" -msgstr "启用系统范围的通知 URL" +msgstr "系统级通知 URL 已启用" #: changedetectionio/blueprint/tags/templates/edit-tag.html:81 #: changedetectionio/blueprint/ui/templates/edit.html:277 msgid "this form will override notification settings for this watch only" -msgstr "此表单将仅覆盖此手表的通知设置" +msgstr "此表单将仅覆盖该监控项的通知设置" #: changedetectionio/blueprint/tags/templates/edit-tag.html:81 #: changedetectionio/blueprint/ui/templates/edit.html:277 msgid "an empty Notification URL list here will still send notifications." -msgstr "此处的通知 URL 列表为空仍会发送通知。" +msgstr "即使此处通知 URL 列表为空,仍会发送通知。" #: changedetectionio/blueprint/tags/templates/edit-tag.html:84 #: changedetectionio/blueprint/ui/templates/edit.html:280 @@ -1024,25 +982,25 @@ msgstr "添加新的组织标签" #: changedetectionio/blueprint/tags/templates/groups-overview.html:14 msgid "Watch group / tag" -msgstr "观看组/标签" +msgstr "监控分组/标签" #: changedetectionio/blueprint/tags/templates/groups-overview.html:21 msgid "" -"Groups allows you to manage filters and notifications for multiple " -"watches under a single organisational tag." -msgstr "" +"Groups allows you to manage filters and notifications for multiple watches under a " +"single organisational tag." +msgstr "分组可让您在一个组织标签下管理多个监控项的过滤器与通知。" #: changedetectionio/blueprint/tags/templates/groups-overview.html:31 msgid "# Watches" -msgstr "# 监控项" +msgstr "监控项数量" #: changedetectionio/blueprint/tags/templates/groups-overview.html:32 msgid "Tag / Label name" -msgstr "标签/标签名称" +msgstr "标签/名称" #: changedetectionio/blueprint/tags/templates/groups-overview.html:42 msgid "No website organisational tags/groups configured" -msgstr "未配置网站组织标签/组" +msgstr "尚未配置网站组织标签/分组" #: changedetectionio/blueprint/tags/templates/groups-overview.html:53 #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:249 @@ -1051,14 +1009,14 @@ msgstr "编辑" #: changedetectionio/blueprint/tags/templates/groups-overview.html:58 msgid "Delete Group?" -msgstr "删除群组?" +msgstr "删除分组?" #: changedetectionio/blueprint/tags/templates/groups-overview.html:59 #, python-format msgid "" -"<p>Are you sure you want to delete group " -"<strong>%(title)s</strong>?</p><p>This action cannot be undone.</p>" -msgstr "" +"<p>Are you sure you want to delete group <strong>%(title)s</strong>?</p><p>This " +"action cannot be undone.</p>" +msgstr "<p>确定要删除分组 <strong>%(title)s</strong> 吗?</p><p>此操作不可撤销。</p>" #: changedetectionio/blueprint/tags/templates/groups-overview.html:60 #: changedetectionio/blueprint/tags/templates/groups-overview.html:61 @@ -1073,138 +1031,135 @@ msgstr "删除并移除标签" #: changedetectionio/blueprint/tags/templates/groups-overview.html:66 msgid "Unlink Group?" -msgstr "取消群组链接?" +msgstr "取消分组关联?" #: changedetectionio/blueprint/tags/templates/groups-overview.html:67 #, python-format msgid "" -"<p>Are you sure you want to unlink all watches from group " -"<strong>%(title)s</strong>?</p><p>The tag will be kept but watches will " -"be removed from it.</p>" +"<p>Are you sure you want to unlink all watches from group <strong>%(title)s</" +"strong>?</p><p>The tag will be kept but watches will be removed from it.</p>" msgstr "" +"<p>确定要将分组 <strong>%(title)s</strong> 与所有监控项解绑吗?</p><p>标签会保留," +"但监控项将从该分组移除。</p>" #: changedetectionio/blueprint/tags/templates/groups-overview.html:68 #: changedetectionio/blueprint/tags/templates/groups-overview.html:69 msgid "Unlink" -msgstr "取消链接" +msgstr "解绑" #: changedetectionio/blueprint/tags/templates/groups-overview.html:69 msgid "Keep the tag but unlink any watches" -msgstr "保留标签但取消所有手表的链接" +msgstr "保留标签但解绑所有监控项" #: changedetectionio/blueprint/tags/templates/groups-overview.html:70 #: changedetectionio/blueprint/ui/templates/edit.html:500 msgid "RSS Feed for this watch" -msgstr "此手表的 RSS 源" +msgstr "该监控项的 RSS 源" #: changedetectionio/blueprint/ui/__init__.py:20 #, python-brace-format msgid "{} watches deleted" -msgstr "" +msgstr "已删除 {} 个监控项" #: changedetectionio/blueprint/ui/__init__.py:27 -#, fuzzy, python-brace-format +#, python-brace-format msgid "{} watches paused" -msgstr "# 手表" +msgstr "已暂停 {} 个监控项" #: changedetectionio/blueprint/ui/__init__.py:34 #, python-brace-format msgid "{} watches unpaused" -msgstr "" +msgstr "已取消暂停 {} 个监控项" #: changedetectionio/blueprint/ui/__init__.py:41 #, python-brace-format msgid "{} watches updated" -msgstr "" +msgstr "已更新 {} 个监控项" #: changedetectionio/blueprint/ui/__init__.py:48 -#, fuzzy, python-brace-format +#, python-brace-format msgid "{} watches muted" -msgstr "# 手表" +msgstr "已静音 {} 个监控项" #: changedetectionio/blueprint/ui/__init__.py:55 #, python-brace-format msgid "{} watches un-muted" -msgstr "" +msgstr "已取消静音 {} 个监控项" #: changedetectionio/blueprint/ui/__init__.py:63 #, python-brace-format msgid "{} watches queued for rechecking" -msgstr "" +msgstr "已将 {} 个监控项加入重新检查队列" #: changedetectionio/blueprint/ui/__init__.py:70 #, python-brace-format msgid "{} watches errors cleared" -msgstr "" +msgstr "已清除 {} 个监控项的错误" #: changedetectionio/blueprint/ui/__init__.py:77 #, python-brace-format msgid "{} watches cleared/reset." -msgstr "" +msgstr "已清除/重置 {} 个监控项的历史记录。" #: changedetectionio/blueprint/ui/__init__.py:90 -#, fuzzy, python-brace-format +#, python-brace-format msgid "{} watches set to use default notification settings" -msgstr "使用默认通知" +msgstr "已将 {} 个监控项设置为使用默认通知" #: changedetectionio/blueprint/ui/__init__.py:105 #, python-brace-format msgid "{} watches were tagged" -msgstr "" +msgstr "已为 {} 个监控项打标签" #: changedetectionio/blueprint/ui/__init__.py:142 -#, fuzzy msgid "Watch not found" -msgstr "关注这个网址!" +msgstr "未找到监控项" #: changedetectionio/blueprint/ui/__init__.py:144 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Cleared snapshot history for watch {}" -msgstr "清除/重置历史记录" +msgstr "已清除监控项 {} 的快照历史" #: changedetectionio/blueprint/ui/__init__.py:156 -#, fuzzy msgid "Cleared snapshot history for all watches" -msgstr "清除/重置历史记录" +msgstr "已清除所有监控项的快照历史" #: changedetectionio/blueprint/ui/__init__.py:158 -#, fuzzy msgid "Incorrect confirmation text." -msgstr "暂无信息" +msgstr "确认文本不正确。" #: changedetectionio/blueprint/ui/__init__.py:192 #, python-brace-format msgid "The watch by UUID {} does not exist." -msgstr "" +msgstr "UUID 为 {} 的监控项不存在。" #: changedetectionio/blueprint/ui/__init__.py:199 -#, fuzzy msgid "Deleted." -msgstr "删除" +msgstr "已删除。" #: changedetectionio/blueprint/ui/__init__.py:216 msgid "Cloned, you are editing the new watch." -msgstr "" +msgstr "已克隆,正在编辑新的监控项。" #: changedetectionio/blueprint/ui/__init__.py:255 msgid "Queued 1 watch for rechecking." -msgstr "" +msgstr "已将 1 个监控项加入重新检查队列。" #: changedetectionio/blueprint/ui/__init__.py:257 #, python-brace-format msgid "Queued {} watches for rechecking." -msgstr "" +msgstr "已将 {} 个监控项加入重新检查队列。" #: changedetectionio/blueprint/ui/__init__.py:259 msgid "No watches available to recheck." -msgstr "" +msgstr "没有可重新检查的监控项。" #: changedetectionio/blueprint/ui/__init__.py:330 #, python-brace-format msgid "" -"Could not share, something went wrong while communicating with the share " -"server - {}" -msgstr "" +"Could not share, something went wrong while communicating with the share server - " +"{}" +msgstr "无法分享,与分享服务器通信时出错 - {}" #: changedetectionio/blueprint/ui/diff.py:93 #: changedetectionio/blueprint/ui/diff.py:154 @@ -1213,68 +1168,66 @@ msgstr "" #: changedetectionio/blueprint/ui/preview.py:36 #: changedetectionio/blueprint/ui/preview.py:160 msgid "No history found for the specified link, bad link?" -msgstr "" +msgstr "未找到该链接的历史记录,链接是否有误?" #: changedetectionio/blueprint/ui/diff.py:98 msgid "" -"Not enough history (2 snapshots required) to show difference page for " -"this watch." -msgstr "" +"Not enough history (2 snapshots required) to show difference page for this watch." +msgstr "历史记录不足(需要 2 个快照),无法显示该监控项的差异页。" #: changedetectionio/blueprint/ui/edit.py:35 msgid "No watches to edit" -msgstr "" +msgstr "没有可编辑的监控项" #: changedetectionio/blueprint/ui/edit.py:42 #, python-brace-format msgid "No watch with the UUID {} found." -msgstr "" +msgstr "未找到 UUID 为 {} 的监控项。" #: changedetectionio/blueprint/ui/edit.py:50 #, python-brace-format msgid "Switched to mode - {}." -msgstr "" +msgstr "已切换到模式 - {}。" #: changedetectionio/blueprint/ui/edit.py:69 #, python-brace-format msgid "Cannot load the edit form for processor/plugin '{}', plugin missing?" -msgstr "" +msgstr "无法加载处理器/插件 '{}' 的编辑表单,插件是否缺失?" #: changedetectionio/blueprint/ui/edit.py:239 msgid "Updated watch - unpaused!" -msgstr "" +msgstr "监控项已更新并取消暂停!" #: changedetectionio/blueprint/ui/edit.py:239 -#, fuzzy msgid "Updated watch." -msgstr "删除手表?" +msgstr "监控项已更新。" #: changedetectionio/blueprint/ui/preview.py:78 msgid "Preview unavailable - No fetch/check completed or triggers not reached" -msgstr "" +msgstr "无法预览 - 尚未完成抓取/检查或未满足触发条件" #: changedetectionio/blueprint/ui/views.py:24 #, python-brace-format msgid "Warning, URL {} already exists" -msgstr "" +msgstr "警告:URL {} 已存在" #: changedetectionio/blueprint/ui/views.py:32 msgid "Watch added in Paused state, saving will unpause." -msgstr "" +msgstr "监控项已以暂停状态添加,保存后将取消暂停。" #: changedetectionio/blueprint/ui/views.py:37 msgid "Watch added." -msgstr "" +msgstr "监控项已添加。" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:12 msgid "" -"This will remove version history (snapshots) for ALL watches, but keep " -"your list of URLs!" -msgstr "" +"This will remove version history (snapshots) for ALL watches, but keep your list " +"of URLs!" +msgstr "这将删除所有监控项的版本历史(快照),但会保留 URL 列表!" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:13 msgid "You may like to use the" -msgstr "您可能喜欢使用" +msgstr "你可能需要先使用" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:13 msgid "BACKUP" @@ -1282,7 +1235,7 @@ msgstr "备份" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:13 msgid "link first." -msgstr "先链接。" +msgstr "链接。" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:17 msgid "Confirmation text" @@ -1290,19 +1243,19 @@ msgstr "确认文本" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:27 msgid "Type in the word" -msgstr "输入单词" +msgstr "请输入" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:27 msgid "clear" -msgstr "清除" +msgstr "clear" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:27 msgid "to confirm that you understand." -msgstr "以确认您已理解。" +msgstr "以确认你已理解。" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:33 msgid "Clear History!" -msgstr "清晰的历史记录" +msgstr "清除历史记录!" #: changedetectionio/blueprint/ui/templates/clear_all_history.html:39 #: changedetectionio/templates/base.html:379 @@ -1312,7 +1265,7 @@ msgstr "取消" #: changedetectionio/blueprint/ui/templates/diff-offscreen-options.html:3 msgid "Share diff as image" -msgstr "将差异共享为图像" +msgstr "将差异分享为图片" #: changedetectionio/blueprint/ui/templates/diff-offscreen-options.html:3 msgid "Share as Image" @@ -1320,11 +1273,11 @@ msgstr "分享为图片" #: changedetectionio/blueprint/ui/templates/diff-offscreen-options.html:6 msgid "Ignore any lines matching" -msgstr "忽略任何匹配的行" +msgstr "忽略匹配以下内容的行" #: changedetectionio/blueprint/ui/templates/diff-offscreen-options.html:9 msgid "Ignore any lines matching excluding digits" -msgstr "忽略任何匹配排除数字的行" +msgstr "忽略匹配以下内容的行(排除数字)" #: changedetectionio/blueprint/ui/templates/diff.html:28 msgid "From" @@ -1336,19 +1289,19 @@ msgstr "到" #: changedetectionio/blueprint/ui/templates/diff.html:53 msgid "Words" -msgstr "密码" +msgstr "单词" #: changedetectionio/blueprint/ui/templates/diff.html:57 msgid "Lines" -msgstr "登录" +msgstr "行" #: changedetectionio/blueprint/ui/templates/diff.html:61 msgid "Ignore Whitespace" -msgstr "忽略空格" +msgstr "忽略空白" #: changedetectionio/blueprint/ui/templates/diff.html:65 msgid "Same/non-changed" -msgstr "改变了" +msgstr "未变化" #: changedetectionio/blueprint/ui/templates/diff.html:69 msgid "Removed" @@ -1357,27 +1310,27 @@ msgstr "已删除" #: changedetectionio/blueprint/ui/templates/diff.html:73 #: changedetectionio/blueprint/ui/templates/edit.html:327 msgid "Added" -msgstr "额外" +msgstr "新增" #: changedetectionio/blueprint/ui/templates/diff.html:77 #: changedetectionio/blueprint/ui/templates/edit.html:327 msgid "Replaced" -msgstr "已更换" +msgstr "替换" #: changedetectionio/blueprint/ui/templates/diff.html:82 #: changedetectionio/blueprint/ui/templates/preview.html:36 msgid "Keyboard:" -msgstr "键盘:" +msgstr "快捷键:" #: changedetectionio/blueprint/ui/templates/diff.html:83 #: changedetectionio/blueprint/ui/templates/preview.html:37 msgid "Previous" -msgstr "预览" +msgstr "上一项" #: changedetectionio/blueprint/ui/templates/diff.html:84 #: changedetectionio/blueprint/ui/templates/preview.html:38 msgid "Next" -msgstr "下一个" +msgstr "下一项" #: changedetectionio/blueprint/ui/templates/diff.html:91 msgid "Jump to next difference" @@ -1385,7 +1338,7 @@ msgstr "跳转到下一个差异" #: changedetectionio/blueprint/ui/templates/diff.html:91 msgid "Jump" -msgstr "跳" +msgstr "跳转" #: changedetectionio/blueprint/ui/templates/diff.html:97 #: changedetectionio/blueprint/ui/templates/preview.html:45 @@ -1413,33 +1366,33 @@ msgstr "提取数据" #: changedetectionio/blueprint/ui/templates/diff.html:107 msgid "seconds ago." -msgstr "几秒钟前。" +msgstr "秒前。" #: changedetectionio/blueprint/ui/templates/diff.html:114 #: changedetectionio/blueprint/ui/templates/preview.html:59 #: changedetectionio/blueprint/ui/templates/preview.html:66 msgid "seconds ago" -msgstr "几秒钟前" +msgstr "秒前" #: changedetectionio/blueprint/ui/templates/diff.html:115 msgid "Current error-ing screenshot from most recent request" -msgstr "最近请求的当前错误屏幕截图" +msgstr "最近请求的错误截图" #: changedetectionio/blueprint/ui/templates/diff.html:127 msgid "Pro-tip: You can enable" -msgstr "专业提示:您可以启用" +msgstr "提示:你可以启用" #: changedetectionio/blueprint/ui/templates/diff.html:127 msgid "\"share access when password is enabled\"" -msgstr "" +msgstr "“启用密码时允许共享访问”" #: changedetectionio/blueprint/ui/templates/diff.html:127 msgid "from settings." -msgstr "设置" +msgstr "(设置中)" #: changedetectionio/blueprint/ui/templates/diff.html:133 msgid "Goto single snapshot" -msgstr "转到单个快照" +msgstr "查看单个快照" #: changedetectionio/blueprint/ui/templates/diff.html:138 #: changedetectionio/blueprint/ui/templates/edit.html:125 @@ -1448,32 +1401,32 @@ msgstr "提示:" #: changedetectionio/blueprint/ui/templates/diff.html:138 msgid "Highlight text to share or add to ignore lists." -msgstr "突出显示要共享或添加到忽略列表的文本。" +msgstr "选中文本以分享或加入忽略列表。" #: changedetectionio/blueprint/ui/templates/diff.html:144 #: changedetectionio/blueprint/ui/templates/preview.html:80 msgid "" -"For now, Differences are performed on text, not graphically, only the " -"latest screenshot is available." -msgstr "" +"For now, Differences are performed on text, not graphically, only the latest " +"screenshot is available." +msgstr "目前差异仅按文本比较,非图形对比,只提供最新截图。" #: changedetectionio/blueprint/ui/templates/diff.html:149 #: changedetectionio/blueprint/ui/templates/preview.html:86 msgid "Current screenshot from most recent request" -msgstr "最近请求的当前屏幕截图" +msgstr "最近请求的当前截图" #: changedetectionio/blueprint/ui/templates/diff.html:151 #: changedetectionio/blueprint/ui/templates/preview.html:88 msgid "No screenshot available just yet! Try rechecking the page." -msgstr "目前还没有截图!尝试重新检查页面。" +msgstr "目前还没有截图!请尝试重新检查页面。" #: changedetectionio/blueprint/ui/templates/diff.html:154 msgid "Screenshot requires Playwright/WebDriver enabled" -msgstr "屏幕截图需要启用 Playwright/WebDriver" +msgstr "截图需要启用 Playwright/WebDriver" #: changedetectionio/blueprint/ui/templates/edit.html:48 msgid "Request" -msgstr "要求" +msgstr "请求" #: changedetectionio/blueprint/ui/templates/edit.html:52 msgid "Browser Steps" @@ -1481,11 +1434,11 @@ msgstr "浏览器步骤" #: changedetectionio/blueprint/ui/templates/edit.html:55 msgid "Visual Filter Selector" -msgstr "视觉过滤器选择器" +msgstr "可视化过滤器选择器" #: changedetectionio/blueprint/ui/templates/edit.html:57 msgid "Conditions" -msgstr "状况" +msgstr "条件" #: changedetectionio/blueprint/ui/templates/edit.html:60 msgid "Stats" @@ -1494,43 +1447,42 @@ msgstr "统计" #: changedetectionio/blueprint/ui/templates/edit.html:73 #: changedetectionio/blueprint/ui/templates/edit.html:313 msgid "Some sites use JavaScript to create the content, for this you should" -msgstr "有些网站使用 JavaScript 来创建内容,为此您应该" +msgstr "有些网站使用 JavaScript 生成内容,此时你应该" #: changedetectionio/blueprint/ui/templates/edit.html:73 #: changedetectionio/blueprint/ui/templates/edit.html:313 msgid "use the Chrome/WebDriver Fetcher" -msgstr "使用 Chrome/WebDriver Fetcher" +msgstr "使用 Chrome/WebDriver 抓取器" #: changedetectionio/blueprint/ui/templates/edit.html:74 msgid "Variables are supported in the URL" -msgstr "URL 中支持变量" +msgstr "URL 支持变量" #: changedetectionio/blueprint/ui/templates/edit.html:74 #: changedetectionio/blueprint/ui/templates/edit.html:180 #: changedetectionio/blueprint/ui/templates/edit.html:189 msgid "help and examples here" -msgstr "帮助和示例在这里" +msgstr "帮助与示例在此" #: changedetectionio/blueprint/ui/templates/edit.html:78 msgid "Organisational tag/group name used in the main listing page" -msgstr "主列表页面中使用的组织标签/组名称" +msgstr "主列表中使用的组织标签/分组名称" #: changedetectionio/blueprint/ui/templates/edit.html:85 msgid "" -"Automatically uses the page title if found, you can also use your own " -"title/description here" -msgstr "" +"Automatically uses the page title if found, you can also use your own title/" +"description here" +msgstr "若检测到页面标题将自动使用,你也可以在此自定义标题/描述" #: changedetectionio/blueprint/ui/templates/edit.html:95 msgid "The interval/amount of time between each check." -msgstr "每次检查之间的间隔/时间量。" +msgstr "每次检查之间的时间间隔。" #: changedetectionio/blueprint/ui/templates/edit.html:110 msgid "" -"Sends a notification when the filter can no longer be seen on the page, " -"good for knowing when the page changed and your filter will not work " -"anymore." -msgstr "" +"Sends a notification when the filter can no longer be seen on the page, good for " +"knowing when the page changed and your filter will not work anymore." +msgstr "当页面上找不到该过滤器时发送通知,便于知晓页面已变化且过滤器不再适用。" #: changedetectionio/blueprint/ui/templates/edit.html:123 msgid "Use the" @@ -1538,53 +1490,52 @@ msgstr "使用" #: changedetectionio/blueprint/ui/templates/edit.html:123 msgid "Basic" -msgstr "基本的" +msgstr "基础" #: changedetectionio/blueprint/ui/templates/edit.html:123 -msgid "" -"method (default) where your watched site doesn't need Javascript to " -"render." -msgstr "" +msgid "method (default) where your watched site doesn't need Javascript to render." +msgstr "方式(默认),适用于无需 JavaScript 渲染的网站。" #: changedetectionio/blueprint/ui/templates/edit.html:124 msgid "The" -msgstr "这" +msgstr "该" #: changedetectionio/blueprint/ui/templates/edit.html:124 msgid "Chrome/Javascript" -msgstr "Chrome/Javascript" +msgstr "Chrome/JavaScript" #: changedetectionio/blueprint/ui/templates/edit.html:124 msgid "" -"method requires a network connection to a running WebDriver+Chrome " -"server, set by the ENV var 'WEBDRIVER_URL'." +"method requires a network connection to a running WebDriver+Chrome server, set by " +"the ENV var 'WEBDRIVER_URL'." msgstr "" +"方式需要连接正在运行的 WebDriver+Chrome 服务器,通过环境变量 'WEBDRIVER_URL' 设置。" #: changedetectionio/blueprint/ui/templates/edit.html:125 msgid "Connect using Bright Data and Oxylabs Proxies, find out more here." -msgstr "使用 Bright Data 和 Oxylabs Proxies 进行连接,在此处了解更多信息。" +msgstr "使用 Bright Data 和 Oxylabs 代理连接,更多信息见此处。" #: changedetectionio/blueprint/ui/templates/edit.html:130 msgid "Check/Scan all" -msgstr "重新检查所有" +msgstr "检查/扫描全部" #: changedetectionio/blueprint/ui/templates/edit.html:133 msgid "Choose a proxy for this watch" -msgstr "此手表的 RSS 源" +msgstr "为此监控项选择代理" #: changedetectionio/blueprint/ui/templates/edit.html:143 msgid "" -"If you're having trouble waiting for the page to be fully rendered (text " -"missing etc), try increasing the 'wait' time here." -msgstr "" +"If you're having trouble waiting for the page to be fully rendered (text missing " +"etc), try increasing the 'wait' time here." +msgstr "如果页面渲染未完成(缺文本等),可尝试增加这里的等待时间。" #: changedetectionio/blueprint/ui/templates/edit.html:145 msgid "This will wait" -msgstr "这会等待" +msgstr "这将等待" #: changedetectionio/blueprint/ui/templates/edit.html:145 msgid "seconds before extracting the text." -msgstr "提取文本前几秒。" +msgstr "秒后再提取文本。" #: changedetectionio/blueprint/ui/templates/edit.html:147 msgid "Using the current global default settings" @@ -1597,33 +1548,33 @@ msgstr "显示高级选项" #: changedetectionio/blueprint/ui/templates/edit.html:157 msgid "" -"Run this code before performing change detection, handy for filling in " -"fields and other actions" -msgstr "" +"Run this code before performing change detection, handy for filling in fields and " +"other actions" +msgstr "在执行变更检测前运行此代码,便于填写表单等操作" #: changedetectionio/blueprint/ui/templates/edit.html:158 msgid "More help and examples here" -msgstr "更多帮助和示例请参见此处" +msgstr "更多帮助与示例请见此处" #: changedetectionio/blueprint/ui/templates/edit.html:180 msgid "Variables are supported in the request body" -msgstr "请求正文中支持变量" +msgstr "请求正文支持变量" #: changedetectionio/blueprint/ui/templates/edit.html:189 msgid "Variables are supported in the request header values" -msgstr "请求标头值支持变量" +msgstr "请求头的值支持变量" #: changedetectionio/blueprint/ui/templates/edit.html:192 msgid "Alert! Extra headers file found and will be added to this watch!" -msgstr "警报!找到额外的头文件并将其添加到此手表中!" +msgstr "警告!发现额外的请求头文件,将添加到此监控项!" #: changedetectionio/blueprint/ui/templates/edit.html:194 msgid "Headers can be also read from a file in your data-directory" -msgstr "还可以从数据目录中的文件中读取标头" +msgstr "请求头也可从数据目录中的文件读取" #: changedetectionio/blueprint/ui/templates/edit.html:194 msgid "Read more here" -msgstr "在这里阅读更多内容" +msgstr "在此了解更多" #: changedetectionio/blueprint/ui/templates/edit.html:197 msgid "Not supported by Selenium browser" @@ -1631,15 +1582,15 @@ msgstr "Selenium 浏览器不支持" #: changedetectionio/blueprint/ui/templates/edit.html:221 msgid "Turn on text finder" -msgstr "打开文本查找器" +msgstr "开启文本查找器" #: changedetectionio/blueprint/ui/templates/edit.html:224 msgid "Please wait, first browser step can take a little time to load.." -msgstr "请稍候,第一个浏览器步骤可能需要一些时间来加载。" +msgstr "请稍候,首个浏览器步骤可能需要一些时间加载.." #: changedetectionio/blueprint/ui/templates/edit.html:231 msgid "Click here to Start" -msgstr "单击此处开始" +msgstr "点击此处开始" #: changedetectionio/blueprint/ui/templates/edit.html:233 msgid "Please allow 10-15 seconds for the browser to connect." @@ -1647,18 +1598,18 @@ msgstr "请等待 10-15 秒让浏览器连接。" #: changedetectionio/blueprint/ui/templates/edit.html:242 msgid "Press \"Play\" to start." -msgstr "" +msgstr "点击“播放”开始。" #: changedetectionio/blueprint/ui/templates/edit.html:249 #: changedetectionio/blueprint/ui/templates/edit.html:419 msgid "Visual Selector data is not ready, watch needs to be checked atleast once." -msgstr "视觉选择器数据尚未准备好,至少需要检查一次手表。" +msgstr "可视化选择器数据尚未就绪,监控项至少需要检查一次。" #: changedetectionio/blueprint/ui/templates/edit.html:253 msgid "" -"Sorry, this functionality only works with fetchers that support " -"interactive Javascript (so far only Playwright based fetchers)" -msgstr "" +"Sorry, this functionality only works with fetchers that support interactive " +"Javascript (so far only Playwright based fetchers)" +msgstr "抱歉,此功能仅适用于支持交互式 JavaScript 的抓取器(目前仅 Playwright)。" #: changedetectionio/blueprint/ui/templates/edit.html:254 #: changedetectionio/blueprint/ui/templates/edit.html:424 @@ -1668,60 +1619,60 @@ msgstr "你需要" #: changedetectionio/blueprint/ui/templates/edit.html:254 #: changedetectionio/blueprint/ui/templates/edit.html:424 msgid "Set the fetch method" -msgstr "设置获取方法" +msgstr "设置抓取方式" #: changedetectionio/blueprint/ui/templates/edit.html:254 msgid "to one that supports interactive Javascript." -msgstr "到支持交互式 Javascript 的一个。" +msgstr "为支持交互式 JavaScript 的方式。" #: changedetectionio/blueprint/ui/templates/edit.html:297 msgid "" -"Use the verify (✓) button to test if a condition passes against the " -"current snapshot." -msgstr "" +"Use the verify (✓) button to test if a condition passes against the current " +"snapshot." +msgstr "使用验证(✓)按钮测试条件是否符合当前快照。" #: changedetectionio/blueprint/ui/templates/edit.html:298 msgid "Read a quick tutorial about" -msgstr "阅读有关以下内容的快速教程" +msgstr "阅读快速教程" #: changedetectionio/blueprint/ui/templates/edit.html:298 msgid "using conditional web page changes here" -msgstr "此处使用条件网页更改" +msgstr "在此了解如何使用条件式网页变更" #: changedetectionio/blueprint/ui/templates/edit.html:303 msgid "Activate preview" -msgstr "预览" +msgstr "启用预览" #: changedetectionio/blueprint/ui/templates/edit.html:307 msgid "Pro-tips:" -msgstr "专业提示:" +msgstr "小贴士:" #: changedetectionio/blueprint/ui/templates/edit.html:310 msgid "Use the preview page to see your filters and triggers highlighted." -msgstr "使用预览页面查看突出显示的过滤器和触发器。" +msgstr "在预览页查看高亮的过滤器和触发器。" #: changedetectionio/blueprint/ui/templates/edit.html:322 msgid "Limit trigger/ignore/block/extract to;" -msgstr "将触发/忽略/阻止/提取限制为;" +msgstr "将触发/忽略/阻止/提取限定为;" #: changedetectionio/blueprint/ui/templates/edit.html:326 msgid "" -"Note: Depending on the length and similarity of the text on each line, " -"the algorithm may consider an" -msgstr "" +"Note: Depending on the length and similarity of the text on each line, the " +"algorithm may consider an" +msgstr "注意:根据每行文本长度与相似度,算法可能把" #: changedetectionio/blueprint/ui/templates/edit.html:326 #: changedetectionio/blueprint/ui/templates/edit.html:328 msgid "addition" -msgstr "添加" +msgstr "新增" #: changedetectionio/blueprint/ui/templates/edit.html:326 msgid "instead of" -msgstr "而不是" +msgstr "视为" #: changedetectionio/blueprint/ui/templates/edit.html:326 msgid "replacement" -msgstr "替代品" +msgstr "替换" #: changedetectionio/blueprint/ui/templates/edit.html:326 msgid "for example." @@ -1729,11 +1680,11 @@ msgstr "例如。" #: changedetectionio/blueprint/ui/templates/edit.html:327 msgid "So it's always better to select" -msgstr "所以选择总是更好" +msgstr "因此当你关注新增内容时,最好选择" #: changedetectionio/blueprint/ui/templates/edit.html:327 msgid "when you're interested in new content." -msgstr "当您对新内容感兴趣时。" +msgstr "。" #: changedetectionio/blueprint/ui/templates/edit.html:328 msgid "When content is merely moved in a list, it will also trigger an" @@ -1741,36 +1692,35 @@ msgstr "当内容仅在列表中移动时,也会触发" #: changedetectionio/blueprint/ui/templates/edit.html:328 msgid "consider enabling" -msgstr "考虑启用" +msgstr "建议启用" #: changedetectionio/blueprint/ui/templates/edit.html:328 msgid "Only trigger when unique lines appear" -msgstr "仅当出现唯一线条时触发" +msgstr "仅当出现新的唯一行时触发" #: changedetectionio/blueprint/ui/templates/edit.html:332 msgid "" -"Good for websites that just move the content around, and you want to know" -" when NEW content is added, compares new lines against all history for " -"this watch." +"Good for websites that just move the content around, and you want to know when NEW " +"content is added, compares new lines against all history for this watch." msgstr "" +"适合仅移动内容的网站,想知道新增内容时使用,会将新行与该监控项的全部历史进行比对。" #: changedetectionio/blueprint/ui/templates/edit.html:340 msgid "" -"Helps reduce changes detected caused by sites shuffling lines around, " -"combine with" -msgstr "" +"Helps reduce changes detected caused by sites shuffling lines around, combine with" +msgstr "有助于减少因行顺序变化导致的变更,可结合" #: changedetectionio/blueprint/ui/templates/edit.html:340 msgid "check unique lines" -msgstr "检查独特的线路" +msgstr "检查唯一行" #: changedetectionio/blueprint/ui/templates/edit.html:340 msgid "below." -msgstr "以下。" +msgstr "一起使用。" #: changedetectionio/blueprint/ui/templates/edit.html:344 msgid "Remove any whitespace before and after each line of text" -msgstr "删除每行文本前后的所有空格" +msgstr "移除每行文本前后的空白" #: changedetectionio/blueprint/ui/templates/edit.html:358 #: changedetectionio/blueprint/ui/templates/edit.html:361 @@ -1780,7 +1730,7 @@ msgstr "加载中..." #: changedetectionio/blueprint/ui/templates/edit.html:386 msgid "The Visual Selector tool lets you select the" -msgstr "视觉选择器工具可让您选择" +msgstr "可视化选择器工具可让你选择" #: changedetectionio/blueprint/ui/templates/edit.html:386 msgid "text" @@ -1788,25 +1738,26 @@ msgstr "文本" #: changedetectionio/blueprint/ui/templates/edit.html:386 msgid "" -"elements that will be used for the change detection. It automatically " -"fills-in the filters in the \"CSS/JSONPath/JQ/XPath Filters\" box of the" +"elements that will be used for the change detection. It automatically fills-in the " +"filters in the \"CSS/JSONPath/JQ/XPath Filters\" box of the" msgstr "" +"用于变更检测的元素,并会自动填入“CSS/JSONPath/JQ/XPath 过滤器”选项卡中的过滤器" #: changedetectionio/blueprint/ui/templates/edit.html:386 msgid "tab. Use" -msgstr "暂停" +msgstr "使用" #: changedetectionio/blueprint/ui/templates/edit.html:386 msgid "Shift+Click" -msgstr "Shift+单击" +msgstr "Shift+点击" #: changedetectionio/blueprint/ui/templates/edit.html:386 msgid "to select multiple items." -msgstr "选择多个项目。" +msgstr "以选择多个项。" #: changedetectionio/blueprint/ui/templates/edit.html:391 msgid "Selection Mode:" -msgstr "选择方式:" +msgstr "选择模式:" #: changedetectionio/blueprint/ui/templates/edit.html:394 msgid "Select by element" @@ -1814,7 +1765,7 @@ msgstr "按元素选择" #: changedetectionio/blueprint/ui/templates/edit.html:398 msgid "Draw area" -msgstr "绘图区" +msgstr "框选区域" #: changedetectionio/blueprint/ui/templates/edit.html:406 msgid "Clear selection" @@ -1822,45 +1773,45 @@ msgstr "清除选择" #: changedetectionio/blueprint/ui/templates/edit.html:408 msgid "One moment, fetching screenshot and element information.." -msgstr "一会儿,正在获取屏幕截图和元素信息.." +msgstr "稍等,正在获取截图和元素信息.." #: changedetectionio/blueprint/ui/templates/edit.html:417 msgid "Currently:" -msgstr "现在:" +msgstr "当前:" #: changedetectionio/blueprint/ui/templates/edit.html:423 msgid "" -"Sorry, this functionality only works with fetchers that support " -"Javascript and screenshots (such as playwright etc)." -msgstr "" +"Sorry, this functionality only works with fetchers that support Javascript and " +"screenshots (such as playwright etc)." +msgstr "抱歉,此功能仅适用于支持 JavaScript 和截图的抓取器(如 Playwright 等)。" #: changedetectionio/blueprint/ui/templates/edit.html:424 msgid "to one that supports Javascript and screenshots." -msgstr "到支持 Javascript 和屏幕截图的一个。" +msgstr "为支持 JavaScript 和截图的方式。" #: changedetectionio/blueprint/ui/templates/edit.html:441 msgid "Check count" -msgstr "检查计数" +msgstr "检查次数" #: changedetectionio/blueprint/ui/templates/edit.html:445 msgid "Consecutive filter failures" -msgstr "连续过滤器故障" +msgstr "连续过滤失败次数" #: changedetectionio/blueprint/ui/templates/edit.html:449 msgid "History length" -msgstr "历史" +msgstr "历史长度" #: changedetectionio/blueprint/ui/templates/edit.html:453 msgid "Last fetch duration" -msgstr "上次获取持续时间" +msgstr "上次抓取耗时" #: changedetectionio/blueprint/ui/templates/edit.html:457 msgid "Notification alert count" -msgstr "通知警报计数" +msgstr "通知告警次数" #: changedetectionio/blueprint/ui/templates/edit.html:461 msgid "Server type reply" -msgstr "服务器类型回复" +msgstr "服务器类型响应" #: changedetectionio/blueprint/ui/templates/edit.html:475 msgid "Download latest HTML snapshot" @@ -1868,37 +1819,36 @@ msgstr "下载最新的 HTML 快照" #: changedetectionio/blueprint/ui/templates/edit.html:488 msgid "Delete Watch?" -msgstr "删除手表?" +msgstr "删除监控项?" #: changedetectionio/blueprint/ui/templates/edit.html:489 msgid "Are you sure you want to delete the watch for:" -msgstr "您确定要删除以下对象的手表吗:" +msgstr "确定要删除以下监控项吗:" #: changedetectionio/blueprint/ui/templates/edit.html:489 msgid "This action cannot be undone." -msgstr "此操作无法撤消。" +msgstr "此操作不可撤销。" #: changedetectionio/blueprint/ui/templates/edit.html:495 msgid "Clear History?" -msgstr "清晰的历史记录" +msgstr "清除历史记录?" #: changedetectionio/blueprint/ui/templates/edit.html:496 msgid "Are you sure you want to clear all history for:" -msgstr "您确定要清除以下内容的所有历史记录:" +msgstr "确定要清除以下监控项的全部历史记录吗:" #: changedetectionio/blueprint/ui/templates/edit.html:496 msgid "" -"This will remove all snapshots and previous versions. This action cannot " -"be undone." -msgstr "" +"This will remove all snapshots and previous versions. This action cannot be undone." +msgstr "这将删除所有快照和历史版本。此操作不可撤销。" #: changedetectionio/blueprint/ui/templates/edit.html:497 msgid "Clear History" -msgstr "清晰的历史记录" +msgstr "清除历史记录" #: changedetectionio/blueprint/ui/templates/edit.html:499 msgid "Clone & Edit" -msgstr "克隆和编辑" +msgstr "克隆并编辑" #: changedetectionio/blueprint/ui/templates/preview.html:22 msgid "Select timestamp" @@ -1906,37 +1856,37 @@ msgstr "选择时间戳" #: changedetectionio/blueprint/ui/templates/preview.html:31 msgid "Go" -msgstr "去" +msgstr "前往" #: changedetectionio/blueprint/ui/templates/preview.html:69 msgid "Current erroring screenshot from most recent request" -msgstr "最近请求的当前错误屏幕截图" +msgstr "最近请求的错误截图" #: changedetectionio/blueprint/ui/templates/preview.html:91 msgid "" -"Screenshot requires a Content Fetcher ( Sockpuppetbrowser, selenium, etc " -") that supports screenshots." -msgstr "" +"Screenshot requires a Content Fetcher ( Sockpuppetbrowser, selenium, etc ) that " +"supports screenshots." +msgstr "截图需要支持截图的内容抓取器(如 Sockpuppetbrowser、Selenium 等)。" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:31 msgid "Add a new web page change detection watch" -msgstr "添加新的网页更改检测监视" +msgstr "新增网页变更监控" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:34 msgid "Watch this URL!" -msgstr "监控此URL!" +msgstr "监控此 URL!" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:35 msgid "Edit first then Watch" -msgstr "编辑后监控" +msgstr "先编辑,再监控" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:45 msgid "Create a shareable link" -msgstr "创建可共享链接" +msgstr "创建可分享链接" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:45 msgid "Tip: You can also add 'shared' watches." -msgstr "提示:您还可以添加“共享”手表。" +msgstr "提示:你也可以添加“共享”的监控项。" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:45 msgid "More info" @@ -1952,7 +1902,7 @@ msgstr "取消暂停" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:55 msgid "Mute" -msgstr "沉默的" +msgstr "静音" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:56 msgid "UnMute" @@ -1961,7 +1911,7 @@ msgstr "取消静音" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:57 #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:248 msgid "Recheck" -msgstr "复查" +msgstr "重新检查" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:58 msgid "Tag" @@ -1969,7 +1919,7 @@ msgstr "标签" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:59 msgid "Mark viewed" -msgstr "标记已查看" +msgstr "标记为已读" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:60 msgid "Use default notification" @@ -1981,17 +1931,17 @@ msgstr "清除错误" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:65 msgid "Clear Histories" -msgstr "清晰的历史记录" +msgstr "清除历史记录" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:66 msgid "" -"<p>Are you sure you want to clear history for the selected " -"items?</p><p>This action cannot be undone.</p>" -msgstr "" +"<p>Are you sure you want to clear history for the selected items?</p><p>This " +"action cannot be undone.</p>" +msgstr "<p>确定要清除所选项的历史记录吗?</p><p>此操作不可撤销。</p>" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:67 msgid "OK" -msgstr "好的" +msgstr "确定" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:67 msgid "Clear/reset history" @@ -1999,17 +1949,17 @@ msgstr "清除/重置历史记录" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:71 msgid "Delete Watches?" -msgstr "删除手表?" +msgstr "删除监控项?" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:72 msgid "" -"<p>Are you sure you want to delete the selected " -"watches?</strong></p><p>This action cannot be undone.</p>" -msgstr "" +"<p>Are you sure you want to delete the selected watches?</strong></p><p>This " +"action cannot be undone.</p>" +msgstr "<p>确定要删除所选监控项吗?</p><p>此操作不可撤销。</p>" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:78 msgid "Searching" -msgstr "搜寻中" +msgstr "搜索中" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:80 msgid "All" @@ -2021,24 +1971,24 @@ msgstr "网站" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:120 msgid "Restock & Price" -msgstr "补货及价格" +msgstr "补货与价格" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:122 #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:123 msgid "Last" -msgstr "最后的" +msgstr "最近" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:122 msgid "Checked" -msgstr "已检查" +msgstr "检查" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:123 msgid "Changed" -msgstr "改变了" +msgstr "变更" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:130 msgid "No website watches configured, please add a URL in the box above, or" -msgstr "未配置网站监视,请在上面的框中添加 URL,或者" +msgstr "尚未配置网站监控项,请在上方输入 URL 或" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:130 msgid "import a list" @@ -2046,15 +1996,15 @@ msgstr "导入列表" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:213 msgid "Detecting restock and price" -msgstr "检测补货和价格" +msgstr "检测补货与价格" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:215 msgid "In stock" -msgstr "有存货" +msgstr "有库存" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:215 msgid "Not in stock" -msgstr "没有库存" +msgstr "无库存" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:221 msgid "Price" @@ -2067,11 +2017,11 @@ msgstr "暂无信息" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:234 #: changedetectionio/templates/base.html:353 msgid "Checking now" -msgstr "立即检查" +msgstr "正在检查" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:247 msgid "Queued" -msgstr "排队" +msgstr "队列中" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:250 msgid "History" @@ -2087,12 +2037,12 @@ msgstr "有错误" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:263 msgid "Mark all viewed" -msgstr "标记所有已查看" +msgstr "全部标记为已读" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:267 #, python-format msgid "Mark all viewed in '%(title)s'" -msgstr "标记所有在“%(title)s”中查看过的内容" +msgstr "将“%(title)s”中的全部标记为已读" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:271 msgid "Unread" @@ -2100,51 +2050,51 @@ msgstr "未读" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:274 msgid "Recheck all" -msgstr "重新检查所有" +msgstr "重新检查全部" #: changedetectionio/blueprint/watchlist/templates/watch-overview.html:274 #, python-format msgid "in '%(title)s'" -msgstr "在“%(title)s”中" +msgstr "(“%(title)s”中)" #: changedetectionio/processors/extract.py:131 msgid "No matches found while scanning all of the watch history for that RegEx." -msgstr "" +msgstr "扫描全部监控历史未找到匹配该正则的内容。" #: changedetectionio/processors/image_ssim_diff/difference.py:328 msgid "Not enough history to compare. Need at least 2 snapshots." -msgstr "" +msgstr "历史记录不足以比较,至少需要 2 个快照。" #: changedetectionio/processors/image_ssim_diff/difference.py:363 #, python-brace-format msgid "Failed to load screenshots: {}" -msgstr "" +msgstr "加载截图失败:{}" #: changedetectionio/processors/image_ssim_diff/difference.py:412 #, python-brace-format msgid "Failed to calculate diff: {}" -msgstr "" +msgstr "计算差异失败:{}" #: changedetectionio/processors/image_ssim_diff/forms.py:19 #: changedetectionio/processors/image_ssim_diff/forms.py:69 msgid "Bounding box value is too long" -msgstr "边界框值太长" +msgstr "边界框值过长" #: changedetectionio/processors/image_ssim_diff/forms.py:23 msgid "Bounding box must be in format: x,y,width,height (integers only)" -msgstr "边界框的格式必须为:x,y,宽度,高度(仅限整数)" +msgstr "边界框格式必须为:x,y,width,height(仅限整数)" #: changedetectionio/processors/image_ssim_diff/forms.py:29 msgid "Bounding box values must be non-negative" -msgstr "边界框值必须是非负数" +msgstr "边界框值必须为非负数" #: changedetectionio/processors/image_ssim_diff/forms.py:31 msgid "Bounding box values are too large" -msgstr "边界框值太大" +msgstr "边界框值过大" #: changedetectionio/processors/image_ssim_diff/forms.py:40 msgid "Selection mode must be either \"element\" or \"draw\"" -msgstr "" +msgstr "选择模式必须为 “element” 或 “draw”" #: changedetectionio/processors/image_ssim_diff/forms.py:47 msgid "Minimum Change Percentage" @@ -2155,22 +2105,20 @@ msgid "Pixel Difference Sensitivity" msgstr "像素差异灵敏度" #: changedetectionio/processors/image_ssim_diff/forms.py:58 -#, fuzzy msgid "Use global default" -msgstr "使用系统默认值" +msgstr "使用全局默认" #: changedetectionio/processors/image_ssim_diff/forms.py:66 msgid "Bounding Box" msgstr "边界框" #: changedetectionio/processors/image_ssim_diff/forms.py:76 -#, fuzzy msgid "Selection Mode" -msgstr "选择方式:" +msgstr "选择模式" #: changedetectionio/processors/image_ssim_diff/forms.py:79 msgid "Selection mode value is too long" -msgstr "选择模式值太长" +msgstr "选择模式值过长" #: changedetectionio/processors/image_ssim_diff/forms.py:87 msgid "Screenshot Comparison" @@ -2178,15 +2126,15 @@ msgstr "截图对比" #: changedetectionio/processors/image_ssim_diff/preview.py:91 msgid "Preview unavailable - No snapshots captured yet" -msgstr "" +msgstr "无法预览 - 仍未捕获任何快照" #: changedetectionio/processors/image_ssim_diff/processor.py:21 msgid "Visual / Image screenshot change detection" -msgstr "视觉/图像截图变化检测" +msgstr "视觉/截图变更检测" #: changedetectionio/processors/image_ssim_diff/processor.py:22 msgid "Compares screenshots using fast OpenCV algorithm, 10-100x faster than SSIM" -msgstr "" +msgstr "使用快速的 OpenCV 算法对比截图,比 SSIM 快 10-100 倍" #: changedetectionio/processors/restock_diff/forms.py:15 msgid "Re-stock detection" @@ -2194,33 +2142,33 @@ msgstr "补货检测" #: changedetectionio/processors/restock_diff/forms.py:16 msgid "In Stock only (Out Of Stock -> In Stock only)" -msgstr "仅有库存(缺货 -> 仅有库存)" +msgstr "仅有库存(缺货 -> 有库存)" #: changedetectionio/processors/restock_diff/forms.py:17 msgid "Any availability changes" -msgstr "任何可用性变更" +msgstr "任何库存变化" #: changedetectionio/processors/restock_diff/forms.py:18 msgid "Off, don't follow availability/restock" -msgstr "关闭,不遵循库存/补货情况" +msgstr "关闭,不跟踪库存/补货" #: changedetectionio/processors/restock_diff/forms.py:21 msgid "Below price to trigger notification" -msgstr "低于价格触发通知" +msgstr "低于该价格时触发通知" #: changedetectionio/processors/restock_diff/forms.py:22 #: changedetectionio/processors/restock_diff/forms.py:24 msgid "No limit" -msgstr "无限制" +msgstr "不限" #: changedetectionio/processors/restock_diff/forms.py:23 msgid "Above price to trigger notification" -msgstr "高于价格触发通知" +msgstr "高于该价格时触发通知" #: changedetectionio/processors/restock_diff/forms.py:25 #, python-format msgid "Threshold in %% for price changes since the original price" -msgstr "自原始价格以来价格变化的阈值(百分比)" +msgstr "相对原始价格的变动阈值(百分比)" #: changedetectionio/processors/restock_diff/forms.py:28 msgid "Should be between 0 and 100" @@ -2228,199 +2176,179 @@ msgstr "应介于 0 到 100 之间" #: changedetectionio/processors/restock_diff/forms.py:31 msgid "Follow price changes" -msgstr "关注价格变化" +msgstr "跟踪价格变化" #: changedetectionio/processors/restock_diff/forms.py:37 -#, fuzzy msgid "Restock & Price Detection" -msgstr "补货及价格" +msgstr "补货与价格检测" #: changedetectionio/processors/restock_diff/processor.py:13 msgid "Re-stock & Price detection for pages with a SINGLE product" -msgstr "单个产品页面的补货和价格检测" +msgstr "适用于单一商品页面的补货与价格检测" #: changedetectionio/processors/restock_diff/processor.py:14 msgid "Detects if the product goes back to in-stock" -msgstr "检测产品是否恢复库存" +msgstr "检测商品是否恢复有库存" #: changedetectionio/processors/text_json_diff/processor.py:22 msgid "Webpage Text/HTML, JSON and PDF changes" -msgstr "网页文本/HTML、JSON 和 PDF 更改" +msgstr "网页文本/HTML、JSON 和 PDF 变更" #: changedetectionio/processors/text_json_diff/processor.py:23 msgid "Detects all text changes where possible" -msgstr "尽可能检测所有文本更改" +msgstr "尽可能检测所有文本变更" #: changedetectionio/templates/_helpers.html:25 msgid "Entry" -msgstr "" +msgstr "条目" #: changedetectionio/templates/_helpers.html:153 -#, fuzzy msgid "Actions" -msgstr "状况" +msgstr "操作" #: changedetectionio/templates/_helpers.html:172 msgid "Add a row/rule after" -msgstr "" +msgstr "在后面添加一行/规则" #: changedetectionio/templates/_helpers.html:173 msgid "Remove this row/rule" -msgstr "" +msgstr "删除此行/规则" #: changedetectionio/templates/_helpers.html:174 msgid "Verify this rule against current snapshot" -msgstr "" +msgstr "用当前快照验证此规则" #: changedetectionio/templates/_helpers.html:184 msgid "" -"Error - This watch needs Chrome (with playwright/sockpuppetbrowser), but " -"Chrome based fetching is not enabled." +"Error - This watch needs Chrome (with playwright/sockpuppetbrowser), but Chrome " +"based fetching is not enabled." msgstr "" +"错误 - 此监控项需要 Chrome(playwright/sockpuppetbrowser),但未启用基于 Chrome 的" +"抓取。" #: changedetectionio/templates/_helpers.html:184 msgid "Alternatively try our" -msgstr "" +msgstr "也可以试试我们的" #: changedetectionio/templates/_helpers.html:184 -msgid "" -"very affordable subscription based service which has all this setup for " -"you" -msgstr "" +msgid "very affordable subscription based service which has all this setup for you" +msgstr "价格实惠的订阅服务,已为你完成全部配置" #: changedetectionio/templates/_helpers.html:185 -#, fuzzy msgid "You may need to" -msgstr "你需要" +msgstr "你可能需要" #: changedetectionio/templates/_helpers.html:185 msgid "Enable playwright environment variable" -msgstr "" +msgstr "启用 Playwright 环境变量" #: changedetectionio/templates/_helpers.html:185 msgid "and uncomment the" -msgstr "" +msgstr "并取消注释" #: changedetectionio/templates/_helpers.html:185 -#, fuzzy msgid "in the" -msgstr "这" +msgstr "在" #: changedetectionio/templates/_helpers.html:185 -#, fuzzy msgid "file" -msgstr "标题" +msgstr "文件" #: changedetectionio/templates/_helpers.html:240 msgid "Set a hourly/week day schedule" -msgstr "" +msgstr "设置小时/工作日计划" #: changedetectionio/templates/_helpers.html:247 -#, fuzzy msgid "Schedule time limits" -msgstr "复检时间(分钟)" +msgstr "计划时间限制" #: changedetectionio/templates/_helpers.html:248 msgid "Business hours" -msgstr "" +msgstr "工作时间" #: changedetectionio/templates/_helpers.html:249 -#, fuzzy msgid "Weekends" -msgstr "周数" +msgstr "周末" #: changedetectionio/templates/_helpers.html:250 -#, fuzzy msgid "Reset" -msgstr "要求" +msgstr "重置" #: changedetectionio/templates/_helpers.html:259 msgid "" -"Warning, one or more of your 'days' has a duration that would extend into" -" the next day." -msgstr "" +"Warning, one or more of your 'days' has a duration that would extend into the next " +"day." +msgstr "警告:一个或多个“天”的时长会延续到次日。" #: changedetectionio/templates/_helpers.html:260 msgid "This could have unintended consequences." -msgstr "" +msgstr "这可能导致意外结果。" #: changedetectionio/templates/_helpers.html:270 -#, fuzzy msgid "More help and examples about using the scheduler" -msgstr "更多帮助和示例请参见此处" +msgstr "更多关于调度器的帮助与示例" #: changedetectionio/templates/_helpers.html:275 -#, fuzzy msgid "Want to use a time schedule?" -msgstr "使用时间调度器" +msgstr "想使用时间计划吗?" #: changedetectionio/templates/_helpers.html:275 msgid "First confirm/save your Time Zone Settings" -msgstr "" +msgstr "请先确认/保存你的时区设置" #: changedetectionio/templates/_helpers.html:284 msgid "" -"Triggers a change if this text appears, AND something changed in the " -"document." -msgstr "" +"Triggers a change if this text appears, AND something changed in the document." +msgstr "当出现该文本且文档发生变化时触发。" #: changedetectionio/templates/_helpers.html:284 -#, fuzzy msgid "Triggered text" -msgstr "错误文本" +msgstr "触发文本" #: changedetectionio/templates/_helpers.html:285 msgid "Ignored for calculating changes, but still shown." -msgstr "" +msgstr "计算变更时忽略,但仍会显示。" #: changedetectionio/templates/_helpers.html:285 -#, fuzzy msgid "Ignored text" -msgstr "错误文本" +msgstr "忽略文本" #: changedetectionio/templates/_helpers.html:286 -#, fuzzy msgid "No change-detection will occur because this text exists." -msgstr "文本匹配时阻止更改检测" +msgstr "由于存在该文本,将不会进行变更检测。" #: changedetectionio/templates/_helpers.html:286 -#, fuzzy msgid "Blocked text" -msgstr "错误文本" +msgstr "阻止文本" -#: changedetectionio/templates/base.html:78 -#: changedetectionio/templates/base.html:168 +#: changedetectionio/templates/base.html:78 changedetectionio/templates/base.html:168 msgid "GROUPS" -msgstr "团体" +msgstr "分组" -#: changedetectionio/templates/base.html:81 -#: changedetectionio/templates/base.html:169 +#: changedetectionio/templates/base.html:81 changedetectionio/templates/base.html:169 msgid "SETTINGS" msgstr "设置" -#: changedetectionio/templates/base.html:84 -#: changedetectionio/templates/base.html:170 +#: changedetectionio/templates/base.html:84 changedetectionio/templates/base.html:170 msgid "IMPORT" msgstr "导入" -#: changedetectionio/templates/base.html:87 -#: changedetectionio/templates/base.html:171 +#: changedetectionio/templates/base.html:87 changedetectionio/templates/base.html:171 msgid "BACKUPS" msgstr "备份" -#: changedetectionio/templates/base.html:91 -#: changedetectionio/templates/base.html:173 +#: changedetectionio/templates/base.html:91 changedetectionio/templates/base.html:173 msgid "EDIT" msgstr "编辑" #: changedetectionio/templates/base.html:101 #: changedetectionio/templates/base.html:177 msgid "LOG OUT" -msgstr "退出" +msgstr "退出登录" #: changedetectionio/templates/base.html:108 msgid "Search, or Use Alt+S Key" -msgstr "搜索或使用 Alt+S 键" +msgstr "搜索,或使用 Alt+S 快捷键" #: changedetectionio/templates/base.html:114 msgid "Toggle Light/Dark Mode" @@ -2432,48 +2360,44 @@ msgstr "切换亮/暗模式" #: changedetectionio/templates/base.html:125 msgid "Change Language" -msgstr "更改语言" +msgstr "切换语言" #: changedetectionio/templates/base.html:126 msgid "Change language" -msgstr "更改语言" +msgstr "切换语言" #: changedetectionio/templates/base.html:253 -#, fuzzy msgid "Watch List" msgstr "监控列表" #: changedetectionio/templates/base.html:258 -#, fuzzy msgid "Watches" msgstr "监控项" #: changedetectionio/templates/base.html:261 msgid "Queue Status" -msgstr "" +msgstr "队列状态" #: changedetectionio/templates/base.html:270 -#, fuzzy msgid "Queue" -msgstr "排队" +msgstr "队列" #: changedetectionio/templates/base.html:274 #: changedetectionio/templates/base.html:279 -#, fuzzy msgid "Settings" msgstr "设置" #: changedetectionio/templates/base.html:293 msgid "Sitemap Crawler" -msgstr "" +msgstr "站点地图爬虫" #: changedetectionio/templates/base.html:318 msgid "Sitemap" -msgstr "" +msgstr "站点地图" #: changedetectionio/templates/base.html:354 msgid "Real-time updates offline" -msgstr "离线实时更新" +msgstr "实时更新离线" #: changedetectionio/templates/base.html:364 msgid "Select Language" @@ -2481,28 +2405,26 @@ msgstr "选择语言" #: changedetectionio/templates/base.html:375 msgid "" -"Language support is in beta, please help us improve by opening a PR on " -"GitHub with any updates." -msgstr "" +"Language support is in beta, please help us improve by opening a PR on GitHub with " +"any updates." +msgstr "语言支持仍在测试阶段,欢迎在 GitHub 提交 PR 帮助改进。" #: changedetectionio/templates/base.html:387 #: changedetectionio/templates/base.html:400 -#, fuzzy msgid "Search" -msgstr "搜寻中" +msgstr "搜索" #: changedetectionio/templates/base.html:392 msgid "URL or Title" -msgstr "" +msgstr "URL 或标题" #: changedetectionio/templates/base.html:392 -#, fuzzy msgid "in" -msgstr "更多信息" +msgstr "在" #: changedetectionio/templates/base.html:393 msgid "Enter search term..." -msgstr "" +msgstr "输入搜索关键词..." #: changedetectionio/templates/login.html:11 msgid "Password" @@ -2511,408 +2433,3 @@ msgstr "密码" #: changedetectionio/templates/login.html:17 msgid "Login" msgstr "登录" - -#~ msgid "Invalid time format. Use HH:MM." -#~ msgstr "时间格式无效。使用时:分。" - -#~ msgid "Not a valid timezone name" -#~ msgstr "不是有效的时区名称" - -#~ msgid "not set" -#~ msgstr "还没有" - -#~ msgid "Start At" -#~ msgstr "设置" - -#~ msgid "Run duration" -#~ msgstr "暂无信息" - -#~ msgid "Use time scheduler" -#~ msgstr "使用时间调度器" - -#~ msgid "Optional timezone to run in" -#~ msgstr "运行时的可选时区" - -#~ msgid "Monday" -#~ msgstr "周一" - -#~ msgid "Tuesday" -#~ msgstr "周二" - -#~ msgid "Wednesday" -#~ msgstr "周三" - -#~ msgid "Thursday" -#~ msgstr "周四" - -#~ msgid "Friday" -#~ msgstr "星期五" - -#~ msgid "Saturday" -#~ msgstr "周六" - -#~ msgid "Sunday" -#~ msgstr "星期日" - -#~ msgid "Weeks" -#~ msgstr "周数" - -#~ msgid "Should contain zero or more seconds" -#~ msgstr "应包含零或更多秒" - -#~ msgid "Days" -#~ msgstr "天" - -#~ msgid "Hours" -#~ msgstr "密码" - -#~ msgid "Minutes" -#~ msgstr "沉默的" - -#~ msgid "Seconds" -#~ msgstr "秒" - -#~ msgid "Empty value not allowed." -#~ msgstr "不允许为空值。" - -#~ msgid "Invalid value." -#~ msgstr "无效值。" - -#~ msgid "Watch" -#~ msgstr "# 手表" - -#~ msgid "Processor" -#~ msgstr "处理器" - -#~ msgid "Edit > Watch" -#~ msgstr "先编辑后观看" - -#~ msgid "Fetch Method" -#~ msgstr "设置获取方法" - -#~ msgid "Notification Body" -#~ msgstr "暂无信息" - -#~ msgid "Notification format" -#~ msgstr "暂无信息" - -#~ msgid "Notification Title" -#~ msgstr "暂无信息" - -#~ msgid "Notification URL List" -#~ msgstr "暂无信息" - -#~ msgid "Processor - What do you want to achieve?" -#~ msgstr "处理器 - 您想要实现什么?" - -#~ msgid "Default timezone for watch check scheduler" -#~ msgstr "手表检查调度程序的默认时区" - -#~ msgid "Wait seconds before extracting text" -#~ msgstr "提取文本前几秒。" - -#~ msgid "Should contain one or more seconds" -#~ msgstr "应包含一秒或多秒" - -#~ msgid "URLs" -#~ msgstr "网址" - -#~ msgid "Upload .xlsx file" -#~ msgstr "上传 .xlsx 文件" - -#~ msgid "Must be .xlsx file!" -#~ msgstr "必须是 .xlsx 文件!" - -#~ msgid "File mapping" -#~ msgstr "文件映射类型。" - -#~ msgid "Operation" -#~ msgstr "用户界面选项" - -#~ msgid "Selector" -#~ msgstr "选择方式:" - -#~ msgid "value" -#~ msgstr "暂停" - -#~ msgid "Use global settings for time between check and scheduler." -#~ msgstr "使用全局设置检查和调度程序之间的时间。" - -#~ msgid "CSS/JSONPath/JQ/XPath Filters" -#~ msgstr "CSS/xPath 过滤器" - -#~ msgid "Remove elements" -#~ msgstr "已删除" - -#~ msgid "Extract text" -#~ msgstr "提取数据" - -#~ msgid "Ignore lines containing" -#~ msgstr "忽略任何匹配的行" - -#~ msgid "Request body" -#~ msgstr "要求" - -#~ msgid "Request method" -#~ msgstr "要求" - -#~ msgid "Ignore status codes (process non-2xx status codes as normal)" -#~ msgstr "忽略状态代码(正常处理非 2xx 状态代码)" - -#~ msgid "Only trigger when unique lines appear in all history" -#~ msgstr "仅当出现唯一线条时触发" - -#~ msgid "Sort text alphabetically" -#~ msgstr "按字母顺序对文本进行排序" - -#~ msgid "Strip ignored lines" -#~ msgstr "去掉忽略的行" - -#~ msgid "Trim whitespace before and after text" -#~ msgstr "删除每行文本前后的所有空格" - -#~ msgid "Added lines" -#~ msgstr "登录" - -#~ msgid "Replaced/changed lines" -#~ msgstr "更换/更改线路" - -#~ msgid "Removed lines" -#~ msgstr "已删除" - -#~ msgid "Keyword triggers - Trigger/wait for text" -#~ msgstr "关键字触发器 - 触发/等待文本" - -#~ msgid "Block change-detection while text matches" -#~ msgstr "文本匹配时阻止更改检测" - -#~ msgid "Execute JavaScript before change detection" -#~ msgstr "在更改检测之前执行 JavaScript" - -#~ msgid "Proxy" -#~ msgstr "代理人" - -#~ msgid "Send a notification when the filter can no longer be found on the page" -#~ msgstr "当页面上找不到过滤器时发送通知" - -#~ msgid "On" -#~ msgstr "没有任何" - -#~ msgid "Attach screenshot to notification (where possible)" -#~ msgstr "将屏幕截图附加到通知(如果可能)" - -#~ msgid "Match" -#~ msgstr "# 手表" - -#~ msgid "Match all of the following" -#~ msgstr "匹配以下所有内容" - -#~ msgid "Match any of the following" -#~ msgstr "匹配以下任意一项" - -#~ msgid "Use page <title> in list" -#~ msgstr "使用列表中的页面<标题>" - -#~ msgid "Name" -#~ msgstr "取消静音" - -#~ msgid "Proxy URL" -#~ msgstr "代理网址" - -#~ msgid "Proxy URLs must start with http://, https:// or socks5://" -#~ msgstr "代理 URL 必须以 http://、https:// 或ocks5:// 开头" - -#~ msgid "Browser connection URL" -#~ msgstr "浏览器连接网址" - -#~ msgid "Browser URLs must start with wss:// or ws://" -#~ msgstr "浏览器 URL 必须以 wss:// 或 ws:// 开头" - -#~ msgid "Plaintext requests" -#~ msgstr "明文请求" - -#~ msgid "Chrome requests" -#~ msgstr "要求" - -#~ msgid "Default proxy" -#~ msgstr "默认代理" - -#~ msgid "Random jitter seconds ± check" -#~ msgstr "随机抖动秒±检查" - -#~ msgid "Number of fetch workers" -#~ msgstr "取货工人数量" - -#~ msgid "Should be between 1 and 50" -#~ msgstr "应介于 1 到 50 之间" - -#~ msgid "Requests timeout in seconds" -#~ msgstr "请求超时(以秒为单位)" - -#~ msgid "Should be between 1 and 999" -#~ msgstr "应介于 1 到 999 之间" - -#~ msgid "Default User-Agent overrides" -#~ msgstr "默认用户代理覆盖" - -#~ msgid "Open 'History' page in a new tab" -#~ msgstr "在新选项卡中打开“历史记录”页面" - -#~ msgid "Realtime UI Updates Enabled" -#~ msgstr "离线实时更新" - -#~ msgid "Favicons Enabled" -#~ msgstr "考虑启用" - -#~ msgid "Use page <title> in watch overview list" -#~ msgstr "在观看概览列表中使用页面<标题>" - -#~ msgid "API access token security check enabled" -#~ msgstr "已启用 API 访问令牌安全检查" - -#~ msgid "Notification base URL override" -#~ msgstr "通知警报计数" - -#~ msgid "Treat empty pages as a change?" -#~ msgstr "将空页视为更改?" - -#~ msgid "Ignore Text" -#~ msgstr "错误文本" - -#~ msgid "Ignore whitespace" -#~ msgstr "忽略空格" - -#~ msgid "Must be between 0 and 100" -#~ msgstr "必须介于 0 到 100 之间" - -#~ msgid "Pager size" -#~ msgstr "寻呼机尺寸" - -#~ msgid "Should be atleast zero (disabled)" -#~ msgstr "应至少为零(禁用)" - -#~ msgid "RSS Content format" -#~ msgstr "RSS 内容格式" - -#~ msgid "RSS <description> body built from" -#~ msgstr "RSS <描述> 正文构建于" - -#~ msgid "Render anchor tag content" -#~ msgstr "渲染锚标记内容" - -#~ msgid "Allow anonymous access to watch history page when password is enabled" -#~ msgstr "启用密码后允许匿名访问观看历史页面" - -#~ msgid "Hide muted watches from RSS feed" -#~ msgstr "从 RSS 源中隐藏静音的手表" - -#~ msgid "Enable RSS reader mode " -#~ msgstr "启用 RSS 阅读器模式" - -#~ msgid "Number of changes to show in watch RSS feed" -#~ msgstr "观看 RSS 源中显示的更改数量" - -#~ msgid "Should contain zero or more attempts" -#~ msgstr "应包含零次或多次尝试" - -#~ msgid "Number of times the filter can be missing before sending a notification" -#~ msgstr "发送通知之前过滤器可能丢失的次数" - -#~ msgid "RegEx to extract" -#~ msgstr "要提取的正则表达式" - -#~ msgid "Extract as CSV" -#~ msgstr "提取数据" - -#~ msgid "Bounding box value is too long" -#~ msgstr "边界框值太长" - -#~ msgid "Bounding box must be in format: x,y,width,height (integers only)" -#~ msgstr "边界框的格式必须为:x,y,宽度,高度(仅限整数)" - -#~ msgid "Bounding box values must be non-negative" -#~ msgstr "边界框值必须是非负数" - -#~ msgid "Bounding box values are too large" -#~ msgstr "边界框值太大" - -#~ msgid "Minimum Change Percentage" -#~ msgstr "最小变化百分比" - -#~ msgid "Pixel Difference Sensitivity" -#~ msgstr "像素差异灵敏度" - -#~ msgid "Use global default" -#~ msgstr "使用系统默认值" - -#~ msgid "Bounding Box" -#~ msgstr "边界框" - -#~ msgid "Selection Mode" -#~ msgstr "选择方式:" - -#~ msgid "Selection mode value is too long" -#~ msgstr "选择模式值太长" - -#~ msgid "Screenshot Comparison" -#~ msgstr "截图对比" - -#~ msgid "Re-stock detection" -#~ msgstr "补货检测" - -#~ msgid "In Stock only (Out Of Stock -> In Stock only)" -#~ msgstr "仅有库存(缺货 -> 仅有库存)" - -#~ msgid "Any availability changes" -#~ msgstr "任何可用性变更" - -#~ msgid "Off, don't follow availability/restock" -#~ msgstr "关闭,不遵循库存/补货情况" - -#~ msgid "Below price to trigger notification" -#~ msgstr "低于价格触发通知" - -#~ msgid "No limit" -#~ msgstr "无限制" - -#~ msgid "Above price to trigger notification" -#~ msgstr "高于价格触发通知" - -#~ msgid "Threshold in %% for price changes since the original price" -#~ msgstr "自原始价格以来价格变化的阈值(百分比)" - -#~ msgid "Should be between 0 and 100" -#~ msgstr "应介于 0 到 100 之间" - -#~ msgid "Follow price changes" -#~ msgstr "关注价格变化" - -#~ msgid "Restock & Price Detection" -#~ msgstr "补货及价格" - -#~ msgid "Visual / Image screenshot change detection" -#~ msgstr "视觉/图像截图变化检测" - -#~ msgid "" -#~ "Compares screenshots using fast OpenCV " -#~ "algorithm, 10-100x faster than SSIM" -#~ msgstr "使用快速 OpenCV 算法比较屏幕截图,比 SSIM 快 10-100 倍" - -#~ msgid "Visual" -#~ msgstr "视觉的" - -#~ msgid "Re-stock & Price detection for pages with a SINGLE product" -#~ msgstr "单个产品页面的补货和价格检测" - -#~ msgid "Detects if the product goes back to in-stock" -#~ msgstr "检测产品是否恢复库存" - -#~ msgid "Restock" -#~ msgstr "补货" - -#~ msgid "Webpage Text/HTML, JSON and PDF changes" -#~ msgstr "网页文本/HTML、JSON 和 PDF 更改" - -#~ msgid "Detects all text changes where possible" -#~ msgstr "尽可能检测所有文本更改" -