msgid ""
msgstr ""
"Project-Id-Version: Aipogeo Context Translate 2.1.3\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/aipogeo-context-translate\n"
"Last-Translator: AIPOGEO\n"
"Language-Team: Chinese (China)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2026-09-10T17:41:32+08:00\n"
"PO-Revision-Date: 2026-09-10 12:00+0800\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: WP-CLI 2.12.0\n"
"X-Domain: aipogeo-context-translate\n"

#. Plugin Name of the plugin
#: aipogeo-context-translate.php
#: admin/class-apgt-admin.php:118
#: admin/class-apgt-admin.php:119
#: admin/views/settings-page.php:31
msgid "Aipogeo Context Translate"
msgstr "Aipogeo 上下文翻译"

#. Plugin URI of the plugin
#: aipogeo-context-translate.php
msgid "https://translate.aipogeo.com/"
msgstr "https://translate.aipogeo.com/"

#. Description of the plugin
#: aipogeo-context-translate.php
msgid "Translate a whole site with an AI that reads each page in full, proofread the result page by page, and serve it under a language directory with hreflang and a language switcher."
msgstr "让 AI 通读整页上下文来翻译整个站点，逐页校对译文，并以语言目录发布，自带 hreflang 与语言切换器。"

#. Author of the plugin
#: aipogeo-context-translate.php
msgid "AIPOGEO"
msgstr "AIPOGEO"

#: admin/class-apgt-admin.php:129
#: admin/class-apgt-admin.php:130
#: admin/class-apgt-admin.php:867
#: admin/views/translate-page.php:54
msgid "Translation Settings"
msgstr "翻译设置"

#: admin/class-apgt-admin.php:138
#: admin/class-apgt-admin.php:139
#: admin/class-apgt-admin.php:868
#: admin/views/languages-page.php:34
#: admin/views/translate-page.php:56
msgid "Languages"
msgstr "语言管理"

#: admin/class-apgt-admin.php:147
#: admin/class-apgt-admin.php:148
#: admin/class-apgt-admin.php:869
#: admin/views/translate-page.php:46
msgid "Translate Pages"
msgstr "页面翻译"

#: admin/class-apgt-admin.php:156
#: admin/class-apgt-admin.php:157
#: admin/class-apgt-admin.php:870
#: admin/views/data-page.php:129
msgid "Translation Data"
msgstr "译文数据"

#: admin/class-apgt-admin.php:165
#: admin/class-apgt-admin.php:166
#: admin/class-apgt-admin.php:871
#: admin/views/help-page.php:24
#: admin/views/settings-page.php:744
msgid "Help"
msgstr "使用说明"

#: admin/class-apgt-admin.php:242
msgid "Loading…"
msgstr "加载中…"

#: admin/class-apgt-admin.php:243
msgid "Submitting to AI…"
msgstr "正在提交 AI 翻译…"

#. translators: 1: number of AI requests completed, 2: seconds elapsed
#: admin/class-apgt-admin.php:245
#, php-format
msgid "AI translation running in the background: %1$s AI requests completed, %2$s seconds elapsed"
msgstr "AI 翻译后台执行中：已完成 %1$s 次 AI 请求，用时 %2$s 秒"

#: admin/class-apgt-admin.php:246
#: admin/class-apgt-admin.php:291
msgid "Saving…"
msgstr "保存中…"

#: admin/class-apgt-admin.php:247
msgid "Select a language and a page first"
msgstr "请先选择语言与页面"

#: admin/class-apgt-admin.php:248
msgid "The translation JSON is malformed. Fix it before continuing."
msgstr "译文 JSON 格式有误，请修正后再操作"

#: admin/class-apgt-admin.php:249
msgid "Request failed. Check the browser console or debug.log."
msgstr "请求失败，请查看浏览器控制台或 debug.log"

#. translators: 1: total items, 2: translated items
#: admin/class-apgt-admin.php:251
#, php-format
msgid "%1$s items, %2$s translated"
msgstr "共 %1$s 条，已译 %2$s 条"

#: admin/class-apgt-admin.php:252
msgid "Filter by title or URL…"
msgstr "输入标题或网址过滤…"

#: admin/class-apgt-admin.php:253
msgid "No matching pages"
msgstr "没有匹配的页面"

#: admin/class-apgt-admin.php:254
msgid "No pages available"
msgstr "没有可选页面"

#: admin/class-apgt-admin.php:255
msgid "Type a language name or code to filter…"
msgstr "输入语言名称或代码过滤…"

#: admin/class-apgt-admin.php:256
msgid "No matching languages"
msgstr "没有匹配的语言"

#: admin/class-apgt-admin.php:257
msgid "No languages available"
msgstr "没有可选语言"

#: admin/class-apgt-admin.php:258
msgid "This will translate every pending page, several at a time, starting with the language selected above and then moving on to the remaining target languages. It may use a large amount of AI credit. Start now?"
msgstr "将从上面选中的语言开始，多个页面同时翻译，翻完再接着翻其余目标语言，可能消耗较多 AI 额度。确定开始？"

#: admin/class-apgt-admin.php:259
msgid "Counting pending pages…"
msgstr "正在统计待翻译页面…"

#. translators: 1: pending pages, 2: translated pages, 3: total pages
#: admin/class-apgt-admin.php:261
#, php-format
msgid "%1$s pending / %2$s translated (%3$s in total, all target languages)"
msgstr "待翻译 %1$s / 已翻译 %2$s（全部目标语言共 %3$s）"

#. translators: 1: target language, 2: title of the page being translated
#: admin/class-apgt-admin.php:263
#, php-format
msgid "%1$s · Translating: %2$s"
msgstr "%1$s · 正在翻译：%2$s"

#. translators: %1$s: target language
#: admin/class-apgt-admin.php:265
#, php-format
msgid "Moving on to %1$s…"
msgstr "接着翻 %1$s…"

#. translators: 1: pages succeeded, 2: pages failed
#: admin/class-apgt-admin.php:267
#, php-format
msgid "All done: %1$s pages succeeded, %2$s failed"
msgstr "全部完成：成功 %1$s 页，失败 %2$s 页"

#. translators: 1: pages done, 2: pages failed, 3: pages left unprocessed
#: admin/class-apgt-admin.php:269
#, php-format
msgid "Stopped: %1$s pages done, %2$s failed, %3$s left unprocessed"
msgstr "已停止：完成 %1$s 页，失败 %2$s 页，剩余 %3$s 页未处理"

#: admin/class-apgt-admin.php:272
msgid "No pending pages in any target language"
msgstr "所有目标语言下都没有待翻译的页面"

#: admin/class-apgt-admin.php:273
#: admin/views/translate-page.php:124
msgid "Stop"
msgstr "停止"

#: admin/class-apgt-admin.php:274
msgid "Stopping…"
msgstr "正在停止…"

#: admin/class-apgt-admin.php:275
#: admin/views/translate-page.php:93
msgid "Open the source page in a new window"
msgstr "在新窗口打开原页面"

#: admin/class-apgt-admin.php:276
#: admin/views/translate-page.php:97
msgid "Open the translated page in a new window"
msgstr "在新窗口打开译文页面"

#: admin/class-apgt-admin.php:277
#: admin/views/languages-page.php:229
msgid "Word match"
msgstr "模糊替换"

#: admin/class-apgt-admin.php:278
#: admin/views/languages-page.php:230
msgid "Exact match"
msgstr "完全匹配"

#: admin/class-apgt-admin.php:279
#: admin/views/languages-page.php:231
msgid "Regex replace"
msgstr "正则替换"

#: admin/class-apgt-admin.php:280
#: admin/views/data-page.php:295
msgid "Delete"
msgstr "删除"

#. translators: %1$s: number of rules
#: admin/class-apgt-admin.php:282
#, php-format
msgid "%1$s rules"
msgstr "%1$s 条规则"

#: admin/class-apgt-admin.php:283
msgid "Valid regex"
msgstr "正则可用"

#: admin/class-apgt-admin.php:284
msgid "This regex does not compile. Please fix it."
msgstr "正则无法编译，请修正"

#: admin/class-apgt-admin.php:285
msgid "Checking regex…"
msgstr "正在校验正则…"

#. translators: %1$s: number of regex rules that do not compile
#: admin/class-apgt-admin.php:287
#, php-format
msgid "%1$s regex rules do not compile. Fix them before saving."
msgstr "有 %1$s 条正则无法编译，修正后才能保存"

#. translators: %1$s: list of missing variable names
#: admin/class-apgt-admin.php:289
#, php-format
msgid ""
"The translation prompt is missing required variables: %1$s\n"
"\n"
"Without them the AI never receives the languages or the source data, so the result is guaranteed to be wrong. Add them and save again.\n"
"(Saving a completely empty prompt restores the default one.)"
msgstr ""
"翻译指令缺少必需变量：%1$s\n"
"\n"
"AI 收不到语言或待译数据，翻译结果必然是错的。请补上后再保存。\n"
"（把指令全部清空保存，则会自动恢复为默认指令。）"

#: admin/class-apgt-admin.php:290
msgid "This replaces the editor content with the plugin's current default prompt and discards your edits. Continue?"
msgstr "将把编辑框里的内容换成插件当前的默认指令，你改过的内容会丢失。确定继续？"

#: admin/class-apgt-admin.php:292
#: admin/class-apgt-ajax.php:83
msgid "Saved"
msgstr "已保存"

#: admin/class-apgt-admin.php:293
msgid "Deleting…"
msgstr "删除中…"

#: admin/class-apgt-admin.php:294
msgid "Delete this translation record?"
msgstr "确定删除这条译文数据？"

#. translators: %1$s: number of translation records that match the current filter
#: admin/class-apgt-admin.php:296
#, php-format
msgid ""
"This permanently deletes all %1$s translation records matching the current filter.\n"
"\n"
"Continue?"
msgstr ""
"将删除当前搜索条件下的全部 %1$s 条译文数据，且不可恢复。\n"
"\n"
"确定继续？"

#: admin/class-apgt-admin.php:297
#: admin/class-apgt-ajax.php:125
msgid "Set at least one filter first, otherwise the entire table would be wiped"
msgstr "请先设置至少一个搜索条件，否则会删掉整张表"

#: admin/class-apgt-admin.php:298
#: admin/views/settings-page.php:692
msgid "Show"
msgstr "显示"

#: admin/class-apgt-admin.php:299
msgid "Hide"
msgstr "隐藏"

#: admin/class-apgt-admin.php:300
msgid "The Ace editor failed to load. Check that assets/vendor/ace is complete."
msgstr "Ace 编辑器未能加载，请检查 assets/vendor/ace 是否完整。"

#. translators: separator between variable names in a list; Chinese uses the ideographic comma here
#: admin/class-apgt-admin.php:302
msgctxt "list separator"
msgid ", "
msgstr "、"

#: admin/class-apgt-admin.php:348
#: admin/views/settings-page.php:591
msgid "Grace period"
msgstr "宽限期"

#: admin/class-apgt-admin.php:349
#: admin/views/settings-page.php:592
msgid "Active"
msgstr "生效中"

#: admin/class-apgt-admin.php:350
#: admin/views/settings-page.php:592
msgid "Unavailable"
msgstr "不可用"

#: admin/class-apgt-admin.php:351
#: admin/views/settings-page.php:603
msgid "Unlimited"
msgstr "不限量"

#: admin/class-apgt-admin.php:352
msgid "tokens"
msgstr "token"

#: admin/class-apgt-admin.php:353
#: admin/views/settings-page.php:613
msgid "Activated"
msgstr "已激活"

#: admin/class-apgt-admin.php:354
#: admin/views/settings-page.php:614
msgid "Not activated"
msgstr "未激活"

#: admin/class-apgt-admin.php:355
msgid "Working…"
msgstr "处理中…"

#: admin/class-apgt-admin.php:356
msgid "That did not work"
msgstr "操作失败"

#: admin/class-apgt-admin.php:357
msgid "Done"
msgstr "已完成"

#: admin/class-apgt-admin.php:358
msgid "The request failed. Please try again shortly."
msgstr "请求失败，请稍后重试。"

#: admin/class-apgt-admin.php:359
msgid "Releasing this site stops it translating through this subscription. Continue?"
msgstr "解绑后本站将无法继续使用该订阅翻译，确定？"

#: admin/class-apgt-admin.php:460
#: admin/class-apgt-admin.php:635
#: admin/class-apgt-ajax.php:295
msgid "Insufficient permissions"
msgstr "权限不足"

#: admin/class-apgt-admin.php:791
msgid "Settings"
msgstr "设置"

#: admin/class-apgt-ajax.php:68
#: admin/class-apgt-ajax.php:100
msgid "Record not found; it may already have been deleted"
msgstr "记录不存在，可能已被删除"

