diff --git a/Dockerfile b/Dockerfile
index f8c4398f..5701c6bb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,8 @@ FROM ruby:4.0.1-alpine AS download
WORKDIR /fonts
-RUN apk --no-cache add wget && \
+RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \
+ apk --no-cache add wget && \
wget https://github.com/satbyy/go-noto-universal/releases/download/v7.0/GoNotoKurrent-Regular.ttf && \
wget https://github.com/satbyy/go-noto-universal/releases/download/v7.0/GoNotoKurrent-Bold.ttf && \
wget https://github.com/impallari/DancingScript/raw/master/fonts/DancingScript-Regular.otf && \
@@ -20,12 +21,16 @@ ENV NODE_ENV=production
WORKDIR /app
-RUN apk add --no-cache nodejs yarn git build-base && \
+RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \
+ apk add --no-cache nodejs yarn git build-base && \
+ gem sources --remove https://rubygems.org/ && \
+ gem sources -a https://gems.ruby-china.com/ && \
gem install shakapacker
COPY ./package.json ./yarn.lock ./
-RUN yarn install --network-timeout 1000000
+RUN yarn config set registry https://registry.npmmirror.com && \
+ yarn install --network-timeout 1000000
COPY ./bin/shakapacker ./bin/shakapacker
COPY ./config/webpack ./config/webpack
@@ -48,7 +53,8 @@ ENV OPENSSL_CONF=/etc/openssl_legacy.cnf
WORKDIR /app
-RUN apk add --no-cache libpq vips redis vips-heif onnxruntime
+RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \
+ apk add --no-cache libpq vips redis vips-heif onnxruntime
RUN addgroup -g 2000 docuseal && adduser -u 2000 -G docuseal -s /bin/sh -D -h /home/docuseal docuseal
@@ -66,7 +72,10 @@ activate = 1' >> /etc/openssl_legacy.cnf
COPY --chown=docuseal:docuseal ./Gemfile ./Gemfile.lock ./
-RUN apk add --no-cache build-base git libpq-dev yaml-dev && bundle install && apk del --no-cache build-base git libpq-dev yaml-dev && rm -rf ~/.bundle /usr/local/bundle/cache && ruby -e "puts Dir['/usr/local/bundle/**/{spec,rdoc,resources/shared,resources/collation,resources/locales,resources/unicode_data/properties}'] + Dir['/usr/local/bundle/gems/*/{test,tests,examples,sample,misc,doc,docs}'] + Dir['/usr/local/bundle/gems/*/ext/**/*.{c,h,o,S}']" | xargs rm -rf && ln -sf /usr/lib/libonnxruntime.so.1 $(ruby -e "print Dir[Gem::Specification.find_by_name('onnxruntime').gem_dir + '/vendor/*.so'].first")
+RUN apk add --no-cache build-base git libpq-dev yaml-dev && \
+ bundle config set --global mirror.https://rubygems.org https://gems.ruby-china.com && \
+ bundle install && \
+ apk del --no-cache build-base git libpq-dev yaml-dev && rm -rf ~/.bundle /usr/local/bundle/cache && ruby -e "puts Dir['/usr/local/bundle/**/{spec,rdoc,resources/shared,resources/collation,resources/locales,resources/unicode_data/properties}'] + Dir['/usr/local/bundle/gems/*/{test,tests,examples,sample,misc,doc,docs}'] + Dir['/usr/local/bundle/gems/*/ext/**/*.{c,h,o,S}']" | xargs rm -rf && ln -sf /usr/lib/libonnxruntime.so.1 $(ruby -e "print Dir[Gem::Specification.find_by_name('onnxruntime').gem_dir + '/vendor/*.so'].first")
COPY --chown=docuseal:docuseal ./bin ./bin
COPY --chown=docuseal:docuseal ./app ./app
diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb
index 49314f32..d5d92ee9 100644
--- a/app/controllers/accounts_controller.rb
+++ b/app/controllers/accounts_controller.rb
@@ -9,7 +9,21 @@ class AccountsController < ApplicationController
'pt-PT' => 'Português',
'de-DE' => 'Deutsch',
'it-IT' => 'Italiano',
- 'nl-NL' => 'Nederlands'
+ 'nl-NL' => 'Nederlands',
+ 'zh-CN' => '中文 (简体)',
+ 'es' => 'Español',
+ 'it' => 'Italiano',
+ 'de' => 'Deutsch',
+ 'fr' => 'Français',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'uk' => 'Українська',
+ 'cs' => 'Čeština',
+ 'pt' => 'Português',
+ 'he' => 'עברית',
+ 'ar' => 'العربية',
+ 'ko' => '한국어',
+ 'ja' => '日本語'
}.freeze
before_action :load_account
diff --git a/app/javascript/submission_form/i18n.js b/app/javascript/submission_form/i18n.js
index 2a265d18..074fef2e 100644
--- a/app/javascript/submission_form/i18n.js
+++ b/app/javascript/submission_form/i18n.js
@@ -1524,6 +1524,115 @@ const ja = {
enter_screen_reader_mode: 'スクリーンリーダーモードを有効にする'
}
-const i18n = { en, es, it, de, fr, pl, uk, cs, pt, he, nl, ar, ko, ja }
+const zh = {
+ step: '步骤',
+ form_progress: '表单进度',
+ close: '关闭',
+ uploaded_files: '已上传文件',
+ signature_drawing_area: '签名绘制区域。使用鼠标或触摸来绘制您的签名。',
+ kba: 'KBA',
+ please_upload_an_image_file: '请上传图片文件',
+ must_be_characters_length: '必须为 {number} 个字符',
+ complete_all_required_fields_to_proceed_with_identity_verification: '请填写所有必填字段以继续身份验证。',
+ verify_id: '验证身份',
+ identity_verification: '身份验证',
+ complete: '完成',
+ fill_all_required_fields_to_complete: '填写所有必填字段以完成',
+ sign_and_complete: '签署并完成',
+ text: '文本',
+ by_clicking_you_agree_to_the: '点击"{button}"即表示您同意',
+ electronic_signature_disclosure: '电子签名披露',
+ esignature_disclosure: '电子签名披露',
+ signature: '签名',
+ initials: '首字母',
+ sign_on_the_touchscreen: '在触摸屏上签名',
+ approved: '已批准',
+ reviewed: '已审核',
+ other: '其他',
+ authored_by_me: '由我创作',
+ invite: '邀请',
+ email: '电子邮件',
+ approved_by: '批准人',
+ reviewed_by: '审核人',
+ authored_by: '创作人',
+ select_a_reason: '选择原因',
+ scan_the_qr_code_with_the_camera_app_to_open_the_form_on_mobile_and_draw_your_signature: '使用相机应用扫描二维码,在手机上打开表单并绘制签名',
+ date: '日期',
+ number: '数字',
+ value_is_invalid: '值无效',
+ verification_code_is_invalid: '验证码无效',
+ already_paid: '已支付',
+ image: '图片',
+ pay: '支付',
+ take_photo: '拍照',
+ number_phone_is_invalid: '{number} 电话号码无效',
+ file: '文件',
+ digitally_signed_by: '数字签名人',
+ reason: '原因',
+ select: '选择',
+ checkbox: '复选框',
+ multiple: '多选',
+ radio: '单选',
+ cells: '单元格',
+ stamp: '印章',
+ minimize: '最小化',
+ payment: '支付',
+ phone: '电话',
+ start_now: '立即开始',
+ continue: '继续',
+ sign_now: '立即签署',
+ type_here_: '在此输入...',
+ optional: '可选',
+ option: '选项',
+ appears_on: '显示于',
+ page: '页',
+ select_your_option: '选择您的选项',
+ complete_hightlighted_checkboxes_and_click: '勾选高亮的复选框并点击',
+ submit: '提交',
+ next: '下一步',
+ click_to_upload: '点击上传',
+ or_drag_and_drop_files: '或拖放文件',
+ send_copy_via_email: '通过电子邮件发送副本',
+ download: '下载',
+ clear: '清除',
+ redraw: '重绘',
+ draw_initials: '绘制首字母',
+ type_signature_here: '在此输入签名',
+ type_initial_here: '在此输入首字母',
+ form_has_been_completed: '表单已完成!',
+ document_has_been_signed: '文件已签署!',
+ documents_have_been_signed: '文件已签署!',
+ create_a_free_account: '创建免费账户',
+ powered_by: '由以下提供支持',
+ please_check_the_box_to_continue: '请勾选复选框以继续。',
+ open_source_documents_software: '开源文档软件',
+ verified_phone_number: '验证电话号码',
+ use_international_format: '使用国际格式:+1xxx',
+ six_digits_code: '6位数字验证码',
+ change_phone_number: '更改电话号码',
+ sending: '发送中...',
+ resend_code: '重新发送验证码',
+ verification_code_has_been_resent: '验证码已通过短信重新发送',
+ please_fill_all_required_fields: '请填写所有必填字段',
+ set_today: '设为今天',
+ toggle_multiline_text: '切换多行文本',
+ draw_signature: '绘制签名',
+ type_initial: '输入首字母',
+ draw: '绘制',
+ type: '输入',
+ type_text: '输入文本',
+ email_has_been_sent: '电子邮件已发送',
+ processing: '处理中',
+ pay_with_stripe: '使用 Stripe 支付',
+ reupload: '重新上传',
+ upload: '上传',
+ files: '文件',
+ signature_is_too_small_or_simple_please_redraw: '签名太小或太简单。请重新绘制。',
+ browser_privacy_settings_block_canvas: '您的浏览器隐私设置限制了绘图画布的使用。请使用其他浏览器或设备,或禁用阻止画布的隐私设置以进行签名。',
+ wait_countdown_seconds: '请等待 {countdown} 秒',
+ enter_screen_reader_mode: '进入屏幕阅读器模式'
+}
+
+const i18n = { en, es, it, de, fr, pl, uk, cs, pt, he, nl, ar, ko, ja, zh }
export default i18n
diff --git a/app/javascript/template_builder/i18n.js b/app/javascript/template_builder/i18n.js
index 19d71372..ff43048a 100644
--- a/app/javascript/template_builder/i18n.js
+++ b/app/javascript/template_builder/i18n.js
@@ -1566,4 +1566,228 @@ const nl = {
viewing_revision_from: 'Revisie van {date} bekijken'
}
-export { en, es, it, pt, fr, de, nl }
+const zh = {
+ fixed: '固定',
+ default: '默认',
+ save_as_custom_field: '保存为自定义字段',
+ kba: 'KBA',
+ analyzing_: '分析中...',
+ download: '下载',
+ downloading_: '下载中...',
+ view: '查看',
+ autodetect_fields: '自动检测字段',
+ payment_link: '支付链接',
+ strikeout: '删除线',
+ draw_strikethrough_the_document: '在文档上绘制删除线',
+ quantity: '数量',
+ prefillable: '可预填',
+ signature_id: '签名 ID',
+ error_message: '错误信息',
+ length: '长度',
+ min: '最小值',
+ max: '最大值',
+ font: '字体',
+ party: '参与方',
+ date_signed: '签名日期',
+ method: '方式',
+ reorder_fields: '重新排序字段',
+ verify_id: '验证身份',
+ obtain_qualified_electronic_signature_with_the_trusted_provider_click_to_learn_more: '通过可信提供商获取合格的电子签名 (QeS)。点击了解更多。',
+ editable: '可编辑',
+ recurrent: '定期',
+ one_off: '一次性',
+ search_field: '搜索字段',
+ field_not_found: '未找到字段',
+ clear: '清除',
+ align: '对齐',
+ resize: '调整大小',
+ width: '宽度',
+ height: '高度',
+ add_all_required_fields_to_continue: '添加所有必填字段以继续',
+ uploaded_pdf_contains_form_fields_keep_or_remove_them: '上传的 PDF 包含表单字段。保留还是移除?',
+ keep: '保留',
+ left: '左',
+ heading: '标题',
+ validation: '验证',
+ add_blank_page: '添加空白页',
+ right: '右',
+ center: '居中',
+ description: '描述',
+ display_title: '显示标题',
+ with_logo: '带 Logo',
+ unchecked: '未选中',
+ price: '价格',
+ type: '类型',
+ list: '列表',
+ no_variables: '暂无变量',
+ no_variables_description: '在文档中添加 [[variable]] 标记以创建动态内容变量。',
+ type_value: '输入值',
+ equal: '等于',
+ not_equal: '不等于',
+ greater_than: '大于',
+ less_than: '小于',
+ contains: '包含',
+ does_not_contain: '不包含',
+ not_empty: '非空',
+ empty: '为空',
+ select_field_: '选择字段...',
+ select_value_: '选择值...',
+ remove_condition: '移除条件',
+ add_condition: '添加条件',
+ are_you_sure_: '确定吗?',
+ sign_yourself: '自行签署',
+ set_signing_date: '设置签名日期',
+ signing_date: '签名日期',
+ signing_date_and_time: '签名日期和时间',
+ send: '发送',
+ remove: '移除',
+ edit: '编辑',
+ settings: '设置',
+ up: '上移',
+ down: '下移',
+ checked: '已选中',
+ current_date: '当前日期',
+ save: '保存',
+ cancel: '取消',
+ any: '任意',
+ drawn: '手绘',
+ drawn_or_typed: '手绘或输入',
+ drawn_or_upload: '手绘或上传',
+ upload: '上传',
+ formula: '公式',
+ typed: '输入',
+ draw_field_on_the_document: '在文档上绘制字段',
+ click_to_upload: '点击上传',
+ or_drag_and_drop_files: '或拖放文件',
+ uploading: '上传中',
+ processing_: '处理中...',
+ add_pdf_documents_or_images: '添加 PDF 文档或图片',
+ add_documents_or_images: '添加文档或图片',
+ add_a_new_document: '添加新文档',
+ replace_existing_document: '替换现有文档',
+ clone_and_replace_documents: '克隆并替换文档',
+ required: '必填',
+ default_value: '默认值',
+ format: '格式',
+ read_only: '只读',
+ page: '页',
+ draw_new_area: '绘制新区域',
+ copy_to_all_pages: '复制到所有页面',
+ more: '更多',
+ add_option: '添加选项',
+ option: '选项',
+ options: '选项',
+ condition: '条件',
+ make_dynamic: '设为动态',
+ first_party: '第一方',
+ second_party: '第二方',
+ third_party: '第三方',
+ fourth_party: '第四方',
+ fifth_party: '第五方',
+ sixth_party: '第六方',
+ seventh_party: '第七方',
+ eighth_party: '第八方',
+ ninth_party: '第九方',
+ tenth_party: '第十方',
+ eleventh_party: '第十一方',
+ twelfth_party: '第十二方',
+ thirteenth_party: '第十三方',
+ fourteenth_party: '第十四方',
+ fifteenth_party: '第十五方',
+ sixteenth_party: '第十六方',
+ seventeenth_party: '第十七方',
+ eighteenth_party: '第十八方',
+ nineteenth_party: '第十九方',
+ twentieth_party: '第二十方',
+ draw: '绘制',
+ add: '添加',
+ or_add_field_without_drawing: '或不绘制直接添加字段',
+ text: '文本',
+ number: '数字',
+ signature: '签名',
+ initials: '首字母',
+ date: '日期',
+ image: '图片',
+ file: '文件',
+ select: '选择',
+ checkbox: '复选框',
+ multiple: '多选',
+ radio: '单选',
+ cells: '单元格',
+ stamp: '印章',
+ payment: '支付',
+ phone: '电话',
+ text_field: '文本字段',
+ signature_field: '签名字段',
+ initials_field: '首字母字段',
+ date_field: '日期字段',
+ number_field: '数字字段',
+ image_field: '图片字段',
+ file_field: '文件字段',
+ select_field: '选择字段',
+ checkbox_field: '复选框字段',
+ multiple_field: '多选字段',
+ radio_field: '单选组字段',
+ cells_field: '单元格字段',
+ stamp_field: '印章字段',
+ payment_field: '支付字段',
+ phone_field: '电话字段',
+ draw_a_text_field_on_the_page_with_a_mouse: '使用鼠标在页面上绘制文本字段',
+ drag_and_drop_any_other_field_type_on_the_page: '将其他字段类型拖放到页面上',
+ click_on_the_field_type_above_to_start_drawing_it: '点击上面的字段类型开始绘制',
+ please_draw_fields_to_prepare_the_document: '请绘制字段以准备文档。',
+ only_pdf_and_images_are_supported: '仅支持 PDF 和图片。',
+ unlock_sms_verified_phone_number_field_with_paid_plan_use_text_field_for_phone_numbers_without_verification: '通过付费计划解锁短信验证的电话号码字段。对于不需要验证的电话号码,请使用文本字段。',
+ available_only_in_pro: '仅 Pro 版可用',
+ failed_to_download_files: '下载文件失败',
+ please_add_fields_for_the_submitter_name_or_remove_the_submitter_name_if_not_needed: '请为 {submitter_name} 添加字段。或者,如果不需要,请移除 {submitter_name}。',
+ draw_field: '绘制 {field} 字段',
+ replace: '替换',
+ uploading_: '上传中...',
+ add_document: '添加文档',
+ none: '无',
+ ssn: 'SSN',
+ ein: 'EIN',
+ email: '电子邮件',
+ url: 'URL',
+ zip: '邮政编码',
+ custom: '自定义',
+ numbers_only: '仅数字',
+ letters_only: '仅字母',
+ regexp_validation: '正则表达式验证',
+ custom_validation: '自定义验证',
+ length_validation: '长度验证',
+ number_range: '数字范围',
+ enter_pdf_password: '输入 PDF 密码',
+ wrong_password: '密码错误',
+ currency: '货币',
+ save_and_preview: '保存并预览',
+ preferences: '偏好设置',
+ available_in_pro: 'Pro 版可用',
+ some_fields_are_missing_in_the_formula: '公式中缺少一些字段。',
+ learn_more: '了解更多',
+ and: '和',
+ or: '或',
+ start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: '开始快速导览,学习如何创建和发送您的第一份文档',
+ start_tour: '开始导览',
+ or_add_from: '或添加自',
+ sync: '同步',
+ syncing: '同步中...',
+ copy: '复制',
+ paste: '粘贴',
+ select_fields: '选择字段',
+ draw_fields: '绘制字段',
+ align_left: '左对齐',
+ align_right: '右对齐',
+ align_top: '顶部对齐',
+ align_bottom: '底部对齐',
+ fields_selected: '已选择 {count} 个字段',
+ field_added: '已添加 {count} 个字段',
+ fields_added: '已添加 {count} 个字段',
+ revisions: '修订版本',
+ apply: '应用',
+ no_revisions_yet: '暂无修订版本',
+ viewing_revision_from: '查看来自 {date} 的修订版本'
+}
+
+export { en, es, it, pt, fr, de, nl, zh }
diff --git a/config/application.rb b/config/application.rb
index a2bcddaf..48ccc620 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -25,7 +25,7 @@ module DocuSeal
config.active_storage.draw_routes = ENV['MULTITENANT'] != 'true'
- config.i18n.available_locales = %i[en en-US en-GB es-ES fr-FR pt-PT de-DE it-IT nl-NL
+ config.i18n.available_locales = %i[en en-US en-GB es-ES fr-FR pt-PT de-DE it-IT nl-NL zh-CN
es it de fr nl pl uk cs pt he ar ko ja]
config.i18n.fallbacks = [:en]
diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml
index 055aa022..84174bc7 100644
--- a/config/locales/i18n.yml
+++ b/config/locales/i18n.yml
@@ -20,6 +20,7 @@ en: &en
language_ar: العربية
language_ko: 한국어
language_ja: 日本語
+ language_zh-CN: 中文 (简体)
add_from_google_drive: Add from Google Drive
or_add_from: Or add from
upload_a_new_document: Upload a New Document
@@ -8084,3 +8085,1072 @@ it-IT:
nl-NL:
<<: *nl
+zh-CN:
+ <<: *en
+ language_en: 英语
+ language_en-US: 英语 (美国)
+ language_en-GB: 英语 (英国)
+ language_es-ES: 西班牙语
+ language_fr-FR: 法语
+ language_pt-PT: 葡萄牙语
+ language_de-DE: 德语
+ language_nl-NL: 荷兰语
+ language_es: 西班牙语
+ language_it: 意大利语
+ language_de: 德语
+ language_fr: 法语
+ language_pl: 波兰语
+ language_uk: 乌克兰语
+ language_cs: 捷克语
+ language_pt: 葡萄牙语
+ language_he: 希伯来语
+ language_nl: 荷兰语
+ language_ar: 阿拉伯语
+ language_ko: 韩语
+ language_ja: 日语
+ language_zh-CN: 中文 (简体)
+ add_from_google_drive: 从 Google Drive 添加
+ or_add_from: 或从以下添加
+ upload_a_new_document: 上传新文档
+ billing: 账单
+ hi_there: 您好
+ templates_that_require_email_or_phone_2fa_cannot_be_used_via_a_shared_link: 需要邮件或电话双重认证的模板不能通过共享链接使用。
+ pro: Pro
+ thanks: 谢谢
+ private: 私有
+ _variables: 变量
+ your_email_address_has_been_released_immediately_you_can_now_be_added_to_your_company_team_without_waiting_for_the_deletion_period_to_end: 您的电子邮件地址已被立即释放。如果您要加入团队,现在可以被邀请到公司团队,无需等待删除期结束。
+ make_all_newly_created_templates_private_to_their_creator_and_admins_by_default: 默认将所有新创建的模板设为创建者和管理员私有
+ create_templates_with_admin_access_by_default: 默认创建具有管理员访问权限的模板
+ require_email_2fa: 需要邮件双重认证
+ when_checked_each_signer_must_verify_their_email_with_a_one_time_code_before_accessing_the_document: 选中后,每个签署者在访问文档之前必须使用一次性验证码验证其电子邮件。
+ require_phone_2fa: 需要电话双重认证
+ when_checked_each_signer_must_verify_their_phone_with_a_one_time_code_before_accessing_the_document: 选中后,每个签署者在访问文档之前必须使用一次性验证码验证其电话号码。
+ select: 选择
+ enabled: 已启用
+ disabled: 已禁用
+ party: 参与方
+ make_owner: 设为所有者
+ use_direct_file_attachment_links_in_the_documents: 在文档中使用直接文件附件链接
+ click_here_to_send_a_reset_password_email_html: '发送重置密码邮件。'
+ edit_order: 编辑顺序
+ expirable_file_download_links: 可过期的文件下载链接
+ sender_form_fields: 发送者表单字段
+ default_parties: 默认参与方
+ authenticate_embedded_form_preview_with_token: 使用令牌验证嵌入式表单预览
+ stripe_integration: Stripe 集成
+ require_all_recipients: 需要所有收件人
+ stripe_account_has_been_connected: Stripe 账户已连接。
+ re_connect_stripe: 重新连接 Stripe
+ bcc_recipients: 密送收件人
+ resend_pending: 重新发送待处理
+ always_enforce_signing_order: 始终强制执行签署顺序
+ create_templates_with_private_access_by_default: 默认创建具有私有访问权限的模板
+ ensure_unique_recipients: 确保收件人唯一
+ edit_per_party: 按参与方编辑
+ reply_to: 回复
+ pending_by_me: 待我处理
+ partially_completed: 部分完成
+ require_phone_2fa_to_open: 需要电话双重认证才能打开
+ the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: 发送者请求了双重认证,一次性密码已发送到您的电话号码 %{phone}。
+ send_verification_code: 发送验证码
+ code_has_been_resent: 验证码已重新发送
+ invalid_code: 无效验证码
+ signed: 已签署
+ first_party: 第一方
+ remove_filter: 移除筛选
+ add: 添加
+ adding: 添加中
+ owner: 所有者
+ select_user: 选择用户
+ team_member_permissions: 团队成员权限
+ entire_team: 整个团队
+ admin_only: 仅管理员
+ accessiable_by: 可访问者
+ team_access: 团队访问
+ document_download_filename_format: 文档下载文件名格式
+ docuseal_trusted_signature: DocuSeal 可信签名
+ hello_name: 您好 %{name}
+ you_are_invited_to_product_name: 您已被邀请加入 %{product_name}
+ you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: '您已被邀请加入 %{account_name} %{product_name}。请使用以下链接注册:'
+ sent_using_product_name_in_testing_mode_html: '使用 %{product_name} 以测试模式发送'
+ sent_using_product_name_free_document_signing_html: '使用 %{product_name} 免费文档签署发送。'
+ sent_with_docuseal_pro_html: '使用 DocuSeal Pro 发送'
+ show_send_with_docuseal_pro_attribution_in_emails_html: 在邮件中显示"使用 DocuSeal Pro"发送
+ sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: 使用 DocuSeal 提供的可信证书签署文档。您的文档和数据永远不会与 DocuSeal 共享。PDF 校验和用于生成可信签名。
+ you_have_been_invited_to_submit_the_name_form: '您已被邀请提交"%{name}"表单。'
+ you_have_been_invited_to_sign_the_name: '您已被邀请签署"%{name}"。'
+ alternatively_you_can_review_and_download_your_copy_using_the_link_below: "或者,您可以使用以下链接查看和下载您的副本:"
+ please_check_the_copy_of_your_name_in_the_email_attachments: '请在电子邮件附件中查收您的"%{name}"副本。'
+ awaiting_completion_by_the_other_party: "等待另一方完成"
+ review_and_sign: 查看并签署
+ review_and_submit: 查看并提交
+ please_contact_us_by_replying_to_this_email_if_you_have_any_questions: "如有任何疑问,请回复此邮件联系我们。"
+ submitter_invitation_sms_body_sign: '{account.name} 邀请您签署文档:{submitter.link}'
+ verification_code_sms_body: '验证码:{code}'
+ you_are_invited_to_submit_a_form: 您被邀请提交表单
+ you_are_invited_to_sign_a_document: 您被邀请签署文档
+ you_are_invited_to_sign_documents: 您被邀请签署文档
+ your_document_copy: 您的文档副本
+ name_has_been_completed_by_submitters: '"%{name}" 已由 %{submitters} 完成。'
+ template_name_has_been_completed_by_submitters: '{template.name} 已由 {submission.submitters} 完成'
+ submitter_invitation_email_sign_body: |
+ 您好,
+
+ 您已被邀请签署 "{template.name}"。
+
+ [查看并签署]({submitter.link})
+
+ 如有任何疑问,请回复此邮件联系我们。
+
+ 谢谢,
+ {account.name}
+ submitter_completed_email_body: |
+ 您好,
+
+ "{template.name}" 已由 {submission.submitters} 完成
+
+ {submission.link}
+ submitter_documents_copy_email_body: |
+ 您好,
+
+ 请在电子邮件附件中查收您的 "{template.name}" 副本。
+ 或者,您可以使用以下链接查看和下载您的副本:
+
+ [{template.name}]({documents.link})
+
+ 谢谢,
+ {account.name}
+ view: 查看
+ email: 电子邮件
+ form_expired_at_html: '表单已于 %{time} 过期'
+ verification_code_code: '验证码:%{code}'
+ digitally_signed_by: 数字签名人
+ role: 角色
+ reason: 原因
+ provide_your_email_to_start: 提供您的电子邮件以开始
+ provide_your_email: 提供您的电子邮件
+ provide_your_name_to_start: 提供您的姓名以开始
+ provide_your_name: 提供您的姓名
+ provide_your_phone_in_international_format_to_start: 提供您的国际格式电话号码以开始
+ provide_your_phone_in_international_format: 提供您的国际格式电话号码
+ start: 开始
+ enforce_recipients_order: 强制执行收件人顺序
+ starting: 开始中
+ invited_by_html: '由 %{name} 邀请'
+ you_have_been_invited_to_submit_a_form: 您已被邀请提交表单
+ signed_on_time: '签署于 %{time}'
+ completed_on_time: '完成于 %{time}'
+ document_has_been_signed_already: 文档已签署
+ form_has_been_submitted_already: 表单已提交
+ send_copy_to_email: 发送副本到电子邮件
+ sending: 发送中
+ resubmit: 重新提交
+ form_has_been_deleted_by_html: '表单已被 %{name} 删除。'
+ or: 或
+ download_documents: 下载文档
+ downloading: 下载中
+ download: 下载
+ page: 页面
+ decline: 拒绝
+ declined: 已拒绝
+ delegate: 委派
+ enter_the_email_address_of_the_person_you_want_to_delegate_to: 输入您要委派的人的电子邮件地址
+ decline_reason: 拒绝原因
+ provide_a_reason: 提供原因
+ notify_the_sender_with_the_reason_you_declined: 通知发送者您拒绝的原因
+ form_has_been_declined_on_html: '表单已于 %{time} 被拒绝'
+ document_has_been_delegated_on_html: '文档已于 %{time} 被委派'
+ name_declined_by_submitter: '"%{name}" 被 %{submitter} 拒绝'
+ name_declined_by_submitter_with_the_following_reason: '"%{name}" 已被 %{submitter} 拒绝,原因如下:'
+ completed_successfully: 成功完成
+ password: 密码
+ sign_in: 登录
+ signing_in: 登录中
+ sign_in_with_microsoft: 使用 Microsoft 登录
+ sign_in_with_google: 使用 Google 登录
+ forgot_your_password_: 忘记密码?
+ create_free_account: 创建免费账户
+ already_have_an_account: 已有账户?
+ first_name: 名
+ last_name: 姓
+ sign_up: 注册
+ signing_up: 注册中
+ profile_details: 个人资料详情
+ sign_up_with_google: 使用 Google 注册
+ sign_up_with_microsoft: 使用 Microsoft 注册
+ by_creating_an_account_you_agree_to_our_html: '创建账户即表示您同意我们的 隐私政策 和 服务条款。'
+ enter_email_to_continue: 输入电子邮件以继续
+ account: 账户
+ preferences: 偏好设置
+ company_name: 公司名称
+ time_zone: 时区
+ language: 语言
+ app_url: 应用 URL
+ update: 更新
+ updating: 更新中
+ force_2fa_with_authenticator_app: 强制使用身份验证器应用进行双重认证
+ add_signature_id_to_the_documents: 在文档中添加签名 ID
+ require_signing_reason: 要求签署原因
+ allow_typed_text_signatures: 允许输入文本签名
+ allow_to_resubmit_completed_forms: 允许重新提交已完成的表单
+ allow_to_decline_documents: 允许拒绝文档
+ allow_to_delegate_documents: 允许委派文档
+ remember_and_pre_fill_signatures: 记住并预填签名
+ require_authentication_for_file_download_links: 文件下载链接需要身份验证
+ combine_completed_documents_and_audit_log: 合并已完成的文档和审计日志
+ salesforce_integration: Salesforce 集成
+ salesforce_has_been_connected: Salesforce 已连接。
+ connect_salesforce_account_to_integrate_with_docuseal: 连接 Salesforce 账户以与 DocuSeal 集成
+ re_connect_salesforce: 重新连接 Salesforce
+ connect_salesforce: 连接 Salesforce
+ danger_zone: 危险区域
+ delete_my_account: 删除我的账户
+ you_are_scheduling_your_account_for_deletion_after_deletion_your_data_will_be_permanently_removed_and_cannot_be_recovered_click_ok_if_you_would_like_to_continue: "您正在安排删除您的账户。删除后,您的数据将被永久移除且无法恢复。\n\n如果您想继续,请点击确定。"
+ account_information_has_been_updated: 账户信息已更新。
+ should_be_a_valid_url: 应为有效 URL
+ your_account_will_be_permanently_deleted_within_2_months_please_contact_us_if_you_want_to_keep_your_account: 您的账户将在 2 个月内被永久删除。如果您想保留账户,请联系我们。
+ test_mode: 测试模式
+ copy: 复制
+ copied: 已复制
+ rotate: 轮换
+ remove_existing_api_token_and_generated_a_new_one_are_you_sure_: 移除现有 API 令牌并生成新的。确定吗?
+ request_signature_multiple_submitters_with_default_values: 请求签名,多个提交者带默认值
+ request_signature_single_submitter: 请求签名,单个提交者
+ template_details: 模板详情
+ open_full_api_reference: 打开完整 API 参考
+ api_token_has_been_updated: API 令牌已更新。
+ change_your_password: 更改密码
+ new_password: 新密码
+ minimum_password_length_characters_minimum: '最少 %{minimum_password_length} 个字符'
+ confirm_new_password: 确认新密码
+ change_my_password: 更改我的密码
+ changing_password: 更改密码中
+ reset_password: 重置密码
+ resetting_password: 重置密码中
+ sign_in_with_name_account: '使用 %{name} 账户登录'
+ two_factor_code_from_authenticator_app: 来自身份验证器应用的双重认证码
+ sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: 在 DocuSeal Console 注册以升级。本地部署应用完全独立,Console 仅用于管理您的许可证。
+ send_from_email: 发送者邮箱
+ optional: 可选
+ save: 保存
+ saving: 保存中
+ changes_have_been_saved: 更改已保存。
+ unlock_with_docuseal_pro: 使用 DocuSeal Pro 解锁
+ use_your_own_certificates_to_sign_and_verify_pdf_files: 使用您自己的证书签署和验证 PDF 文件。
+ upload_certificate: 上传证书
+ name: 名称
+ file: 文件
+ use_a_valid_der_p12_or_pfx_file: 使用有效的 .der、.p12 或 .pfx 文件。
+ submit: 提交
+ submitting: 提交中
+ pdf_signature: PDF 签名
+ upload_signed_pdf_file_to_validate_its_signature_: '上传已签名的 PDF 文件以验证其签名:'
+ analyzing: 分析中
+ verify_signed_pdf: 验证已签名的 PDF
+ click_to_upload_or_drag_and_drop_html: '点击上传或拖放'
+ click_to_upload_or_drag_and_drop_files_html: '点击上传或拖放文件'
+ signing_certificates: 签名证书
+ upload_cert: 上传证书
+ valid_to: 有效期至
+ status: 状态
+ make_default: 设为默认
+ remove: 移除
+ removing: 移除中
+ delete: 删除
+ default: 默认
+ are_you_sure_: 确定吗?
+ timestamp_server: 时间戳服务器
+ timeserver_url: 时间服务器 URL
+ url_of_the_trusted_rfc_3161_timeserver_to_be_used_to_generate_timestamp_signatures: 用于生成时间戳签名的可信 RFC 3161 时间服务器 URL。
+ apply_multiple_pdf_digital_signatures_in_the_document_per_each_signer: 为每个签署者在文档中应用多个 PDF 数字签名
+ remove_pdf_form_fillable_fields_from_the_signed_pdf_flatten_form: 从已签名的 PDF 中删除 PDF 表单可填充字段(扁平化表单)
+ certificate_has_been_successfully_added: 证书已成功添加。
+ default_certificate_has_been_selected: 默认证书已选择。
+ certificate_has_been_removed: 证书已移除。
+ already_exists: 已存在。
+ welcome_to_product_name: '欢迎使用 %{product_name}'
+ set_password: 设置密码
+ confirm_password: 确认新密码
+ save_password_and_sign_in: 保存密码并登录
+ use_an_authenticator_mobile_app_like_google_authenticator_or_1password_to_scan_the_qr_code_below: 使用身份验证器移动应用(如 Google Authenticator 或 1Password)扫描下方的二维码。
+ remove_2fa: 移除双重认证
+ setup_2fa: 设置双重认证
+ 2fa_has_been_configured: 双重认证已配置。
+ code_is_invalid: 验证码无效
+ 2fa_has_been_removed: 双重认证已移除。
+ 2fa_has_been_set_up_already: 双重认证已设置。
+ developer_newsletters: 开发者通讯
+ skip: 跳过
+ email_notifications: 电子邮件通知
+ receive_notification_emails_on_completed_submission: 提交完成时接收通知邮件
+ completed_documents_notification_bcc_address: 完成文档通知密送地址
+ sign_request_email_reminders: 签署请求电子邮件提醒
+ send_automatic_email_reminders_to_your_recipients: 向您的收件人发送自动电子邮件提醒。
+ first_reminder_in: 第一次提醒在
+ second_reminder_in: 第二次提醒在
+ third_reminder_in: 第三次提醒在
+ learn_more: 了解更多
+ unable_to_save: 无法保存。
+ invalid_timeserver: 无效的时间服务器
+ email_templates: 电子邮件模板
+ signature_request_email: 签名请求邮件
+ signature_request_reminder_email: 签名请求提醒邮件
+ signature_request_sms: 签名请求短信
+ verification_code_sms: 验证码短信
+ completed_notification_email: 完成通知邮件
+ company_logo: 公司 Logo
+ submission_form: 提交表单
+ completed_form_message: 完成表单消息
+ completed_form_redirect_button: 完成表单重定向按钮
+ documents_copy_email: 文档副本邮件
+ form_custom_css: 表单自定义 CSS
+ subject: 主题
+ body: 正文
+ text_message: 文本消息
+ title: 标题
+ button_title: 按钮标题
+ button_url: 按钮 URL
+ upload_logo: 上传 Logo
+ show_confetti_on_successful_completion: 成功完成时显示彩带效果
+ attach_audit_log_pdf: 附加审计日志 PDF
+ attach_documents: 附加文档
+ settings_have_been_saved: 设置已保存。
+ display_your_company_name_and_logo_when_signing_documents: 签署文档时显示您的公司名称和 Logo。
+ profile: 个人资料
+ signature: 签名
+ update_signature: 更新签名
+ unable_to_save_signature: 无法保存签名。
+ signature_has_been_saved: 签名已保存。
+ signature_has_been_removed: 签名已移除。
+ initials: 首字母
+ update_initials: 更新首字母
+ unable_to_save_initials: 无法保存首字母。
+ initials_has_been_saved: 首字母已保存。
+ initials_has_been_removed: 首字母已移除。
+ change_password: 更改密码
+ two_factor_authentication: 双重认证
+ 2fa_is_not_configured: 双重认证未配置
+ set_up_2fa: 设置双重认证
+ contact_information_has_been_update: 联系信息已更新。
+ password_has_been_changed: 密码已更改。
+ email_integration: 电子邮件集成
+ send_via_connected_email: 通过已连接的电子邮件发送
+ activate_with_docuseal_pro: 使用 DocuSeal Pro 激活
+ send_signature_request_to_your_recipients_directly_from_your_email: 直接从您的电子邮件向收件人发送签名请求
+ connect_gmail: 连接 Gmail
+ re_connect_gmail: 重新连接 Gmail
+ connect_microsoft: 连接 Microsoft
+ re_connect_microsoft: 重新连接 Microsoft
+ gmail_has_been_connected: Gmail 已连接。
+ microsoft_account_has_been_connected: Microsoft 账户已连接。
+ but_not_activated: 但未激活
+ email_has_been_sent: 电子邮件已发送。
+ email_has_been_sent_already: 电子邮件已发送。
+ initial_setup: 初始设置
+ demo_environment: 演示环境
+ close: 关闭
+ upgrade: 升级
+ settings: 设置
+ console: 控制台
+ verify_pdf: 验证 PDF
+ sign_out: 退出登录
+ page_number: '第 %{number} 页'
+ powered_by: 由以下提供支持
+ qr_code: 二维码
+ print: 打印
+ scan_the_qr_code_above_with_your_phone_camera_to_open_and_sign_this_document: 使用手机相机扫描上方二维码,打开并签署此文档。
+ count_documents_signed_with_html: '已使用 %{count} 份文档签署'
+ storage: 存储
+ notifications: 通知
+ e_signature: 电子签名
+ personalization: 个性化
+ users: 用户
+ plans: 计划
+ new: 新建
+ embedding: 嵌入
+ background_jobs: 后台任务
+ need_help_ask_a_question_: '需要帮助?提问:'
+ exit: 退出
+ leave: 离开
+ impersonated_as: 模拟为
+ ask_ai: 询问 AI
+ ai_assistant: AI 助手
+ discord_community: Discord 社区
+ integrations: 集成
+ teams: 团队
+ tenants: 租户
+ send_signature_requests_via_sms: 通过短信发送签名请求
+ twilio_settings: Twilio 设置
+ webhook_settings: Webhook 设置
+ sending_sms: 发送短信中
+ from: 发件人
+ account_sid: Account SID
+ send_sms_via_webhook: 通过 Webhook 发送短信
+ webhook_integration_allows_to_send_sms_using_any_provider: Webhook 集成允许使用任何提供商发送短信
+ test: 测试
+ single_sign_on_with_saml_2_0: SAML 2.0 单点登录
+ force_sso_disable_login_with_email_and_password: 强制 SSO(禁用邮箱和密码登录)
+ for_aws_s3_compatible_apis_like_minio: 用于兼容 AWS S3 的 API,如 Minio。
+ store_all_files_on_disk: 将所有文件存储在磁盘上
+ no_configs_are_needed_but_make_sure_your_disk_is_persistent: 无需配置,但请确保您的磁盘是持久化的
+ not_suitable_for_heroku_and_other_paas: 不适用于 Heroku 和其他 PaaS
+ bulk_send_from_excel_xlsx_or_csv: 从 Excel XLSX 或 CSV 批量发送
+ add_new: 新增
+ add_recipients: 添加收件人
+ add_new_recipients: 添加新收件人
+ add_recipients_html: 添加收件人
+ type_emails_here: 在此输入电子邮件
+ or_embed_on_your_website: 或嵌入到您的网站
+ phone: 电话
+ send_emails: 发送邮件
+ edit_message: 编辑消息
+ smtp_not_configured: SMTP 未配置
+ configure_smtp_settings_in_order_to_send_emails_: '配置 SMTP 设置以发送邮件:'
+ go_to_smtp_settings: 前往 SMTP 设置
+ save_as_default_template_message: 保存为默认模板消息
+ re_send_sms: 重新发送短信
+ send_sms: 发送短信
+ preserve_order: 保持顺序
+ when_checked_notifications_will_be_sent_to_the_second_party_once_the_form_is_completed_by_the_previous_party_uncheck_this_option_to_send_notifications_to_all_parties_simultaneously_right_away: 选中后,通知将在前一方完成表单后发送给第二方。取消此选项可立即同时向所有参与方发送通知。
+ upgrade_to_send_unlimited_signature_requests: 升级以发送无限签名请求
+ add_without_sending: 仅添加不发送
+ upgade_now: 立即升级
+ send_signature_request_emails_without_limits_with_docuseal_pro: 使用 DocuSeal Pro 无限制发送签名请求邮件
+ count_emails_used: '已使用 %{count} 封邮件'
+ has_been_connected: 已连接
+ sms_not_configured: 短信未配置
+ configure_sms_settings_in_order_to_send_text_messages_: '配置短信设置以发送文本消息:'
+ go_to_sms_settings: 前往短信设置
+ back_to_active: 返回活跃
+ submissions: 提交
+ templates: 模板
+ document_templates_html: 文档模板
+ archived: 已归档
+ search: 搜索
+ submissions_not_found: 未找到提交
+ create: 创建
+ view_archived: 查看已归档
+ all: 全部
+ pending: 待处理
+ completed: 已完成
+ primarily_opened_with_microsoft_excel_other_options_include_google_sheets_libreoffice_calc_and_openoffice_calc: 主要使用 Microsoft Excel 打开。其他选项包括 Google Sheets、LibreOffice Calc 和 OpenOffice Calc。
+ can_be_opened_with_microsoft_excel_google_sheets_or_any_text_editor_like_notepad: 可以使用 Microsoft Excel、Google Sheets 或任何文本编辑器(如记事本)打开。
+ draw_signature: 绘制签名
+ clear: 清除
+ signature_uploaded: 签名已上传
+ submission_deletion_is_irreversible_and_will_permanently_remove_all_associated_signed_documents_with_it_are_you_sure_: '提交删除是不可逆的,将永久移除所有关联的已签署文档。确定吗?'
+ return_back_to_your_desktop_device_to_complete_the_form_or_continue_on_mobile_html: '返回桌面设备完成表单,或在手机上继续'
+ template_deletion_is_irreversible_and_will_permanently_remove_all_associated_signed_documents_with_it_are_you_sure_: 模板删除是不可逆的,将永久移除所有关联的已签署文档。确定吗?
+ rename_folder: 重命名文件夹
+ folder_name: 文件夹名称
+ rename: 重命名
+ home: 首页
+ templates_not_found: 未找到模板
+ upload_new_document: 上传新文档
+ uploading: 上传中
+ expired: 已过期
+ sign_now: 立即签署
+ archive: 归档
+ archiving: 归档中
+ restore: 恢复
+ restoring: 恢复中
+ clone: 克隆
+ edit: 编辑
+ move: 移动
+ moving: 移动中
+ preview: 预览
+ upload: 上传
+ clone_template: 克隆模板
+ new_document_template: 新建文档模板
+ document_name: 文档名称
+ change_folder: 更改文件夹
+ shared: 已共享
+ export: 导出
+ there_are_no_submissions: 没有提交
+ send_an_invitation_to_fill_and_complete_the_form: 发送邀请以填写并完成表单
+ send_to_recipients: 发送给收件人
+ sign_it_yourself: 自行签署
+ api_and_embedding: API 和嵌入
+ template_id: 模板 ID
+ embedding_url: 嵌入 URL
+ share_template_with_test_mode: 以测试模式共享模板
+ share_template_with_all_tenants: 与所有租户共享模板
+ use_following_placeholders_text_: '使用以下占位符文本:'
+ users_count_total_users_count_pro_users_limit_was_reached_to_invite_additional_users_please_purchase_more_pro_user_seats_via_the_manage_plan_button: '%{users_count}/%{total_users_count} Pro 用户限额已用完。要邀请更多用户,请通过"管理计划"按钮购买更多 Pro 用户席位。'
+ move_into_folder: 移入文件夹
+ new_folder_name: 新文件夹名称
+ new_subfolder_name: 新子文件夹名称
+ change_parent_folder: 更改父文件夹
+ folder: 文件夹
+ create_a_new_folder: 创建新文件夹
+ exit_preview: 退出预览
+ general: 常规
+ recipients: 收件人
+ form_preferences: 表单偏好
+ redirect_on_completion_url: 完成时重定向 URL
+ completion_message: 完成消息
+ email_subject: 邮件主题
+ email_body: 邮件正文
+ attach_audit_log_pdf_to_the_email: 在邮件中附加审计日志 PDF
+ send_emails_automatically_on_completion: 完成时自动发送邮件
+ attach_documents_to_the_email: 在邮件中附加文档
+ not_specified: 未指定
+ submission_requester: 提交请求者
+ specified_email: 指定邮箱
+ invite_by_name: '通过 %{name} 邀请'
+ invite_via_form_field: 通过表单字段邀请
+ same_as_name: '与 %{name} 相同'
+ default_email: 默认邮箱
+ processing: 处理中
+ upload_initials: 上传首字母
+ draw: 绘制
+ upload_signature: 上传签名
+ integration: 集成
+ admin: 管理员
+ tenant_admin: 租户管理员
+ editor: 编辑者
+ viewer: 查看者
+ member: 成员
+ agent: 代理
+ superadmin: 超级管理员
+ edit_user: 编辑用户
+ new_user: 新建用户
+ unarchive: 取消归档
+ last_session: 上次会话
+ unlock_more_user_roles_with_docuseal_pro: 使用 DocuSeal Pro 解锁更多用户角色。
+ view_active: 查看活跃
+ team_account: 团队账户
+ team_accounts: 团队账户
+ tenant_account: 租户账户
+ tenant_accounts: 租户账户
+ impersonate: 模拟
+ loading: 加载中
+ documents: 文档
+ accounts: 账户
+ edit_account: 编辑账户
+ new_team: 新建团队
+ new_tenant: 新建租户
+ remove_team: 移除团队
+ remove_tenant: 移除租户
+ replace: 替换
+ allow_tenant_admins_to_invite_new_users: 允许租户管理员邀请新用户
+ manage_multiple_teams: 管理多个团队
+ api_key: API 密钥
+ logo: Logo
+ back: 返回
+ add_secret: 添加密钥
+ edit_secret: 编辑密钥
+ submission_example_payload: 提交示例载荷
+ there_are_no_signatures: 没有签名
+ signed_with_trusted_certificate: 使用可信证书签署
+ signed_with_external_certificate: 使用外部证书签署
+ setup_2fa_to_continue: 设置双重认证以继续。
+ create_a_new_account: 创建新账户。
+ you_are_already_signed_in: 您已登录。
+ please_sign_in: 请登录。
+ not_found: 未找到
+ new_recipients_have_been_added: 新收件人已添加。
+ submission_has_been_removed: 提交已移除。
+ submission_has_been_archived: 提交已归档。
+ form_has_been_completed_already: 表单已完成。
+ form_has_been_archived: 表单已归档。
+ form_has_been_expired: 表单已过期。
+ form_has_been_declined: 表单已被拒绝。
+ file_is_missing: 文件缺失
+ folder_name_has_been_updated: 文件夹名称已更新。
+ unable_to_rename_folder: 无法重命名文件夹。
+ template_has_been_removed: 模板已移除。
+ template_has_been_archived: 模板已归档。
+ template_has_been_cloned: 模板已克隆。
+ document_template_has_been_moved: 文档模板已移动。
+ unable_to_move_template_into_folder: 无法将模板移入文件夹。
+ template_has_been_unarchived: 模板已取消归档。
+ submission_has_been_unarchived: 提交已取消归档。
+ unable_to_update_file: 无法上传文件。
+ user_has_been_invited: 用户已邀请。
+ unable_to_update_user: 无法更新用户。
+ user_has_been_updated: 用户已更新。
+ unable_to_remove_user: 无法移除用户。
+ user_has_been_removed: 用户已移除。
+ invalid_pdf: 无效 PDF
+ webhook_secret_has_been_saved: Webhook 密钥已保存。
+ webhook_url_has_been_saved: Webhook URL 已保存。
+ webhook_request_has_been_sent: Webhook 请求已发送。
+ webhook_url_has_been_updated: Webhook URL 已更新。
+ webhook_url_has_been_deleted: Webhook URL 已删除。
+ unable_to_resend_webhook_request: 无法重新发送 Webhook 请求。
+ new_webhook: 新建 Webhook
+ delete_webhook: 删除 Webhook
+ security: 安全
+ webhook_security: Webhook 安全
+ secret: 密钥
+ hmac: HMAC
+ hmac_signing_secret: HMAC 签名密钥
+ hmac_signature_header_hint_html: '每个请求使用 %{header} 头签名:<timestamp>.<sha256>。'
+ count_submissions_have_been_created: '已创建 %{count} 个提交。'
+ sms_length_cant_be_longer_than_120_bytes: 短信长度不能超过 120 字节
+ connected_successfully: 连接成功。
+ user_nameid_not_found: '用户 %{nameid} 未找到。'
+ sso_settings_have_been_updated: SSO 设置已更新。
+ sms_has_been_sent: 短信已发送。
+ account_has_been_created: 账户已创建。
+ account_has_been_updated: 账户已更新。
+ account_has_been_removed: 账户已移除。
+ logo_has_been_uploaded: Logo 已上传。
+ invalid_file_type: 无效的文件类型
+ upload_file: 上传文件
+ upgrade_your_plan_to_invite_more_users_contact_email: '升级您的计划以邀请更多用户(联系 %{email})。'
+ contact_your_admin_email_to_invite_more_users: '联系您的管理员 %{email} 以邀请更多用户。'
+ contact_your_administrator_to_add_new_users: 联系您的管理员以添加新用户
+ one_hour: 1 小时
+ two_hours: 2 小时
+ four_hours: 4 小时
+ eight_hours: 8 小时
+ twelve_hours: 12 小时
+ twenty_four_hours: 24 小时
+ two_days: 2 天
+ four_days: 4 天
+ eight_days: 8 天
+ fifteen_days: 15 天
+ twenty_one_days: 21 天
+ thirty_days: 30 天
+ free: 免费
+ unlimited_documents_storage: 无限文档存储
+ users_management: 用户管理
+ ten_field_types: 10 种字段类型
+ multiple_signers: 多人签署
+ automatic_esignature: 自动电子签名
+ ten_signature_request_emails_per_month: 每月 10 封签名请求邮件
+ unlimited_sign_yourself: 无限自行签署
+ free_developer_testing_sandbox: 免费开发者测试沙盒
+ continue_with_free_basic: 继续使用免费基础版
+ unlimited_signature_request_emails: 无限签名请求邮件
+ your_company_logo: 您的公司 Logo
+ connect_own_email_address: 连接自有邮箱地址
+ personalize_email_content: 个性化邮件内容
+ automated_reminders: 自动提醒
+ bulk_send_from_spreadsheet: 从电子表格批量发送
+ identify_verification_via_sms: 通过短信进行身份验证
+ start_with_pro: 开始使用 Pro
+ user_month: 用户 / 月
+ developer_sandbox: 开发者沙盒。
+ upgrade_to_start_using_in_production_html: '升级以开始在生产环境中使用。'
+ download_combined_pdf: 下载合并的 PDF
+ audit_log: 审计日志
+ signers: 签署者
+ not_invited_yet: 尚未邀请
+ not_completed_yet: 尚未完成
+ declined_on_time: '于 %{time} 拒绝'
+ expire_on_time: '于 %{time} 过期'
+ sign_in_person: 本人签署
+ create_a_new_template_document_form_or_submit_the_existing_one_html: 创建新模板文档表单或提交现有模板
+ send_email_copy_with_completed_documents_to_a_specified_bcc_address: 将完成文档的邮件副本发送到指定的密送地址。
+ re_send_email: 重新发送邮件
+ send_email: 发送邮件
+ copy_share_link: 复制分享链接
+ copied_to_clipboard: 已复制到剪贴板
+ link: 链接
+ via_email: 通过邮件
+ via_phone: 通过电话
+ detailed: 详细
+ upload_list: 上传列表
+ creating: 创建中
+ open_source_documents_software: 开源文档软件
+ copy_link: 复制链接
+ opened: 已打开
+ sent: 已发送
+ awaiting: 等待中
+ document_id: 文档 ID
+ envelope_id: 信封 ID
+ event_log: 事件日志
+ verify: 验证
+ testing_log_not_for_production_use: 测试日志 - 不适用于生产环境
+ original_sha256: 原始 SHA256
+ result_sha256: 结果 SHA256
+ generated_at: 生成时间
+ email_verification: 邮件验证
+ phone_verification: 电话验证
+ session_id: 会话 ID
+ option: 选项
+ text_field: 文本字段
+ signature_field: 签名字段
+ initials_field: 首字母字段
+ date_field: 日期字段
+ number_field: 数字字段
+ image_field: 图片字段
+ file_field: 文件字段
+ select_field: 选择字段
+ checkbox_field: 复选框字段
+ multiple_field: 多选字段
+ radio_field: 单选组字段
+ cells_field: 单元格字段
+ stamp_field: 印章字段
+ payment_field: 支付字段
+ phone_field: 电话字段
+ verification_field: 身份验证
+ knowledge_based_authentication: 基于知识的认证
+ kba_field: KBA
+ passed: 已通过
+ identity_verification: 身份验证
+ paid_price: '已支付 %{price}'
+ verified: 已验证
+ unverified: 未验证
+ document: 文档
+ completed_at: 完成于
+ edit_recipient: 编辑收件人
+ update_recipient: 更新收件人
+ use_international_format_1xxx_: '使用国际格式:+1xxx...'
+ submitter_cannot_be_updated: 提交者无法更新。
+ at_least_one_field_must_be_filled: 至少填写一个字段。
+ archived_users: 已归档用户
+ embedding_users: 嵌入用户
+ view_embedding_users: 查看嵌入用户
+ key: 键
+ value: 值
+ webhook_secret: Webhook 密钥
+ author: 作者
+ to: 至
+ created_at: 创建于
+ apply: 应用
+ applying: 应用中
+ today: 今天
+ yesterday: 昨天
+ this_week: 本周
+ last_week: 上周
+ this_month: 本月
+ last_month: 上月
+ this_year: 今年
+ policy_links: 政策链接
+ markdown_content_e_g: Markdown 内容,例如
+ privacy_policy: 隐私政策
+ the_code_has_been_sent_to_your_email: 验证码已发送到您的邮箱。
+ enter_the_verification_code_from_your_email: 输入来自邮件的验证码。
+ too_many_attempts: 尝试次数过多。
+ verification_code: 验证码
+ resend_code: 重新发送验证码
+ verify_new_sign_in: 验证新的登录
+ use_otp_code_to_sign_in_or_click_the_link_below_html: '使用 %{code} 验证码登录,或点击下方链接:'
+ complete_sign_in: 完成登录
+ please_reply_to_this_email_if_you_dont_recognize_this_sign_in_attempt: 如果您不认可此次登录尝试,请回复此邮件。
+ docuseal_support: DocuSeal 支持
+ use_the_edit_form_to_move_it_to_another_team: 使用编辑表单将其移动到另一个团队。
+ too_many_sms_attempts_try_again_in_a_few_seconds: 短信尝试次数过多。请在几秒后重试。
+ number_phone_number_is_invalid: "+%{number} 电话号码无效"
+ make_com_integration: Make.com 集成
+ zapier_integration: Zapier 集成
+ seamlessly_automate_your_document_signing_process_with_make_com: 使用 Make.com 无缝自动化您的文档签署流程。
+ find_suitable_zapier_templates_to_automate_your_workflow: 查找合适的 Zapier 模板以自动化您的工作流程。
+ get_started: 开始使用
+ click_here_to_learn_more_about_user_roles_and_permissions_html: '点击此处了解更多关于用户角色和权限的信息。'
+ count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: '%{count} / 10 封签名请求邮件本月已发送。升级到 Pro 以发送无限签名请求邮件。'
+ test_mode_emails_limit_will_be_reset_within_24_hours: 测试模式邮件限制将在 24 小时内重置。
+ on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: 以 1 到 10 分评价,您对 DocuSeal 产品的满意度如何?
+ tell_us_more_about_your_experience: 告诉我们更多关于您的体验
+ extremely_dissatisfied: 非常不满意
+ extremely_satisfied: 非常满意
+ your_pro_plan_payment_is_overdue: 您的 Pro 计划付款已逾期。
+ click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: 点击此处更新您的付款详情并结清账单,以确保服务不中断。
+ overdue_payment: 逾期付款
+ your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription: 由于未付账单,您的 Pro 计划已被暂停。您可以更新付款详情以结清账单并继续使用 DocuSeal,或取消订阅。
+ manage_subscription: 管理订阅
+ submission_created_by_email_html: '提交已创建,由 %{email}'
+ submission_created_by_email_via_source_html: '提交已创建,由 %{email} 通过 %{source}'
+ submission_created_via_source_html: '提交已创建,通过 %{source}'
+ pro_user_seats_used: 已使用 Pro 用户席位
+ manage_plan: 管理计划
+ this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 此提交有多个签署者,这妨碍了共享链接的使用,因为无法确定哪个签署者负责特定字段。要解决此问题,请按照此指南定义默认签署者详情。
+ welcome_to_docuseal: 欢迎使用 DocuSeal
+ start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: 开始快速导览,学习如何创建和发送您的第一份文档
+ start_tour: 开始导览
+ name_a_z: 名称 A-Z
+ recently_used: 最近使用
+ newest_first: 最新优先
+ none: 无
+ default_expiration: 默认过期时间
+ specified_date: 指定日期
+ one_day: 1 天
+ two_days: 2 天
+ three_days: 3 天
+ four_days: 4 天
+ five_days: 5 天
+ six_days: 6 天
+ seven_days: 7 天
+ eight_days: 8 天
+ nine_days: 9 天
+ ten_days: 10 天
+ two_weeks: 2 周
+ three_weeks: 3 周
+ four_weeks: 4 周
+ one_month: 1 个月
+ two_months: 2 个月
+ three_months: 3 个月
+ eu_data_residency: 欧盟数据驻留
+ please_enter_your_email_address_associated_with_the_completed_submission: 请输入与已完成提交关联的电子邮件地址。
+ esignature_disclosure: 电子签名披露
+ share_link: 分享链接
+ enable_shared_link: 启用共享链接
+ share_link_is_currently_disabled: 共享链接当前已禁用
+ dynamic_template_with_variables_cannot_be_used_via_shared_link: 带变量的动态模板无法通过共享链接使用
+ select_data_residency: 选择数据驻留
+ account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution: '%{account_name} 已邀请您在线填写和签署文档,使用安全、快速且用户友好的数字文档签署解决方案。'
+ review_or_download_completed_documents_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution: 查看或下载已完成的文档。使用安全、快速且用户友好的数字文档签署解决方案在线填写和签署文档。
+ link_form_fields: 链接表单字段
+ at_least_one_field_must_be_displayed_in_the_form: 表单中至少显示一个字段。
+ this_template_has_multiple_parties_which_prevents_the_use_of_a_sharing_link: 此模板有多个参与方,这妨碍了共享链接的使用。要解决此问题,请定义默认参与方详情。
+ events_log: 事件日志
+ succeeded: 成功
+ failed: 失败
+ there_are_no_events: 没有事件
+ resend: 重新发送
+ next_attempt_in_time_in_words: 下次尝试在 %{time_in_words}
+ request_email_otp_verification_with_shared_link: 通过共享链接请求邮件 OTP 验证
+ sms_rate_limit_exceeded: 短信速率限制已超出
+ invalid_phone_number: 无效的电话号码
+ please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: 请联系请求者指定您的电话号码以进行双重认证。
+ we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: 我们已向您的邮箱发送一次性验证码。请在下方输入验证码以继续。
+ re_send_code: 重新发送验证码
+ email_verification: 邮件验证
+ your_verification_code_to_access_the_name: '您访问"%{name}"的验证码:'
+ please_reply_to_this_email_if_you_didnt_request_this: 如果您没有请求此操作,请回复此邮件。
+ advanced_settings: 高级设置
+ text: 文本
+ code: 代码
+ custom_html_emails: 自定义 HTML 邮件
+ connect_your_email_to_send_html_emails: 连接您的邮箱以发送 HTML 邮件
+ connect_your_email_or_outlook_account_or_add_smtp_settings_to_send_custom_html_emails: 连接您的 Gmail 或 Outlook 账户,或添加 SMTP 设置以发送自定义 HTML 邮件。
+ connect_gmail_or_outlook: 连接 Gmail 或 Outlook
+ connect_your_email_to_bulk_send: 连接您的邮箱以批量发送
+ connect_your_email_or_outlook_account_or_add_smtp_settings_to_bulk_send: 连接您的 Gmail 或 Outlook 账户,或添加 SMTP 设置以批量发送。
+ are_you_sure_you_want_to_add_recipients_without_sending_to_send_emails_it_requires_to_connect_gmail_or_outlook: 确定要不发送就添加收件人吗?要发送邮件,需要连接 Gmail 或 Outlook。
+ template_name_has_been_completed_by_submitters_html: '"{template.name}" 已由 {submission.submitters} 完成'
+ please_check_the_copy_of_your_template_name_in_the_email_attachments_html: '请在电子邮件附件中查收您的 "{template.name}" 副本。'
+ you_have_been_invited_to_sign_the_template_name_html: '您已被邀请签署 "{template.name}"。'
+ reveal_api_key: 显示 API 密钥
+ enter_your_password_to_reveal_the_api_key: 输入密码以显示 API 密钥
+ wrong_password: 密码错误。
+ current_password: 当前密码
+ dont_remember_your_current_password_click_here_to_reset_it_html: '不记得当前密码?重置。'
+ an_email_with_password_reset_instructions_has_been_sent: 包含密码重置说明的邮件已发送。
+ api_key_access_code: API 密钥访问代码
+ use_otp_code_to_access_the_api_key_html: 使用 %{code} 验证码访问 API 密钥。
+ please_reply_to_this_email_if_you_dont_recognize_this_request: 如果您不认可此请求,请回复此邮件。
+ your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: 您的用户账户已被归档。联系您的管理员以恢复对您账户的访问。
+ your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: 无法联系到您的邮箱。这可能是因为地址拼写错误或邮箱不可用。请联系 support@docuseal.com 登录。
+ efficient_search_with_search_index: 使用搜索索引进行高效搜索
+ reindex: 重新索引
+ build_search_index: 构建搜索索引
+ require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password: 要求使用身份验证器应用(如 Google Authenticator、Authy)进行双重认证 (2FA)。所有签署文档的用户除密码外,还必须使用安全验证码通过第二因素验证。
+ add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings: "为每个签名添加唯一的签名 ID 和时间戳,用于审计和追溯目的。这是 DocuSeal 21 CFR Part 11 合规设置的一部分。"
+ require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings: "要求签署者在完成签名前提供签署原因(例如批准、认证)。这是 DocuSeal 21 CFR Part 11 合规设置的一部分。"
+ allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: 允许签署者通过输入姓名来创建签名,而不必绘制或上传签名。
+ allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: 允许签署者在完成后重新提交表单,适用于需要更正或多次提交的情况。
+ allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: 允许收件人拒绝签署文档。拒绝原因通知将发送给签名请求者。
+ allow_recipients_to_delegate_documents: 允许收件人通过电子邮件将文档委派给其他人。当原始收件人需要将文档转交给授权签署者时很有用。
+ save_a_users_signature_and_automatically_pre_fill_it_in_future_signing_sessions: "保存用户的签名并在未来的签署会话中自动预填。"
+ make_document_download_links_expire_after_40_minutes_to_prevent_long_term_access_and_enhance_security: 使文档下载链接在 40 分钟后过期,以防止长期访问并增强安全性。
+ require_authentication_with_user_login_or_api_key_to_access_the_document_download_links: 要求使用用户登录或 API 密钥进行身份验证才能访问文档下载链接。
+ combine_signed_documents_and_the_audit_log_into_a_single_pdf_file_for_easier_recordkeeping_and_compliance: 将已签署文档和审计日志合并为一个 PDF 文件,以便于记录保管和合规。
+ require_a_jwt_authorization_to_preview_embedded_forms_ensuring_only_authorized_users_can_view_them: 需要 JWT 授权才能预览嵌入式表单,确保只有授权用户可以查看。
+ make_all_newly_created_templates_private_to_their_creator_by_default: 默认将所有新创建的模板设为创建者私有。
+ make_the_recipients_signing_order_always_enforced_so_that_the_second_signer_can_start_signing_their_part_only_after_the_first_signer_has_completed_signing: 始终强制执行收件人签署顺序,使第二位签署者仅在第一签署者完成签署后才能开始签署其部分。
+ the_file_is_missing_make_sure_you_have_access_to_it_on_google_drive: 文件缺失。请确保您在 Google Drive 上有访问权限。
+ connect_google_drive: 连接 Google Drive
+ google_drive_has_been_connected: Google Drive 已连接
+ unable_to_identify_reset_your_password_to_sign_in: 无法识别。重置密码以登录。
+ desktop: 桌面端
+ mobile: 移动端
+ tablet: 平板端
+ reset_default: 重置默认
+ send_signature_request_email: 发送签名请求邮件
+ last_3_months: 最近 3 个月
+ last_6_months: 最近 6 个月
+ last_year: 去年
+ all_time: 全部时间
+ everyone: 所有人
+ daily: 每日
+ weekly: 每周
+ monthly: 每月
+ api: API
+ embed: 嵌入
+ bulk: 批量
+ invite: 邀请
+ api_and_embed: API 和嵌入
+ period: 时间段
+ reports: 报告
+ completed_submissions: 已完成提交
+ sms: 短信
+ require_email_2fa_to_open: 需要邮件双重认证才能打开
+ verification_required_refresh_the_page_and_pass_2fa: 需要验证,请刷新页面并通过双重认证。
+ the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: 发送者请求了双重认证,一次性密码已发送到您的邮箱 %{email}。
+ please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: 请联系请求者指定您的邮箱以进行双重认证。
+ rate_limit_exceeded: 超出速率限制
+ a_confirmation_email_has_been_sent_to_the_new_email_address: 确认邮件已发送到新邮箱地址。
+ email_address_is_awaiting_confirmation_follow_the_link_in_the_email_to_confirm: "%{email} 邮箱地址正在等待确认。请点击邮件中的链接进行确认。"
+ please_confirm_your_email_address_using_the_link_below_: '请使用以下链接确认您的邮箱地址:'
+ confirm_email: 确认邮箱
+ please_verify_your_email_address_to_continue: 请验证您的邮箱地址以继续。
+ verification_code_sent_click_link_or_enter_code: 验证码已发送到您的邮箱。点击邮件链接或输入一次性验证码以确认您的邮箱。
+ use_otp_code_to_verify_email_or_click_link_below_html: '使用 %{code} 验证码验证您的邮箱,或点击下方链接:'
+ verify_your_email: 验证您的邮箱
+ your_email_has_been_confirmed: 您的邮箱已确认。
+ invalid_or_expired_verification_code: 验证码无效或已过期。
+ didnt_receive_an_email: 没有收到邮件?
+ unconfirmed: 未确认
+ you_requested_to_reset_your_password_use_the_link_below_to_continue: 您请求重置密码。请使用以下链接继续
+ if_you_didnt_request_this_you_can_ignore_this_email: "如果您没有请求此操作,请忽略此邮件。"
+ your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "在您打开上方链接并设置新密码之前,密码不会更改。"
+ too_many_requests_try_again_later: 请求过多,请稍后重试。
+ bold: 粗体
+ italic: 斜体
+ underline: 下划线
+ undo: 撤销
+ redo: 重做
+ add_variable: 添加变量
+ enter_a_url_or_variable_name: 输入 URL 或变量名称
+ new_token: 新建令牌
+ token: 令牌
+ mcp_server: MCP 服务器
+ instructions: 说明
+ please_copy_the_token_below_now_as_it_wont_be_shown_again: 请立即复制以下令牌,它将不会再次显示
+ mcp_token_has_been_created: MCP 令牌已创建。
+ mcp_token_has_been_removed: MCP 令牌已移除。
+ enable_mcp_server: 启用 MCP 服务器
+ all_existing_mcp_connections_will_be_stopped_immediately_when_this_setting_is_disabled: 禁用此设置时,所有现有的 MCP 连接将立即停止。
+ connect_to_docuseal_mcp: 连接到 DocuSeal MCP
+ add_the_following_to_your_mcp_client_configuration: 将以下内容添加到您的 MCP 客户端配置
+ works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: 适用于 Claude Desktop、Cursor、Windsurf、VS Code 以及任何 MCP 兼容客户端。
+ your_email_address_has_been_changed: 您的邮箱地址已更改
+ the_email_address_for_your_account_has_been_changed_to_new_email: 您账户的邮箱地址已更改为 %{new_email}。
+ if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: 如果您没有进行此更改,请回复此邮件联系我们。
+ devise:
+ confirmations:
+ confirmed: 您的邮箱地址已成功确认。
+ failure:
+ unconfirmed: 您必须先确认邮箱地址才能继续。
+ mailer:
+ confirmation_instructions:
+ subject: 确认您的邮箱地址
+ submission_sources:
+ api: API
+ bulk: 批量发送
+ embed: 嵌入
+ invite: 邀请
+ link: 链接
+ mcp: MCP
+ submission_event_names:
+ send_email_to_html: '邮件已发送给 %{submitter_name}'
+ bounce_email_html: '邮件退回 %{submitter_name}'
+ complaint_email_html: '垃圾邮件投诉 %{submitter_name}'
+ send_reminder_email_to_html: '提醒邮件已发送给 %{submitter_name}'
+ send_sms_to_html: '短信已发送给 %{submitter_name}'
+ send_2fa_sms_to_html: '验证短信已发送给 %{submitter_name}'
+ send_2fa_email_to_html: '验证邮件已发送给 %{submitter_name}'
+ open_email_by_html: '邮件已打开,由 %{submitter_name}'
+ click_email_by_html: '邮件链接已点击,由 %{submitter_name}'
+ click_sms_by_html: '短信链接已点击,由 %{submitter_name}'
+ phone_verified_by_html: '电话已验证,由 %{submitter_name}'
+ email_verified_by_html: '邮件已验证,由 %{submitter_name}'
+ start_form_by_html: '提交已开始,由 %{submitter_name}'
+ view_form_by_html: '表单已查看,由 %{submitter_name}'
+ invite_party_by_html: '已邀请 %{invited_submitter_name},由 %{submitter_name}'
+ complete_form_by_html: '提交已完成,由 %{submitter_name}'
+ start_verification_by_html: '身份验证已开始,由 %{submitter_name}'
+ complete_verification_by_html: '身份验证已完成,由 %{submitter_name} 通过 %{provider}'
+ start_kba_by_html: 'KBA 已开始,由 %{submitter_name}'
+ complete_kba_by_html: 'KBA 已完成,由 %{submitter_name}'
+ fail_kba_by_html: 'KBA 失败,由 %{submitter_name}'
+ api_complete_form_by_html: '通过 API 提交已完成,由 %{submitter_name}'
+ decline_form_by_html: '表单已拒绝,由 %{submitter_name}'
+ delegate_form_by_html: '已委派从 %{from} 给 %{to}'
+ import_list:
+ select_worksheet: 选择工作表
+ open: 打开
+ remove: 移除
+ recipient_field: 收件人字段
+ spreadsheet_column: 电子表格列
+ select_field: 选择字段
+ select_column: 选择列
+ new_field_mapping: 新字段映射
+ total_entries: 总条目数
+ upload_csv_or_xlsx_spreadsheet: 上传 CSV 或 XLSX 电子表格
+ click_to_upload: 点击上传
+ or_drag_and_drop_files: 或拖放文件。
+ or: 或
+ download: 下载
+ a_sample_spreadsheet_to_fill_and_import: 一个用于填写和导入的示例电子表格
+ app_tour:
+ start: 开始
+ previous: 上一步
+ next: 下一步
+ template_and_submissions: 模板和提交
+ template_and_submissions_description: "您可以选择最适合您工作流程的视图。选择'模板'视图创建可重复使用的文档模板,或选择'提交'视图签署单个文档或查看每个签名请求的状态。"
+ upload_a_pdf_file: 上传 PDF 文件
+ upload_a_pdf_file_description: 上传 PDF 文档以创建签署表单模板。
+ select_a_signer_party: 选择签署方
+ select_a_signer_party_description: 此下拉菜单允许您选择签署方角色,或为需要 2 个或更多签名的文档添加新方。
+ available_parties: 可用方
+ available_parties_description: 此列表包含所有可用参与方及其角色名称。选择后,您可以为该签署方添加和配置字段。
+ available_field_types: 可用字段类型
+ available_field_types_description: 此部分包含可以添加到文档中的所有可用字段类型,用于数据输入或签名收集。
+ text_input_field: 文本输入字段
+ text_input_field_description: 此字段允许用户输入文本信息,如姓名或电子邮件。
+ signature_field: 签名字段
+ signature_field_description: 此字段用于收集签署者的签名。
+ added_fields: 已添加字段
+ added_fields_description: 此列表显示已添加到文档的所有字段。您可以重新排序、编辑或移除它们。
+ open_field_settings: 打开字段设置
+ open_field_settings_description: 在右侧字段名称旁边有一个设置图标,点击可打开字段设置。
+ field_settings: 字段设置
+ field_settings_description: 每个字段都可以通过设置进行自定义以满足您的要求,例如调整字体大小、设为必填字段或添加描述。
+ send_document: 发送文档进行签署
+ send_document_description: 在发送文档进行签署之前,您可以配置收件人、添加他们的电子邮件地址或电话号码,以及自定义邮件内容。
+ sign_yourself: 自行签署文档
+ sign_yourself_description: 此按钮允许您在需要签名的文档上添加您的签名。
+ copy_and_share_link: 复制并分享链接
+ copy_and_share_link_description: 复制此链接以分享文档。任何拥有链接的人都可以在输入电子邮件后签署它。
+ sign_the_document: 签署文档
+ sign_the_document_description: 如果您是签署者之一,此按钮允许您签署文档。
+ send_for_signing: 发送进行签署
+ add_recipients: 添加收件人
+ add_recipients_description: 通过输入电子邮件地址或电话号码,为待签署的文档添加新收件人。
+ settings: 设置
+ settings_account_description: 通过全面的账户设置,您可以自定义电子签署体验并邀请更多用户。
+ support: 支持
+ support_description: 您可以使用我们的自助 AI 助手,或发送电子邮件至 support@docuseal.com 提问。
+ settings_template_description: 使用此按钮访问您的账户设置页面。
+ doorkeeper:
+ scopes:
+ write: 更新您的数据
+ read: 读取您的数据
+ mcp: 使用 MCP
+ claudeai: 使用 Claude AI
+ pagination:
+ submissions:
+ range_with_total: "第 %{from}-%{to} 条,共 %{count} 条提交"
+ range_without_total: "第 %{from}-%{to} 条提交"
+ templates:
+ range_with_total: "第 %{from}-%{to} 条,共 %{count} 条模板"
+ range_without_total: "第 %{from}-%{to} 条模板"
+ template_folders:
+ range_with_total: "第 %{from}-%{to} 条,共 %{count} 个文件夹"
+ range_without_total: "第 %{from}-%{to} 个文件夹"
+ users:
+ range_with_total: "第 %{from}-%{to} 条,共 %{count} 名用户"
+ range_without_total: "第 %{from}-%{to} 名用户"
+ items:
+ range_with_total: "第 %{from}-%{to} 条,共 %{count} 条项目"
+ range_without_total: "第 %{from}-%{to} 条项目"
+ events:
+ range_with_total: "第 %{from}-%{to} 条,共 %{count} 条事件"
+ range_without_total: "第 %{from}-%{to} 条事件"
+ variables:
+ account_name: 账户名称
+ submitter_link: 提交者链接
+ template_name: 模板名称
+ submission_submitters: 提交者列表
+ submission_link: 提交链接
+ documents_link: 文档链接
+ time:
+ formats:
+ detailed: "%Y年%B%d日 %H:%M:%S"
diff --git a/docker-compose.yml b/docker-compose.yml
index fcc697be..56114cf3 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -13,7 +13,7 @@ services:
- DATABASE_URL=postgresql://postgres:postgres@postgres:5432/docuseal
postgres:
- image: postgres:18
+ image: postgres:17.5
volumes:
- './pg_data:/var/lib/postgresql/18/docker'
environment:
@@ -27,7 +27,7 @@ services:
retries: 5
caddy:
- image: caddy:latest
+ image: caddy:2.10-alpine
command: caddy reverse-proxy --from $HOST --to app:3000
ports:
- 80:80
diff --git a/简体中文支持部署指南.md b/简体中文支持部署指南.md
new file mode 100644
index 00000000..6efb4255
--- /dev/null
+++ b/简体中文支持部署指南.md
@@ -0,0 +1,397 @@
+# DocuSeal 简体中文支持部署指南
+
+## 概述
+
+本文档记录了为 DocuSeal 开源电子签名平台添加完整简体中文(zh-CN)支持的整个过程,包括后端 Rails i18n 翻译、前端 Vue 组件翻译、Dockerfile 国内镜像源适配,以及语言选项统一。
+
+## 修改文件清单
+
+| 文件 | 变更量 | 说明 |
+|------|--------|------|
+| `config/locales/i18n.yml` | +1070 行 | 新增 zh-CN 区域,完整中文翻译 |
+| `app/javascript/submission_form/i18n.js` | +111 行 | 新增前端提交表单 zh 翻译对象 |
+| `app/javascript/template_builder/i18n.js` | +226 行 | 新增前端模板编辑器 zh 翻译对象 |
+| `app/controllers/accounts_controller.rb` | +16 行 | 统一语言选项列表 |
+| `config/application.rb` | +1 行 | 添加 zh-CN 到可用语言列表 |
+| `Dockerfile` | +19 行 | 添加国内镜像源加速构建 |
+| `docker-compose.yml` | 版本锁定 | 锁定 PostgreSQL 和 Caddy 版本 |
+
+---
+
+## 一、i18n 中文翻译详情
+
+### 1.1 后端 Rails 翻译(config/locales/i18n.yml)
+
+在文件末尾(第 8088 行)新增 `zh-CN` 语言区域,采用 YAML 锚点继承模式:
+
+```yaml
+zh-CN:
+ <<: *en # 继承所有英文键作为回退
+ language_zh-CN: 中文 (简体)
+ sign_in: 登录
+ # ... 1000+ 条中文翻译
+```
+
+翻译覆盖范围:
+- 登录/注册/密码重置流程
+- 账户设置、偏好设置
+- 文档模板管理(创建、编辑、归档)
+- 签署流程(签名请求、提醒、完成通知)
+- 邮件模板(签名请求邮件、提醒邮件、完成通知)
+- 表单字段类型(文本、签名、日期、选择框等)
+- API 参考、嵌入集成
+- Webhook、SSO、SAML 配置
+- 应用导览、分页
+- 订阅计划、账单
+- Devise 认证系统
+- Doorkeeper OAuth 授权
+- 所有系统通知/提示消息
+
+**技术要点:**
+- 使用 `<<: *en` 继承英文键,未翻译的键自动回退英文
+- 配合 `config.i18n.fallbacks = [:en]` 双重保障
+- 保留了所有插值变量(`%{name}`, `%{count}` 等)和 HTML 标签
+
+### 1.2 前端提交表单翻译(app/javascript/submission_form/i18n.js)
+
+新增 `zh` 翻译对象(107 个键),覆盖:
+- 表单进度提示
+- 签名绘制操作(手绘、输入、上传)
+- 字段类型名称
+- 身份验证流程(短信/邮件验证码)
+- 文件上传操作
+- 支付界面
+
+关键代码:
+```js
+const zh = {
+ step: '步骤',
+ sign_and_complete: '签署并完成',
+ draw_signature: '绘制签名',
+ // ... 107 个翻译键
+}
+const i18n = { en, es, it, de, fr, pl, uk, cs, pt, he, nl, ar, ko, ja, zh }
+```
+
+**技术要点:**
+- 前端 locale 解析:`I18n.locale.to_s.split('-').first` → `"zh"`,匹配 `i18n["zh"]`
+- 回退链:`i18n[locale] → i18n[browserLang] → i18n.en → key`
+
+### 1.3 前端模板编辑器翻译(app/javascript/template_builder/i18n.js)
+
+新增 `zh` 翻译对象(221 个键),覆盖:
+- 字段绘制和编辑操作
+- 参与方管理(第1-20方)
+- 字段属性设置(字体、对齐、验证等)
+- 条件逻辑配置
+- 公式编辑器
+- 修订版本管理
+- PDF 密码保护
+
+关键代码:
+```js
+const zh = {
+ fixed: '固定',
+ draw_field_on_the_document: '在文档上绘制字段',
+ // ... 221 个翻译键
+}
+export { en, es, it, pt, fr, de, nl, zh }
+```
+
+### 1.4 语言选项统一
+
+`config/application.rb` 中 `available_locales` 包含 zh-CN(完整 22 种语言)。
+
+`accounts_controller.rb` 中 `LOCALE_OPTIONS` 从原来的 9 种扩展到 22 种,与 `available_locales` 完全一致:
+
+```ruby
+LOCALE_OPTIONS = {
+ 'en-US' => 'English (United States)',
+ 'en-GB' => 'English (United Kingdom)',
+ 'fr-FR' => 'Français',
+ 'es-ES' => 'Español',
+ 'pt-PT' => 'Português',
+ 'de-DE' => 'Deutsch',
+ 'it-IT' => 'Italiano',
+ 'nl-NL' => 'Nederlands',
+ 'zh-CN' => '中文 (简体)',
+ 'es' => 'Español',
+ 'it' => 'Italiano',
+ 'de' => 'Deutsch',
+ 'fr' => 'Français',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'uk' => 'Українська',
+ 'cs' => 'Čeština',
+ 'pt' => 'Português',
+ 'he' => 'עברית',
+ 'ar' => 'العربية',
+ 'ko' => '한국어',
+ 'ja' => '日本語'
+}.freeze
+```
+
+---
+
+## 二、Dockerfile 国内镜像源适配
+
+### 2.1 修改内容
+
+| 构建阶段 | 包管理器 | 原地址 | 替换为国内镜像 |
+|---------|---------|--------|---------------|
+| download | Alpine apk | `dl-cdn.alpinelinux.org` | `mirrors.tuna.tsinghua.edu.cn` |
+| webpack | Alpine apk | `dl-cdn.alpinelinux.org` | `mirrors.tuna.tsinghua.edu.cn` |
+| webpack | RubyGems | `rubygems.org` | `gems.ruby-china.com` |
+| webpack | Yarn/npm | `registry.yarnpkg.com` | `registry.npmmirror.com` |
+| app | Alpine apk | `dl-cdn.alpinelinux.org` | `mirrors.tuna.tsinghua.edu.cn` |
+| app | Bundler | `rubygems.org` | `gems.ruby-china.com` |
+
+### 2.2 关键代码位置
+
+**Alpine apk 镜像**(3 个阶段均添加):
+```dockerfile
+RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
+```
+
+**RubyGems 镜像**(webpack 阶段):
+```dockerfile
+gem sources --remove https://rubygems.org/ && \
+gem sources -a https://gems.ruby-china.com/
+```
+
+**Bundler 镜像**(app 阶段):
+```dockerfile
+bundle config set --global mirror.https://rubygems.org https://gems.ruby-china.com
+```
+
+**Yarn 镜像**(webpack 阶段):
+```dockerfile
+yarn config set registry https://registry.npmmirror.com
+```
+
+### 2.3 GitHub 资源下载说明
+
+以下资源仍直接从 GitHub 下载(未走镜像),因为它们通常通过 HTTPS 443 端口可以正常访问:
+
+| 资源 | 大小 | 用途 |
+|------|------|------|
+| GoNotoKurrent 字体(Regular + Bold) | ~30MB | 文档默认字体 |
+| DancingScript 字体 | ~200KB | 签名字体 |
+| ONNX 模型文件 | ~10MB | 表单字段自动检测 |
+| PDFium 二进制包 | ~30MB | PDF 渲染引擎 |
+
+如果 GitHub 下载仍然超时,可手动下载后通过 Docker volume 挂载,或使用 `ghproxy.net` 等 GitHub 文件代理。
+
+---
+
+## 三、构建与部署
+
+### 3.1 构建 Docker 镜像
+
+```bash
+cd /home/new211/my_project/DocuSeal/docuseal
+
+# 构建镜像(首次约 15-30 分钟)
+docker build -t docuseal-zh:latest .
+
+# 如需完全重新构建(不使用缓存)
+docker build -t docuseal-zh:latest . --no-cache
+```
+
+### 3.2 修改 docker-compose.yml
+
+```yaml
+services:
+ app:
+ depends_on:
+ postgres:
+ condition: service_healthy
+ image: docuseal-zh:latest # 改为本地构建的镜像
+ # image: docuseal/docuseal:latest # 原始镜像(无中文)
+ ports:
+ - 3000:3000
+ volumes:
+ - ./docuseal:/data/docuseal
+ environment:
+ - FORCE_SSL=${HOST}
+ - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/docuseal
+
+ postgres:
+ image: postgres:17.5
+ volumes:
+ - './pg_data:/var/lib/postgresql/18/docker'
+ environment:
+ POSTGRES_USER: postgres
+ POSTGRES_PASSWORD: postgres
+ POSTGRES_DB: docuseal
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
+ interval: 5s
+ timeout: 5s
+ retries: 5
+```
+
+### 3.3 启动服务
+
+```bash
+# 创建数据目录
+mkdir -p ./docuseal ./pg_data
+
+# 启动
+docker compose up -d
+
+# 查看日志
+docker compose logs -f app
+```
+
+访问 `http://localhost:3000` 即可使用。
+
+### 3.4 本地开发模式(不依赖 Docker)
+
+```bash
+# 前提:已安装 Ruby 4.0+、Node.js、PostgreSQL、Yarn
+
+# 安装依赖
+bundle install
+yarn install
+
+# 编译前端
+bin/shakapacker
+
+# 准备数据库
+bin/rails db:prepare
+
+# 启动
+bin/rails server
+```
+
+---
+
+## 四、验证方法
+
+### 4.1 快速验证(无需启动服务)
+
+```bash
+# 1. 验证 YAML 格式
+ruby -ryaml -e "YAML.load_file('config/locales/i18n.yml')" && echo "YAML 格式正确"
+
+# 2. 验证前端 JS 翻译键数量
+node -e "import('./app/javascript/submission_form/i18n.js').then(m => console.log('zh 键数:', Object.keys(m.default.zh).length))"
+node -e "import('./app/javascript/template_builder/i18n.js').then(m => console.log('zh 键数:', Object.keys(m.zh).length))"
+
+# 3. 确认 zh-CN 已注册到可用语言列表
+grep "zh-CN" config/application.rb
+grep "zh-CN" app/controllers/accounts_controller.rb
+```
+
+预期输出:
+- YAML 格式正确
+- submission_form zh 键数: **106**
+- template_builder zh 键数: **221**
+- 两个 grep 命令均有输出
+
+### 4.2 功能验证清单
+
+启动服务后,按以下清单验证:
+
+| 序号 | 页面 | 操作 | 预期结果 |
+|------|------|------|---------|
+| 1 | 登录页 `/` | 点击语言下拉菜单 | 显示 **中文 (简体)** 选项 |
+| 2 | 登录页 | 选择中文 | 整个界面切换为中文 |
+| 3 | 注册页 `/sign_up` | 查看表单 | 字段标签显示中文 |
+| 4 | 登录后首页 | 查看导航 | 菜单项显示中文 |
+| 5 | 模板创建 | 创建新模板 | 编辑器界面显示中文 |
+| 6 | 模板编辑器 | 拖放字段 | 字段名称、设置面板显示中文 |
+| 7 | 模板编辑器 | 查看参与方 | 第一方/第二方等显示中文 |
+| 8 | 发送文档 | 添加收件人 | 表单和按钮显示中文 |
+| 9 | 签署页面 | 以签署者身份打开 | 签名操作、按钮显示中文 |
+| 10 | 账户设置 `/settings/account` | 查看语言下拉 | 包含完整 22 种语言选项 |
+| 11 | 邮件模板 | 查看邮件设置 | 模板变量说明显示中文 |
+| 12 | API 参考 | 查看 API 文档 | 界面显示中文 |
+
+---
+
+## 五、翻译回退机制
+
+当某个翻译键在 `zh-CN` 中未定义时,系统按以下优先级查找:
+
+```
+zh-CN 翻译 → 英文翻译(en)→ 原始键名
+```
+
+具体实现:
+
+1. **后端 Rails**:`config.i18n.fallbacks = [:en]` + YAML `<<: *en` 锚点继承
+2. **前端提交表单**:`this.i18n[key] || i18n[lang]?.[key] || i18n[browserLang]?.[key] || i18n.en[key] || key`
+3. **前端模板编辑器**:同上逻辑
+
+---
+
+## 六、常见问题
+
+### Q1:切换中文后部分文字仍显示英文?
+
+**原因**:前端 JS 翻译键缺失。检查对应 Vue 组件的 i18n.js 文件中是否有对应的 `zh` 键。
+
+**解决**:在 `app/javascript/submission_form/i18n.js` 或 `template_builder/i18n.js` 的 `zh` 对象中补充缺失的键。
+
+### Q2:Docker 构建时 GitHub 下载超时?
+
+**原因**:国内网络访问 GitHub 不稳定。
+
+**解决方案(按优先级)**:
+
+1. 使用代理构建:
+ ```bash
+ docker build --build-arg HTTP_PROXY=http://your-proxy:port \
+ --build-arg HTTPS_PROXY=http://your-proxy:port \
+ -t docuseal-zh:latest .
+ ```
+
+2. 手动下载资源文件,修改 Dockerfile 使用 `COPY` 替代 `wget`
+
+3. 尝试不同的 GitHub 镜像代理(在 `wget` URL 前加前缀):
+ - `https://ghproxy.net/` 或 `https://ghproxy.com/`
+ - `https://mirror.ghproxy.com/`
+
+### Q3:如何添加更多中文语言变体(如 zh-TW 繁体中文)?
+
+```bash
+# 1. 复制 zh-CN 翻译作为基础
+# 2. 修改为繁体中文
+# 3. 在 config/application.rb 的 available_locales 中添加 :'zh-TW'
+# 4. 在 accounts_controller.rb 的 LOCALE_OPTIONS 中添加
+# 5. 在前端 i18n.js 中添加 zh-TW 翻译对象
+```
+
+### Q4:如何只构建前端翻译(不重新构建整个 Docker 镜像)?
+
+```bash
+# 本地开发模式重新编译前端
+bin/shakapacker
+
+# 或者只重编译前端资源
+yarn install && bin/shakapacker
+```
+
+---
+
+## 七、文件变更完整差异
+
+如需查看所有变更的完整差异:
+
+```bash
+git diff HEAD -- \
+ config/locales/i18n.yml \
+ app/javascript/submission_form/i18n.js \
+ app/javascript/template_builder/i18n.js \
+ app/controllers/accounts_controller.rb \
+ config/application.rb \
+ Dockerfile
+```
+
+---
+
+> **文档版本**:1.0
+> **最后更新**:2026-05-18
+> **适用版本**:DocuSeal (master branch)