Skip to content

Commit 9a2b022

Browse files
committed
fix: address issue #96
Signed-off-by: gabrnavarro <[email protected]>
1 parent 8be478b commit 9a2b022

18 files changed

Lines changed: 359 additions & 1 deletion

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"loading": "加载中……",
3+
"nav_about": "关于",
4+
"nav_create": "创建恢复包",
5+
"nav_guide": "指南",
6+
"nav_recover": "恢复",
7+
"error": "错误:{0}",
8+
"error_title": "出了点问题",
9+
"error_not_ready_title": "还没准备好",
10+
"error_not_ready_guidance": "请稍等片刻,然后重试。",
11+
"action_try_again": "再试一次",
12+
"remove": "移除",
13+
"confirm": "确认",
14+
"delete": "删除",
15+
"deleting": "正在删除……",
16+
"delete_failed": "删除失败。"
17+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"home_intro": "由你信任的人保护的文件,存放在这里,等待需要时使用。",
3+
"home_about_link": "关于 ReMemory",
4+
"home_empty": "目前还没有恢复包。",
5+
"home_create_bundle": "创建恢复包",
6+
"home_admin_password": "管理员密码",
7+
"home_enter_password": "请输入管理员密码。",
8+
"home_pieces_needed": "需要 {1} 份中的 {0} 份才能恢复"
9+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
{
2+
"heading": "ReMemory",
3+
"opening": "ReMemory 始于一个我无法停止思考的问题:如果有一天我出了什么事,我的数字生活会怎样?",
4+
"summary_1": "它是一个<strong>有多把钥匙的数字保险箱</strong>。你选择谁来保管钥匙,以及<strong>多少人必须到齐</strong>才能打开——五位中的三位、两位中的两位,由你决定。<strong>没有任何一个人能单独访问。</strong>",
5+
"summary_2": "每个人会收到一个恢复包,里面包含所需的一切。恢复就是在浏览器中打开一个文件——<strong><span title=\"不需要网络连接。有时间锁的归档文件需要连接以验证解锁日期。\">可离线使用*</span></strong>,不需要账号,不需要服务器。即使这个网站消失了,<strong>恢复依然可以进行</strong>。",
6+
"link_create": "创建恢复包",
7+
"link_guide": "阅读指南",
8+
"link_recover": "恢复文件",
9+
"bg_title": "为什么我做了这个",
10+
"bg_1": "两件事促使我开发了 ReMemory。",
11+
"bg_2": "当我看了<a href=\"https://www.youtube.com/watch?v=k_P7Y0-wgos\" target=\"_blank\">一部关于 Clive Wearing 的纪录片</a>,一位<strong>严重失忆症</strong>,自 1985 年起的人,这改变了我对自己数字生活的想法。<strong>记忆比我们愿意相信的还要脆弱。</strong>",
12+
"bg_3": "我曾在骑自行车时多次<strong>脑震荡</strong>。每一次都幸运地完全康复——但这些提醒不断累积。",
13+
"bg_4": "ReMemory 就此诞生:确保我信任的人能够取得重要的东西——<strong>而不需要把所有重担压在任何一个人身上</strong>。",
14+
"bg_changelog": "ReMemory 持续成长中。看看<a href=\"{{GITHUB_REPO}}/blob/main/CHANGELOG.md\" target=\"_blank\">更新记录</a>里有什么新变化。",
15+
"how_title": "运作原理",
16+
"how_subtitle": "你选择<strong>信任谁</strong>以及<strong>多少人必须同意</strong>。你的文件会被加密,密钥被分成多个片段,每个人保管一份。当足够的人将片段集合起来,文件就会解锁。",
17+
"how_caption": "五位中的任意三位就能恢复文件",
18+
"how_fallback": "<strong>你的文件</strong> → <strong>加密</strong> → <strong>密钥分成 5 个片段</strong> → <strong>分给朋友</strong><br>↓<br><strong>任意 3 位朋友</strong> → <strong>合并片段</strong> → <strong>解锁</strong> → <strong>文件已恢复</strong>",
19+
"bundles_title": "每个人会收到什么",
20+
"bundles_desc": "每个人会收到一个<strong>独立的恢复包</strong>——一个 ZIP 文件,里面有一个恢复工具,可以在<strong>任何浏览器离线运行,不需要安装任何东西</strong>。即使这个项目消失了,恢复依然可以进行。",
21+
"bundles_contacts": "每个恢复包都包含其他相关人员的<strong>联系方式</strong>,让他们能够<strong>在没有你的情况下互相协调</strong>。",
22+
"whatis_title": "这是什么,不是什么",
23+
"whatis_is": "它是:",
24+
"whatis_is_1": "一个在浏览器里运行的工具,<span title=\"不需要网络连接。有时间锁的归档文件需要连接以验证解锁日期。\">可离线使用*</span>",
25+
"whatis_is_2": "一个有多把钥匙的数字保险箱,由你信任的人保管",
26+
"whatis_is_3": "开源(Apache-2.0)",
27+
"whatis_is_4": "独立运行——不需要这个网站也能恢复",
28+
"whatis_isnt": "它不是:",
29+
"whatis_isnt_1": "一项服务或一家公司",
30+
"whatis_isnt_2": "账号系统或云端产品",
31+
"whatis_isnt_3": "会在任何地方存储你数据的东西",
32+
"whatis_isnt_4": "独立的备份方案",
33+
"try_title": "亲自体验",
34+
"try_step_1": "<a href=\"{{GITHUB_REPO}}/releases/latest/download/demo-bundles.zip\">下载示例恢复包</a>",
35+
"try_step_2": "在浏览器中打开 <code>bundle-alice/recover.html</code>",
36+
"try_step_3": "把 Bob 和 Camila 的 README 文件拖到页面上",
37+
"try_step_4": "当足够的片段被加入后,文件就会解锁",
38+
"try_docker_summary": "自行部署?<span class=\"docker-whale\">&#128051;</span>",
39+
"try_docker_link": "详情请参阅<a href=\"https://github.com/eljojo/rememory/blob/main/docs/selfhosted.md\" target=\"_blank\">自行部署指南</a>。",
40+
"try_note": "这是最接近真实恢复的体验。",
41+
"trust_title": "关于信任与透明",
42+
"trust_1": "即使这个项目不存在,恢复依然可以进行——每个恢复包都是独立的",
43+
"trust_2": "代码完全公开——<a href=\"{{GITHUB_REPO}}\" target=\"_blank\">在 GitHub 上查看</a>",
44+
"trust_3": "<a href=\"{{GITHUB_REPO}}/blob/main/docs/security-review.md\" target=\"_blank\">安全自我审查</a>说明了密码学上的设计选择",
45+
"trust_4": "所有操作都在本地执行。你的文件绝不会离开你的设备",
46+
"trust_5": "在用于重要文件之前,先试试示例恢复包",
47+
"trust_6": "加密使用 <a href=\"https://github.com/FiloSottile/age\" target=\"_blank\">age</a>——一个现代、备受信赖的工具",
48+
"trust_7": "进一步了解<a href=\"docs.html#cryptography\">什么在保护你的数据</a>以及<a href=\"docs.html#what-could-go-wrong\">可能出什么问题</a>",
49+
"footer_timelock": "* 有<a href=\"docs.html#timelock\" style=\"color: #8A8480;\">时间锁</a>的归档文件在恢复时需要短暂的网络连接。",
50+
"footer_source": "源代码",
51+
"footer_download": "下载",
52+
"footer_docs": "使用说明",
53+
"footer_author": "<span style=\"text-decoration: underline;\">jojo</span> 制作",
54+
"closing_prompt": "准备好了的时候",
55+
"anim_your_file": "你的文件",
56+
"anim_encrypt": "加密",
57+
"anim_split": "分割",
58+
"anim_combine": "合并",
59+
"anim_recovered": "已恢复",
60+
"anim_later": "之后:需要恢复了……"
61+
}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
{
2+
"title": "ReMemory - 创建恢复包",
3+
"page_title": "创建恢复包",
4+
"page_description": "加入你的文件、选择你信任的人,设定几个人同意才能恢复。每个人都会拿到一个独立的恢复包。所有操作都在你的设备里完成,不会离开浏览器。",
5+
"subtitle": "确保你的重要文件触手可及,即使当你无法自己取得时。",
6+
"step1_title": "朋友",
7+
"friends_hint": "每位朋友都会保管你的一部分恢复密钥",
8+
"mode_named": "指名",
9+
"mode_anonymous": "匿名",
10+
"anonymous_hint": "拿到恢复包的人不会知道彼此是谁",
11+
"num_shares_label": "份数:",
12+
"add_friend": "添加朋友",
13+
"threshold_label": "门槛:",
14+
"threshold_option": "{0}/{1}",
15+
"threshold_desc": "位朋友同意才会开始恢复",
16+
"name_label": "姓名",
17+
"contact_label": "联系方式(选填)",
18+
"import_summary": "从现有的 project.yml 导入联系人",
19+
"import_placeholder": "在这里粘贴你的 project.yml 内容……",
20+
"import_btn": "导入联系人",
21+
"step2_title": "需要保护的文件",
22+
"files_drop": "拖放一个文件夹到这里,或点击以选择文件",
23+
"files_hint": "这些文件会先加密,再分割交给每位朋友",
24+
"files_summary": "{0} 个文件,共 {1}",
25+
"files_too_large": "文件过大 — 上限为 {0}",
26+
"step3_title": "生成恢复包",
27+
"generate_btn": "生成恢复包",
28+
"download_all_btn": "下载所有恢复包",
29+
"download_yaml_btn": "保存 project.yml",
30+
"works_offline": "可完全离线使用",
31+
"generating": "生成中……",
32+
"archiving": "归档中……",
33+
"encrypting": "加密中……",
34+
"splitting": "分割密钥……",
35+
36+
"complete": "所有恢复包已准备好。",
37+
"validation_min_friends": "需要至少 2 位朋友",
38+
"validation_friend_name": "朋友 {0}:请提供姓名",
39+
"validation_no_files": "请选择至少 1 个文件",
40+
"download": "下载",
41+
"bundle_for": "{0} 的恢复包",
42+
"import_success": "已导入 {0} 个联系人",
43+
"import_error": "解析 YAML 失败:{0}",
44+
"error_not_ready_message": "恢复包创建工具还在加载中。",
45+
"error_import_title": "导入失败",
46+
"error_import_guidance": "请检查 YAML 的格式、缩进正确,并确保每位朋友都有填写姓名。",
47+
"error_generate_title": "恢复包创建失败",
48+
"error_generate_guidance": "请确认每位朋友都有姓名,并且已经加入至少 1 个文件。",
49+
"validation_title": "有些字段需要填写",
50+
"validation_message": "请先填写所有已标示的字段,再开始生成恢复包。",
51+
"validation_guidance": "每位朋友都需要填写姓名,并且需要加入至少 1 个文件。",
52+
"language_label": "恢复包语言",
53+
54+
"custom_language_label": "更改语言",
55+
"threshold_guidance": "想想谁可能同时有空。门槛越低,在有人无法参与时越有弹性。",
56+
"mode_simple": "简易",
57+
"mode_advanced": "高级",
58+
"timelock_label": "加入时间锁",
59+
"timelock_experimental": "实验性",
60+
"timelock_hint": "即使收集到足够的片段,文件在此日期之前仍然无法打开。",
61+
"timelock_learn_more": "这是如何运作的?",
62+
"timelock_value_label": "锁定期间:",
63+
"timelock_minutes": "分钟",
64+
"timelock_hours": "小时",
65+
"timelock_days": "",
66+
"timelock_weeks": "",
67+
"timelock_months": "个月",
68+
"timelock_years": "",
69+
"timelock_preview": "{0} 之后可打开",
70+
"timelock_max_exceeded": "网页工具最长支持两年的时间锁。如需更长的期间,请使用命令行工具。",
71+
"timelock_network_hint": "恢复时需要短暂的网络连接来验证时间锁。",
72+
"timelock_encrypting": "正在应用时间锁...",
73+
"next_steps_link": "接下来该做什么",
74+
75+
"how_summary": "运作方式",
76+
"how_creating_title": "创建恢复包",
77+
"how_creating_add": "加入你的文件,选择你信任的人",
78+
"how_creating_threshold": "决定需要几个人同意才能恢复",
79+
"how_creating_generate": "每个人会收到一份独一无二的恢复包",
80+
"how_creating_send": "用你觉得最好的方式发送每份恢复包",
81+
"how_recovery_title": "恢复",
82+
"how_recovery_open": "在任何浏览器中打开 recover.html",
83+
"how_recovery_combine": "集齐足够的片段,文件就会解锁",
84+
"how_recovery_offline": "不需要服务器、不需要网络、不需要安装",
85+
"how_security_title": "安全性",
86+
"how_security_local": "所有操作都在你的浏览器中进行 — 不会离开你的设备",
87+
"how_security_offline": "这个页面可以离线使用 — 用文件 › 另存为保存",
88+
"how_security_encryption": "使用 age 加密保护",
89+
"how_security_opensource": "开源 (Apache-2.0)",
90+
91+
"update_nudge_title": "可能有更新的版本",
92+
"update_nudge_message": "目前使用版本 {0},创建于 {1}。",
93+
"update_nudge_action": "检查更新"
94+
}

