@tracearr/translations 2.1.0-beta.7 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +4 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.mobile.d.ts +4 -2
- package/dist/config.mobile.d.ts.map +1 -1
- package/dist/locales/af-ZA/common.json +251 -251
- package/dist/locales/af-ZA/mobile.json +125 -125
- package/dist/locales/af-ZA/notifications.json +226 -226
- package/dist/locales/af-ZA/pages.json +69 -67
- package/dist/locales/af-ZA/settings.json +446 -446
- package/dist/locales/ar-SA/common.json +251 -251
- package/dist/locales/ar-SA/mobile.json +125 -125
- package/dist/locales/ar-SA/notifications.json +226 -226
- package/dist/locales/ar-SA/pages.json +69 -67
- package/dist/locales/ar-SA/settings.json +446 -446
- package/dist/locales/ca-ES/common.json +251 -251
- package/dist/locales/ca-ES/mobile.json +125 -125
- package/dist/locales/ca-ES/notifications.json +226 -226
- package/dist/locales/ca-ES/pages.json +69 -67
- package/dist/locales/ca-ES/settings.json +446 -446
- package/dist/locales/cs-CZ/common.json +251 -251
- package/dist/locales/cs-CZ/mobile.json +125 -125
- package/dist/locales/cs-CZ/notifications.json +226 -226
- package/dist/locales/cs-CZ/pages.json +69 -67
- package/dist/locales/cs-CZ/settings.json +446 -446
- package/dist/locales/da-DK/common.json +251 -251
- package/dist/locales/da-DK/mobile.json +125 -125
- package/dist/locales/da-DK/notifications.json +226 -226
- package/dist/locales/da-DK/pages.json +69 -67
- package/dist/locales/da-DK/settings.json +446 -446
- package/dist/locales/de-DE/common.json +251 -251
- package/dist/locales/de-DE/mobile.json +125 -125
- package/dist/locales/de-DE/notifications.json +226 -226
- package/dist/locales/de-DE/pages.json +69 -67
- package/dist/locales/de-DE/settings.json +446 -446
- package/dist/locales/el-GR/common.json +251 -251
- package/dist/locales/el-GR/mobile.json +125 -125
- package/dist/locales/el-GR/notifications.json +226 -226
- package/dist/locales/el-GR/pages.json +69 -67
- package/dist/locales/el-GR/settings.json +446 -446
- package/dist/locales/en/pages.json +2 -1
- package/dist/locales/en-US/common.json +251 -251
- package/dist/locales/en-US/mobile.json +125 -125
- package/dist/locales/en-US/notifications.json +224 -224
- package/dist/locales/en-US/pages.json +57 -55
- package/dist/locales/en-US/settings.json +446 -446
- package/dist/locales/es-ES/common.json +251 -251
- package/dist/locales/es-ES/mobile.json +125 -125
- package/dist/locales/es-ES/notifications.json +226 -226
- package/dist/locales/es-ES/pages.json +69 -67
- package/dist/locales/es-ES/settings.json +446 -446
- package/dist/locales/fi-FI/common.json +251 -251
- package/dist/locales/fi-FI/mobile.json +125 -125
- package/dist/locales/fi-FI/notifications.json +226 -226
- package/dist/locales/fi-FI/pages.json +69 -67
- package/dist/locales/fi-FI/settings.json +446 -446
- package/dist/locales/fr-FR/common.json +251 -251
- package/dist/locales/fr-FR/notifications.json +226 -226
- package/dist/locales/fr-FR/pages.json +69 -67
- package/dist/locales/fr-FR/settings.json +446 -446
- package/dist/locales/he-IL/common.json +251 -251
- package/dist/locales/he-IL/mobile.json +125 -125
- package/dist/locales/he-IL/notifications.json +226 -226
- package/dist/locales/he-IL/pages.json +69 -67
- package/dist/locales/he-IL/settings.json +446 -446
- package/dist/locales/hu-HU/common.json +251 -251
- package/dist/locales/hu-HU/mobile.json +125 -125
- package/dist/locales/hu-HU/notifications.json +226 -226
- package/dist/locales/hu-HU/pages.json +69 -67
- package/dist/locales/hu-HU/settings.json +446 -446
- package/dist/locales/it-IT/common.json +251 -251
- package/dist/locales/it-IT/mobile.json +125 -125
- package/dist/locales/it-IT/notifications.json +226 -226
- package/dist/locales/it-IT/pages.json +69 -67
- package/dist/locales/it-IT/settings.json +446 -446
- package/dist/locales/ja-JP/common.json +251 -251
- package/dist/locales/ja-JP/mobile.json +125 -125
- package/dist/locales/ja-JP/notifications.json +226 -226
- package/dist/locales/ja-JP/pages.json +69 -67
- package/dist/locales/ja-JP/settings.json +446 -446
- package/dist/locales/ko-KR/common.json +251 -251
- package/dist/locales/ko-KR/mobile.json +125 -125
- package/dist/locales/ko-KR/notifications.json +226 -226
- package/dist/locales/ko-KR/pages.json +69 -67
- package/dist/locales/ko-KR/settings.json +446 -446
- package/dist/locales/nl-NL/common.json +251 -251
- package/dist/locales/nl-NL/notifications.json +226 -226
- package/dist/locales/nl-NL/pages.json +69 -67
- package/dist/locales/no-NO/common.json +251 -251
- package/dist/locales/no-NO/mobile.json +125 -125
- package/dist/locales/no-NO/notifications.json +226 -226
- package/dist/locales/no-NO/pages.json +69 -67
- package/dist/locales/no-NO/settings.json +446 -446
- package/dist/locales/pl-PL/common.json +251 -251
- package/dist/locales/pl-PL/mobile.json +125 -125
- package/dist/locales/pl-PL/notifications.json +226 -226
- package/dist/locales/pl-PL/pages.json +69 -67
- package/dist/locales/pl-PL/settings.json +446 -446
- package/dist/locales/pt-BR/common.json +251 -251
- package/dist/locales/pt-BR/mobile.json +125 -125
- package/dist/locales/pt-BR/notifications.json +226 -226
- package/dist/locales/pt-BR/pages.json +69 -67
- package/dist/locales/pt-BR/settings.json +446 -446
- package/dist/locales/pt-PT/common.json +251 -251
- package/dist/locales/pt-PT/mobile.json +125 -125
- package/dist/locales/pt-PT/notifications.json +226 -226
- package/dist/locales/pt-PT/pages.json +69 -67
- package/dist/locales/pt-PT/settings.json +446 -446
- package/dist/locales/ro-RO/common.json +251 -251
- package/dist/locales/ro-RO/mobile.json +125 -125
- package/dist/locales/ro-RO/notifications.json +226 -226
- package/dist/locales/ro-RO/pages.json +69 -67
- package/dist/locales/ro-RO/settings.json +446 -446
- package/dist/locales/ru-RU/common.json +251 -251
- package/dist/locales/ru-RU/mobile.json +125 -125
- package/dist/locales/ru-RU/notifications.json +226 -226
- package/dist/locales/ru-RU/pages.json +69 -67
- package/dist/locales/ru-RU/settings.json +446 -446
- package/dist/locales/sr-SP/common.json +251 -251
- package/dist/locales/sr-SP/mobile.json +125 -125
- package/dist/locales/sr-SP/notifications.json +226 -226
- package/dist/locales/sr-SP/pages.json +69 -67
- package/dist/locales/sr-SP/settings.json +446 -446
- package/dist/locales/sv-SE/common.json +251 -251
- package/dist/locales/sv-SE/mobile.json +125 -125
- package/dist/locales/sv-SE/notifications.json +226 -226
- package/dist/locales/sv-SE/pages.json +69 -67
- package/dist/locales/sv-SE/settings.json +446 -446
- package/dist/locales/tr-TR/common.json +251 -251
- package/dist/locales/tr-TR/mobile.json +125 -125
- package/dist/locales/tr-TR/notifications.json +226 -226
- package/dist/locales/tr-TR/pages.json +69 -67
- package/dist/locales/tr-TR/settings.json +446 -446
- package/dist/locales/uk-UA/common.json +251 -251
- package/dist/locales/uk-UA/mobile.json +125 -125
- package/dist/locales/uk-UA/notifications.json +226 -226
- package/dist/locales/uk-UA/pages.json +69 -67
- package/dist/locales/uk-UA/settings.json +446 -446
- package/dist/locales/vi-VN/common.json +251 -251
- package/dist/locales/vi-VN/mobile.json +125 -125
- package/dist/locales/vi-VN/notifications.json +226 -226
- package/dist/locales/vi-VN/pages.json +69 -67
- package/dist/locales/vi-VN/settings.json +446 -446
- package/dist/locales/zh-CN/common.json +251 -251
- package/dist/locales/zh-CN/mobile.json +125 -125
- package/dist/locales/zh-CN/notifications.json +226 -226
- package/dist/locales/zh-CN/pages.json +69 -67
- package/dist/locales/zh-CN/settings.json +446 -446
- package/dist/locales/zh-TW/common.json +251 -251
- package/dist/locales/zh-TW/mobile.json +125 -125
- package/dist/locales/zh-TW/notifications.json +226 -226
- package/dist/locales/zh-TW/pages.json +69 -67
- package/dist/locales/zh-TW/settings.json +446 -446
- package/package.json +1 -1
- package/src/locales/af-ZA/common.json +251 -251
- package/src/locales/af-ZA/mobile.json +125 -125
- package/src/locales/af-ZA/notifications.json +226 -226
- package/src/locales/af-ZA/pages.json +69 -67
- package/src/locales/af-ZA/settings.json +446 -446
- package/src/locales/ar-SA/common.json +251 -251
- package/src/locales/ar-SA/mobile.json +125 -125
- package/src/locales/ar-SA/notifications.json +226 -226
- package/src/locales/ar-SA/pages.json +69 -67
- package/src/locales/ar-SA/settings.json +446 -446
- package/src/locales/ca-ES/common.json +251 -251
- package/src/locales/ca-ES/mobile.json +125 -125
- package/src/locales/ca-ES/notifications.json +226 -226
- package/src/locales/ca-ES/pages.json +69 -67
- package/src/locales/ca-ES/settings.json +446 -446
- package/src/locales/cs-CZ/common.json +251 -251
- package/src/locales/cs-CZ/mobile.json +125 -125
- package/src/locales/cs-CZ/notifications.json +226 -226
- package/src/locales/cs-CZ/pages.json +69 -67
- package/src/locales/cs-CZ/settings.json +446 -446
- package/src/locales/da-DK/common.json +251 -251
- package/src/locales/da-DK/mobile.json +125 -125
- package/src/locales/da-DK/notifications.json +226 -226
- package/src/locales/da-DK/pages.json +69 -67
- package/src/locales/da-DK/settings.json +446 -446
- package/src/locales/de-DE/common.json +251 -251
- package/src/locales/de-DE/mobile.json +125 -125
- package/src/locales/de-DE/notifications.json +226 -226
- package/src/locales/de-DE/pages.json +69 -67
- package/src/locales/de-DE/settings.json +446 -446
- package/src/locales/el-GR/common.json +251 -251
- package/src/locales/el-GR/mobile.json +125 -125
- package/src/locales/el-GR/notifications.json +226 -226
- package/src/locales/el-GR/pages.json +69 -67
- package/src/locales/el-GR/settings.json +446 -446
- package/src/locales/en/pages.json +2 -1
- package/src/locales/en-US/common.json +251 -251
- package/src/locales/en-US/mobile.json +125 -125
- package/src/locales/en-US/notifications.json +224 -224
- package/src/locales/en-US/pages.json +57 -55
- package/src/locales/en-US/settings.json +446 -446
- package/src/locales/es-ES/common.json +251 -251
- package/src/locales/es-ES/mobile.json +125 -125
- package/src/locales/es-ES/notifications.json +226 -226
- package/src/locales/es-ES/pages.json +69 -67
- package/src/locales/es-ES/settings.json +446 -446
- package/src/locales/fi-FI/common.json +251 -251
- package/src/locales/fi-FI/mobile.json +125 -125
- package/src/locales/fi-FI/notifications.json +226 -226
- package/src/locales/fi-FI/pages.json +69 -67
- package/src/locales/fi-FI/settings.json +446 -446
- package/src/locales/fr-FR/common.json +251 -251
- package/src/locales/fr-FR/notifications.json +226 -226
- package/src/locales/fr-FR/pages.json +69 -67
- package/src/locales/fr-FR/settings.json +446 -446
- package/src/locales/he-IL/common.json +251 -251
- package/src/locales/he-IL/mobile.json +125 -125
- package/src/locales/he-IL/notifications.json +226 -226
- package/src/locales/he-IL/pages.json +69 -67
- package/src/locales/he-IL/settings.json +446 -446
- package/src/locales/hu-HU/common.json +251 -251
- package/src/locales/hu-HU/mobile.json +125 -125
- package/src/locales/hu-HU/notifications.json +226 -226
- package/src/locales/hu-HU/pages.json +69 -67
- package/src/locales/hu-HU/settings.json +446 -446
- package/src/locales/it-IT/common.json +251 -251
- package/src/locales/it-IT/mobile.json +125 -125
- package/src/locales/it-IT/notifications.json +226 -226
- package/src/locales/it-IT/pages.json +69 -67
- package/src/locales/it-IT/settings.json +446 -446
- package/src/locales/ja-JP/common.json +251 -251
- package/src/locales/ja-JP/mobile.json +125 -125
- package/src/locales/ja-JP/notifications.json +226 -226
- package/src/locales/ja-JP/pages.json +69 -67
- package/src/locales/ja-JP/settings.json +446 -446
- package/src/locales/ko-KR/common.json +251 -251
- package/src/locales/ko-KR/mobile.json +125 -125
- package/src/locales/ko-KR/notifications.json +226 -226
- package/src/locales/ko-KR/pages.json +69 -67
- package/src/locales/ko-KR/settings.json +446 -446
- package/src/locales/nl-NL/common.json +251 -251
- package/src/locales/nl-NL/notifications.json +226 -226
- package/src/locales/nl-NL/pages.json +69 -67
- package/src/locales/no-NO/common.json +251 -251
- package/src/locales/no-NO/mobile.json +125 -125
- package/src/locales/no-NO/notifications.json +226 -226
- package/src/locales/no-NO/pages.json +69 -67
- package/src/locales/no-NO/settings.json +446 -446
- package/src/locales/pl-PL/common.json +251 -251
- package/src/locales/pl-PL/mobile.json +125 -125
- package/src/locales/pl-PL/notifications.json +226 -226
- package/src/locales/pl-PL/pages.json +69 -67
- package/src/locales/pl-PL/settings.json +446 -446
- package/src/locales/pt-BR/common.json +251 -251
- package/src/locales/pt-BR/mobile.json +125 -125
- package/src/locales/pt-BR/notifications.json +226 -226
- package/src/locales/pt-BR/pages.json +69 -67
- package/src/locales/pt-BR/settings.json +446 -446
- package/src/locales/pt-PT/common.json +251 -251
- package/src/locales/pt-PT/mobile.json +125 -125
- package/src/locales/pt-PT/notifications.json +226 -226
- package/src/locales/pt-PT/pages.json +69 -67
- package/src/locales/pt-PT/settings.json +446 -446
- package/src/locales/ro-RO/common.json +251 -251
- package/src/locales/ro-RO/mobile.json +125 -125
- package/src/locales/ro-RO/notifications.json +226 -226
- package/src/locales/ro-RO/pages.json +69 -67
- package/src/locales/ro-RO/settings.json +446 -446
- package/src/locales/ru-RU/common.json +251 -251
- package/src/locales/ru-RU/mobile.json +125 -125
- package/src/locales/ru-RU/notifications.json +226 -226
- package/src/locales/ru-RU/pages.json +69 -67
- package/src/locales/ru-RU/settings.json +446 -446
- package/src/locales/sr-SP/common.json +251 -251
- package/src/locales/sr-SP/mobile.json +125 -125
- package/src/locales/sr-SP/notifications.json +226 -226
- package/src/locales/sr-SP/pages.json +69 -67
- package/src/locales/sr-SP/settings.json +446 -446
- package/src/locales/sv-SE/common.json +251 -251
- package/src/locales/sv-SE/mobile.json +125 -125
- package/src/locales/sv-SE/notifications.json +226 -226
- package/src/locales/sv-SE/pages.json +69 -67
- package/src/locales/sv-SE/settings.json +446 -446
- package/src/locales/tr-TR/common.json +251 -251
- package/src/locales/tr-TR/mobile.json +125 -125
- package/src/locales/tr-TR/notifications.json +226 -226
- package/src/locales/tr-TR/pages.json +69 -67
- package/src/locales/tr-TR/settings.json +446 -446
- package/src/locales/uk-UA/common.json +251 -251
- package/src/locales/uk-UA/mobile.json +125 -125
- package/src/locales/uk-UA/notifications.json +226 -226
- package/src/locales/uk-UA/pages.json +69 -67
- package/src/locales/uk-UA/settings.json +446 -446
- package/src/locales/vi-VN/common.json +251 -251
- package/src/locales/vi-VN/mobile.json +125 -125
- package/src/locales/vi-VN/notifications.json +226 -226
- package/src/locales/vi-VN/pages.json +69 -67
- package/src/locales/vi-VN/settings.json +446 -446
- package/src/locales/zh-CN/common.json +251 -251
- package/src/locales/zh-CN/mobile.json +125 -125
- package/src/locales/zh-CN/notifications.json +226 -226
- package/src/locales/zh-CN/pages.json +69 -67
- package/src/locales/zh-CN/settings.json +446 -446
- package/src/locales/zh-TW/common.json +251 -251
- package/src/locales/zh-TW/mobile.json +125 -125
- package/src/locales/zh-TW/notifications.json +226 -226
- package/src/locales/zh-TW/pages.json +69 -67
- package/src/locales/zh-TW/settings.json +446 -446
|
@@ -1,501 +1,501 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"password": "密码",
|
|
15
|
-
"signInToAccount": "登录到您的帐户",
|
|
16
|
-
"useLocalAccount": "使用本地账户"
|
|
17
|
-
},
|
|
18
|
-
"advanced": {
|
|
19
|
-
"connectionScenarios": "连接场景",
|
|
20
|
-
"externalUrl": "外部 URL",
|
|
21
|
-
"reverseProxy": "反向代理",
|
|
22
|
-
"title": "高级设置",
|
|
23
|
-
"trustProxy": "信任代理头"
|
|
24
|
-
},
|
|
25
|
-
"backup": {
|
|
26
|
-
"actions": "动作",
|
|
27
|
-
"backToBackups": "返回备份",
|
|
28
|
-
"backupHistory": "备份历史",
|
|
29
|
-
"createBackup": "创建备份",
|
|
30
|
-
"creating": "正在创建备份……",
|
|
31
|
-
"databaseSize": "当前数据库大小:{{size}}",
|
|
32
|
-
"date": "日期",
|
|
33
|
-
"dayFri": "星期五",
|
|
34
|
-
"dayMon": "星期一",
|
|
35
|
-
"daySat": "星期六",
|
|
36
|
-
"daySun": "星期日",
|
|
37
|
-
"dayThu": "星期四",
|
|
38
|
-
"dayTue": "星期二",
|
|
39
|
-
"dayWed": "星期三",
|
|
40
|
-
"deleteConfirmDescription": "您确定要删除此备份吗?此操作无法撤消。",
|
|
41
|
-
"deleteConfirmTitle": "删除备份",
|
|
42
|
-
"description": "备份并恢复您的 Tracearr 数据",
|
|
43
|
-
"filename": "文件名",
|
|
44
|
-
"freeSpace": "备份目录可用空间:{{size}}",
|
|
45
|
-
"lowDiskSpace": "磁盘空间不足 — 备份和恢复需要至少两倍的可用空间。",
|
|
46
|
-
"noBackups": "尚未备份。请在上面创建您的第一个备份。",
|
|
47
|
-
"restore": {
|
|
48
|
-
"cannotRestore": "恢复需要 PostgreSQL 超级用户权限。请确保您的数据库用户拥有超级用户权限并重试。",
|
|
49
|
-
"complete": "还原成功完成。页面将很快刷新。",
|
|
50
|
-
"confirm": "开始还原",
|
|
51
|
-
"confirmLabel": "我理解这将替换所有数据",
|
|
52
|
-
"databaseSize": "数据库大小",
|
|
53
|
-
"failed": "还原失败",
|
|
54
|
-
"libraryItems": "媒体库数量",
|
|
55
|
-
"pgVersionMismatch": "备份是在 PostgreSQL {{backupVersion}} 上创建的,但此服务器运行的是 PostgreSQL {{serverVersion}}。不支持从较新版本的 PostgreSQL 恢复转储。",
|
|
56
|
-
"rules": "规则",
|
|
57
|
-
"selectedBackup": "所选备份",
|
|
58
|
-
"servers": "服务器",
|
|
59
|
-
"sessions": "会话",
|
|
60
|
-
"tables": "表",
|
|
61
|
-
"title": "还原备份",
|
|
62
|
-
"tsVersionMismatch": "备份是使用 TimescaleDB {{backupVersion}} 创建的,但此服务器仅支持到 TimescaleDB {{serverVersion}}。",
|
|
63
|
-
"users": "用户",
|
|
64
|
-
"warning": "还原将替换所有现有数据。您需要在还原完成后重新登录。"
|
|
65
|
-
},
|
|
66
|
-
"restoreAction": "还原",
|
|
67
|
-
"retentionCount": "保留最近",
|
|
68
|
-
"retentionSuffix": "计划备份",
|
|
69
|
-
"schedule": "计划备份",
|
|
70
|
-
"scheduleDaily": "每天",
|
|
71
|
-
"scheduleDayOfMonth": "每月的某一日",
|
|
72
|
-
"scheduleDayOfMonthHint": "在日数月里,备份工作在最后一天进行。",
|
|
73
|
-
"scheduleDayOfWeek": "星期几",
|
|
74
|
-
"scheduleDisabled": "禁用",
|
|
75
|
-
"scheduleMonthly": "每月",
|
|
76
|
-
"scheduleTime": "时区({{timezone}})",
|
|
77
|
-
"scheduleType": "计划",
|
|
78
|
-
"scheduleWeekly": "每周",
|
|
79
|
-
"size": "尺寸",
|
|
80
|
-
"title": "备份",
|
|
81
|
-
"toast": {
|
|
82
|
-
"backupCreateFailed": "创建备份失败",
|
|
83
|
-
"backupCreated": "备份创建成功",
|
|
84
|
-
"backupDeleteFailed": "删除备份失败",
|
|
85
|
-
"backupDeleted": "备份已删除",
|
|
86
|
-
"backupUploadFailed": "上传备份失败",
|
|
87
|
-
"backupUploaded": "备份上传成功",
|
|
88
|
-
"restoreStartFailed": "启动还原失败",
|
|
89
|
-
"restoreStarted": "还原开始",
|
|
90
|
-
"scheduleError": "保存备份计划失败",
|
|
91
|
-
"scheduleSaved": "备份计划已保存"
|
|
92
|
-
},
|
|
93
|
-
"type": "类型",
|
|
94
|
-
"typeManual": "手动",
|
|
95
|
-
"typeScheduled": "已预约",
|
|
96
|
-
"typeUploaded": "已上传",
|
|
97
|
-
"uploadBackup": "上传备份",
|
|
98
|
-
"uploading": "上传中……",
|
|
99
|
-
"version": "版本"
|
|
2
|
+
"title": "设置",
|
|
3
|
+
"tabs": {
|
|
4
|
+
"general": "通用",
|
|
5
|
+
"servers": "服务器",
|
|
6
|
+
"notifications": "通知",
|
|
7
|
+
"mobile": "移动 App",
|
|
8
|
+
"tailscale": "Tailscale",
|
|
9
|
+
"import": "导入",
|
|
10
|
+
"advanced": "高级设置",
|
|
11
|
+
"jobs": "任务",
|
|
12
|
+
"accessControl": "访问控制",
|
|
13
|
+
"backup": "备份"
|
|
100
14
|
},
|
|
101
15
|
"general": {
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
16
|
+
"title": "通用设置",
|
|
17
|
+
"unitSystem": "单位系统",
|
|
18
|
+
"metric": "公制 (km, km/h)",
|
|
19
|
+
"imperial": "英制(mi, mph)",
|
|
20
|
+
"timezone": "时区",
|
|
21
|
+
"primaryAuth": "主要认证方法",
|
|
22
|
+
"localAccount": "本地用户",
|
|
23
|
+
"plexAccount": "Plex账户",
|
|
24
|
+
"language": "语言",
|
|
25
|
+
"languageDescription": "选择您首选的显示语言。",
|
|
26
|
+
"helpTranslate": "帮助翻译 Tracearr",
|
|
27
|
+
"timeFormat": "时间格式",
|
|
28
|
+
"timeFormatDescription": "选择时间的显示方式。",
|
|
29
|
+
"timeFormat12h": "12小时(1:30 PM)",
|
|
30
|
+
"timeFormat24h": "24小时(13:30)",
|
|
109
31
|
"appearance": "Appearance",
|
|
110
32
|
"appearanceDesc": "Customize the look and feel of Tracearr",
|
|
33
|
+
"theme": "Theme",
|
|
34
|
+
"accentColor": "Accent Color",
|
|
35
|
+
"default": "(default)",
|
|
36
|
+
"cyanDefault": "* Cyan is the default accent color",
|
|
37
|
+
"themeLight": "Light",
|
|
38
|
+
"themeDark": "Dark",
|
|
39
|
+
"themeSystem": "System",
|
|
111
40
|
"application": "Application",
|
|
112
41
|
"applicationDesc": "Configure basic application settings",
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
42
|
+
"unitSystemDesc": "Choose how distances and speeds are displayed",
|
|
43
|
+
"sessionSync": "Session Sync",
|
|
44
|
+
"sessionSyncDesc": "Enable session tracking for your media servers",
|
|
45
|
+
"syncInterval": "同步间隔",
|
|
46
|
+
"syncIntervalDesc": "Polling frequency for Jellyfin/Emby (5-300 seconds)",
|
|
47
|
+
"syncIntervalSuffix": "sec",
|
|
48
|
+
"plexSseNote": "Plex uses Server-Sent Events (SSE) for near-instant updates — no polling needed.",
|
|
49
|
+
"jellyfinPollingNote": "Jellyfin/Emby are polled at the interval above.",
|
|
117
50
|
"enhancedGeoIP": "Enhanced GeoIP Lookup",
|
|
118
51
|
"enhancedGeoIPDesc": "Use Plex's GeoIP service for more accurate location data. When enabled, IP addresses are sent to plex.tv for lookup. Local MaxMind database is used as fallback.",
|
|
119
52
|
"externalAccess": "External Access",
|
|
120
53
|
"externalAccessDesc": "Configure how external devices (like mobile apps) connect to your server",
|
|
121
54
|
"externalUrl": "外部 URL",
|
|
122
|
-
"externalUrlDesc": "The URL that external devices should use to reach this server. Used for QR codes and mobile app pairing.",
|
|
123
55
|
"externalUrlPlaceholder": "https://tracearr.example.com",
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
"helpTranslate": "帮助翻译 Tracearr",
|
|
127
|
-
"imperial": "英制(mi, mph)",
|
|
128
|
-
"iosHttpWarning": "iOS requires HTTPS for external connections. Set up a reverse proxy with SSL.",
|
|
129
|
-
"jellyfinPollingNote": "Jellyfin/Emby are polled at the interval above.",
|
|
130
|
-
"language": "语言",
|
|
131
|
-
"languageDescription": "选择您首选的显示语言。",
|
|
132
|
-
"localAccount": "本地用户",
|
|
56
|
+
"externalUrlDesc": "The URL that external devices should use to reach this server. Used for QR codes and mobile app pairing.",
|
|
57
|
+
"detect": "Detect",
|
|
133
58
|
"localhostWarning": "Localhost URLs won't work for external devices. Use your LAN IP or a domain name.",
|
|
134
|
-
"
|
|
59
|
+
"iosHttpWarning": "iOS requires HTTPS for external connections. Set up a reverse proxy with SSL.",
|
|
60
|
+
"apiKeyDesc": "Access the Tracearr API for third-party integrations like Homarr, Home Assistant, etc.",
|
|
61
|
+
"apiDocs": "API Docs",
|
|
135
62
|
"noApiKeyGenerated": "No API key generated",
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
"publicApiSettings": "Public API",
|
|
140
|
-
"publicApiSettingsDesc": "Configure watch-completion thresholds and request limits for the public API",
|
|
63
|
+
"copyToClipboard": "Copy to clipboard",
|
|
64
|
+
"apiKeyReadAccess": "Your API key grants full read access to your Tracearr data.",
|
|
65
|
+
"generateApiKeyPrompt": "Generate an API key to enable external integrations.",
|
|
141
66
|
"regenerate": "Regenerate",
|
|
67
|
+
"generateKey": "Generate Key",
|
|
142
68
|
"regenerateApiKey": "Regenerate API Key?",
|
|
143
69
|
"regenerateApiKeyDesc": "This will invalidate your current API key. Any integrations using the old key will stop working.",
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"syncInterval": "同步间隔",
|
|
147
|
-
"syncIntervalDesc": "Polling frequency for Jellyfin/Emby (5-300 seconds)",
|
|
148
|
-
"syncIntervalSuffix": "sec",
|
|
149
|
-
"theme": "Theme",
|
|
150
|
-
"themeDark": "Dark",
|
|
151
|
-
"themeLight": "Light",
|
|
152
|
-
"themeSystem": "System",
|
|
153
|
-
"timeFormat": "时间格式",
|
|
154
|
-
"timeFormat12h": "12小时(1:30 PM)",
|
|
155
|
-
"timeFormat24h": "24小时(13:30)",
|
|
156
|
-
"timeFormatDescription": "选择时间的显示方式。",
|
|
157
|
-
"timezone": "时区",
|
|
158
|
-
"title": "通用设置",
|
|
159
|
-
"unitSystem": "单位系统",
|
|
160
|
-
"unitSystemDesc": "Choose how distances and speeds are displayed",
|
|
70
|
+
"publicApiSettings": "Public API",
|
|
71
|
+
"publicApiSettingsDesc": "Configure watch-completion thresholds and request limits for the public API",
|
|
161
72
|
"watchedThresholdMovie": "Movie Watched Threshold",
|
|
162
73
|
"watchedThresholdMovieDesc": "Percentage of a movie that must be watched before it's marked complete",
|
|
74
|
+
"watchedThresholdTv": "TV Episode Watched Threshold",
|
|
75
|
+
"watchedThresholdTvDesc": "Percentage of an episode that must be watched before it's marked complete",
|
|
163
76
|
"watchedThresholdMusic": "Track Watched Threshold",
|
|
164
77
|
"watchedThresholdMusicDesc": "Percentage of a track that must be played before it's marked complete",
|
|
165
78
|
"watchedThresholdSuffix": "%",
|
|
166
|
-
"
|
|
167
|
-
"
|
|
168
|
-
|
|
169
|
-
"import": {
|
|
170
|
-
"apiKeyHelp": "Found in Tautulli Settings → Web Interface → API Key.",
|
|
171
|
-
"apiKeyPlaceholder": "Your Tautulli API key",
|
|
172
|
-
"connectToTautulli": "Connect to Tautulli",
|
|
173
|
-
"connectedFound": "Connected! Found {{users}} users and {{records}} history records.",
|
|
174
|
-
"enrichMetadata": "Enrich with media metadata (recommended)",
|
|
175
|
-
"enrichMetadataHelp": "Fetches additional metadata from your media server for imported sessions.",
|
|
176
|
-
"enriched": "丰富",
|
|
177
|
-
"errors": "错误",
|
|
178
|
-
"exportBackupHelp": "In Jellystat, go to Settings → Backup → Activity Backup to export your data.",
|
|
179
|
-
"exportBackupHint": "Export an Activity Backup from Jellystat",
|
|
180
|
-
"howItWorks": "How the import works",
|
|
181
|
-
"howItWorksDesc": "Tracearr will import all historical watch data from your source. This may take a while depending on the size of your library.",
|
|
182
|
-
"importComplete": "导入完成",
|
|
183
|
-
"importFailed": "导入失败",
|
|
184
|
-
"importHistory": "Import History",
|
|
185
|
-
"importHistoryDesc": "Import historical watch data from external sources",
|
|
186
|
-
"importInProgressGeneric": "Import in progress...",
|
|
187
|
-
"importInProgressPercent": "Import in progress ({{percent}}% complete)...",
|
|
188
|
-
"importOptions": "Import Options",
|
|
189
|
-
"importProgress": "导入进度",
|
|
190
|
-
"imported": "已导入",
|
|
191
|
-
"importing": "Importing...",
|
|
192
|
-
"includeStreamDetails": "Include detailed stream data (codecs, bitrate, resolution)",
|
|
193
|
-
"includeStreamDetailsHelp": "Imports additional stream information. May increase import time significantly.",
|
|
194
|
-
"jellyfinEmby": "Jellyfin/Emby (Jellystat)",
|
|
195
|
-
"jellystat": "从 Jellystat 导入",
|
|
196
|
-
"noServers": "No Servers Connected",
|
|
197
|
-
"noServersHint": "You need at least one connected server to import data.",
|
|
198
|
-
"overwriteFriendlyNames": "Overwrite existing friendly names with Tautulli names",
|
|
199
|
-
"overwriteFriendlyNamesHelp": "Existing identity names in Tracearr will be replaced with the friendly names from Tautulli.",
|
|
200
|
-
"page": "页面",
|
|
201
|
-
"pleaseEnterDetails": "Please enter Tautulli URL and API key",
|
|
202
|
-
"pleaseSelectJsonFile": "Please select a JSON file",
|
|
203
|
-
"plex": "Plex (Tautulli)",
|
|
204
|
-
"processed": "已处理",
|
|
205
|
-
"recordsMayBeSkipped": "Records may be skipped if:",
|
|
206
|
-
"selectJellyfinServer": "Select a Jellyfin or Emby server",
|
|
207
|
-
"selectPlexServer": "Select a Plex server",
|
|
208
|
-
"selectTargetServer": "Select Target Server",
|
|
209
|
-
"skipDuplicate": "Duplicate session — The session was already imported previously.",
|
|
210
|
-
"skipInProgress": "In-progress session — Active/incomplete sessions without a reference ID are skipped.",
|
|
211
|
-
"skipSyncHint": "If many records are skipped, ensure you've synced your server recently in Settings → Servers.",
|
|
212
|
-
"skipUserNotFoundJellyfin": "User not found — The Jellyfin/Emby user doesn't exist in Tracearr. Sync your server first to add all users.",
|
|
213
|
-
"skipUserNotFoundPlex": "User not found — The Plex user doesn't exist in Tracearr. Sync your server first to add all users.",
|
|
214
|
-
"skipped": "已跳过",
|
|
215
|
-
"startImport": "Start Import",
|
|
216
|
-
"startingImport": "Starting import...",
|
|
217
|
-
"step1": "1",
|
|
218
|
-
"step2": "2",
|
|
219
|
-
"targetServer": "Target Server",
|
|
220
|
-
"tautulli": "从 Tautulli 导入",
|
|
221
|
-
"tautulliUrl": "Tautulli URL",
|
|
222
|
-
"tautulliUrlHelp": "The URL of your Tautulli instance.",
|
|
223
|
-
"tautulliUrlPlaceholder": "http://localhost:8181",
|
|
224
|
-
"testing": "测试中……",
|
|
225
|
-
"testingConnection": "Testing connection...",
|
|
226
|
-
"title": "导入数据",
|
|
227
|
-
"updateExistingRecords": "Update existing records with stream details",
|
|
228
|
-
"updateExistingRecordsHelp": "Previously imported records will be updated with stream quality data.",
|
|
229
|
-
"uploadJellystatBackup": "Upload Jellystat Backup",
|
|
230
|
-
"uploadingBackup": "Uploading backup file...",
|
|
231
|
-
"playbackReporting": "Playback Reporting Plugin",
|
|
232
|
-
"playbackReportingDesc": "Import history directly from the Playback Reporting plugin installed on your Jellyfin or Emby server. No file export needed.",
|
|
233
|
-
"checkPlugin": "Check Plugin",
|
|
234
|
-
"checkingPlugin": "Checking...",
|
|
235
|
-
"pluginFound": "Plugin found: {{records}} records from {{oldestDate}} to {{newestDate}}",
|
|
236
|
-
"pluginNotInstalled": "The Playback Reporting plugin is not installed on this server, or Tracearr cannot reach it. Install it from the server's plugin catalog to start recording history, or use the Jellystat import below.",
|
|
237
|
-
"serverTimezone": "Server Timezone",
|
|
238
|
-
"serverTimezoneHelp": "Must match the timezone configured on your media server host, not your browser's timezone. Playback Reporting timestamps are stored in local server time.",
|
|
239
|
-
"importFullRange": "Import full history",
|
|
240
|
-
"importFullRangeHelp": "By default only history older than Tracearr's earliest tracked session for this server is imported, so sessions Tracearr already recorded are never duplicated. Enable this to import the plugin's entire history regardless of overlap, if your Tracearr history has gaps. Exact duplicates are still skipped.",
|
|
241
|
-
"overlapSkipped": "{{count}} skipped as overlap",
|
|
242
|
-
"duplicates": "{{count}} duplicates skipped",
|
|
243
|
-
"skipOverlap": "Overlapping record - the timestamp falls inside the period Tracearr already tracks for this server. Enable full-range import to include it.",
|
|
244
|
-
"skipDuplicatePlugin": "Duplicate record - already imported directly or arrived earlier via a Jellystat import of the same plugin data."
|
|
245
|
-
},
|
|
246
|
-
"ipWarning": {
|
|
247
|
-
"acknowledge": "知道了",
|
|
248
|
-
"message": "所有用户似乎使用了相同的 IP 地址或本地网络 IP。这可能会影响到基于规则的位置或IP地址逻辑。"
|
|
249
|
-
},
|
|
250
|
-
"jobs": {
|
|
251
|
-
"backfill": "Backfill",
|
|
252
|
-
"cleanup": "Cleanup",
|
|
253
|
-
"delayed": "delayed",
|
|
254
|
-
"description": "Manage background tasks that keep your data accurate and optimized.",
|
|
255
|
-
"errors": "错误",
|
|
256
|
-
"jobHistory": "任务历史",
|
|
257
|
-
"jobHistoryDesc": "Recent maintenance job executions",
|
|
258
|
-
"lastJobCompleted": "Last job completed successfully",
|
|
259
|
-
"lastJobFailed": "Last job failed",
|
|
260
|
-
"mayTakeAWhile": "This may take a while",
|
|
261
|
-
"mayTakeAWhileDesc": "This job may take several minutes to complete depending on the size of your library.",
|
|
262
|
-
"normalization": "Normalization",
|
|
263
|
-
"processed": "已处理",
|
|
264
|
-
"queued": "queued",
|
|
265
|
-
"runConfirm": "Run {{name}}?",
|
|
266
|
-
"runJob": "Run Job",
|
|
267
|
-
"running": "running",
|
|
268
|
-
"runningState": "Running",
|
|
269
|
-
"startJob": "Start Job",
|
|
270
|
-
"title": "Maintenance Jobs",
|
|
271
|
-
"unchanged": "unchanged",
|
|
272
|
-
"updated": "updated",
|
|
273
|
-
"waiting": "Waiting"
|
|
274
|
-
},
|
|
275
|
-
"mobile": {
|
|
276
|
-
"addDevice": "Add Device",
|
|
277
|
-
"connectedDevices": "已连接的设备",
|
|
278
|
-
"connectedDevicesDesc": "{{count}} devices paired to your server",
|
|
279
|
-
"copyToken": "Copy token",
|
|
280
|
-
"deviceName": "Device name",
|
|
281
|
-
"deviceNamePlaceholder": "e.g. iPhone 15",
|
|
282
|
-
"devicesConnected": "{{current}} of {{max}} devices connected",
|
|
283
|
-
"disable": "禁用",
|
|
284
|
-
"disableMobileAccess": "Disable Mobile Access",
|
|
285
|
-
"disableMobileAccessConfirm": "This will disconnect all mobile devices and revoke all sessions. You can re-enable mobile access later.",
|
|
286
|
-
"done": "Done",
|
|
287
|
-
"downloadOnAppStore": "Download on the App Store",
|
|
288
|
-
"enableMobileAccess": "Enable Mobile Access",
|
|
289
|
-
"enabling": "Enabling...",
|
|
290
|
-
"expiresIn": "Expires in {{time}}",
|
|
291
|
-
"externalUrlBanner": "Using a reverse proxy or accessing remotely? Set your",
|
|
292
|
-
"externalUrlBannerLink": "外部 URL",
|
|
293
|
-
"externalUrlBannerSuffix": "so the mobile app can connect to your server.",
|
|
294
|
-
"externalUrlRequired": "An external URL must be configured in General Settings for mobile pairing to work.",
|
|
295
|
-
"failedToGenerateToken": "Failed to Generate Token",
|
|
296
|
-
"generateToken": "生成配对令牌",
|
|
297
|
-
"getOnGooglePlay": "Get it on Google Play",
|
|
298
|
-
"getTheApp": "Get the App",
|
|
299
|
-
"getTheAppDesc": "Download the Tracearr mobile app for iOS or Android",
|
|
300
|
-
"mobileAccessDisabled": "移动访问已禁用",
|
|
301
|
-
"mobileAccessDisabledDesc": "Enable mobile access to allow the Tracearr mobile app to connect to your server.",
|
|
302
|
-
"noDevices": "没有设备连接",
|
|
303
|
-
"oneTimePairToken": "One-Time Pair Token",
|
|
304
|
-
"pairDevice": "设备配对",
|
|
305
|
-
"pairNewDevice": "Pair New Device",
|
|
306
|
-
"pairNewDeviceDesc": "Scan the QR code with the Tracearr mobile app, or enter the token manually.",
|
|
307
|
-
"pairYourDevice": "Pair Your Device",
|
|
308
|
-
"pairYourDeviceDesc": "Scan the QR code with the Tracearr app to connect this server.",
|
|
309
|
-
"pendingTokens": "{{count}} pending pair tokens",
|
|
310
|
-
"removeDevice": "Remove Device",
|
|
311
|
-
"removeDeviceConfirm": "Are you sure you want to remove {{deviceName}}? This device will need to pair again to reconnect.",
|
|
312
|
-
"renameDevice": "Rename Device",
|
|
313
|
-
"renameDeviceDesc": "Enter a name to identify this device in the list.",
|
|
314
|
-
"revokeAll": "注销所有会话",
|
|
315
|
-
"revokeAllConfirm": "This will disconnect all mobile devices. They will need to pair again to reconnect.",
|
|
316
|
-
"revokeAllSessions": "Revoke All",
|
|
317
|
-
"scanQrCode": "扫描二维码",
|
|
318
|
-
"title": "移动 App",
|
|
319
|
-
"tokenExpires": "令牌在...过期{{time}}",
|
|
320
|
-
"tokenExpiryNote": "This token expires in 5 minutes and can only be used once."
|
|
321
|
-
},
|
|
322
|
-
"notifications": {
|
|
323
|
-
"agentCard": {
|
|
324
|
-
"default": "Default",
|
|
325
|
-
"editSettings": "Edit settings",
|
|
326
|
-
"events": "Events",
|
|
327
|
-
"notConfigured": "Not fully configured.",
|
|
328
|
-
"saved": "Saved",
|
|
329
|
-
"sendTest": "Send Test"
|
|
330
|
-
},
|
|
331
|
-
"routing": {
|
|
332
|
-
"discord": "Discord",
|
|
333
|
-
"event": "Event",
|
|
334
|
-
"web": "Web",
|
|
335
|
-
"webNote": "Push notifications are configured per-device in the mobile app.",
|
|
336
|
-
"webToastNote": "shows toast notifications in this browser.",
|
|
337
|
-
"webhook": "Webhook"
|
|
338
|
-
}
|
|
339
|
-
},
|
|
340
|
-
"plex": {
|
|
341
|
-
"chooseServer": "选择要监视的Plex媒体服务器",
|
|
342
|
-
"selectServer": "选择服务器",
|
|
343
|
-
"signInWithPlex": "使用 Plex 登录",
|
|
344
|
-
"signUpWithPlex": "使用Plex注册"
|
|
345
|
-
},
|
|
346
|
-
"serverHealth": {
|
|
347
|
-
"multipleUnreachable": "{{count}} 服务器无法访问:{{serverNames}}",
|
|
348
|
-
"unreachable": "{{serverName}} 无法访问"
|
|
79
|
+
"apiRateLimit": "API Rate Limit",
|
|
80
|
+
"apiRateLimitDesc": "Maximum public API requests per minute per key. Restart required to apply.",
|
|
81
|
+
"apiRateLimitSuffix": "/min"
|
|
349
82
|
},
|
|
350
83
|
"servers": {
|
|
84
|
+
"title": "连接的服务器",
|
|
351
85
|
"addServer": "添加服务器",
|
|
352
|
-
"
|
|
353
|
-
"
|
|
354
|
-
"
|
|
355
|
-
"
|
|
86
|
+
"serverName": "服务器名称",
|
|
87
|
+
"serverUrl": "服务器URL",
|
|
88
|
+
"syncInterval": "同步间隔",
|
|
89
|
+
"testConnection": "测试连接",
|
|
90
|
+
"connectionSuccess": "连接成功",
|
|
91
|
+
"connectionFailed": "连接失败",
|
|
92
|
+
"noServersConnected": "No servers connected",
|
|
93
|
+
"noServersConnectedHint": "Click \"Add Server\" to connect a Jellyfin or Emby server",
|
|
94
|
+
"serverType": "Server Type",
|
|
95
|
+
"loadingAccounts": "Loading linked Plex accounts...",
|
|
96
|
+
"noPlexAccountsLinked": "没有关联的Plex账户",
|
|
97
|
+
"noPlexAccountsLinkedHint": "Link a Plex account above, then come back to add a server.",
|
|
98
|
+
"selectPlexAccount": "Select Plex Account",
|
|
99
|
+
"chooseAccount": "Choose an account...",
|
|
100
|
+
"selectAccountHelp": "Select which Plex account to discover servers from.",
|
|
356
101
|
"allServersConnected": "All Servers Connected",
|
|
357
102
|
"allServersConnectedDesc": "All servers from this account are already connected.",
|
|
358
|
-
"
|
|
359
|
-
"
|
|
360
|
-
"
|
|
103
|
+
"serverUrlPlaceholder": "http://192.168.1.100:8096",
|
|
104
|
+
"serverUrlHelp": "Direct URL to your Jellyfin or Emby server. Use IP:port for best reliability.",
|
|
105
|
+
"serverNamePlaceholder": "My Media Server",
|
|
361
106
|
"apiKeyPlaceholder": "Enter your API key",
|
|
362
|
-
"
|
|
363
|
-
"chooseAccount": "Choose an account...",
|
|
364
|
-
"connectServer": "Connect Server",
|
|
107
|
+
"apiKeyHelp": "Found in your media server's dashboard under API Keys or Advanced settings.",
|
|
365
108
|
"connecting": "正在連接……",
|
|
366
|
-
"
|
|
367
|
-
"
|
|
368
|
-
"
|
|
369
|
-
"discoveringConnections": "Discovering connections...",
|
|
370
|
-
"discoveringServers": "Discovering available Plex servers...",
|
|
109
|
+
"connectServer": "Connect Server",
|
|
110
|
+
"removeServer": "Remove Server",
|
|
111
|
+
"removeServerConfirm": "Are you sure you want to remove this server? All associated session data will be retained, but you won't be able to monitor new sessions from this server.",
|
|
371
112
|
"editServer": "Edit Server",
|
|
372
113
|
"editServerDesc": "Update the server name or connection URL.",
|
|
373
|
-
"
|
|
374
|
-
"
|
|
375
|
-
"
|
|
376
|
-
"
|
|
377
|
-
"
|
|
114
|
+
"serverColor": "Server Color",
|
|
115
|
+
"serverColorDesc": "Used for visual attribution in multi-server view",
|
|
116
|
+
"updating": "更新中……",
|
|
117
|
+
"allFieldsRequired": "All fields are required",
|
|
118
|
+
"addServerDialogDescPlex": "Select a Plex server from your linked account.",
|
|
119
|
+
"addServerDialogDescOther": "Connect a Jellyfin or Emby server.",
|
|
120
|
+
"description": "Manage your connected Plex, Jellyfin, and Emby servers",
|
|
121
|
+
"discoveringServers": "Discovering available Plex servers...",
|
|
122
|
+
"discoveringConnections": "Discovering connections...",
|
|
378
123
|
"plexAccount": "Plex账户",
|
|
124
|
+
"serverUrlHelpJellyfin": "The URL where your Jellyfin server is accessible",
|
|
125
|
+
"serverUrlHelpEmby": "The URL where your Emby server is accessible",
|
|
126
|
+
"apiKeyHelpJellyfin": "Find this in Jellyfin Dashboard → API Keys",
|
|
127
|
+
"apiKeyHelpEmby": "Find this in Emby Server → API Keys",
|
|
379
128
|
"plexServerPlaceholder": "My Plex Server",
|
|
380
129
|
"plexServerUrlPlaceholder": "http://192.168.1.100:32400",
|
|
381
|
-
"
|
|
382
|
-
"
|
|
383
|
-
"pollingMode": "Polling",
|
|
384
|
-
"posterSource": {
|
|
385
|
-
"automatic": "Automatic (most recent)",
|
|
386
|
-
"description": "When a title is on more than one server, use this server's poster. If it doesn't have one, we'll fall back to the most recently added copy.",
|
|
387
|
-
"emptyHint": "Add a server to choose a preferred poster source.",
|
|
388
|
-
"label": "Preferred Poster Source",
|
|
389
|
-
"title": "Poster Preferences",
|
|
390
|
-
"titleDesc": "Choose which server's poster is shown when a title exists on more than one server"
|
|
391
|
-
},
|
|
130
|
+
"updateHint": "Or click Update below to save only the name change.",
|
|
131
|
+
"added": "Added {{date}}",
|
|
392
132
|
"realtimeActive": "Real-time updates active",
|
|
133
|
+
"pollingMode": "Polling",
|
|
134
|
+
"setupRealtime": "Set up real-time updates",
|
|
135
|
+
"realtimeError": "Real-time error",
|
|
136
|
+
"checkingConnection": "Checking connection…",
|
|
137
|
+
"pluginVersion": "plugin v{{version}}",
|
|
138
|
+
"pluginUpdateAvailable": "Plugin update available",
|
|
393
139
|
"realtimeDialog": {
|
|
394
|
-
"
|
|
395
|
-
"
|
|
396
|
-
"
|
|
140
|
+
"title": "Enable real-time updates",
|
|
141
|
+
"updateTitle": "Update the Tracearr SSE plugin",
|
|
142
|
+
"jellyfinDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
|
|
397
143
|
"embyDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
|
|
398
|
-
"
|
|
144
|
+
"jellyfinUpdateDescription": "A newer plugin release is available. Open your Jellyfin dashboard, go to Plugins, Catalog, and update Tracearr SSE, then restart Jellyfin.",
|
|
399
145
|
"embyUpdateDescription": "A newer plugin release is available. Download the latest release zip, replace the plugin DLL in your Emby plugins folder, and restart Emby.",
|
|
400
|
-
"
|
|
146
|
+
"repositoryUrl": "Repository URL",
|
|
147
|
+
"copyUrl": "Copy URL",
|
|
401
148
|
"jellyfinRepoUrl": "https://raw.githubusercontent.com/Tracearr/Media-Server-SSE/main/manifest.json",
|
|
402
|
-
"
|
|
149
|
+
"embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
|
|
403
150
|
"openReleases": "Open releases page",
|
|
404
|
-
"
|
|
405
|
-
"
|
|
406
|
-
"updateTitle": "Update the Tracearr SSE plugin",
|
|
151
|
+
"autoDetectNote": "Restart Jellyfin or Emby after installing the plugin; the restart is required. Tracearr itself needs no restart and picks the plugin up automatically.",
|
|
152
|
+
"close": "Close",
|
|
407
153
|
"issueBlocked": "The server reports the plugin as installed and active, but Tracearr gets a 404 from its endpoint. A reverse proxy blocking the path is the usual cause.",
|
|
408
154
|
"issueRestartRequired": "The plugin is installed, but the media server needs a restart before it activates.",
|
|
409
155
|
"issueMalfunctioned": "The server reports the plugin failed to load. Updating the plugin or the media server usually clears this."
|
|
410
156
|
},
|
|
411
|
-
"
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
"serverType": "Server Type",
|
|
420
|
-
"serverUrl": "服务器URL",
|
|
421
|
-
"serverUrlHelp": "Direct URL to your Jellyfin or Emby server. Use IP:port for best reliability.",
|
|
422
|
-
"serverUrlHelpEmby": "The URL where your Emby server is accessible",
|
|
423
|
-
"serverUrlHelpJellyfin": "The URL where your Jellyfin server is accessible",
|
|
424
|
-
"serverUrlPlaceholder": "http://192.168.1.100:8096",
|
|
425
|
-
"setupRealtime": "Set up real-time updates",
|
|
426
|
-
"realtimeError": "Real-time error",
|
|
427
|
-
"syncInterval": "同步间隔",
|
|
428
|
-
"testConnection": "测试连接",
|
|
429
|
-
"title": "连接的服务器",
|
|
430
|
-
"updateHint": "Or click Update below to save only the name change.",
|
|
431
|
-
"updating": "更新中……"
|
|
432
|
-
},
|
|
433
|
-
"tabs": {
|
|
434
|
-
"accessControl": "访问控制",
|
|
435
|
-
"advanced": "高级设置",
|
|
436
|
-
"backup": "备份",
|
|
437
|
-
"general": "通用",
|
|
438
|
-
"import": "导入",
|
|
439
|
-
"jobs": "任务",
|
|
440
|
-
"mobile": "移动 App",
|
|
441
|
-
"notifications": "通知",
|
|
442
|
-
"servers": "服务器",
|
|
443
|
-
"tailscale": "Tailscale"
|
|
157
|
+
"posterSource": {
|
|
158
|
+
"title": "Poster Preferences",
|
|
159
|
+
"titleDesc": "Choose which server's poster is shown when a title exists on more than one server",
|
|
160
|
+
"label": "Preferred Poster Source",
|
|
161
|
+
"description": "When a title is on more than one server, use this server's poster. If it doesn't have one, we'll fall back to the most recently added copy.",
|
|
162
|
+
"automatic": "Automatic (most recent)",
|
|
163
|
+
"emptyHint": "Add a server to choose a preferred poster source."
|
|
164
|
+
}
|
|
444
165
|
},
|
|
445
|
-
"
|
|
446
|
-
"
|
|
447
|
-
"
|
|
448
|
-
"
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
452
|
-
"
|
|
453
|
-
"
|
|
454
|
-
"
|
|
455
|
-
"
|
|
456
|
-
"
|
|
457
|
-
"
|
|
458
|
-
"
|
|
459
|
-
"
|
|
460
|
-
"
|
|
461
|
-
"
|
|
462
|
-
"
|
|
463
|
-
"
|
|
464
|
-
"
|
|
465
|
-
"
|
|
466
|
-
"
|
|
467
|
-
"
|
|
468
|
-
"
|
|
469
|
-
"
|
|
470
|
-
"
|
|
471
|
-
"
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
166
|
+
"mobile": {
|
|
167
|
+
"title": "移动 App",
|
|
168
|
+
"pairDevice": "设备配对",
|
|
169
|
+
"connectedDevices": "已连接的设备",
|
|
170
|
+
"generateToken": "生成配对令牌",
|
|
171
|
+
"scanQrCode": "扫描二维码",
|
|
172
|
+
"tokenExpires": "令牌在...过期{{time}}",
|
|
173
|
+
"noDevices": "没有设备连接",
|
|
174
|
+
"revokeAll": "注销所有会话",
|
|
175
|
+
"getTheApp": "Get the App",
|
|
176
|
+
"getTheAppDesc": "Download the Tracearr mobile app for iOS or Android",
|
|
177
|
+
"getOnGooglePlay": "Get it on Google Play",
|
|
178
|
+
"downloadOnAppStore": "Download on the App Store",
|
|
179
|
+
"pairYourDevice": "Pair Your Device",
|
|
180
|
+
"pairYourDeviceDesc": "Scan the QR code with the Tracearr app to connect this server.",
|
|
181
|
+
"externalUrlRequired": "An external URL must be configured in General Settings for mobile pairing to work.",
|
|
182
|
+
"mobileAccessDisabled": "移动访问已禁用",
|
|
183
|
+
"mobileAccessDisabledDesc": "Enable mobile access to allow the Tracearr mobile app to connect to your server.",
|
|
184
|
+
"enableMobileAccess": "Enable Mobile Access",
|
|
185
|
+
"enabling": "Enabling...",
|
|
186
|
+
"devicesConnected": "{{current}} of {{max}} devices connected",
|
|
187
|
+
"pendingTokens": "{{count}} pending pair tokens",
|
|
188
|
+
"addDevice": "Add Device",
|
|
189
|
+
"disableMobileAccess": "Disable Mobile Access",
|
|
190
|
+
"connectedDevicesDesc": "{{count}} devices paired to your server",
|
|
191
|
+
"revokeAllSessions": "Revoke All",
|
|
192
|
+
"pairNewDevice": "Pair New Device",
|
|
193
|
+
"pairNewDeviceDesc": "Scan the QR code with the Tracearr mobile app, or enter the token manually.",
|
|
194
|
+
"expiresIn": "Expires in {{time}}",
|
|
195
|
+
"oneTimePairToken": "One-Time Pair Token",
|
|
196
|
+
"copyToken": "Copy token",
|
|
197
|
+
"tokenExpiryNote": "This token expires in 5 minutes and can only be used once.",
|
|
198
|
+
"done": "Done",
|
|
199
|
+
"disableMobileAccessConfirm": "This will disconnect all mobile devices and revoke all sessions. You can re-enable mobile access later.",
|
|
200
|
+
"disable": "禁用",
|
|
201
|
+
"revokeAllConfirm": "This will disconnect all mobile devices. They will need to pair again to reconnect.",
|
|
202
|
+
"renameDevice": "Rename Device",
|
|
203
|
+
"renameDeviceDesc": "Enter a name to identify this device in the list.",
|
|
204
|
+
"deviceName": "Device name",
|
|
205
|
+
"deviceNamePlaceholder": "e.g. iPhone 15",
|
|
206
|
+
"removeDevice": "Remove Device",
|
|
207
|
+
"failedToGenerateToken": "Failed to Generate Token",
|
|
208
|
+
"removeDeviceConfirm": "Are you sure you want to remove {{deviceName}}? This device will need to pair again to reconnect.",
|
|
209
|
+
"externalUrlBanner": "Using a reverse proxy or accessing remotely? Set your",
|
|
210
|
+
"externalUrlBannerLink": "外部 URL",
|
|
211
|
+
"externalUrlBannerSuffix": "so the mobile app can connect to your server."
|
|
212
|
+
},
|
|
213
|
+
"tailscale": {
|
|
214
|
+
"title": "Tailscale VPN",
|
|
215
|
+
"description": "在您的 Tailscale 网络上安全访问 Tracearr,无需端口转发。",
|
|
216
|
+
"notAvailable": "未找到 Tailscale 二进制文件。此功能仅在运行官方 Docker 镜像时可用。",
|
|
217
|
+
"disabledDescription": "启用 Tailscale 将 Tracearr 放置在您的私人 tailnet 上。无需端口转发或反向代理。",
|
|
218
|
+
"hostnameLabel": "设备主机名",
|
|
219
|
+
"hostnameHint": "此设备在您的尾网中的可选自定义名称。仅限字母、数字和连字符。",
|
|
220
|
+
"enable": "启用 Tailscale",
|
|
221
|
+
"disable": "禁用 Tailscale",
|
|
222
|
+
"starting": "启动 Tailscale……",
|
|
223
|
+
"stopping": "停止 Tailscale……",
|
|
224
|
+
"awaitingAuth": "等待验证……",
|
|
225
|
+
"authorize": "在 Tailscale 中授权",
|
|
226
|
+
"connected": "Tailscale 已连接。您的 Tracearr 实例在 tailnet 上可用。",
|
|
227
|
+
"hostname": "主机名",
|
|
228
|
+
"dnsName": "DNS 名称",
|
|
229
|
+
"tailnetUrl": "網址",
|
|
230
|
+
"showLogs": "显示日志",
|
|
231
|
+
"hideLogs": "隐藏日志",
|
|
232
|
+
"noLogs": "无可用日志输出。",
|
|
233
|
+
"exitNodeNone": "无",
|
|
234
|
+
"exitNodeOffline": "(离线)",
|
|
235
|
+
"unknownError": "发生未知错误。",
|
|
236
|
+
"disableConfirmTitle": "禁用 Tailscale?",
|
|
237
|
+
"disableConfirmDescription": "这将使 Tracearr 与您的 tailnet 断开连接。您可以在不重新授权的情况下重新启用。",
|
|
238
|
+
"resetConfirmTitle": "重置 Tailscale?",
|
|
239
|
+
"resetConfirmDescription": "这将使 Tracearr 与您的 tailnet 断开连接并移除设备身份。如果您再次启用它,您需要重新授权。",
|
|
240
|
+
"toast": {
|
|
241
|
+
"disabled": "Tailscale 已被禁用。",
|
|
242
|
+
"enableFailed": "无法启用 Tailscale",
|
|
243
|
+
"disableFailed": "无法禁用 Tailscale",
|
|
244
|
+
"reset": "Tailscale 已被重置。",
|
|
245
|
+
"resetFailed": "无法重置 Tailscale",
|
|
246
|
+
"exitNodeSet": "出口节点已更新。",
|
|
247
|
+
"exitNodeFailed": "无法设置出口节点"
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"webhooks": {
|
|
251
|
+
"title": "Webhook配置",
|
|
252
|
+
"discordWebhook": "Discord Webhook 链接",
|
|
253
|
+
"ntfyTopic": "Ntfy 主题",
|
|
254
|
+
"customWebhook": "自定义 Webhook URL",
|
|
255
|
+
"webhookFormat": "Webhook 格式",
|
|
256
|
+
"testWebhook": "测试 Webhook"
|
|
257
|
+
},
|
|
258
|
+
"jobs": {
|
|
259
|
+
"title": "Maintenance Jobs",
|
|
260
|
+
"description": "Manage background tasks that keep your data accurate and optimized.",
|
|
261
|
+
"normalization": "Normalization",
|
|
262
|
+
"backfill": "Backfill",
|
|
263
|
+
"cleanup": "Cleanup",
|
|
264
|
+
"running": "running",
|
|
265
|
+
"queued": "queued",
|
|
266
|
+
"delayed": "delayed",
|
|
267
|
+
"waiting": "Waiting",
|
|
268
|
+
"runningState": "Running",
|
|
269
|
+
"runJob": "Run Job",
|
|
270
|
+
"processed": "已处理",
|
|
271
|
+
"updated": "updated",
|
|
272
|
+
"unchanged": "unchanged",
|
|
273
|
+
"errors": "错误",
|
|
274
|
+
"lastJobCompleted": "Last job completed successfully",
|
|
275
|
+
"lastJobFailed": "Last job failed",
|
|
276
|
+
"jobHistory": "任务历史",
|
|
277
|
+
"jobHistoryDesc": "Recent maintenance job executions",
|
|
278
|
+
"runConfirm": "Run {{name}}?",
|
|
279
|
+
"mayTakeAWhile": "This may take a while",
|
|
280
|
+
"mayTakeAWhileDesc": "This job may take several minutes to complete depending on the size of your library.",
|
|
281
|
+
"startJob": "Start Job"
|
|
282
|
+
},
|
|
283
|
+
"notifications": {
|
|
284
|
+
"routing": {
|
|
285
|
+
"event": "Event",
|
|
286
|
+
"web": "Web",
|
|
287
|
+
"discord": "Discord",
|
|
288
|
+
"webhook": "Webhook",
|
|
289
|
+
"webNote": "Push notifications are configured per-device in the mobile app.",
|
|
290
|
+
"webToastNote": "shows toast notifications in this browser."
|
|
479
291
|
},
|
|
480
|
-
"
|
|
292
|
+
"agentCard": {
|
|
293
|
+
"saved": "Saved",
|
|
294
|
+
"default": "Default",
|
|
295
|
+
"events": "Events",
|
|
296
|
+
"sendTest": "Send Test",
|
|
297
|
+
"notConfigured": "Not fully configured.",
|
|
298
|
+
"editSettings": "Edit settings"
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"advanced": {
|
|
302
|
+
"title": "高级设置",
|
|
303
|
+
"externalUrl": "外部 URL",
|
|
304
|
+
"trustProxy": "信任代理头",
|
|
305
|
+
"reverseProxy": "反向代理",
|
|
306
|
+
"connectionScenarios": "连接场景"
|
|
307
|
+
},
|
|
308
|
+
"accessControl": {
|
|
309
|
+
"title": "访问控制",
|
|
310
|
+
"description": "Configure who can access Tracearr",
|
|
311
|
+
"allowGuestAccess": "Allow Guest Access",
|
|
312
|
+
"allowGuestAccessDesc": "When disabled, only the server owner can log in to Tracearr",
|
|
313
|
+
"singleOwnerNote": "Note: When guest access is disabled, only the server owner can sign in. All other users will see an \"Access Denied\" message."
|
|
314
|
+
},
|
|
315
|
+
"import": {
|
|
316
|
+
"title": "导入数据",
|
|
317
|
+
"jellystat": "从 Jellystat 导入",
|
|
318
|
+
"tautulli": "从 Tautulli 导入",
|
|
319
|
+
"importProgress": "导入进度",
|
|
320
|
+
"importComplete": "导入完成",
|
|
321
|
+
"importFailed": "导入失败",
|
|
322
|
+
"processed": "已处理",
|
|
323
|
+
"page": "页面",
|
|
324
|
+
"imported": "已导入",
|
|
325
|
+
"skipped": "已跳过",
|
|
326
|
+
"enriched": "丰富",
|
|
327
|
+
"errors": "错误",
|
|
328
|
+
"noServers": "No Servers Connected",
|
|
329
|
+
"noServersHint": "You need at least one connected server to import data.",
|
|
330
|
+
"tautulliUrl": "Tautulli URL",
|
|
331
|
+
"tautulliUrlPlaceholder": "http://localhost:8181",
|
|
332
|
+
"tautulliUrlHelp": "The URL of your Tautulli instance.",
|
|
333
|
+
"apiKeyHelp": "Found in Tautulli Settings → Web Interface → API Key.",
|
|
334
|
+
"testing": "测试中……",
|
|
335
|
+
"connectToTautulli": "Connect to Tautulli",
|
|
336
|
+
"importHistory": "Import History",
|
|
337
|
+
"targetServer": "Target Server",
|
|
338
|
+
"selectPlexServer": "Select a Plex server",
|
|
339
|
+
"overwriteFriendlyNames": "Overwrite existing friendly names with Tautulli names",
|
|
340
|
+
"overwriteFriendlyNamesHelp": "Existing identity names in Tracearr will be replaced with the friendly names from Tautulli.",
|
|
341
|
+
"includeStreamDetails": "Include detailed stream data (codecs, bitrate, resolution)",
|
|
342
|
+
"includeStreamDetailsHelp": "Imports additional stream information. May increase import time significantly.",
|
|
343
|
+
"importing": "Importing...",
|
|
344
|
+
"startImport": "Start Import",
|
|
345
|
+
"howItWorks": "How the import works",
|
|
346
|
+
"howItWorksDesc": "Tracearr will import all historical watch data from your source. This may take a while depending on the size of your library.",
|
|
347
|
+
"recordsMayBeSkipped": "Records may be skipped if:",
|
|
348
|
+
"selectTargetServer": "Select Target Server",
|
|
349
|
+
"selectJellyfinServer": "Select a Jellyfin or Emby server",
|
|
350
|
+
"uploadJellystatBackup": "Upload Jellystat Backup",
|
|
351
|
+
"exportBackupHint": "Export an Activity Backup from Jellystat",
|
|
352
|
+
"exportBackupHelp": "In Jellystat, go to Settings → Backup → Activity Backup to export your data.",
|
|
353
|
+
"importOptions": "Import Options",
|
|
354
|
+
"enrichMetadata": "Enrich with media metadata (recommended)",
|
|
355
|
+
"enrichMetadataHelp": "Fetches additional metadata from your media server for imported sessions.",
|
|
356
|
+
"updateExistingRecords": "Update existing records with stream details",
|
|
357
|
+
"updateExistingRecordsHelp": "Previously imported records will be updated with stream quality data.",
|
|
358
|
+
"pleaseEnterDetails": "Please enter Tautulli URL and API key",
|
|
359
|
+
"testingConnection": "Testing connection...",
|
|
360
|
+
"pleaseSelectJsonFile": "Please select a JSON file",
|
|
361
|
+
"uploadingBackup": "Uploading backup file...",
|
|
362
|
+
"importHistoryDesc": "Import historical watch data from external sources",
|
|
363
|
+
"plex": "Plex (Tautulli)",
|
|
364
|
+
"jellyfinEmby": "Jellyfin/Emby (Jellystat)",
|
|
365
|
+
"step1": "1",
|
|
366
|
+
"step2": "2",
|
|
367
|
+
"apiKeyPlaceholder": "Your Tautulli API key",
|
|
368
|
+
"skipUserNotFoundPlex": "User not found — The Plex user doesn't exist in Tracearr. Sync your server first to add all users.",
|
|
369
|
+
"skipDuplicate": "Duplicate session — The session was already imported previously.",
|
|
370
|
+
"skipInProgress": "In-progress session — Active/incomplete sessions without a reference ID are skipped.",
|
|
371
|
+
"skipUserNotFoundJellyfin": "User not found — The Jellyfin/Emby user doesn't exist in Tracearr. Sync your server first to add all users.",
|
|
372
|
+
"skipSyncHint": "If many records are skipped, ensure you've synced your server recently in Settings → Servers.",
|
|
373
|
+
"importInProgressPercent": "Import in progress ({{percent}}% complete)...",
|
|
374
|
+
"importInProgressGeneric": "Import in progress...",
|
|
375
|
+
"startingImport": "Starting import...",
|
|
376
|
+
"connectedFound": "Connected! Found {{users}} users and {{records}} history records.",
|
|
377
|
+
"playbackReporting": "Playback Reporting Plugin",
|
|
378
|
+
"playbackReportingDesc": "Import history directly from the Playback Reporting plugin installed on your Jellyfin or Emby server. No file export needed.",
|
|
379
|
+
"checkPlugin": "Check Plugin",
|
|
380
|
+
"checkingPlugin": "Checking...",
|
|
381
|
+
"pluginFound": "Plugin found: {{records}} records from {{oldestDate}} to {{newestDate}}",
|
|
382
|
+
"pluginNotInstalled": "The Playback Reporting plugin is not installed on this server, or Tracearr cannot reach it. Install it from the server's plugin catalog to start recording history, or use the Jellystat import below.",
|
|
383
|
+
"serverTimezone": "Server Timezone",
|
|
384
|
+
"serverTimezoneHelp": "Must match the timezone configured on your media server host, not your browser's timezone. Playback Reporting timestamps are stored in local server time.",
|
|
385
|
+
"importFullRange": "Import full history",
|
|
386
|
+
"importFullRangeHelp": "By default only history older than Tracearr's earliest tracked session for this server is imported, so sessions Tracearr already recorded are never duplicated. Enable this to import the plugin's entire history regardless of overlap, if your Tracearr history has gaps. Exact duplicates are still skipped.",
|
|
387
|
+
"overlapSkipped": "{{count}} skipped as overlap",
|
|
388
|
+
"duplicates": "{{count}} duplicates skipped",
|
|
389
|
+
"skipOverlap": "Overlapping record - the timestamp falls inside the period Tracearr already tracks for this server. Enable full-range import to include it.",
|
|
390
|
+
"skipDuplicatePlugin": "Duplicate record - already imported directly or arrived earlier via a Jellystat import of the same plugin data."
|
|
391
|
+
},
|
|
392
|
+
"plex": {
|
|
393
|
+
"signInWithPlex": "使用 Plex 登录",
|
|
394
|
+
"signUpWithPlex": "使用Plex注册",
|
|
395
|
+
"selectServer": "选择服务器",
|
|
396
|
+
"chooseServer": "选择要监视的Plex媒体服务器"
|
|
397
|
+
},
|
|
398
|
+
"account": {
|
|
399
|
+
"createAccount": "创建新账户",
|
|
400
|
+
"email": "电子邮件",
|
|
401
|
+
"password": "密码",
|
|
402
|
+
"displayName": "显示名称",
|
|
403
|
+
"createYourAccount": "创建您的账户以开始",
|
|
404
|
+
"signInToAccount": "登录到您的帐户",
|
|
405
|
+
"useLocalAccount": "使用本地账户"
|
|
481
406
|
},
|
|
482
|
-
"title": "设置",
|
|
483
407
|
"update": {
|
|
484
|
-
"betaUpdate": "测试版升级",
|
|
485
|
-
"newVersion": "新版本",
|
|
486
|
-
"pullInstructions": "在拉取后,重新启动您的容器以应用更新。",
|
|
487
|
-
"releaseNotes": "更新日志",
|
|
488
|
-
"stableRelease": "Stable 版",
|
|
489
408
|
"title": "有可用更新",
|
|
409
|
+
"releaseNotes": "更新日志",
|
|
490
410
|
"updateCommand": "更新命令",
|
|
411
|
+
"pullInstructions": "在拉取后,重新启动您的容器以应用更新。",
|
|
412
|
+
"stableRelease": "Stable 版",
|
|
413
|
+
"betaUpdate": "测试版升级",
|
|
414
|
+
"newVersion": "新版本",
|
|
491
415
|
"versionAvailable": "{{version}}可用"
|
|
492
416
|
},
|
|
493
|
-
"
|
|
494
|
-
"
|
|
495
|
-
"
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
"
|
|
499
|
-
"
|
|
417
|
+
"serverHealth": {
|
|
418
|
+
"unreachable": "{{serverName}} 无法访问",
|
|
419
|
+
"multipleUnreachable": "{{count}} 服务器无法访问:{{serverNames}}"
|
|
420
|
+
},
|
|
421
|
+
"ipWarning": {
|
|
422
|
+
"message": "所有用户似乎使用了相同的 IP 地址或本地网络 IP。这可能会影响到基于规则的位置或IP地址逻辑。",
|
|
423
|
+
"acknowledge": "知道了"
|
|
424
|
+
},
|
|
425
|
+
"backup": {
|
|
426
|
+
"title": "备份",
|
|
427
|
+
"backToBackups": "返回备份",
|
|
428
|
+
"description": "备份并恢复您的 Tracearr 数据",
|
|
429
|
+
"createBackup": "创建备份",
|
|
430
|
+
"creating": "正在创建备份……",
|
|
431
|
+
"uploadBackup": "上传备份",
|
|
432
|
+
"uploading": "上传中……",
|
|
433
|
+
"databaseSize": "当前数据库大小:{{size}}",
|
|
434
|
+
"freeSpace": "备份目录可用空间:{{size}}",
|
|
435
|
+
"lowDiskSpace": "磁盘空间不足 — 备份和恢复需要至少两倍的可用空间。",
|
|
436
|
+
"backupHistory": "备份历史",
|
|
437
|
+
"noBackups": "尚未备份。请在上面创建您的第一个备份。",
|
|
438
|
+
"filename": "文件名",
|
|
439
|
+
"size": "尺寸",
|
|
440
|
+
"date": "日期",
|
|
441
|
+
"type": "类型",
|
|
442
|
+
"version": "版本",
|
|
443
|
+
"actions": "动作",
|
|
444
|
+
"typeManual": "手动",
|
|
445
|
+
"typeScheduled": "已预约",
|
|
446
|
+
"typeUploaded": "已上传",
|
|
447
|
+
"restoreAction": "还原",
|
|
448
|
+
"deleteConfirmTitle": "删除备份",
|
|
449
|
+
"deleteConfirmDescription": "您确定要删除此备份吗?此操作无法撤消。",
|
|
450
|
+
"schedule": "计划备份",
|
|
451
|
+
"scheduleType": "计划",
|
|
452
|
+
"scheduleDisabled": "禁用",
|
|
453
|
+
"scheduleDaily": "每天",
|
|
454
|
+
"scheduleWeekly": "每周",
|
|
455
|
+
"scheduleMonthly": "每月",
|
|
456
|
+
"scheduleTime": "时区({{timezone}})",
|
|
457
|
+
"scheduleDayOfWeek": "星期几",
|
|
458
|
+
"scheduleDayOfMonth": "每月的某一日",
|
|
459
|
+
"scheduleDayOfMonthHint": "在日数月里,备份工作在最后一天进行。",
|
|
460
|
+
"retentionCount": "保留最近",
|
|
461
|
+
"retentionSuffix": "计划备份",
|
|
462
|
+
"daySun": "星期日",
|
|
463
|
+
"dayMon": "星期一",
|
|
464
|
+
"dayTue": "星期二",
|
|
465
|
+
"dayWed": "星期三",
|
|
466
|
+
"dayThu": "星期四",
|
|
467
|
+
"dayFri": "星期五",
|
|
468
|
+
"daySat": "星期六",
|
|
469
|
+
"restore": {
|
|
470
|
+
"title": "还原备份",
|
|
471
|
+
"selectedBackup": "所选备份",
|
|
472
|
+
"databaseSize": "数据库大小",
|
|
473
|
+
"sessions": "会话",
|
|
474
|
+
"users": "用户",
|
|
475
|
+
"servers": "服务器",
|
|
476
|
+
"rules": "规则",
|
|
477
|
+
"libraryItems": "媒体库数量",
|
|
478
|
+
"tables": "表",
|
|
479
|
+
"warning": "还原将替换所有现有数据。您需要在还原完成后重新登录。",
|
|
480
|
+
"confirmLabel": "我理解这将替换所有数据",
|
|
481
|
+
"confirm": "开始还原",
|
|
482
|
+
"complete": "还原成功完成。页面将很快刷新。",
|
|
483
|
+
"failed": "还原失败",
|
|
484
|
+
"cannotRestore": "恢复需要 PostgreSQL 超级用户权限。请确保您的数据库用户拥有超级用户权限并重试。",
|
|
485
|
+
"pgVersionMismatch": "备份是在 PostgreSQL {{backupVersion}} 上创建的,但此服务器运行的是 PostgreSQL {{serverVersion}}。不支持从较新版本的 PostgreSQL 恢复转储。",
|
|
486
|
+
"tsVersionMismatch": "备份是使用 TimescaleDB {{backupVersion}} 创建的,但此服务器仅支持到 TimescaleDB {{serverVersion}}。"
|
|
487
|
+
},
|
|
488
|
+
"toast": {
|
|
489
|
+
"backupCreated": "备份创建成功",
|
|
490
|
+
"backupCreateFailed": "创建备份失败",
|
|
491
|
+
"backupUploaded": "备份上传成功",
|
|
492
|
+
"backupUploadFailed": "上传备份失败",
|
|
493
|
+
"backupDeleted": "备份已删除",
|
|
494
|
+
"backupDeleteFailed": "删除备份失败",
|
|
495
|
+
"restoreStarted": "还原开始",
|
|
496
|
+
"restoreStartFailed": "启动还原失败",
|
|
497
|
+
"scheduleSaved": "备份计划已保存",
|
|
498
|
+
"scheduleError": "保存备份计划失败"
|
|
499
|
+
}
|
|
500
500
|
}
|
|
501
501
|
}
|