#: admin/class-apgt-ajax.php:76
msgid "Save failed"
msgstr "保存失败"

#: admin/class-apgt-ajax.php:104
msgid "Delete failed"
msgstr "删除失败"

#: admin/class-apgt-ajax.php:109
msgid "Deleted"
msgstr "已删除"

#. translators: %d: number of records deleted
#: admin/class-apgt-ajax.php:135
#, php-format
msgid "Deleted %d translation records"
msgstr "已删除 %d 条译文数据"

#: admin/class-apgt-ajax.php:249
msgid "This site is now activated"
msgstr "本站已激活"

#: admin/class-apgt-ajax.php:274
msgid "This site has been released"
msgstr "本站已解绑"

#. translators: %s: name of the lock holder
#: admin/class-apgt-ajax.php:319
#, php-format
msgid "This page is already being translated (%s). Please wait for it to finish; a stalled job unlocks automatically once the request timeout passes."
msgstr "该页面已有翻译任务在执行中（%s），请等它结束后再试；若任务已异常中断，超过请求超时时长后锁会自动解除。"

#. translators: %s: error message
#: admin/class-apgt-ajax.php:397
#: admin/class-apgt-ajax.php:1068
#: includes/class-apgt-cron.php:163
#, php-format
msgid "Translation aborted unexpectedly: %s"
msgstr "翻译过程异常中止：%s"

#: admin/class-apgt-ajax.php:479
msgid "The translation job no longer exists; it may have expired. Reload the page to see the current state."
msgstr "翻译任务记录已不存在，可能已过期。请刷新页面查看当前结果。"

#: admin/class-apgt-ajax.php:490
msgid "The translation job stopped responding and was abandoned. Please try again."
msgstr "翻译任务已失去响应，判定为中断。请重新发起翻译。"

#: admin/class-apgt-ajax.php:526
msgid "The target language is invalid or not configured"
msgstr "目标语言无效或未配置"

#: admin/class-apgt-ajax.php:543
#: includes/class-apgt-translator.php:499
msgid "Invalid page URL"
msgstr "页面地址无效"

#: admin/class-apgt-ajax.php:579
msgid "Choose the site default language under Translation Settings first"
msgstr "请先在「翻译设置」里选择站点默认语言"

#. translators: %s: field name
#: admin/class-apgt-ajax.php:600
#, php-format
msgid "%s is too large to process"
msgstr "%s 过大，无法处理"

#. translators: %s: field name
#: admin/class-apgt-ajax.php:606
#, php-format
msgid "%s is not valid JSON"
msgstr "%s 不是有效的 JSON"

#: admin/class-apgt-ajax.php:652
msgid "No translatable text was extracted from this page"
msgstr "该页面没有提取到可翻译文本"

#: admin/class-apgt-ajax.php:726
msgid "No source text to translate"
msgstr "没有可翻译的原文"

#: admin/class-apgt-ajax.php:768
msgid "Nothing left to translate (all items already had translations and were skipped)"
msgstr "没有需要翻译的条目（已有译文均被跳过）"

#. translators: 1: succeeded, 2: skipped, 3: failed
#: admin/class-apgt-ajax.php:826
#, php-format
msgid "AI translation finished: %1$d succeeded, %2$d skipped, %3$d failed"
msgstr "AI 翻译完成：成功 %1$d 条，跳过 %2$d 条，失败 %3$d 条"

#: admin/class-apgt-ajax.php:851
msgid "The source data is empty, nothing to save"
msgstr "原文数据为空，无法保存"

#. translators: 1: saved, 2: cleared, 3: failed
#: admin/class-apgt-ajax.php:902
#, php-format
msgid "%1$d saved, %2$d cleared, %3$d failed"
msgstr "已保存 %1$d 条，清除 %2$d 条，失败 %3$d 条"

#: admin/class-apgt-ajax.php:1005
msgid "Background translation is not enabled"
msgstr "后台自动翻译未启用"

#: admin/class-apgt-ajax.php:1014
msgid "No languages configured yet"
msgstr "尚未配置语言"

#: admin/class-apgt-ajax.php:1024
#: includes/class-apgt-cron.php:132
msgid "No pending pages"
msgstr "没有待翻译的页面"

#: admin/views/data-page.php:138
msgid "Source contains"
msgstr "原文包含"

#: admin/views/data-page.php:143
msgid "Translation contains"
msgstr "译文包含"

#: admin/views/data-page.php:148
msgid "Source path"
msgstr "来源路径"

#: admin/views/data-page.php:153
msgid "Source language"
msgstr "源语言"

#: admin/views/data-page.php:155
#: admin/views/data-page.php:167
#: admin/views/data-page.php:179
#: admin/views/data-page.php:191
#: admin/views/help-page.php:131
#: admin/views/help-page.php:136
#: admin/views/help-page.php:141
msgid "All"
msgstr "全部"

#: admin/views/data-page.php:165
#: admin/views/translate-page.php:63
msgid "Target language"
msgstr "目标语言"

#: admin/views/data-page.php:177
#: admin/views/data-page.php:254
msgid "Engine"
msgstr "引擎"

#: admin/views/data-page.php:189
#: admin/views/data-page.php:255
#: admin/views/languages-page.php:211
msgid "Type"
msgstr "类型"

#: admin/views/data-page.php:201
msgid "Per page"
msgstr "每页"

#: admin/views/data-page.php:213
msgid "Empty translations only"
msgstr "只看空译文"

#: admin/views/data-page.php:217
msgid "Filter"
msgstr "筛选"

#: admin/views/data-page.php:218
msgid "Reset"
msgstr "重置"

#: admin/views/data-page.php:228
msgid "Delete search results"
msgstr "删除搜索结果"

#: admin/views/data-page.php:231
msgid "(set a filter first)"
msgstr "（需要先设置搜索条件）"

#. translators: %s: number of records
#: admin/views/data-page.php:240
#, php-format
msgid "%s record"
msgid_plural "%s records"
msgstr[0] "%s 条数据"

#: admin/views/data-page.php:252
msgid "ID"
msgstr "ID"

#: admin/views/data-page.php:253
#: admin/views/languages-page.php:96
msgid "Language"
msgstr "语言"

#: admin/views/data-page.php:256
msgid "Source"
msgstr "来源"

#: admin/views/data-page.php:257
msgid "Source text"
msgstr "原文"

#: admin/views/data-page.php:258
msgid "Translation (editable)"
msgstr "译文（可编辑）"

#: admin/views/data-page.php:259
#: admin/views/languages-page.php:115
msgid "Actions"
msgstr "操作"

#: admin/views/data-page.php:265
msgid "No translation records match the filter."
msgstr "没有符合条件的译文数据。"

#: admin/views/data-page.php:310
msgid "Editing a translation saves it immediately and marks the engine as manual, so later bulk AI runs will not overwrite it. Deleting a record also invalidates the translation progress of the pages it belongs to, sending those pages back to pending."
msgstr "译文改动会立刻入库并把引擎标记为 manual，之后 AI 批量翻译不会再覆盖它。删除记录会同时作废相关页面的翻译进度，那些页面会重新回到「待翻译」。"

#: admin/views/help-page.php:30
msgid "1. What on the page gets translated"
msgstr "一、页面上哪些内容会被翻译"

#: admin/views/help-page.php:33
msgid "The plugin parses the whole page into a DOM and walks it node by node. Only the places listed below are touched; everything else (scripts, styles, class names, data-* attributes and so on) is left exactly as it was."
msgstr "插件把整页 HTML 解析成 DOM 后逐节点提取，只动下面这些位置，其余（脚本、样式、类名、data-* 属性等）一律原样保留。"

#: admin/views/help-page.php:39
msgid "Where"
msgstr "位置"

#: admin/views/help-page.php:40
msgid "Scope and notes"
msgstr "范围与说明"

#: admin/views/help-page.php:45
msgid "Visible text"
msgstr "可视文本"

#: admin/views/help-page.php:46
msgid "Every text node on the page, except anything inside <script> or <style>."
msgstr "页面上所有文字节点，但 <script> 与 <style> 里的内容不碰。"

#: admin/views/help-page.php:50
msgid "The title shown in the browser tab and in search results."
msgstr "浏览器标签页与搜索结果里的标题。"

#: admin/views/help-page.php:54
msgid "Only those whose name/property contains title, keywords, description or name (including og:title, og:description and similar)."
msgstr "仅限 name/property 中含 title、keywords、description、name 的那些（含 og:title、og:description 等）。"

#: admin/views/help-page.php:58
msgid "Placeholder hints on inputs and textareas."
msgstr "输入框与文本域的占位提示。"

#: admin/views/help-page.php:62
msgid "Alternative text and hover hints on images (<img> only)."
msgstr "图片的替代文字与悬停提示（仅 <img>）。"

#: admin/views/help-page.php:65
msgid "Microdata structured data"
msgstr "Microdata 结构化数据"

#: admin/views/help-page.php:67
msgid "When an itemprop value lives in a content attribute (such as <meta itemprop=\"name\" content=\"…\">) it is translated too. These tags are invisible on the page, but they are exactly what search engines read."
msgstr "itemprop 的取值挂在 content 属性上时（如 <meta itemprop=\"name\" content=\"…\">）照样翻译，这类标签页面上看不见，但搜索引擎读的就是它。"

#: admin/views/help-page.php:69
msgid "Addresses in itemprop=\"url\" and itemprop=\"sameAs\" (whether written in href or in content) follow the internal-link rules and move to the language directory, so addresses in your structured data no longer point back at the source page."
msgstr "itemprop=\"url\" 与 itemprop=\"sameAs\" 的地址（无论写在 href 还是 content 上）按站内链接规则处理，跟着换语言目录，结构化数据里的地址不会指回原文页。"

#: admin/views/help-page.php:73
msgid "Internal link paths"
msgstr "站内链接路径"

#: admin/views/help-page.php:75
msgid "Navigational addresses: <a href>, canonical/shortlink, <form action>, og:url. Asset addresses such as images, scripts and stylesheets are left alone, since rewriting them would produce 404s."
msgstr "导航类地址：<a href>、canonical/shortlink、<form action>、og:url。图片、脚本、样式表这些资源地址不动，改了会 404。"

#: admin/views/help-page.php:77
msgid "Whether the path itself is translated depends on Translate URL paths under Translation Settings. Even when it is not translated, the language directory prefix (such as /en) is still added; otherwise one click would drop the visitor back onto the source-language site."
msgstr "路径本身是否译成外文取决于「翻译设置」里的「翻译 URL 路径」；即使不译，也仍然会加上语言目录前缀（如 /en），否则访客一点链接就跳回原文站点了。"

#: admin/views/help-page.php:83
msgid "Microdata fields that are skipped automatically"
msgstr "Microdata 里自动跳过的字段"

#: admin/views/help-page.php:86
msgid "Structured data carries a lot of machine-read values, and translating them simply corrupts the data. The following itemprop values are therefore always kept verbatim, with no manual marking needed:"
msgstr "结构化数据里有大量机器读的值，译了等于把数据写坏，所以下面这些 itemprop 一律原样保留，不必手工标记："

#: admin/views/help-page.php:92
msgid "Asset addresses"
msgstr "资源地址"

#: admin/views/help-page.php:93
#: admin/views/help-page.php:97
#: admin/views/help-page.php:101
#: admin/views/help-page.php:105
msgid "and so on"
msgstr "等"

#: admin/views/help-page.php:96
msgid "Identifiers"
msgstr "编号标识"

#: admin/views/help-page.php:100
msgid "Numeric values"
msgstr "数值"

#: admin/views/help-page.php:104
msgid "Dates and contact details"
msgstr "日期与联系方式"

#: admin/views/help-page.php:111
msgid "Besides the field name, the shape of the value is checked as well: URLs, e-mail addresses, bare numbers, ISO dates (2026-12-31), ISO durations (PT30M) and three-letter currency codes (CNY) are all skipped. So machine values survive untouched even under a field name not listed above. Conversely, text fields such as name, description, category, addressLocality and streetAddress take part in translation as normal."
msgstr "除了看字段名，还会看值的形态：网址、邮箱、纯数字、ISO 日期（2026-12-31）、ISO 时长（PT30M）、三位货币代码（CNY）一概跳过，所以就算用了上面没列到的字段名，机器值也不会被翻译。反过来，name、description、category、addressLocality、streetAddress 这类文本字段会正常参与翻译。"

#: admin/views/help-page.php:114
msgid "2. Marking content that must not be translated"
msgstr "二、标记不需要翻译的内容"

#: admin/views/help-page.php:117
msgid "Brand names, model numbers, code snippets, people and street addresses, interface text belonging to third-party components — translating these makes them wrong. Add any one of the markers below to an element and the plugin skips it during extraction, so it is neither stored nor charged against your AI credit."
msgstr "品牌名、型号、代码片段、人名地址、第三方组件的界面文字——这些译了反而是错的。给元素加上下面任意一个标记，插件在提取阶段就会跳过它，既不入库也不消耗 AI 额度。"