internal/translations/readme/ca.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"lang_nl": "holandès",
6161
"lang_it": "italià",
6262
"lang_tr": "turc",
63+
"lang_zh-CN": "xinès simplificat",
6364
"machine_readable": "FORMAT DE TEXT (per enganxar a l'eina de recuperació):",
6465
"qr_caption": "Escaneja amb la càmera del teu telèfon per importar la teva part",
6566
"recovery_rule": "REGLA DE RECUPERACIÓ",

internal/translations/readme/de.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"lang_nl": "Niederländisch",
6161
"lang_it": "Italienisch",
6262
"lang_tr": "Türkisch",
63+
"lang_zh-CN": "Chinesisch (Vereinfacht)",
6364
"machine_readable": "TEXTFORMAT (zum Einfügen im Wiederherstellungstool):",
6465
"qr_caption": "Scanne mit deiner Handykamera, um deinen Teil zu importieren",
6566
"recovery_rule": "WIEDERHERSTELLUNGSREGEL",

internal/translations/readme/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"lang_nl": "Dutch",
6161
"lang_it": "Italian",
6262
"lang_tr": "Turkish",
63+
"lang_zh-CN": "Chinese (Simplified)",
6364
"machine_readable": "TEXT FORMAT (for pasting into the recovery tool):",
6465
"qr_caption": "Scan with your phone camera to import your piece",
6566
"recovery_rule": "RECOVERY RULE",