#: admin/views/help-page.php:123
msgid "Syntax"
msgstr "写法"

#: admin/views/help-page.php:124
msgid "Applies to"
msgstr "作用范围"

#: admin/views/help-page.php:125
msgid "Meaning"
msgstr "语义说明"

#: admin/views/help-page.php:132
msgid "The plugin's primary marker. Text, alt, placeholder, title and meta content on the element and all of its descendants stay untranslated, and internal links inside it are not rewritten either — no translated path, no language prefix."
msgstr "本插件的主标记。该元素及其全部后代的文本、alt、placeholder、title、meta 内容都不翻译，里面的站内链接也不改写（既不换译文路径，也不加语言前缀）。"

#: admin/views/help-page.php:137
msgid "Behaves exactly like the row above. This is the established Google Translate convention that many themes and plugins already use, so it is honoured here too and you do not have to mark everything a second time for this plugin."
msgstr "效果与上一条完全相同。这是 Google 翻译的通行惯例，不少主题和插件已经在用，这里一并尊重，省得为本插件再标一遍。"

#: admin/views/help-page.php:142
msgid "The standard HTML attribute, same effect as above. translate=\"0\" is recognised as well. Useful when the class attribute is not yours to touch because a theme or block style is using it."
msgstr "HTML 标准属性，效果同上。写 translate=\"0\" 也认。适合在不方便动 class（class 被主题或区块样式占用）时使用。"

#: admin/views/help-page.php:146
msgid "Turning translation back on"
msgstr "反向开启"

#: admin/views/help-page.php:147
msgid "Re-enables a small region inside a container where translation was switched off. The nearest marker wins: walking outwards from the current node, a yes found first means translate, a no found first means skip. translate=\"1\" and translate=\"\" mean the same thing."
msgstr "在已经关掉翻译的容器内部，把某一小块重新打开。就近生效：从当前节点往外找，先遇到 yes 就翻译，先遇到 no 就跳过。写 translate=\"1\" 或 translate=\"\" 同义。"

#: admin/views/help-page.php:151
msgid "Link addresses only"
msgstr "仅链接地址"

#: admin/views/help-page.php:152
msgid "Blocks the address but not the text: the link label is translated as usual while href stays exactly as written, with neither a translated path nor a language prefix. Use it for links that must keep pointing at the original address, such as a language switcher itself, direct download links or a login entry point."
msgstr "只挡地址、不挡文字：链接上的文案照常翻译，但 href 保持原样，既不换成译文路径也不加语言前缀。用于必须指向原始地址的链接，例如语言切换器自身、下载直链、登录入口。"

#: admin/views/help-page.php:157
msgid "Matching rules"
msgstr "匹配规则"

#: admin/views/help-page.php:161
msgid "Matched as a whole word, case-insensitively."
msgstr "按整词匹配，大小写不敏感。"

#: admin/views/help-page.php:162
msgid "Both class=\"btn not-translate large\" and class=\"NOT-TRANSLATE\" take effect, while not-translate-foo and xx-not-translate merely happen to contain those characters and are not mistaken for the marker."
msgstr "class=\"btn not-translate large\" 与 class=\"NOT-TRANSLATE\" 都生效；而 not-translate-foo、xx-not-translate 只是名字里恰好含有这几个字，不会被误判成标记。"

#: admin/views/help-page.php:165
msgid "Inherited downwards."
msgstr "向下继承。"

#: admin/views/help-page.php:166
msgid "Marking the container is enough; however many levels are nested inside it, all of them are skipped. There is no need to mark elements one by one."
msgstr "标记加在容器上即可，里面嵌套多少层都会被跳过，不必逐个元素标。"

#: admin/views/help-page.php:169
msgid "class wins over the translate attribute."
msgstr "class 优先于 translate 属性。"

#: admin/views/help-page.php:170
msgid "When one element carries both class=\"not-translate\" and translate=\"yes\", the class decides — the element is skipped."
msgstr "同一个元素上同时写 class=\"not-translate\" 和 translate=\"yes\" 时，以 class 为准——跳过。"

#: admin/views/help-page.php:173
msgid "Markers only act during extraction."
msgstr "标记只在提取阶段起作用。"

#: admin/views/help-page.php:174
msgid "If you add a marker to a page that was already translated, the old translation is still stored and still replaces the text on the front end. Delete the matching records under Translation Data, or translate that page again."
msgstr "给已经翻译过的页面补标记后，旧译文仍在库里、前台仍会替换；需要到「译文数据」里删掉对应记录，或重新翻译一遍该页面。"

#: admin/views/help-page.php:178
msgid "Example"
msgstr "示例"

#. translators: HTML example. Translate the comments and the visible text only; keep the tags, class names and attributes exactly as they are.
#: admin/views/help-page.php:183
msgid ""
"<!-- Whole block skipped: brand name and model number stay as they are -->\n"
"<div class=\"product-meta not-translate\">\n"
"\t<span>YF-System</span> <span>Model X-200</span>\n"
"</div>\n"
"\n"
"<!-- The standard HTML attribute, same effect -->\n"
"<pre translate=\"no\">systemctl restart nginx</pre>\n"
"\n"
"<!-- The container is not translated, but this one note inside it is -->\n"
"<div class=\"code-box not-translate\">\n"
"\t<code>wp plugin activate aipogeo-context-translate</code>\n"
"\t<p translate=\"yes\">Back up your database before running this.</p>\n"
"</div>\n"
"\n"
"<!-- The text is translated, the address is left alone -->\n"
"<a class=\"not-translate-url\" href=\"/downloads/manual.pdf\">Download the manual</a>"
msgstr ""
"<!-- 整块跳过：品牌名与型号原样保留 -->\n"
"<div class=\"product-meta not-translate\">\n"
"\t<span>YF-System</span> <span>Model X-200</span>\n"
"</div>\n"
"\n"
"<!-- 用 HTML 标准属性，效果相同 -->\n"
"<pre translate=\"no\">systemctl restart nginx</pre>\n"
"\n"
"<!-- 容器整体不译，但里面这句提示要译 -->\n"
"<div class=\"code-box not-translate\">\n"
"\t<code>wp plugin activate aipogeo-context-translate</code>\n"
"\t<p translate=\"yes\">执行前请先备份数据库。</p>\n"
"</div>\n"
"\n"
"<!-- 文字要译，地址不动 -->\n"
"<a class=\"not-translate-url\" href=\"/downloads/manual.pdf\">下载手册</a>"

#: admin/views/help-page.php:205
msgid "How to add this in the block editor"
msgstr "在区块编辑器里怎么加"

#: admin/views/help-page.php:208
msgid "Select the block, open the Block tab in the right sidebar, expand Advanced at the bottom and type not-translate into Additional CSS class(es); separate several class names with spaces. The translate attribute needs a Custom HTML block or a direct edit to the theme template."
msgstr "选中区块 → 右侧边栏「区块」标签 → 展开最下面的「高级」→ 在「额外 CSS 类」里填 not-translate 即可，多个类名用空格分隔。translate 属性需要用「自定义 HTML」区块或直接改主题模板。"

#: admin/views/languages-page.php:17
msgid "Language added."
msgstr "语言已添加。"

#: admin/views/languages-page.php:18
msgid "Language removed. Translations already stored are kept in the database."
msgstr "语言已删除（已翻译的数据仍保留在译文库中）。"

#: admin/views/languages-page.php:19
msgid "Saved."
msgstr "已保存。"

#: admin/views/languages-page.php:20
msgid "That language is already in the list."
msgstr "该语言已在列表中。"

#: admin/views/languages-page.php:21
msgid "A target language cannot be the same as the site default language."
msgstr "目标语言不能与站点默认语言相同。"

#: admin/views/languages-page.php:22
msgid "Invalid language code."
msgstr "语言代码无效。"

#: admin/views/languages-page.php:23
msgid "The replacement rule data is malformed. Rules for that language were not saved; everything else was."
msgstr "替换规则数据格式有误，该语言的规则未保存，其余已保存。"

#: admin/views/languages-page.php:24
msgid "A regex replacement rule does not compile. Rules for that language were not saved; fix it and try again."
msgstr "有正则替换规则无法编译，该语言的规则未保存，请修正后重试。"

#: admin/views/languages-page.php:28
msgid "All visitors"
msgstr "所有访客"

#: admin/views/languages-page.php:29
msgid "Search engines only"
msgstr "仅搜索引擎"

#: admin/views/languages-page.php:30
msgid "Human visitors only"
msgstr "仅普通用户"

#: admin/views/languages-page.php:47
msgid "The site default language is not set yet. Choose it under Translation Settings first."
msgstr "尚未设置站点默认语言，请先到「翻译设置」里选择。"

#: admin/views/languages-page.php:48
msgid "Go to settings"
msgstr "前往设置"

#. translators: %s: language name
#: admin/views/languages-page.php:56
#, php-format
msgid "The site default language is %s. The target languages to translate into are listed below."
msgstr "站点默认语言为 %s，下方是需要翻译成的目标语言。"

#: admin/views/languages-page.php:63
msgid "Add a target language"
msgstr "添加目标语言"

#: admin/views/languages-page.php:81
msgid "Add"
msgstr "添加"

#: admin/views/languages-page.php:84
msgid "Configured target languages"
msgstr "已配置的目标语言"

#: admin/views/languages-page.php:87
msgid "No target languages yet. Add one with the dropdown above."
msgstr "还没有目标语言，先用上面的下拉框添加一个。"

#: admin/views/languages-page.php:97
msgid "The URL directory for this language's pages. Enter en and translated pages live at /en/xxx/. Leave empty to use the language code."
msgstr "该语言页面的网址目录，例如填 en 则译文页地址是 /en/xxx/。留空时用语言代码。"

#: admin/views/languages-page.php:98
#: admin/views/languages-page.php:175
msgid "URL prefix"
msgstr "URL 前缀"

#: admin/views/languages-page.php:100
msgid "The language code written into the hreflang tag, such as en-US. Leave empty to use the language code."
msgstr "写进 hreflang 标签的语言代码，例如 en-US。留空时用语言代码。"

#: admin/views/languages-page.php:103
msgid "Extra regional variants covered by this same translation, comma separated, such as en-GB,en-AU. Each one gets its own hreflang tag."
msgstr "同一份译文额外覆盖的地区变体，逗号分隔，例如 en-GB,en-AU。会各生成一条 hreflang。"

#: admin/views/languages-page.php:104
msgid "hreflang regions"
msgstr "hreflang 地区"

#: admin/views/languages-page.php:106
msgid "Lower numbers come first. Controls the order in the language switcher and in the hreflang tags."
msgstr "数字越小越靠前，决定语言切换菜单与 hreflang 的排列顺序。"

#: admin/views/languages-page.php:107
msgid "Order"
msgstr "排序"

#: admin/views/languages-page.php:109
msgid "Controls whether this language is offered on the front end: the switcher and the hreflang tags are filtered by visitor type."
msgstr "控制这个语言在前台露不露出入口：菜单与 hreflang 会按访客类型过滤。"

#: admin/views/languages-page.php:110
#: admin/views/languages-page.php:184
msgid "Show to"
msgstr "展示对象"

#: admin/views/languages-page.php:112
msgid "String replacements applied before a translation is stored, for forcing consistent brand names and other proper nouns."
msgstr "译文入库前套用的字符串替换，用于强制统一品牌名等专有名词。"

#: admin/views/languages-page.php:113
#: admin/views/languages-page.php:185
#: admin/views/languages-page.php:199
msgid "Replacement rules"
msgstr "替换规则"

#. translators: %d: number of rules
#: admin/views/languages-page.php:150
#, php-format
msgid "%d rule"
msgid_plural "%d rules"
msgstr[0] "%d 条规则"

#: admin/views/languages-page.php:163
msgid "Remove this target language? Translations already stored will not be deleted."
msgstr "确定移除该目标语言？已翻译的数据不会被删除。"

#: admin/views/languages-page.php:164
msgid "Remove"
msgstr "移除"

#. translators: 1: example prefix, 2: example address
#: admin/views/languages-page.php:178
#, php-format
msgid "Which URL directory this language's pages live under. Enter %1$s and translated pages are served at %2$s. Leave empty to use the language code."
msgstr "该语言页面挂在哪个网址目录下，填 %1$s 则译文页地址是 %2$s。留空时用语言代码。"

#: admin/views/languages-page.php:183
msgid "The language code written into the page's hreflang tag. Under hreflang regions you can add further regional variants, comma separated; this one translation then produces a tag for each of them."
msgstr "写进页面 hreflang 标签的语言代码；「hreflang 地区」里可以逗号分隔多填几个地区变体，同一份译文会各生成一条。"

#: admin/views/languages-page.php:184
msgid "Controls whether this language is offered on the front end — whether the switcher and the hreflang tags include it is decided by whether the visitor is a search engine. This affects the entry points only; visiting the language's address directly always works."
msgstr "控制这个语言在前台露不露出入口——按访客是不是搜索引擎，决定语言菜单与 hreflang 里要不要带上它。只影响入口，直接访问该语言地址始终可用。"

#: admin/views/languages-page.php:185
msgid "Applied before a translation is stored, for forcing consistent brand names and other proper nouns. Click the rule count to open the editor, and remember to press Save language settings below when you are done."
msgstr "译文入库前套用，用于强制统一品牌名等专有名词。点「N 条规则」打开编辑窗口；改完记得点下方的「保存语言配置」。"

#: admin/views/languages-page.php:190
msgid "Save language settings"
msgstr "保存语言配置"

#: admin/views/languages-page.php:200
msgid "Close"
msgstr "关闭"

#: admin/views/languages-page.php:212
msgid "Find"
msgstr "查找"

#: admin/views/languages-page.php:213
msgid "Replace with"
msgstr "替换为"

#: admin/views/languages-page.php:221
msgid "No rules yet. Use the button below to add one."
msgstr "还没有规则，点下面的按钮添加一条。"

#: admin/views/languages-page.php:225
msgid "Add rule"
msgstr "添加规则"

#: admin/views/languages-page.php:229
msgid "Matches on word boundaries. The most common choice."
msgstr "按词边界匹配，最常用。"

#: admin/views/languages-page.php:230
msgid "Replaces only when the whole translation is identical to Find."
msgstr "整条译文与「查找」完全相同才替换。"

#: admin/views/languages-page.php:231
msgid "Find must include its own delimiters, for example"
msgstr "「查找」需自带分隔符，例如"

#: admin/views/languages-page.php:232
msgid "The pattern is checked when you leave the field; it cannot be saved until it compiles."
msgstr "离开输入框会自动校验，不通过无法保存。"

#: admin/views/languages-page.php:238
msgid "OK"
msgstr "确定"

#: admin/views/languages-page.php:239
msgid "Cancel"
msgstr "取消"

#: admin/views/settings-page.php:36
msgid "Settings saved."
msgstr "设置已保存。"

#: admin/views/settings-page.php:41
msgid "That is not a valid IP address, so the fetch IP was left empty. Enter an IPv4 or IPv6 address only, with no port and no protocol."
msgstr "这不是合法的 IP 地址，抓取用 IP 已置空。只填 IPv4 或 IPv6 地址，不要带端口，也不要带协议。"

#: admin/views/settings-page.php:47
msgid "Settings saved. The translation prompt was empty, so the default prompt was restored."
msgstr "设置已保存。翻译指令为空，已自动恢复为默认指令。"

#: admin/views/settings-page.php:53
msgid "Settings saved. The URL path prompt was empty, so the default prompt was restored."
msgstr "设置已保存。URL 路径翻译指令为空，已自动恢复为默认指令。"

#: admin/views/settings-page.php:75
msgid "The URL path prompt was not saved."
msgstr "URL 路径翻译指令未保存。"

#: admin/views/settings-page.php:76
msgid "The translation prompt was not saved."
msgstr "翻译指令未保存。"

#. translators: %s: missing variable names
#: admin/views/settings-page.php:83
#, php-format
msgid "The required variables %s are missing. The AI never receives the languages or the source data, so the result is guaranteed to be wrong."
msgstr "缺少必需变量 %s，AI 收不到语言或待译数据，翻译结果必然是错的。"

#: admin/views/settings-page.php:88
msgid "Every other setting was saved normally. Add the variables and save the prompt again."
msgstr "其余设置已正常保存。请补上变量后重新保存指令。"

#: admin/views/settings-page.php:95
msgid "Site language"
msgstr "站点语言"

#: admin/views/settings-page.php:99
msgid "Default language (the language you write in)"
msgstr "默认语言（原文语言）"

#: admin/views/settings-page.php:103
msgid "— Select —"
msgstr "— 请选择 —"

#: admin/views/settings-page.php:111
msgid "The language your content is already written in; it is the source of every translation. Nothing can be translated until this is set."
msgstr "站点内容原本的语言，翻译以它为源。未选择时无法进行任何翻译。"

#: admin/views/settings-page.php:115
msgid "Translate URL paths"
msgstr "翻译 URL 路径"

#: admin/views/settings-page.php:119
msgid "Let the AI translate the paths of internal links as well"
msgstr "把站内链接的路径也交给 AI 翻译"

#. translators: 1: example source address, 2: example translated address
#: admin/views/settings-page.php:125
#, php-format
msgid "With this on, internal addresses are translated path and all — %1$s becomes %2$s, for instance. When a visitor opens the translated address it is mapped back to the original post, so normal browsing is unaffected."
msgstr "开启后页面里的站内地址会连路径一起译过去，例如 %1$s 变成 %2$s；访客打开译文地址时会自动换回原文章，不影响正常访问。"

#. translators: example path before the path itself is translated; write it in your own language, keeping the language directory
#: admin/views/settings-page.php:127
msgid "/ja/about-us/"
msgstr "/en/关于我们/"

#. translators: the same example path once translated into the target language
#: admin/views/settings-page.php:129
msgid "/ja/私たちについて/"
msgstr "/en/about-us/"

#: admin/views/settings-page.php:133
msgid "Each path is stored as its own record (with the type marked uri), so you can filter by type and edit it separately under Translation Data. Pages have to be translated again before path translations appear; translations of your text are unaffected."
msgstr "路径作为一条独立数据入库（类型标记为 uri），在「译文数据」里可按类型筛选、单独修改。开启后需要重新翻译一遍页面才会产生路径译文，已有的文本译文不受影响。"

#. translators: %s: example language directory
#: admin/views/settings-page.php:138
#, php-format
msgid "Leaving it off does not break multilingual navigation: internal links still move under the language directory (%s), only the path itself stays as written."
msgstr "不开启也不影响多语言导航：站内链接照样会挂到语言目录下（%s），只是路径保持原样。"

#: admin/views/settings-page.php:148
#: admin/views/settings-page.php:156
msgid "Background translation"
msgstr "后台自动翻译"

#: admin/views/settings-page.php:153
msgid "Enable"
msgstr "启用"

#: admin/views/settings-page.php:164
msgid "While an administrator is logged into the admin area, work through the pending pages one at a time in the background"
msgstr "管理员登录后台时，自动在后台逐页处理待翻译的页面"

#: admin/views/settings-page.php:173
msgid "With this on, as long as any administrator has an admin page open, the browser periodically claims one pending page and hands it to the server. You no longer have to sit on the Translate Pages screen."
msgstr "开启后，只要有管理员打开着后台页面，浏览器就会定时来领一个待翻译页面交给服务端处理，不需要一直守在「页面翻译」界面。"

#: admin/views/settings-page.php:177
msgid "The job entry point holds a single-process lock: when several administrators are online, or someone is translating by hand, the other requests return immediately without doing anything, so the same content is never translated twice."
msgstr "任务入口有单进程锁：多个管理员同时在线、或有人正在手动翻译时，其余请求会直接空转返回，不会重复翻同一批内容。"

#: admin/views/settings-page.php:227
msgid "Heartbeat interval (seconds)"
msgstr "心跳间隔（秒）"

#: admin/views/settings-page.php:232
msgid "The gap between two job requests, minimum 15 seconds. A new one is never started while the previous one is still running."
msgstr "两次领取任务的间隔，最小 15 秒。上一次还没处理完时不会重复发起。"

#: admin/views/settings-page.php:249
msgid "Live translation"
msgstr "实时翻译"

#: admin/views/settings-page.php:253
msgid "When a visitor opens a translated page, translate whatever on it is not stored yet"
msgstr "访客打开译文页面时，自动翻译该页尚未入库的内容"

#: admin/views/settings-page.php:257
msgid "Serve the translated page once coverage reaches"
msgstr "译文占比达到"

#: admin/views/settings-page.php:260
msgid "or more"
msgstr "才输出译文页面"

#: admin/views/settings-page.php:264
msgid "It behaves just like the Translate with AI button on the Translate Pages screen: only untranslated items are sent, the result is stored right away, and the next visitor does not have to wait."
msgstr "行为与「页面翻译」里的 AI 翻译按钮一致：只翻没有译文的条目，结果直接入库，下次访问就不用再等。"

#: admin/views/settings-page.php:268
#: admin/views/settings-page.php:296
msgid "Note:"
msgstr "注意："

#: admin/views/settings-page.php:269
msgid "The first visitor waits for the AI to answer, so that page load is noticeably slower. Only one process ever translates at a time; other visitors are served whatever is done so far. On content-heavy sites, warm things up with Translate all first and turn this on afterwards."
msgstr "首个访客需要等待 AI 返回，页面会明显变慢；同一时刻只有一个进程真正在翻译，其余访客直接看当前进度的结果。内容量大的站点建议先用「全部翻译」预热，再开这个开关。"

#: admin/views/settings-page.php:276
msgid "Fetching source pages"
msgstr "抓取原页面"

#: admin/views/settings-page.php:280
msgid "Fetch IP"
msgstr "抓取用 IP"

#: admin/views/settings-page.php:283
msgid "Leave empty to use normal DNS"
msgstr "留空则照常走 DNS 解析"

#. translators: %s: the site host name
#: admin/views/settings-page.php:289
#, php-format
msgid "Every translation starts by fetching the page from your own site. Fill this in only when the server cannot reach %s itself — the name resolves to a CDN or a load balancer that cannot come back to this machine, or the DNS this server uses does not know it. The fetch then connects straight to the IP you enter."
msgstr "每次翻译都要先从你自己的站点上把页面抓回来。只有在服务器访问不到 %s 时才需要填：域名解析到了 CDN 或负载均衡，回不到这台机器；或者这台服务器用的 DNS 根本不认识这个域名。填上之后，抓取会直接连你指定的 IP。"

#: admin/views/settings-page.php:294
msgid "The Host header and the HTTPS certificate keep using your domain, so this is safe on a server hosting several sites."
msgstr "Host 头和 HTTPS 证书仍然用你的域名，所以一台服务器上跑多个站点时填了也不会串站。"

#: admin/views/settings-page.php:297
msgid "Do not enter 127.0.0.1 just in case. If PHP runs in a container, or on a different machine from the web server, that address points at the wrong place and no page can be fetched at all. Leave it empty unless fetching actually fails."
msgstr "不要图保险随手填 127.0.0.1。PHP 跑在容器里、或与 Web 服务不在同一台机器上时，这个地址指向的是别处，反而一个页面都抓不到。抓取没出问题就留空。"

#: admin/views/settings-page.php:299
msgid "When a fetch fails, the Translate Pages screen reports the address that was requested and the IP it reached; open the browser console there for the full details."
msgstr "抓取失败时，「页面翻译」页会给出实际请求的地址和连到的 IP；完整信息在该页的浏览器控制台里。"

#: admin/views/settings-page.php:306
msgid "Front end"
msgstr "前台展示"

#: admin/views/settings-page.php:310
msgid "hreflang"
msgstr "hreflang"

#: admin/views/settings-page.php:314
msgid "Output hreflang links for every language version in the page <head>"
msgstr "在页面 <head> 里输出各语言版本的 hreflang 链接"

#: admin/views/settings-page.php:316
msgid "Tells search engines which language versions of the same content exist. The source version doubles as x-default, and the hreflang regions entered under Languages produce additional regional variants."
msgstr "告诉搜索引擎同一内容有哪些语言版本。原文版本同时作为 x-default；语言管理里填的「hreflang 地区」会额外生成对应的地区变体。"

#: admin/views/settings-page.php:321
msgid "Language switcher"
msgstr "语言切换菜单"

#: admin/views/settings-page.php:325
msgid "Show the language switcher on the front end"
msgstr "在前台显示语言切换菜单"

#: admin/views/settings-page.php:327
msgid "By default it floats in the top right corner and can be dragged anywhere; the position is remembered locally in the browser."
msgstr "默认浮动在右上角，可以拖到任意位置，位置记在浏览器本地。"

#: admin/views/settings-page.php:331
msgid "Show flag icons"
msgstr "显示旗帜小图标"

#: admin/views/settings-page.php:341
msgid "The icons are embedded in the page (22px wide PNGs) and cost no extra request. Here is how the current language looks:"
msgstr "图标内嵌在页面里（22px 宽的 PNG），不额外发请求。当前语言的效果："

#: admin/views/settings-page.php:359
msgid "Container ID"
msgstr "菜单容器 ID"