internal/translations/readme/es.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"lang_nl": "holandés",
6161
"lang_it": "italiano",
6262
"lang_tr": "turco",
63+
"lang_zh-CN": "Chino simplificado",
6364
"machine_readable": "FORMATO TEXTO (para pegar en la herramienta de recuperación):",
6465
"qr_caption": "Escanea con la cámara de tu teléfono para importar tu parte",
6566
"recovery_rule": "REGLA DE RECUPERACIÓN",

internal/translations/readme/fr.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"lang_nl": "Néerlandais",
6161
"lang_it": "italien",
6262
"lang_tr": "turc",
63+
"lang_zh-CN": "Chinois simplifié",
6364
"machine_readable": "FORMAT TEXTE (à coller dans l'outil de récupération) :",
6465
"qr_caption": "Scannez avec l'appareil photo de votre téléphone pour importer votre part",
6566
"recovery_rule": "RÈGLE DE RÉCUPÉRATION",

internal/translations/readme/it.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"lang_sl": "Sloveno",
5858
"lang_pt": "Portoghese (Brasile)",
5959
"lang_zh-TW": "Cinese (Taiwan)",
60+
"lang_zh-CN": "Cinese (Semplificato)",
6061
"lang_nl": "Olandese",
6162
"lang_it": "Italiano",
6263
"lang_tr": "Turco",

0 commit comments

Comments
 (0)