#: admin/views/settings-page.php:364
msgid "Enter the id of an element in your theme, without the #. The switcher is placed inside that element and follows the theme's layout instead of floating, and can no longer be dragged. Leave empty to keep it floating."
msgstr "填主题里某个元素的 id（不用带 #），菜单会挂进那个元素、跟着主题版式走，不再浮动也不能拖动。留空则保持浮动。"

#: admin/views/settings-page.php:366
msgid "If the id cannot be found the switcher falls back to floating, so a theme redesign never leaves visitors without a way to change language."
msgstr "找不到该 id 时自动回退成浮动显示，不会因为主题改版就没了入口。"

#: admin/views/settings-page.php:446
msgid "AI service"
msgstr "AI 服务"

#: admin/views/settings-page.php:450
#: admin/views/settings-page.php:453
msgid "Where translations are requested"
msgstr "翻译请求走哪里"

#: admin/views/settings-page.php:457
msgid "Subscription (recommended) — one access key, no AI provider account of your own needed"
msgstr "订阅服务（推荐）—— 填一个访问密钥即可，不必自备 AI 平台账号"

#: admin/views/settings-page.php:464
msgid "Automatic — use this site's AI settings when they are available, otherwise the settings below"
msgstr "自动 —— 本站配置了 AI 就用本站的 AI 设置，否则用下面的设置"

#: admin/views/settings-page.php:470
msgid "This site's AI settings only"
msgstr "只用本站的 AI 设置"

#: admin/views/settings-page.php:477
msgid "My own AI account — the model and API key below"
msgstr "自备 AI 账号 —— 使用下面填写的模型与 API Key"

#: admin/views/settings-page.php:481
msgid "WordPress 7.0 and later can hold one AI provider and key for the whole site, so every plugin shares the same configuration and you enter your key once. This plugin uses it whenever it is set up."
msgstr "WordPress 7.0 及以上版本可以为整个站点配置一个 AI 平台和密钥，所有插件共用这一套配置，密钥只需填一次。只要站点配置好了，本插件就会使用它。"

#: admin/views/settings-page.php:485
msgid "Status: this site has an AI provider configured and ready to use."
msgstr "状态：本站已配置 AI 平台，可以直接使用。"

#: admin/views/settings-page.php:487
msgid "Status: this site has no AI provider configured, so the settings below are used. Fill them in, or set a provider up for the whole site."
msgstr "状态：本站尚未配置 AI 平台，将使用下面的设置。请把下面填好，或者为整个站点配置一个 AI 平台。"

#: admin/views/settings-page.php:491
msgid "WordPress 7.0 and later can hold one AI provider and key for the whole site. This site runs an earlier version, which has no such setting, so the choice is between the subscription service and your own AI account."
msgstr "WordPress 7.0 及以上版本可以为整个站点配置一个 AI 平台和密钥。本站运行的是更早的版本，没有这项设置，因此只能在订阅服务和自备 AI 账号之间选择。"

#: admin/views/settings-page.php:499
msgid "Subscription"
msgstr "订阅服务"

#: admin/views/settings-page.php:511
msgid "The last usage report did not go through: "
msgstr "最近一次用量上报没成功："

#: admin/views/settings-page.php:531
msgid "Recommended: connect in one step"
msgstr "推荐：一键连接"

#: admin/views/settings-page.php:533
msgid "You pick a subscription on the service site; the key is filled in and this site activated for you, with nothing to copy by hand."
msgstr "跳到服务站点选一个订阅授权，密钥会自动填好并激活本站，不必手工复制粘贴。"

#: admin/views/settings-page.php:538
msgid "Reconnect or switch subscription"
msgstr "重新连接 / 更换订阅"

#: admin/views/settings-page.php:539
msgid "Connect to Aipogeo"
msgstr "连接到 Aipogeo"

#: admin/views/settings-page.php:542
msgid "You will be asked to sign in on the service site"
msgstr "会在服务站点要求登录"

#: admin/views/settings-page.php:547
msgid "Or enter it by hand:"
msgstr "或者手工填写："

#: admin/views/settings-page.php:552
msgid "Service address"
msgstr "服务地址"

#: admin/views/settings-page.php:559
msgid "Access key"
msgstr "访问密钥"

#: admin/views/settings-page.php:566
msgid "Activate this site"
msgstr "激活本站"

#: admin/views/settings-page.php:569
msgid "Refresh status"
msgstr "刷新状态"

#: admin/views/settings-page.php:573
msgid "Release this site"
msgstr "解绑本站"

#: admin/views/settings-page.php:583
msgid "Plan"
msgstr "订阅"

#: admin/views/settings-page.php:588
msgid "Status"
msgstr "状态"

#: admin/views/settings-page.php:595
msgid "Renews"
msgstr "到期"

#: admin/views/settings-page.php:599
msgid "Quota this period"
msgstr "本周期额度"

#. translators: 1: tokens used, 2: tokens included in the plan
#: admin/views/settings-page.php:605
#, php-format
msgid "%1$s / %2$s tokens"
msgstr "%1$s / %2$s token"

#: admin/views/settings-page.php:610
msgid "This site"
msgstr "本站"

#: admin/views/settings-page.php:622
msgid "Generate the key under My Subscriptions on the service site. It is shown once only; if you lose it, go back and reset it. This key is the only credential the plugin stores — no AI provider credentials are kept here."
msgstr "密钥在服务站点的会员中心「我的订阅」生成，只显示一次；忘了就回去重置一个。插件只保存这一个密钥，不会保存任何 AI 平台的凭据。"

#: admin/views/settings-page.php:628
msgid "Model"
msgstr "模型"

#: admin/views/settings-page.php:638
msgid "The dropdown lists the models the library knows about. You can also type a model name given to you by a relay service (qwen-max or gpt-4o-mini, say); for a name the library does not know, pick the protocol manually below."
msgstr "下拉里是库内置的模型，也可以直接填中转站给的模型名（如 qwen-max、gpt-4o-mini），填了库里没有的名字就要在下面手选协议格式。"

#: admin/views/settings-page.php:643
msgid "Protocol"
msgstr "协议格式"

#: admin/views/settings-page.php:646
msgid "Detect automatically from the model name"
msgstr "自动识别（按模型名）"

#: admin/views/settings-page.php:655
msgid "Decides which request and response format is used to talk to the endpoint. Model names starting with gpt-, claude-, gemini- or deepseek- are detected automatically; anything else — a relay service's own naming, a private deployment — has to be chosen here."
msgstr "决定按哪套请求/响应格式跟接口通信。gpt-、claude-、gemini-、deepseek- 开头的模型名能自动认出来，认不出的（中转站自定名、私有部署）在这里手选。"

#: admin/views/settings-page.php:657
msgid "Choosing one here also switches the endpoint to that protocol's official address. When using a relay service, just replace it with the address they gave you."
msgstr "手选后接口地址会跟着换成该协议的官方地址，接中转站时把地址改成对方给的即可。"

#: admin/views/settings-page.php:662
msgid "Endpoint"
msgstr "接口地址"

#: admin/views/settings-page.php:668
msgid "Restore default"
msgstr "恢复默认"

#: admin/views/settings-page.php:671
msgid "This defaults to the built-in address of the selected model (or protocol) and follows along when you change either. Point it at your own gateway or a third-party relay by replacing the address."
msgstr "默认填的是所选模型（或协议）的内置地址，换模型、换协议时会自动跟着变。接自建网关或第三方中转站时改成对应地址即可。"

#: admin/views/settings-page.php:673
msgid "A complete endpoint (…/v1/chat/completions) is requested exactly as entered. Given only a root address such as …/v1, the selected protocol's chat path is appended for you."
msgstr "填完整端点（…/v1/chat/completions）就原样请求；只填到 …/v1 这类根地址时，会自动补上所选协议的对话路径。"

#: admin/views/settings-page.php:676
msgid "Address actually being requested:"
msgstr "当前实际请求地址："

#: admin/views/settings-page.php:680
msgid "The current configuration is not enough to determine an address:"
msgstr "当前配置还定不出请求地址："

#: admin/views/settings-page.php:696
msgid "Proxy"
msgstr "代理"

#: admin/views/settings-page.php:700
msgid "Leave empty to connect directly. Servers located in China usually need a proxy to reach OpenAI, Claude or Gemini."
msgstr "留空表示直连。位于中国的服务器访问 OpenAI/Claude/Gemini 通常需要代理。"

#: admin/views/settings-page.php:704
msgid "Max output tokens"
msgstr "最大输出 token"

#: admin/views/settings-page.php:709
msgid "This caps the length of a single AI reply, not the model's context window — a model that accepts a 1M-token context will not let you get 1M tokens back at once."
msgstr "限的是 AI 单次回复的长度，不是模型的上下文长度——模型支持 1M 上下文，不等于允许一次输出 1M。"

#: admin/views/settings-page.php:711
msgid "Output limits differ wildly between models (Claude 3 Opus 4K, GPT-4o 16K, DeepSeek 384K), and going over the limit is rejected outright by the provider (HTTP 400). Enter 0 to omit the parameter and follow the selected model's built-in value, which also means you need not touch this when switching models."
msgstr "各模型的输出上限差很远（Claude 3 Opus 4K、GPT-4o 16K、DeepSeek 384K），填超会被平台直接拒绝（HTTP 400）。填 0 表示不传该参数、跟随所选模型的内置值，换模型也不用改。"

#: admin/views/settings-page.php:713
msgid "It also decides how much of a page goes into a single request: the value is converted to characters — roughly 1.6 per token for Chinese, Japanese and Korean, 4 for languages written in the Latin alphabet — and never less than 65,535 characters. At 0 the plugin reckons with 65,536 tokens, which is where single-reply limits sit these days, so an ordinary page goes out in one request: fewer requests, and the instruction is not repeated for every batch."
msgstr "它同时决定一次请求送多少页面内容：这个值会换算成字符数——中日韩大约 1 token 折合 1.6 个字，拉丁字母的语言折合 4 个字符——且不会低于 65535 字符。填 0 时按 65536 token 计算，这也是当下各家单次回复上限的量级，于是一般页面整页一次送出：请求次数少，指令也不必每批重发一遍。"

#: admin/views/settings-page.php:715
msgid "Do not put your model's context window here. A million-token context says how much the model can read, not how much it can write back in one reply; sizing batches by the context window only gets replies cut off."
msgstr "不要把模型的上下文窗口填到这里。上百万 token 的上下文说的是模型能读进去多少，不是一次回复能写出来多少；按上下文窗口来定批次大小，只会让回复被截断。"

#: admin/views/settings-page.php:717
msgid "Should a reply be cut off by the limit anyway, the part that arrived complete is salvaged and the items still missing are re-sent in smaller batches, so nothing is lost."
msgstr "万一回复还是被上限截断，已经完整到手的那部分会被抢救下来，剩下没拿到译文的条目再拆小重发，内容不会丢。"

#: admin/views/settings-page.php:722
msgid "Request timeout (seconds)"
msgstr "请求超时（秒）"

#: admin/views/help-page.php:284
#: admin/views/settings-page.php:731
msgid "Translation prompt"
msgstr "翻译指令"

#: admin/views/settings-page.php:733
msgid "Available variables:"
msgstr "可用变量："

#: admin/views/settings-page.php:735
msgid "— replaced by the source language, the target language and the JSON to translate respectively. Instruct the AI to return nothing but JSON, with the keys unchanged."
msgstr "——分别替换为源语言、目标语言与待翻译 JSON。要求 AI 只返回 JSON，且键名保持不变。"

#: admin/views/settings-page.php:750
#: admin/views/settings-page.php:771
msgid "Restore default prompt"
msgstr "恢复默认指令"

#: admin/views/settings-page.php:755
#: admin/views/settings-page.php:776
#: admin/views/translate-page.php:153
msgid "Drag up or down to resize the editor"
msgstr "上下拖动调整编辑区高度"

#: admin/views/settings-page.php:761
msgid "URL path prompt"
msgstr "URL 路径翻译指令"

#: admin/views/settings-page.php:763
msgid "Only used once Translate URL paths is on: path items are batched separately and sent with this prompt, which means the content prompt above does not need any URL-related instructions."
msgstr "开启「翻译 URL 路径」后才用得上：路径条目会单独成批，用这条指令送翻，上面那条正文指令不必再写 URL 相关的要求。"

#: admin/views/settings-page.php:765
msgid "The variables are the same as in the content prompt:"
msgstr "变量与正文指令相同："

#: admin/views/settings-page.php:767
msgid ". The plugin also cleans up whatever comes back: it strips the domain, turns spaces into hyphens, restores the query string and fragment from the original, and matches the original's trailing slash."
msgstr "。译文回来后插件还会兜一道：剥掉域名、把空格换成连字符、查询串与锚点按原文还原、结尾斜杠跟随原文。"

#: admin/views/settings-page.php:783
msgid "Save Settings"
msgstr "保存设置"

#: admin/views/translate-page.php:53
msgid "Set the site default language and add at least one target language first."
msgstr "请先设置站点默认语言并至少添加一个目标语言。"

#: admin/views/translate-page.php:73
msgid "Page"
msgstr "页面"

#: admin/views/translate-page.php:75
msgid "— Select a page —"
msgstr "— 请选择页面 —"

#: admin/views/translate-page.php:102
msgid "This affects the Translate with AI button only. Checked, existing translations are kept as they are and cost no further AI usage; unchecked, the whole page is translated again and overwritten. Loading a page always lists every item regardless."
msgstr "只影响「AI 翻译」按钮：勾选时已有译文原样保留、不重复消耗 AI；取消勾选则整页重译并覆盖。加载页面时始终显示全部条目。"

#: admin/views/translate-page.php:104
msgid "Skip items that already have a translation"
msgstr "AI 翻译时跳过已有译文"

#: admin/views/translate-page.php:110
msgid "Translate every page that has no translation yet, several at a time: the language selected here first, then the remaining target languages"
msgstr "多个页面同时翻译所有还没有译文的页面：先翻这里选中的语言，翻完再接着翻其余目标语言"

#: admin/views/translate-page.php:111
msgid "Translate all"
msgstr "全部翻译"

#: admin/views/translate-page.php:114
msgid "Send this page's source text to the AI; the result is stored and filled into the right-hand editor"
msgstr "调用 AI 翻译当前页面的原文，结果自动入库并回填到右侧"

#: admin/views/translate-page.php:115
msgid "Translate with AI"
msgstr "AI 翻译"

#: admin/views/translate-page.php:117
msgid "Save"
msgstr "保存"

#: admin/views/translate-page.php:132
msgid "Choose a language and a page to load the data."
msgstr "选择语言与页面后加载数据。"

#: admin/views/translate-page.php:140
msgid "Source JSON (read-only)"
msgstr "原文 JSON（只读）"

#: admin/views/translate-page.php:147
msgid "Translation JSON (editable)"
msgstr "译文 JSON（可编辑）"

#: admin/views/translate-page.php:148
msgid "The keys match the left-hand side one for one. Emptying a translation and saving deletes that record."
msgstr "键与左侧一一对应；清空某条译文并保存即删除该条记录"

#: admin/views/translate-page.php:157
msgid "Translate with AI runs the source text on the left through the current prompt and stores the result immediately with the engine marked ai, filling it into the right-hand side for you to check. Editing by hand and pressing Save overwrites the record with the engine marked manual."
msgstr "「AI 翻译」会按当前指令翻译左侧原文并立即入库（引擎标记为 ai），结果自动填入右侧供核对；手工修改后点「保存」会以 manual 引擎覆盖入库。"

#: admin/views/translate-page.php:159
msgid "Skip items that already have a translation applies to the translate button only, not to what is shown here — the editor always lists every item on the page, with stored translations filled in."
msgstr "「AI 翻译时跳过已有译文」只作用于翻译按钮，不影响这里的显示——编辑区始终列出该页面的全部条目，已翻译的直接带出库里的译文。"

#: includes/class-apgt-lock.php:201
msgid "another process"
msgstr "其他进程"

#: includes/class-apgt-pages.php:29
msgid "Site home page"
msgstr "站点首页"

#: includes/class-apgt-pages.php:30
msgid "Home"
msgstr "首页"

#. translators: %d: post ID
#: includes/class-apgt-pages.php:69
#, php-format
msgid "(untitled #%d)"
msgstr "(无标题 #%d)"

#: includes/class-apgt-service.php:95
msgid "No service address has been entered yet"
msgstr "尚未填写服务地址"

#. translators: %d: HTTP status code
#: includes/class-apgt-service.php:130
#, php-format
msgid "The service returned something that could not be read (HTTP %d)"
msgstr "服务端返回了无法解析的内容（HTTP %d）"

#: includes/class-apgt-service.php:231
msgid "There is nothing to translate"
msgstr "没有需要翻译的内容"

#: includes/class-apgt-service.php:341
msgid "The connection could not be verified. Start the connection again."
msgstr "连接校验失败，请重新发起连接。"

#. translators: %s: subscription product name
#: includes/class-apgt-service.php:366
#, php-format
msgid "Connected to \"%s\". This site can start translating."
msgstr "已连接到「%s」，本站可以开始翻译了。"

#: includes/class-apgt-service.php:379
msgid "No access key has been entered yet."
msgstr "还没有填写访问密钥。"

#: includes/class-apgt-service.php:380
msgid "That access key is not valid. Check that you copied all of it."
msgstr "密钥无效，请检查是否复制完整。"

#: includes/class-apgt-service.php:381
msgid "That access key has been revoked. Generate a new one in your account."
msgstr "密钥已被吊销，请到会员中心重新生成一个。"

#: includes/class-apgt-service.php:382
msgid "The subscription has expired or was cancelled. Renew it to carry on."
msgstr "订阅已过期或已取消，续费后即可继续使用。"

#: includes/class-apgt-service.php:383
msgid "This billing period's translation quota is used up. Upgrade the plan or wait for the next period."
msgstr "本周期的翻译额度已用完，可升级套餐或等待下个周期。"

#: includes/class-apgt-service.php:384
msgid "The subscription is already linked to as many sites as it allows. Release another site in your account first."
msgstr "绑定的站点数已达上限，请先在会员中心解绑其它站点。"

#: includes/class-apgt-service.php:385
msgid "This site is not activated yet. Press \"Activate this site\" once."
msgstr "本站尚未激活，请先点一次「激活本站」。"

#: includes/class-apgt-service.php:386
msgid "The service could not be reached. Check the service address and the server's network access."
msgstr "连不上服务端，请检查服务地址与网络。"

#: includes/class-apgt-service.php:387
msgid "The service returned an error. Please try again shortly."
msgstr "服务端返回异常，请稍后重试。"

#: includes/class-apgt-service.php:388
msgid "That batch was too large for one request. It will be split up and retried."
msgstr "这一批内容太多，一次请求放不下，将拆分后重试。"

#: includes/class-apgt-service.php:389
msgid "The translation service could not reach its AI provider. Please try again shortly."
msgstr "翻译服务暂时连不上 AI 平台，请稍后重试。"

#: includes/class-apgt-service.php:390
msgid "The AI returned nothing this time. Please try again shortly."
msgstr "AI 这次没有返回任何内容，请稍后重试。"

#: includes/class-apgt-service.php:391
msgid "The translation service has no AI model configured yet. Please contact support."
msgstr "翻译服务尚未配置 AI 模型，请联系客服。"

#: includes/class-apgt-service.php:399
msgid "That did not work. Please try again shortly."
msgstr "操作失败，请稍后重试。"

#: includes/class-apgt-translator.php:210
msgid "This WordPress version has no built-in AI client. Switch this plugin back to its own AI service settings."
msgstr "当前 WordPress 版本没有内置 AI 客户端，请把本插件切回它自己的 AI 服务设置。"

#. translators: 1: limit allowed by the provider, 2: original error
#: includes/class-apgt-translator.php:434
#, php-format
msgid "Max output tokens in the settings exceeds this model's limit (at most %1$s). Lower it, or enter 0 to follow the model's built-in value. Original error: %2$s"
msgstr "设置里的「最大输出 token」超过该模型上限（最大 %1$s），请调小或填 0 跟随模型内置值。原始报错：%2$s"

#. translators: %s: original error
#: includes/class-apgt-translator.php:444
#, php-format
msgid "AI request failed: %s"
msgstr "AI 请求异常：%s"

#: includes/class-apgt-translator.php:463
msgid "The AI library is not loaded. Run composer install in the plugin directory."
msgstr "AI 库未加载，请在插件目录执行 composer install。"

#: includes/class-apgt-translator.php:490
msgid "The site default language is not set"
msgstr "未设置站点默认语言"

#: includes/class-apgt-translator.php:493
msgid "Invalid target language"
msgstr "目标语言无效"

#: includes/class-apgt-translator.php:514
msgid "This page has no translatable text"
msgstr "该页面无可翻译文本"

#: includes/class-apgt-translator.php:534
msgid "Every text on this page is already translated"
msgstr "该页面文本均已翻译"

#. translators: 1: succeeded, 2: skipped, 3: failed
#: includes/class-apgt-translator.php:570
#, php-format
msgid "%1$d succeeded, %2$d skipped, %3$d failed"
msgstr "成功 %1$d 条，跳过 %2$d 条，失败 %3$d 条"

#. translators: %s: error message
#: includes/class-apgt-translator.php:694
#, php-format
msgid "Could not fetch the page: %s"
msgstr "抓取页面失败：%s"

#. translators: %d: HTTP status code
#: includes/class-apgt-translator.php:705
#, php-format
msgid "Could not fetch the page, HTTP %d"
msgstr "抓取页面失败，HTTP %d"

#. translators: %d: number of items
#: includes/class-apgt-translator.php:1128
#, php-format
msgid "%d texts still came back without a translation after retrying"
msgstr "有 %d 条文本重试后仍未返回译文"

#: includes/class-apgt-translator.php:1146
msgid "The AI returned no translation for a single-text request"
msgstr "单条文本 AI 未返回对应译文"

#: includes/class-apgt-translator.php:1192
msgid "No subscription is connected yet. Press \"Connect to Aipogeo\" in the settings."
msgstr "尚未连接订阅，请在设置中点「连接到 Aipogeo」。"

#: includes/class-apgt-translator.php:1204
msgid "The subscription quota is used up. Upgrade the plan or wait for the next period."
msgstr "订阅额度已用完，可升级套餐或等待下个周期。"

#: includes/class-apgt-translator.php:1214
msgid "This site has no AI provider configured yet. Set one up under Settings, or switch this plugin back to its own AI service settings."
msgstr "本站尚未配置 AI 平台。请到「设置」里配置一个，或把本插件切回它自己的 AI 服务设置。"

#: includes/class-apgt-translator.php:1226
msgid "No AI API key configured"
msgstr "未配置 AI API Key"

#: includes/class-apgt-translator.php:1319
msgid "The AI returned an empty response"
msgstr "AI 返回为空"

#: includes/class-apgt-translator.php:1337
msgid "The AI response was cut off by the length limit and contained nothing usable"
msgstr "AI 返回被长度上限截断，且无可用内容"

#: includes/class-apgt-translator.php:1338
msgid "The AI response is not valid JSON"
msgstr "AI 返回不是有效 JSON"

#. translators: %s: raw AI response, truncated. Note the leading space: this is appended to an error message.
#: includes/functions.php:199
#, php-format
msgid " (AI returned: %s)"
msgstr "（AI 返回：%s）"

#: includes/functions.php:215
msgid "Afrikaans"
msgstr "南非语"

#: includes/functions.php:216
msgid "Arabic"
msgstr "阿拉伯语"

#: includes/functions.php:217
msgid "Azerbaijani"
msgstr "阿塞拜疆语"

#: includes/functions.php:218
msgid "Bulgarian"
msgstr "保加利亚语"

#: includes/functions.php:219
msgid "Bengali"
msgstr "孟加拉语"

#: includes/functions.php:220
msgid "Czech"
msgstr "捷克语"

#: includes/functions.php:221
msgid "Danish"
msgstr "丹麦语"

#: includes/functions.php:222
msgid "German"
msgstr "德语"

#: includes/functions.php:223
msgid "Greek"
msgstr "希腊语"

#: includes/functions.php:224
msgid "English"
msgstr "英语"

#: includes/functions.php:225
msgid "Spanish"
msgstr "西班牙语"

#: includes/functions.php:226
msgid "Amharic"
msgstr "阿姆哈拉语"

#: includes/functions.php:227
msgid "Persian"
msgstr "波斯语"

#: includes/functions.php:228
msgid "Finnish"
msgstr "芬兰语"

#: includes/functions.php:229
msgid "French"
msgstr "法语"

#: includes/functions.php:230
msgid "Irish"
msgstr "爱尔兰语"

#: includes/functions.php:231
msgid "Gujarati"
msgstr "古吉拉特语"

#: includes/functions.php:232
msgid "Hebrew"
msgstr "希伯来语"

#: includes/functions.php:233
msgid "Hindi"
msgstr "印地语"

#: includes/functions.php:234
msgid "Croatian"
msgstr "克罗地亚语"

#: includes/functions.php:235
msgid "Haitian"
msgstr "海地克里奥尔语"

#: includes/functions.php:236
msgid "Hungarian"
msgstr "匈牙利语"

#: includes/functions.php:237
msgid "Armenian"
msgstr "亚美尼亚语"

#: includes/functions.php:238
msgid "Indonesian"
msgstr "印度尼西亚语"

#: includes/functions.php:239
msgid "Icelandic"
msgstr "冰岛语"

#: includes/functions.php:240
msgid "Italian"
msgstr "意大利语"

#: includes/functions.php:241
msgid "Inuktitut"
msgstr "伊努克提图特语"

#: includes/functions.php:242
msgid "Japanese"
msgstr "日语"

#: includes/functions.php:243
msgid "Central Khmer"
msgstr "高棉语"

#: includes/functions.php:244
msgid "Kannada"
msgstr "卡纳达语"

#: includes/functions.php:245
msgid "Korean"
msgstr "朝鲜语"

#: includes/functions.php:246
msgid "Kurdish"
msgstr "库尔德语"

#: includes/functions.php:247
msgid "Lao"
msgstr "老挝语"

#: includes/functions.php:248
msgid "Lithuanian"
msgstr "立陶宛语"

#: includes/functions.php:249
msgid "Latvian"
msgstr "拉脱维亚语"

#: includes/functions.php:250
msgid "Malagasy"
msgstr "马达加斯加语"

#: includes/functions.php:251
msgid "Maori"
msgstr "毛利语"

#: includes/functions.php:252
msgid "Malayalam"
msgstr "马拉雅拉姆语"

#: includes/functions.php:253
msgid "Marathi"
msgstr "马拉地语"

#: includes/functions.php:254
msgid "Malay"
msgstr "马来语"

#: includes/functions.php:255
msgid "Maltese"
msgstr "马耳他语"

#: includes/functions.php:256
msgid "Burmese"
msgstr "缅甸语"

#: includes/functions.php:257
msgid "Nepali"
msgstr "尼泊尔语"

#: includes/functions.php:258
msgid "Dutch"
msgstr "荷兰语"

#: includes/functions.php:259
msgid "Norwegian"
msgstr "挪威语"

#: includes/functions.php:260
msgid "Oriya"
msgstr "奥里亚语"

#: includes/functions.php:261
msgid "Punjabi"
msgstr "旁遮普语"

#: includes/functions.php:262
msgid "Polish"
msgstr "波兰语"

#: includes/functions.php:263
msgid "Pashto"
msgstr "普什图语"

#: includes/functions.php:264
msgid "Portuguese"
msgstr "葡萄牙语"

#: includes/functions.php:265
msgid "Romanian"
msgstr "罗马尼亚语"

#: includes/functions.php:266
msgid "Russian"
msgstr "俄语"

#: includes/functions.php:267
msgid "Slovak"
msgstr "斯洛伐克语"

#: includes/functions.php:268
msgid "Slovenian"
msgstr "斯洛文尼亚语"

#: includes/functions.php:269
msgid "Samoan"
msgstr "萨摩亚语"

#: includes/functions.php:270
msgid "Albanian"
msgstr "阿尔巴尼亚语"

#: includes/functions.php:271
msgid "Swedish"
msgstr "瑞典语"

#: includes/functions.php:272
msgid "Swahili"
msgstr "斯瓦希里语"

#: includes/functions.php:273
msgid "Tamil"
msgstr "泰米尔语"

#: includes/functions.php:274
msgid "Telugu"
msgstr "泰卢固语"

#: includes/functions.php:275
msgid "Thai"
msgstr "泰语"

#: includes/functions.php:276
msgid "Tonga"
msgstr "汤加语"

#: includes/functions.php:277
msgid "Turkish"
msgstr "土耳其语"

#: includes/functions.php:278
msgid "Ukrainian"
msgstr "乌克兰语"

#: includes/functions.php:279
msgid "Urdu"
msgstr "乌尔都语"

#: includes/functions.php:280
msgid "Vietnamese"
msgstr "越南语"

#: includes/functions.php:281
msgid "Chinese Simplified"
msgstr "中文简体"

#: includes/functions.php:282
msgid "Chinese Traditional"
msgstr "中文繁体"

#. translators: 1: language name 2: ISO language code
#: includes/functions.php:317
#, php-format
msgctxt "language name with code"
msgid "%1$s (%2$s)"
msgstr "%1$s（%2$s）"

#: admin/class-apgt-admin.php:346
msgid "HTML tags are not allowed in the switcher CSS. Remove every \"<\" character and save again."
msgstr "切换菜单的 CSS 里不允许出现 HTML 标签。请删掉所有「<」字符后再保存。"

#: admin/class-apgt-admin.php:347
msgid "This replaces the editor content with the plugin's default switcher styles and discards your edits. Continue?"
msgstr "这会用插件默认的切换菜单样式替换编辑框内容，你的修改将被丢弃。继续吗？"

#: admin/views/settings-page.php:59
msgid "The custom switcher CSS was not saved: it contains a \"<\" character. CSS never needs one, and HTML tags are not allowed here. Every other setting was saved normally."
msgstr "自定义切换菜单 CSS 未保存：其中含有「<」字符。CSS 用不到这个字符，这里也不允许写 HTML 标签。其余设置已正常保存。"

#: admin/views/settings-page.php:65
msgid "The custom switcher CSS was not saved: it is longer than 64 KB. Every other setting was saved normally."
msgstr "自定义切换菜单 CSS 未保存：内容超过了 64 KB。其余设置已正常保存。"

#: admin/views/settings-page.php:380
#: admin/views/settings-page.php:383
msgid "Switcher styles"
msgstr "切换菜单样式"

#: admin/views/settings-page.php:386
msgid "Plugin default"
msgstr "插件默认样式"

#: admin/views/settings-page.php:391
msgid "My own CSS (edit below) — used instead of the default stylesheet"
msgstr "我自己的 CSS（在下方编辑）——替代默认样式表"

#: admin/views/settings-page.php:396
msgid "No styles — my theme styles the switcher"
msgstr "不加载样式——由我的主题来写切换菜单样式"

#: admin/views/settings-page.php:400
msgid "The switcher markup stays the same whichever you pick; only the stylesheet changes. The class names it uses are listed in the plugin FAQ and will not be renamed."
msgstr "无论选哪一项，切换菜单的 HTML 结构都不变，变的只是样式表。它用到的类名列在插件的常见问题里，今后不会改名。"

#. translators: 1: CSS class name, 2: CSS class name
#: admin/views/settings-page.php:405
#, php-format
msgid "With No styles, your theme also takes over the parts that are not just looks: floating in the corner, and showing the menu only while the %1$s class is present on the switcher. Docking it into a theme element with Container ID above is usually the easiest way to use this option. Developers can also return false from the %2$s filter."
msgstr "选「不加载样式」时，那些不只是外观的部分也要由主题负责：浮动在角落，以及只在切换菜单带有 %1$s 类时才显示下拉菜单。通常最省事的用法是配合上面的「菜单容器 ID」把它挂进主题的某个元素。开发者也可以让 %2$s 过滤器返回 false。"

#: admin/views/settings-page.php:415
msgid "The plugin's default switcher stylesheet has changed since you saved your own CSS, so yours is based on an older version. Use Restore default styles to see the new one; your saved CSS keeps working until you change it."
msgstr "你保存自定义 CSS 之后，插件的默认切换菜单样式有过更新，你这份是在旧版基础上改的。点「恢复默认样式」可查看新版；在你修改之前，已保存的 CSS 照常生效。"

#: admin/views/settings-page.php:420
msgid "Restore default styles"
msgstr "恢复默认样式"

#: admin/views/settings-page.php:426
msgid "Stored in the database and printed inline on the front end; no file is written. HTML tags are not allowed. If this is left empty, the default stylesheet is used."
msgstr "保存在数据库中，前台以内联样式输出，不会写入任何文件。不允许写 HTML 标签。留空则使用默认样式表。"

#. translators: %1$s: seconds until translation resumes
#: admin/class-apgt-admin.php:271
#, php-format
msgid "The server asked us to slow down (rate limit). Resuming in %1$s seconds…"
msgstr "服务器要求放慢请求（触发限流），%1$s 秒后继续…"

#: admin/views/settings-page.php:159
msgid "Off"
msgstr "关闭"

#: admin/views/settings-page.php:169
msgid "On a schedule (WP-Cron): the server works through the pending pages one at a time, whether or not anyone is logged in"
msgstr "按计划任务（WP-Cron）：由服务器逐个翻译待翻译页面，不管有没有人登录"

#: admin/views/settings-page.php:175
msgid "The scheduled option needs no open browser, so pages are translated ahead of time and no visitor has to trigger them. It keeps using AI credit until every page in every target language is done."
msgstr "计划任务方式不需要开着浏览器，页面会提前翻译好，不用等访客来触发。在所有目标语言的所有页面翻译完之前，它会持续消耗 AI 额度。"

#. translators: %s: date and time of the next run
#: admin/views/settings-page.php:189
#, php-format
msgid "Next run: %s"
msgstr "下次执行：%s"

#: admin/views/settings-page.php:194
msgid "Not scheduled yet: set the default language and add at least one target language first."
msgstr "尚未排上计划：请先设置默认语言，并至少添加一个目标语言。"

#. translators: 1: date and time, 2: page title and language, 3: result
#: admin/views/settings-page.php:201
#, php-format
msgid "Last run %1$s: %2$s %3$s"
msgstr "上次执行 %1$s：%2$s %3$s"

#. translators: 1: constant name, 2: file name
#: admin/views/settings-page.php:215
#, php-format
msgid "%1$s is set on this site, so WordPress does not run scheduled tasks by itself. Make sure a system cron job requests %2$s regularly, otherwise background translation never runs."
msgstr "本站设置了 %1$s，WordPress 不会自己执行计划任务。请确认有系统定时任务（cron）定期请求 %2$s，否则后台翻译永远不会运行。"

#: admin/views/settings-page.php:233
msgid "On a schedule the minimum is 60 seconds. WP-Cron only runs when the site gets a request, so on a quiet site the real gap can be longer."
msgstr "计划任务方式最短 60 秒。WP-Cron 要有访问才会触发，访问少的站点实际间隔可能更长。"

#: admin/views/settings-page.php:238
msgid "Pages at a time (Translate all)"
msgstr "同时翻译的页面数（全部翻译）"

#: admin/views/settings-page.php:243
msgid "How many pages the Translate all button works on at once, 1 to 5. Higher is faster but sends more requests to your server and the AI provider. If your host or the AI provider answers \"too many requests\", the queue pauses and retries on its own; lower this number if that happens often."
msgstr "「全部翻译」按钮同时处理几个页面，1 到 5。数值越大越快，但发给服务器和 AI 平台的请求也越多。如果主机或 AI 平台回复「请求过多」，队列会自动暂停并重试；这种情况经常出现的话，请调低这个数。"

#: includes/class-apgt-cron.php:82
msgid "Aipogeo Context Translate background translation"
msgstr "Aipogeo 上下文翻译后台翻译"

#: includes/class-apgt-cron.php:140
msgid "The next page is already being translated elsewhere"
msgstr "下一个页面正在别处翻译中"

#: admin/views/settings-page.php:266
msgid "Coverage is the number of stored translations for the page divided by the number of items extracted from it; text that only appears in structured data (JSON-LD) is not counted. The default of 100 means the translated page is only served once the whole page is done; below that the source page is shown as usual, which keeps half-translated pages out of search indexes. This applies to every translated page, whether or not live translation is on. To see why a page came out untranslated, check its X-APGT-Status response header."
msgstr "占比 = 该页面已有译文的条数 ÷ 提取到的条数；只出现在结构化数据（JSON-LD）里的文字不计入。默认 100 表示整页翻完才输出译文，达不到就先照常显示原文，避免半中半英的页面被搜索引擎收录。无论是否开启实时翻译，这条规则对所有译文页面都生效。想知道某个页面为什么没翻译，看它的 X-APGT-Status 响应头。"

#: admin/views/help-page.php:211
msgid "3. Customizing the translation prompt"
msgstr "三、自定义翻译指令"

#: admin/views/help-page.php:214
msgid "The translation prompt is the instruction sent to the AI together with every batch of text. The default is generic: it knows nothing about your business, so it cannot tell that \"Acme Cloud\" is your company rather than two ordinary words, or that a model number has to stay as it is. Anything specific to your site has to come from you. Edit it under Translation Settings, in the Translation prompt section at the bottom of the page."
msgstr "翻译指令是随每一批文本一起发给 AI 的说明。默认指令是通用的：它对你的业务一无所知，分不清「Acme Cloud」是你的公司名还是两个普通单词，也不知道型号必须原样保留。凡是和你网站相关的具体信息，都得由你来告诉它。在「翻译设置」页面底部的「翻译指令」部分编辑。"

#: admin/views/help-page.php:217
msgid "What to tell the AI"
msgstr "该告诉 AI 什么"

#: admin/views/help-page.php:222
msgid "What"
msgstr "内容"

#: admin/views/help-page.php:223
msgid "Why it matters"
msgstr "为什么要写"

#: admin/views/help-page.php:228
msgid "Brand, company and site names"
msgstr "品牌、公司和网站名称"

#: admin/views/help-page.php:229
msgid "Left alone, the AI may translate them word by word, transliterate them into the target script, or treat them as ordinary words. This is the most common reason a translated page reads wrongly."
msgstr "不交代的话，AI 可能把它们逐字翻译、音译成目标语言的文字，或者当成普通词汇处理。翻译后的页面读起来不对劲，这是最常见的原因。"

#: admin/views/help-page.php:232
msgid "Product, series and model names"
msgstr "产品、系列和型号名称"

#: admin/views/help-page.php:233
msgid "Names such as \"Sunrise Pro\" or \"X-200\" look like everyday words or codes to the AI, so it does not know they are fixed."
msgstr "「Sunrise Pro」「X-200」这类名称在 AI 看来像日常词汇或编号，它并不知道这些是固定不变的。"

#: admin/views/help-page.php:236
msgid "People, places and addresses"
msgstr "人名、地名和地址"

#: admin/views/help-page.php:237
msgid "Team members, office locations and street addresses usually stay as they are written."
msgstr "团队成员、办公地点和街道地址通常要照原样保留。"

#: admin/views/help-page.php:240
msgid "Fixed terminology"
msgstr "固定术语"

#: admin/views/help-page.php:241
msgid "Words your business uses in one particular way (\"plan\", \"seat\", \"quote\") otherwise come out differently from page to page."
msgstr "你的业务里有特定用法的词（如「套餐」「席位」「报价」），不指定的话，每个页面的译法可能都不一样。"

#: admin/views/help-page.php:244
msgid "The site and its audience"
msgstr "网站与受众"

#: admin/views/help-page.php:245
msgid "A sentence about your industry, your readers and the tone you want lets the AI choose the right register and vocabulary."
msgstr "用一句话说明你的行业、读者和想要的语气，AI 就能选对措辞和用语。"

#: admin/views/help-page.php:250
msgid "Example: adding notes to the default prompt"
msgstr "示例：在默认指令里追加说明"

#: admin/views/help-page.php:253
msgid "Keep the default prompt as it is and add lines of your own under \"Notes:\". In the example below, the first line stands for the notes that are already there; everything after it is new. Write your additions in the same language as the rest of the prompt."
msgstr "保留默认指令不动，在「Notes:」下面追加你自己的行。下面示例中，第一行代表已有的说明，其后的内容都是新增的。追加的内容请使用和指令其余部分相同的语言书写。"

#: admin/views/help-page.php:268
msgid "Names the AI keeps getting wrong"
msgstr "AI 总是译错的名称"

#: admin/views/help-page.php:271
msgid "A prompt is a request, and the AI can still slip. Two other tools are stricter, and the three work well together:"
msgstr "指令只是一个请求，AI 仍可能出错。还有两个更严格的手段，三者配合效果最好："

#: admin/views/help-page.php:277
msgid "Tool"
msgstr "手段"

#: admin/views/help-page.php:278
msgid "How it works"
msgstr "工作方式"

#: admin/views/help-page.php:279
msgid "Best for"
msgstr "最适合"

#: admin/views/help-page.php:285
msgid "Asks the AI to leave names alone or to use your wording. It applies to every string that is sent."
msgstr "请 AI 不要动这些名称，或者使用你指定的说法。对每一条送去翻译的文本都生效。"

#: admin/views/help-page.php:286
msgid "Names inside sentences, terminology, tone."
msgstr "句子中间的名称、术语、语气。"

#: admin/views/help-page.php:289
msgid "Markers (section 2)"
msgstr "不翻译标记（第二节）"

#: admin/views/help-page.php:290
msgid "A marked element is never sent to the AI at all. It applies to a whole element, so it suits blocks rather than a single word inside a sentence."
msgstr "带标记的元素根本不会发给 AI。标记作用于整个元素，所以适合整块内容，不适合句子里的单个词。"

#: admin/views/help-page.php:291
msgid "A model number, a code snippet, an address block."
msgstr "型号、代码片段、地址块。"

#: admin/views/help-page.php:294
msgid "Replacement rules (Languages screen)"
msgstr "替换规则（语言管理页面）"

#: admin/views/help-page.php:296
msgid "A name the AI keeps rendering wrongly in one language."
msgstr "AI 在某个语言里总是译错的名称。"

#: admin/views/help-page.php:302
msgid "For example, if the German translation keeps turning \"Acme Cloud\" into \"Acme Wolke\", add a Word match rule for German: search for \"Acme Wolke\", replace with \"Acme Cloud\"."
msgstr "例如德语译文总把「Acme Cloud」译成「Acme Wolke」，就为德语添加一条「模糊替换」规则：查找「Acme Wolke」，替换为「Acme Cloud」。"

#: admin/views/help-page.php:336
msgid "Good to know"
msgstr "需要了解"

#: admin/views/help-page.php:340
msgid "Keep the three variables."
msgstr "保留三个变量。"

#: admin/views/help-page.php:341
msgid "The prompt must contain {{language_from}}, {{language_to}} and {{translate_data}}, and should ask for JSON only with the keys unchanged. If a variable is missing, the prompt is not saved (the other settings still are)."
msgstr "指令里必须包含 {{language_from}}、{{language_to}} 和 {{translate_data}}，并且应要求只返回 JSON、键保持不变。缺少任何一个变量，指令就不会保存（其他设置仍会保存）。"

#: admin/views/help-page.php:344
msgid "Add, do not rewrite."
msgstr "追加，别重写。"

#: admin/views/help-page.php:345
msgid "Start from the default prompt and add lines. Restore default prompt brings it back at any time."
msgstr "从默认指令出发，往里加行。随时可以用「恢复默认指令」还原。"

#: admin/views/help-page.php:348
msgid "Name things one by one."
msgstr "逐个写明名称。"

#: admin/views/help-page.php:349
msgid "List the actual names. \"Keep our brand names\" tells the AI nothing, because it cannot know which words those are."
msgstr "把具体名称列出来。只写「保留我们的品牌名」等于什么也没说，AI 无从知道哪些词是品牌名。"

#: admin/views/help-page.php:352
msgid "It only affects new translations."
msgstr "只对新的翻译生效。"

#: admin/views/help-page.php:353
msgid "Strings that are already translated keep their translation. Edit or delete their records under Translation Data, then translate the page again."
msgstr "已经翻译过的文本保留原来的译文。请在「译文数据」里编辑或删除对应记录，再重新翻译该页面。"

#: admin/views/help-page.php:356
msgid "Try one page first."
msgstr "先试一个页面。"

#: admin/views/help-page.php:357
msgid "Translate a single page under Translate Pages, read it side by side with the original, and adjust the prompt before you translate the rest."
msgstr "在「页面翻译」里翻译单个页面，与原文对照着读，调整好指令之后再翻译其余页面。"

#: admin/views/help-page.php:360
msgid "URL paths have their own prompt."
msgstr "URL 路径有单独的指令。"

#: admin/views/help-page.php:361
msgid "If Translate URL paths is on, the URL path prompt is a separate setting; add your names there as well."
msgstr "开启「翻译 URL 路径」后，「URL 路径翻译指令」是另一项独立设置，请把名称也加到那里。"

#: admin/views/settings-page.php:738
msgid "Tell the AI what must not be translated."
msgstr "告诉 AI 哪些内容不能翻译。"

#: admin/views/settings-page.php:739
msgid "The AI knows nothing about your business. Unless you say so, it may translate or transliterate your brand name, company name, product and model names or people's names, or take them for ordinary words and get them wrong. List the names that must stay exactly as they are in the prompt yourself, for example under Notes."
msgstr "AI 对你的业务一无所知。你不说，它可能把你的品牌名、公司名、产品和型号名称、人名翻译或音译掉，或者当成普通词汇而译错。请自己在指令里（例如「Notes」下面）列出必须原样保留的名称。"

#. translators: %s: link to the Help screen.
#: admin/views/settings-page.php:743
#, php-format
msgid "Examples are in section 3 of the %s screen."
msgstr "示例见%s页面的第三节。"

#: admin/views/help-page.php:295
msgid "Fixes the result afterwards: Word match, Exact match or Regex replace. It works whatever the AI returned, but it knows nothing about context, so use it with care (see below)."
msgstr "事后修正结果：模糊替换、完全匹配或正则替换。无论 AI 返回了什么，它都有效，但它完全不了解上下文，请谨慎使用（见下文）。"

#: admin/views/help-page.php:305
msgid "Use replacement rules with care"
msgstr "谨慎使用替换规则"

#: admin/views/help-page.php:309
msgid "A replacement rule knows nothing about context."
msgstr "替换规则不了解上下文。"

#: admin/views/help-page.php:310
msgid "It is applied to every translated text of that language, wherever the text to find appears, including sentences where it means something else. Try the translation prompt or the markers first, and reach for a rule only when a specific name still comes out wrong."
msgstr "它会作用于该语言的每一条译文，只要出现要查找的文字就会替换，包括那些含义完全不同的句子。请先试试翻译指令或不翻译标记，只有当某个具体名称仍然译错时，再考虑用规则。"

#: admin/views/help-page.php:314
msgid "Short or common words are risky."
msgstr "短词或常用词风险很大。"

#: admin/views/help-page.php:315
msgid "Replacing \"Apple\" with \"Apple Inc.\" also turns \"Eat an apple a day\" into \"Eat an Apple Inc. a day\". Word match and Exact match ignore capitalization, so \"apple\" and \"APPLE\" match too. Choose a distinctive name, ideally several words long."
msgstr "把「Apple」替换成「Apple Inc.」，也会把「Eat an apple a day」变成「Eat an Apple Inc. a day」。模糊替换和完全匹配都不区分大小写，所以「apple」「APPLE」同样会被命中。请选择有辨识度的名称，最好是几个词组成的。"

#: admin/views/help-page.php:318
msgid "Rules run more than once."
msgstr "规则会执行不止一次。"

#: admin/views/help-page.php:319
msgid "A rule is applied when a translation is created and again every time the page is served. If the replacement contains the text it replaces (for example \"Cloud\" to \"Acme Cloud\"), the result keeps growing: \"Acme Acme Cloud\". Make sure applying the rule twice gives the same result as applying it once."
msgstr "规则在生成译文时应用一次，页面每次输出时又应用一次。如果替换后的内容包含被替换的文字（例如把「Cloud」替换成「Acme Cloud」），结果会越变越长：「Acme Acme Cloud」。请确保规则应用两次与应用一次的结果相同。"

#: admin/views/help-page.php:322
msgid "A new rule changes the live site at once."
msgstr "新规则会立即改变线上页面。"

#: admin/views/help-page.php:323
msgid "Rules are applied when pages are served, so saving one also affects translations you already have, including ones you edited by hand under Translation Data."
msgstr "规则在页面输出时生效，所以保存后也会影响你已有的译文，包括你在「译文数据」里手动修改过的。"

#: admin/views/help-page.php:326
msgid "Regex replace is the most powerful and the easiest to get wrong."
msgstr "正则替换功能最强，也最容易写错。"

#: admin/views/help-page.php:327
msgid "A pattern that is too broad can rewrite text all over the site. Test it on sentences of different kinds before saving."
msgstr "范围过宽的表达式可能改写整个网站里的文字。保存前请用不同类型的句子测试。"

#: admin/views/help-page.php:330
msgid "Check the result, and know how to undo it."
msgstr "检查结果，并知道怎么撤销。"

#: admin/views/help-page.php:331
msgid "After adding a rule, open a few translated pages where the word appears and read them. Deleting a rule stops it acting when pages are served, but translations stored while it was active keep what it changed; fix those under Translation Data."
msgstr "添加规则后，打开几个出现该词的译文页面读一遍。删除规则后，页面输出时不再受它影响，但规则生效期间已存入的译文保留着它当时改过的内容，需要到「译文数据」里修正。"

#: admin/views/languages-page.php:186
msgid "Use them sparingly: a rule applies to every translated text of that language, wherever the text to find appears, with no idea of context. Section 3 of the Help screen explains the risks."
msgstr "请谨慎使用：规则会作用于该语言的每一条译文，只要出现要查找的文字就会替换，完全不看上下文。使用说明第三节介绍了其中的风险。"

#: admin/views/languages-page.php:205
msgid "Use with care: a rule changes every translated text of this language that contains the text to find, whatever the context. It is applied when a translation is created and again each time a page is served. Pick specific, distinctive text, and make sure the replacement does not contain the text it replaces."
msgstr "请谨慎使用：规则会修改该语言中所有包含查找文字的译文，不管上下文如何。它在生成译文时应用一次，页面每次输出时还会再应用一次。请选择具体、有辨识度的文字，并确保替换内容不包含被替换的文字。"
