@synopackageland/sdk 0.10.1 → 0.10.3
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/README.md +89 -6
- package/dist/i18n/background/zh-CN.json +6 -6
- package/dist/i18n/bridge/de.json +1 -0
- package/dist/i18n/bridge/en.json +1 -0
- package/dist/i18n/bridge/es.json +1 -0
- package/dist/i18n/bridge/fr.json +1 -0
- package/dist/i18n/bridge/it.json +1 -0
- package/dist/i18n/bridge/ja.json +1 -0
- package/dist/i18n/bridge/ko.json +1 -0
- package/dist/i18n/bridge/zh-CN.json +2 -1
- package/dist/i18n/bridge/zh-TW.json +1 -0
- package/dist/i18n/delegate/de.json +5 -3
- package/dist/i18n/delegate/en.json +5 -3
- package/dist/i18n/delegate/es.json +5 -3
- package/dist/i18n/delegate/fr.json +5 -3
- package/dist/i18n/delegate/it.json +5 -3
- package/dist/i18n/delegate/ja.json +5 -3
- package/dist/i18n/delegate/ko.json +5 -3
- package/dist/i18n/delegate/zh-CN.json +5 -3
- package/dist/i18n/delegate/zh-TW.json +5 -3
- package/dist/i18n/identity/zh-CN.json +5 -5
- package/dist/i18n/save/de.json +15 -17
- package/dist/i18n/save/en.json +15 -17
- package/dist/i18n/save/es.json +15 -17
- package/dist/i18n/save/fr.json +15 -17
- package/dist/i18n/save/it.json +15 -17
- package/dist/i18n/save/ja.json +15 -17
- package/dist/i18n/save/ko.json +15 -17
- package/dist/i18n/save/zh-CN.json +15 -17
- package/dist/i18n/save/zh-TW.json +15 -17
- package/dist/i18n/shell/zh-CN.json +1 -1
- package/dist/index.js +2338 -2322
- package/dist/native.js +350 -0
- package/dist/src/bridge/i18n.d.ts +2 -2
- package/dist/src/delegate/BackgroundSavePanel.vue.d.ts +3 -0
- package/dist/src/delegate/BackgroundSaveSettings.vue.d.ts +29 -0
- package/dist/src/delegate/ExecutorApproval.vue.d.ts +2 -2
- package/dist/src/delegate/ExecutorSettings.vue.d.ts +1 -2
- package/dist/src/delegate/copy.d.ts +10 -6
- package/dist/src/delegate/executor-setup.d.ts +3 -0
- package/dist/src/delegate/save-copy.d.ts +30 -36
- package/dist/src/delegate/use-executor-setup.d.ts +5 -1
- package/dist/src/delegate/use-scope-approval.d.ts +50 -0
- package/dist/src/dsm/file-station.d.ts +1 -1
- package/dist/src/native/authorization-runtime.d.ts +2 -0
- package/dist/src/native/dsm-version.d.ts +6 -0
- package/dist/src/native/root-runtime.d.ts +34 -0
- package/dist/src/native.d.ts +2 -0
- package/dist/src/protocol/v1.d.ts +7 -1
- package/dist/src/shell/PageActions.vue.d.ts +13 -0
- package/dist/src/shell/app-pages.d.ts +2 -0
- package/dist/src/shell/page-actions.d.ts +3 -0
- package/dist/src/vue.d.ts +2 -0
- package/dist/style.css +1 -1
- package/dist/vue.js +2044 -1759
- package/package.json +7 -3
- package/spec/protocol/v1/README.md +86 -5
- package/spec/protocol/v1/errors.json +8 -0
- package/spec/protocol/v1/timeouts.json +21 -0
package/README.md
CHANGED
|
@@ -7,8 +7,9 @@ App's `backend/go.mod`.
|
|
|
7
7
|
| Import | Contents |
|
|
8
8
|
|---|---|
|
|
9
9
|
| `@synopackageland/sdk` | Headless: `Context` and the other types, `createBackgroundSaveFacade`, `createNasProvider`, `scopedPicker`, `createPortalAccess`, copy catalogs (`uiLocale`, `saveCopy`, …). Never imports Vue. |
|
|
10
|
-
| `@synopackageland/sdk/vue` | Everything above plus the components (`AppShell`, `FilesPage`, `NasPicker`, `LoginPage`, `PortalSettings`, `BackgroundPanel`, `ExecutorSettings`, `ExecutorApproval`, `ExecutorNotice`, `DelegatePanel`, `BackgroundSavePanel`, `AuthorizationGate`, `AuthorizationSettings`) and composables (`createSession`, `useExecutorSetup`, `ExecutorSetupKey`, `useAuthorization`). |
|
|
10
|
+
| `@synopackageland/sdk/vue` | Everything above plus the components (`AppShell`, `PageActions`, `FilesPage`, `NasPicker`, `LoginPage`, `PortalSettings`, `BackgroundPanel`, `ExecutorSettings`, `ExecutorApproval`, `ExecutorNotice`, `DelegatePanel`, `BackgroundSavePanel`, `BackgroundSaveSettings`, `AuthorizationGate`, `AuthorizationSettings`) and composables (`createSession`, `useExecutorSetup`, `ExecutorSetupKey`, `useAuthorization`). |
|
|
11
11
|
| `@synopackageland/sdk/vue/style.css` | The component stylesheet. Import it once next to `@synopackageland/ui`'s theme in the App entry. |
|
|
12
|
+
| `@synopackageland/sdk/native` | For a native product with its own pinned root tasks: `ROOT_RUNTIME` (`createRootAccess`) and `AUTHORIZATION_RUNTIME` (`createAuthorizationAccess`), plain ES5 source the product renders into its own DSM window; `AuthorizationGate` shows the result. Generated Apps use the executor instead. Never imports Vue. |
|
|
12
13
|
| `@synopackageland/sdk/i18n/<capability>/<locale>.json` | Copy in `en`, `zh-TW`, `zh-CN`, `ja`, `ko`, `de`, `fr`, `es`, `it`. |
|
|
13
14
|
| `@synopackageland/sdk/spec/protocol/v1/` | The executor protocol (`errors.json`, `schema/`, `vectors/`), a file copy of the repository's `spec/protocol/v1`. Read it from `node_modules/@synopackageland/sdk/spec/protocol/v1`. |
|
|
14
15
|
|
|
@@ -75,8 +76,9 @@ const ctx = createStandaloneContext({locale: 'zh-TW', call: (method, params) =>
|
|
|
75
76
|
a `title` the App has already translated, and optionally an `icon`, a `group`
|
|
76
77
|
label (pages with the same label sit together), a `badge`, a `component` to
|
|
77
78
|
render while it is the current page, `hidden` (reachable through `v-model`
|
|
78
|
-
but not in the sidebar), its own `description`,
|
|
79
|
-
page
|
|
79
|
+
but not in the sidebar), its own `description`, `placement: 'bottom'` for a
|
|
80
|
+
page the sidebar lists last, after every group (an App's settings), and
|
|
81
|
+
`header: false` for a page that draws its own header. `fill: true` gives the page's body the height under
|
|
80
82
|
its header and notices; the page does not scroll, so the content scrolls
|
|
81
83
|
itself (a treemap, a table paged by height, a log viewer). The shell then
|
|
82
84
|
holds to `100dvh`, so a phone's address bar does not leave a gap. The built-in `'status'` and `'background'`
|
|
@@ -94,6 +96,16 @@ may sit in the same list.
|
|
|
94
96
|
</AppShell>
|
|
95
97
|
```
|
|
96
98
|
|
|
99
|
+
A page passed as `component` cannot fill the shell's `#actions` slot. It puts
|
|
100
|
+
its own header buttons, such as its refresh, in `PageActions` anywhere in its
|
|
101
|
+
template: they show in the page header before the App's `#actions` and leave
|
|
102
|
+
with the page. Outside an `AppShell`, `PageActions` renders nothing.
|
|
103
|
+
|
|
104
|
+
```vue
|
|
105
|
+
<!-- PackagesPage.vue -->
|
|
106
|
+
<PageActions><Button @click="rescan">{{ t('rescan') }}</Button></PageActions>
|
|
107
|
+
```
|
|
108
|
+
|
|
97
109
|
Moving to another page starts it at the top; `keep-scroll` keeps the
|
|
98
110
|
position. The `toolbar` slot sits above the page (in `AppLayout`'s toolbar)
|
|
99
111
|
and `notices` in the page, under its header and inside the same padding, and
|
|
@@ -102,6 +114,64 @@ otherwise picks the first page the sidebar shows. A router drives the shell
|
|
|
102
114
|
through `v-model`:
|
|
103
115
|
`:model-value="route.name" @update:model-value="name => router.push({name})"`.
|
|
104
116
|
|
|
117
|
+
## Background saves in the settings page
|
|
118
|
+
|
|
119
|
+
`BackgroundSaveSettings` is background saves as one `SettingsSection` of the
|
|
120
|
+
App's settings page. A user sees one row, the save folder and a button that
|
|
121
|
+
opens `NasPicker` inside the allowed scope; choosing a folder never asks for
|
|
122
|
+
a password. An administrator also sees the allowed scope, with Change, and
|
|
123
|
+
turns saves off at the end of the section. A `Callout` shows only when
|
|
124
|
+
something needs attention: approval needed, saves turned off, a folder to
|
|
125
|
+
choose again after a scope change, an error.
|
|
126
|
+
|
|
127
|
+
The DSM password is asked twice at most, and only where the executor's root
|
|
128
|
+
tasks change. The first approval chooses the scope in the same step, with
|
|
129
|
+
one password. A later change of scope asks for it again: the scope is the
|
|
130
|
+
boundary the executor writes inside as root, and the App backend sees the
|
|
131
|
+
administrator's DSM session on every request, so only the password, which
|
|
132
|
+
it never sees, shows the administrator meant the change. A change revokes
|
|
133
|
+
every user's folder; each chooses again.
|
|
134
|
+
|
|
135
|
+
```vue
|
|
136
|
+
<AppShell v-model="page" :ctx="ctx" :locale="ctx.locale" :pages="[
|
|
137
|
+
{id: 'downloads', title: t('downloads'), icon: Download},
|
|
138
|
+
{id: 'settings', title: t('settings'), icon: Settings, placement: 'bottom'},
|
|
139
|
+
]">
|
|
140
|
+
<template #default="{page}">
|
|
141
|
+
<div v-if="page === 'settings'" class="settings-page">
|
|
142
|
+
<BackgroundSaveSettings ref="saves" :sdk="saves" :admin="ctx.user?.isAdmin ?? false" :locale="ctx.locale"
|
|
143
|
+
:picker="{provider, keys: ['save']}" @destinations="states => folder = states[0]" />
|
|
144
|
+
<SettingsSection v-if="ctx.user?.isAdmin" :title="t('engine')"><!-- the App's own rows --></SettingsSection>
|
|
145
|
+
</div>
|
|
146
|
+
</template>
|
|
147
|
+
</AppShell>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
- `picker.keys` are the App's destination keys, one row each; `labels`
|
|
151
|
+
names the rows when there are several. `provider` is the App's
|
|
152
|
+
`NasProvider` (File Station shares, say); the section scopes it to the
|
|
153
|
+
allowed root.
|
|
154
|
+
- `@destinations` reports each key's `DestinationState` after every read, so
|
|
155
|
+
the App knows where saves go without its own `sdk.destination(key)`.
|
|
156
|
+
`@authorized` reports a folder just chosen; `@confirmed` an approval or a
|
|
157
|
+
scope change the executor applied.
|
|
158
|
+
- The approval reads `delegate.status` and `bg.browse` with `ctx.call`, or
|
|
159
|
+
with the provided setup's `call` (`ExecutorSetupKey`) when no `ctx` is
|
|
160
|
+
given; an App whose routes differ provides its adapter there.
|
|
161
|
+
- A scope change whose root task lands after the DSM window stops waiting is
|
|
162
|
+
read back for 60 seconds before it is reported as failed.
|
|
163
|
+
- `refresh()` (exposed) rereads the section, for the page header's refresh.
|
|
164
|
+
|
|
165
|
+
`BackgroundSavePanel` is this section plus a "My saves" list, a page of its
|
|
166
|
+
own for an App whose saves are not listed elsewhere (templates, samples).
|
|
167
|
+
|
|
168
|
+
An App that had a background page and a settings page merges them: drop the
|
|
169
|
+
background page and its `BackgroundSavePanel`, its own scope settings
|
|
170
|
+
(`ExecutorSettings` with its own scope readback) and its own destination
|
|
171
|
+
row, and place `BackgroundSaveSettings` first on the settings page, which
|
|
172
|
+
moves to `placement: 'bottom'`. `ExecutorNotice` and `ExecutorApproval` stay
|
|
173
|
+
as they are.
|
|
174
|
+
|
|
105
175
|
## App root
|
|
106
176
|
|
|
107
177
|
`app-root` wraps the shell in an app-local `AppRoot`
|
|
@@ -143,7 +213,13 @@ the DSM password (`ExecutorSettings`: the form, the status and the refusal's
|
|
|
143
213
|
reason) and the pages show once the executor is ready; anyone else is told to
|
|
144
214
|
ask an administrator. A later status that is not ready brings it back, and
|
|
145
215
|
with `ctx` so does one read when the window reopens. Without a provided
|
|
146
|
-
executor (a dev server, a Portal page) the pages show at once.
|
|
216
|
+
executor (a dev server, a Portal page) the pages show at once. On a full page
|
|
217
|
+
(`ctx.fullPage`, or a standalone host) the approval names the App with
|
|
218
|
+
`ctx.displayName` and `ctx.appIcon`, as a DSM window's title bar does. An
|
|
219
|
+
approval after which the executor is not ready says it could not be completed,
|
|
220
|
+
with the reason the status carries; a password DSM refuses (`dsm_3121`) says
|
|
221
|
+
the password is incorrect. Either stays, whatever later status reads say,
|
|
222
|
+
until the administrator submits again, refreshes or closes the dialog.
|
|
147
223
|
`AuthorizationGate` cannot approve the executor: its `request()` takes no
|
|
148
224
|
password.
|
|
149
225
|
|
|
@@ -168,6 +244,11 @@ back. It checks on mount, on each status the executor publishes and when the
|
|
|
168
244
|
window reopens. An App without `AppShell` places
|
|
169
245
|
`<ExecutorNotice :ctx="ctx" :locale="ctx.locale" />` above its pages. A
|
|
170
246
|
root-ops App keeps `ExecutorApproval`; inside it the notice never shows.
|
|
247
|
+
The notice uses the setup the App provides (`ExecutorSetupKey`) before
|
|
248
|
+
`ctx.executor`, and that setup's optional `call` before `ctx.call`: an App
|
|
249
|
+
whose routes for the approval's reads (`delegate.status`, `bg.browse`)
|
|
250
|
+
differ provides its adapter there, and the dialog reads as its settings
|
|
251
|
+
page does.
|
|
171
252
|
|
|
172
253
|
The backend's `executor.status` and `executor.control` are the SDK's: a Go
|
|
173
254
|
App registers `delegate.ExecutorRoutes`, and the bridge runtime serves them
|
|
@@ -207,8 +288,10 @@ key the order is the App's locale, the SDK's locale, then `en`.
|
|
|
207
288
|
|
|
208
289
|
`bridgeErrorCopy(error, locale)` is the text of a code that the bridge runtime
|
|
209
290
|
adds for Python, Node and Rust Apps: `app_unavailable`, and the services'
|
|
210
|
-
`limit_exceeded`, `read_failed` and `identity_unavailable
|
|
211
|
-
|
|
291
|
+
`limit_exceeded`, `read_failed` and `identity_unavailable`; and of
|
|
292
|
+
`request_timeout`, which a Go App and the runtime send past the request
|
|
293
|
+
deadline and an SDK client gives when it stops waiting. For any other code it
|
|
294
|
+
returns `undefined`, so the App falls back to its own text. Its catalogs,
|
|
212
295
|
`i18n/bridge/<locale>.json`, are generated from `spec/bridge/v1/errors.json`.
|
|
213
296
|
|
|
214
297
|
The Vue entry needs the peer dependencies `vue`, `@synopackageland/ui` and
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"progressItem": "当前项目:{item}",
|
|
31
31
|
"limits": "每个文件最多 {size} KB、最多 {queue} 个排队任务、每个任务最长 {seconds} 秒。",
|
|
32
32
|
"errors": {
|
|
33
|
-
"jobs_busy": "
|
|
33
|
+
"jobs_busy": "系统繁忙,请稍后重试。",
|
|
34
34
|
"failed": "无法完成请求。请刷新后重试。",
|
|
35
35
|
"limit-exceeded": "文件超过上限。",
|
|
36
36
|
"queue-full": "队列已满。",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"confirmPurge": "确认清除",
|
|
56
56
|
"keepJobs": "保留任务",
|
|
57
57
|
"schedulesTitle": "计划",
|
|
58
|
-
"scheduleHelp": "由套件账户每小时、每日或每周重新计算固定私有副本。最多 8
|
|
58
|
+
"scheduleHelp": "由套件账户每小时、每日或每周重新计算固定私有副本。最多 8 个计划;错过的运行仅记录,不会补上。",
|
|
59
59
|
"scheduleCopy": "计划重跑副本",
|
|
60
60
|
"scheduleSource": "私有副本:{name}",
|
|
61
61
|
"interval": "重复间隔",
|
|
@@ -67,17 +67,17 @@
|
|
|
67
67
|
"noSchedules": "暂无计划",
|
|
68
68
|
"scheduleOn": "已启动",
|
|
69
69
|
"scheduleOff": "已停用",
|
|
70
|
-
"nextRun": "
|
|
71
|
-
"missedRuns": "
|
|
70
|
+
"nextRun": "下次运行:{time}",
|
|
71
|
+
"missedRuns": "错过运行:{count} 次",
|
|
72
72
|
"disableSchedule": "停用计划",
|
|
73
73
|
"deleteSchedule": "删除计划",
|
|
74
74
|
"deleteScheduleConsent": "删除 {name} 的计划?排队任务将取消,运行中的任务将停止并完成收尾。已完成结果保留。",
|
|
75
75
|
"confirmDeleteSchedule": "确认删除",
|
|
76
76
|
"enableSchedule": "启用计划",
|
|
77
|
-
"enableScheduleConsent": "使用当前 worker revision 启用 {name}
|
|
77
|
+
"enableScheduleConsent": "使用当前 worker revision 启用 {name} 的计划?我同意重新计算此固定副本。过去错过的运行不会补上。",
|
|
78
78
|
"confirmEnableSchedule": "确认启用",
|
|
79
79
|
"revisionChanged": "Worker revision 已更改。管理员须检查并明确启用此计划。",
|
|
80
|
-
"scheduledJob": "
|
|
80
|
+
"scheduledJob": "计划运行",
|
|
81
81
|
"unknownTime": "未知",
|
|
82
82
|
"unsupported": "后台任务无法使用,请刷新后重试。"
|
|
83
83
|
}
|
package/dist/i18n/bridge/de.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app_unavailable": "Die App ist derzeit nicht verfügbar. Versuchen Sie es später erneut.",
|
|
3
|
+
"request_timeout": "Die Anfrage hat zu lange gedauert und wurde abgebrochen. Versuchen Sie es erneut oder mit einer kleineren Aufgabe.",
|
|
3
4
|
"limit_exceeded": "Die Datei ist größer als zulässig.",
|
|
4
5
|
"read_failed": "Die Datei kann nicht gelesen werden. Bitte versuchen Sie es später erneut.",
|
|
5
6
|
"identity_unavailable": "Dieses Benutzerkonto kann nicht ermittelt werden. Bitte versuchen Sie es später erneut."
|
package/dist/i18n/bridge/en.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app_unavailable": "The App is not available right now. Try again later.",
|
|
3
|
+
"request_timeout": "The request took too long and was stopped. Try again, or try a smaller task.",
|
|
3
4
|
"limit_exceeded": "The file is larger than allowed.",
|
|
4
5
|
"read_failed": "Unable to read the file. Please try again later.",
|
|
5
6
|
"identity_unavailable": "Unable to identify this user account. Please try again later."
|
package/dist/i18n/bridge/es.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app_unavailable": "La App no está disponible en este momento. Vuelva a intentarlo más tarde.",
|
|
3
|
+
"request_timeout": "La solicitud tardó demasiado y se detuvo. Vuelva a intentarlo o pruebe con una tarea más pequeña.",
|
|
3
4
|
"limit_exceeded": "El archivo supera el tamaño permitido.",
|
|
4
5
|
"read_failed": "No se puede leer el archivo. Vuelva a intentarlo más tarde.",
|
|
5
6
|
"identity_unavailable": "No se puede identificar esta cuenta de usuario. Vuelva a intentarlo más tarde."
|
package/dist/i18n/bridge/fr.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app_unavailable": "L’App n’est pas disponible pour le moment. Réessayez plus tard.",
|
|
3
|
+
"request_timeout": "La requête a pris trop de temps et a été arrêtée. Réessayez ou essayez une tâche plus petite.",
|
|
3
4
|
"limit_exceeded": "Le fichier dépasse la taille autorisée.",
|
|
4
5
|
"read_failed": "Impossible de lire le fichier. Veuillez réessayer ultérieurement.",
|
|
5
6
|
"identity_unavailable": "Impossible d'identifier ce compte utilisateur. Veuillez réessayer ultérieurement."
|
package/dist/i18n/bridge/it.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app_unavailable": "L’App non è al momento disponibile. Riprovare più tardi.",
|
|
3
|
+
"request_timeout": "La richiesta ha impiegato troppo tempo ed è stata interrotta. Riprovare o provare con un’attività più piccola.",
|
|
3
4
|
"limit_exceeded": "Il file supera le dimensioni consentite.",
|
|
4
5
|
"read_failed": "Impossibile leggere il file. Riprovare più tardi.",
|
|
5
6
|
"identity_unavailable": "Impossibile identificare questo account utente. Riprovare più tardi."
|
package/dist/i18n/bridge/ja.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app_unavailable": "App は現在使用できません。しばらくしてから再試行してください。",
|
|
3
|
+
"request_timeout": "リクエストの処理に時間がかかりすぎたため、停止しました。もう一度お試しいただくか、範囲を小さくしてください。",
|
|
3
4
|
"limit_exceeded": "ファイルが許可されたサイズを超えています。",
|
|
4
5
|
"read_failed": "ファイルを読み取れません。後でもう一度お試しください。",
|
|
5
6
|
"identity_unavailable": "このユーザー アカウントを識別できません。後でもう一度お試しください。"
|
package/dist/i18n/bridge/ko.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"app_unavailable": "현재 App을 사용할 수 없습니다. 나중에 다시 시도하십시오.",
|
|
3
|
+
"request_timeout": "요청 처리 시간이 너무 오래 걸려 중지되었습니다. 다시 시도하거나 작업 범위를 줄이십시오.",
|
|
3
4
|
"limit_exceeded": "파일이 허용된 크기를 초과합니다.",
|
|
4
5
|
"read_failed": "파일을 읽을 수 없습니다. 나중에 다시 시도하십시오.",
|
|
5
6
|
"identity_unavailable": "이 사용자 계정을 확인할 수 없습니다. 나중에 다시 시도하십시오."
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "Auftrag abgebrochen. Der Widerruf steht noch aus; die App versucht es erneut.",
|
|
35
35
|
"error": "Die Aktion konnte nicht abgeschlossen werden. Aktualisieren Sie die Ansicht und versuchen Sie es erneut. Wenn der Fehler bestehen bleibt, wenden Sie sich an Ihren Administrator.",
|
|
36
36
|
"setupError": "Die Genehmigung konnte nicht abgeschlossen werden. Geben Sie Ihr DSM-Passwort erneut ein und versuchen Sie es noch einmal, oder prüfen Sie die App-Einrichtung.",
|
|
37
|
+
"passwordRejected": "Das DSM-Passwort ist falsch. Geben Sie es erneut ein.",
|
|
38
|
+
"passwordRequired": "Geben Sie zur Freigabe das DSM-Passwort ein.",
|
|
39
|
+
"passwordConfirmFailed": "DSM konnte das Administratorpasswort nicht bestätigen. Es wurde nichts geändert; versuchen Sie es erneut.",
|
|
37
40
|
"confirmingHelp": "Der Hintergrunddienst der App startet und prüft mit DSM. Das kann bis zu einer Minute dauern.",
|
|
38
41
|
"denied": "Der Zugriff wurde verweigert. Prüfen Sie Ihre Ordnerberechtigungen und versuchen Sie es erneut.",
|
|
39
42
|
"session": "Melden Sie sich erneut bei DSM an und aktualisieren Sie dann die Ansicht.",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "Vorauswahl bei der Installation",
|
|
51
54
|
"preselectionHelp": "Die Vorauswahl bei der Installation ist nur ein Vorschlag. Bestätigen Sie diesen Bereich mit Ihrem DSM-Passwort, wenn Sie den Hintergrundzugriff aktivieren.",
|
|
52
55
|
"scopeMismatch": "Die Vorauswahl bei der Installation weicht vom bestätigten Bereich ab. Speichervorgänge im Hintergrund folgen dem bestätigten Bereich.",
|
|
53
|
-
"scopeChangeHelp": "Eine Änderung des Bereichs widerruft vorhandene Ziele und bricht ausstehende Speichervorgänge ab. Benutzer müssen ihre Ziele neu auswählen. Bereits gespeicherte Dateien bleiben erhalten.",
|
|
54
|
-
"confirmScope": "Bereichsänderung bestätigen",
|
|
55
56
|
"waiting_executor": "Warten auf den Start der Systemdienste",
|
|
56
57
|
"status": "Status",
|
|
57
58
|
"statusReady": "Bereit",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "Freigegebener Ordner erforderlich",
|
|
60
61
|
"statusBlocked": "Nicht verfügbar",
|
|
61
62
|
"statusConfirming": "Wird bestätigt",
|
|
63
|
+
"statusUnreachable": "Die App hat keine Antwort von ihrem Systemdienst erhalten. Mögliche Ursachen: Die App wurde über einen Alias des Anwendungsportals geöffnet und mit einer älteren synopkgland-CLI erstellt; die DSM-Anmeldung ist abgelaufen; oder der Dienst ist noch nicht gestartet oder wurde beendet. Öffnen Sie die App über den DSM-Desktop oder laden Sie die Seite neu; bleibt der Fehler bestehen, genehmigen Sie erneut oder wenden Sie sich an den Entwickler der App.",
|
|
64
|
+
"statusStarting": "Der Hintergrunddienst der App führt nach einer Installation oder einem Upgrade noch seinen Startschritt aus. Aktualisieren Sie gleich; wenn dies anhält, genehmigen Sie erneut oder wenden Sie sich an den Entwickler der App.",
|
|
62
65
|
"hintPassword": "Geben Sie das DSM-Passwort ein, um zu bestätigen.",
|
|
63
|
-
"hintUnchanged": "Wählen Sie einen anderen Bereich, um ihn zu ändern.",
|
|
64
66
|
"retry": "Neuer Versuch"
|
|
65
67
|
}
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "Job canceled. Revocation is pending; the app will retry.",
|
|
35
35
|
"error": "The action could not be completed. Refresh and try again. If it keeps failing, contact your administrator.",
|
|
36
36
|
"setupError": "Approval could not be completed. Re-enter your DSM password and try again, or check the app setup.",
|
|
37
|
+
"passwordRejected": "The DSM password is incorrect. Enter it again.",
|
|
38
|
+
"passwordRequired": "Enter the DSM password to approve.",
|
|
39
|
+
"passwordConfirmFailed": "DSM could not confirm the administrator password. Nothing was changed; try again.",
|
|
37
40
|
"confirmingHelp": "This can take up to a minute while the app’s background service starts and checks with DSM.",
|
|
38
41
|
"denied": "Access was refused. Check your folder permissions and try again.",
|
|
39
42
|
"session": "Sign in to DSM again, then refresh.",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "Installer pre-selection",
|
|
51
54
|
"preselectionHelp": "The installer pre-selection is a suggestion. Confirm this scope with your DSM password when enabling background access.",
|
|
52
55
|
"scopeMismatch": "The installer pre-selection differs from the confirmed scope. Background saves follow the confirmed scope.",
|
|
53
|
-
"scopeChangeHelp": "Changing the scope revokes existing destinations and cancels pending saves. Users must choose destinations again. Saved files remain.",
|
|
54
|
-
"confirmScope": "Confirm scope change",
|
|
55
56
|
"waiting_executor": "Waiting for system services to start",
|
|
56
57
|
"status": "Status",
|
|
57
58
|
"statusReady": "Ready",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "Needs a shared folder",
|
|
60
61
|
"statusBlocked": "Unavailable",
|
|
61
62
|
"statusConfirming": "Confirming",
|
|
63
|
+
"statusUnreachable": "The app could not get an answer from its system service. Possible causes: the app was opened through an Application Portal alias and was built with an older synopkgland CLI; the DSM sign-in has expired; or the service has not started yet or has stopped. Open the app from the DSM desktop or refresh the page; if this continues, approve again or contact the app's developer.",
|
|
64
|
+
"statusStarting": "The app's background service is still running its start step after an install or upgrade. Refresh in a moment; if this continues, approve again or contact the app's developer.",
|
|
62
65
|
"hintPassword": "Enter the DSM password to confirm.",
|
|
63
|
-
"hintUnchanged": "Choose a different scope to change it.",
|
|
64
66
|
"retry": "Retry"
|
|
65
67
|
}
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "Tarea cancelada. La revocación está pendiente; la aplicación volverá a intentarlo.",
|
|
35
35
|
"error": "No se pudo completar la acción. Actualice e inténtelo de nuevo. Si sigue fallando, póngase en contacto con su administrador.",
|
|
36
36
|
"setupError": "No se pudo completar la aprobación. Vuelva a introducir su contraseña de DSM e inténtelo de nuevo, o revise la configuración de la aplicación.",
|
|
37
|
+
"passwordRejected": "La contraseña de DSM no es correcta. Vuelva a introducirla.",
|
|
38
|
+
"passwordRequired": "Introduzca la contraseña de DSM para aprobar.",
|
|
39
|
+
"passwordConfirmFailed": "DSM no pudo confirmar la contraseña de administrador. No se ha cambiado nada; vuelva a intentarlo.",
|
|
37
40
|
"confirmingHelp": "El servicio en segundo plano de la aplicación se está iniciando y comprobando con DSM. Puede tardar hasta un minuto.",
|
|
38
41
|
"denied": "Se denegó el acceso. Compruebe los permisos de la carpeta e inténtelo de nuevo.",
|
|
39
42
|
"session": "Vuelva a iniciar sesión en DSM y luego actualice.",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "Preselección de la instalación",
|
|
51
54
|
"preselectionHelp": "La preselección de la instalación es solo una sugerencia. Confirme este ámbito con su contraseña de DSM al activar el acceso en segundo plano.",
|
|
52
55
|
"scopeMismatch": "La preselección de la instalación difiere del ámbito confirmado. Los guardados en segundo plano siguen el ámbito confirmado.",
|
|
53
|
-
"scopeChangeHelp": "Cambiar el ámbito revoca los destinos existentes y cancela los guardados pendientes. Los usuarios deben elegir de nuevo sus destinos. Los archivos ya guardados se conservan.",
|
|
54
|
-
"confirmScope": "Confirmar cambio de ámbito",
|
|
55
56
|
"waiting_executor": "Esperando a que se inicien los servicios del sistema",
|
|
56
57
|
"status": "Estado",
|
|
57
58
|
"statusReady": "Listo",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "Falta confirmar la carpeta compartida",
|
|
60
61
|
"statusBlocked": "No disponible",
|
|
61
62
|
"statusConfirming": "Confirmando",
|
|
63
|
+
"statusUnreachable": "La aplicación no obtuvo respuesta de su servicio del sistema. Posibles causas: la aplicación se abrió mediante un alias del Portal de aplicaciones y se compiló con una CLI de synopkgland antigua; la sesión de DSM ha caducado; o el servicio aún no se ha iniciado o se ha detenido. Abra la aplicación desde el escritorio de DSM o actualice la página; si continúa, apruebe de nuevo o contacte con el desarrollador de la aplicación.",
|
|
64
|
+
"statusStarting": "El servicio en segundo plano de la aplicación aún está ejecutando su paso de inicio tras una instalación o actualización. Actualice en un momento; si continúa, apruebe de nuevo o póngase en contacto con el desarrollador de la aplicación.",
|
|
62
65
|
"hintPassword": "Introduzca la contraseña de DSM para confirmar.",
|
|
63
|
-
"hintUnchanged": "Elija otro ámbito para cambiarlo.",
|
|
64
66
|
"retry": "Volver a intentar"
|
|
65
67
|
}
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "Tâche annulée. La révocation est en attente ; l’application va réessayer.",
|
|
35
35
|
"error": "L’action n’a pas pu être effectuée. Actualisez et réessayez. Si le problème persiste, contactez votre administrateur.",
|
|
36
36
|
"setupError": "L’approbation n’a pas pu être effectuée. Saisissez à nouveau votre mot de passe DSM et réessayez, ou vérifiez la configuration de l’application.",
|
|
37
|
+
"passwordRejected": "Le mot de passe DSM est incorrect. Saisissez-le à nouveau.",
|
|
38
|
+
"passwordRequired": "Saisissez le mot de passe DSM pour approuver.",
|
|
39
|
+
"passwordConfirmFailed": "DSM n'a pas pu confirmer le mot de passe administrateur. Rien n'a été modifié ; réessayez.",
|
|
37
40
|
"confirmingHelp": "Le service d’arrière-plan de l’application démarre et effectue des vérifications auprès de DSM. Cela peut prendre jusqu’à une minute.",
|
|
38
41
|
"denied": "L’accès a été refusé. Vérifiez les autorisations du dossier et réessayez.",
|
|
39
42
|
"session": "Reconnectez-vous à DSM, puis actualisez.",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "Présélection de l’installation",
|
|
51
54
|
"preselectionHelp": "La présélection de l’installation n’est qu’une suggestion. Confirmez cette portée avec votre mot de passe DSM lorsque vous activez l’accès en arrière-plan.",
|
|
52
55
|
"scopeMismatch": "La présélection de l’installation diffère de la portée confirmée. Les enregistrements en arrière-plan suivent la portée confirmée.",
|
|
53
|
-
"scopeChangeHelp": "Changer la portée révoque les destinations existantes et annule les enregistrements en attente. Les utilisateurs doivent choisir à nouveau leurs destinations. Les fichiers déjà enregistrés sont conservés.",
|
|
54
|
-
"confirmScope": "Confirmer le changement de portée",
|
|
55
56
|
"waiting_executor": "En attente du démarrage des services système",
|
|
56
57
|
"status": "Statut",
|
|
57
58
|
"statusReady": "Prêt",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "Dossier partagé à confirmer",
|
|
60
61
|
"statusBlocked": "Indisponible",
|
|
61
62
|
"statusConfirming": "Confirmation",
|
|
63
|
+
"statusUnreachable": "L'application n'a pas obtenu de réponse de son service système. Causes possibles : l'application a été ouverte par un alias du Portail d'application et compilée avec une ancienne CLI synopkgland ; la connexion à DSM a expiré ; ou le service n'a pas encore démarré ou s'est arrêté. Ouvrez l'application depuis le bureau DSM ou actualisez la page ; si le problème persiste, approuvez de nouveau ou contactez le développeur de l'application.",
|
|
64
|
+
"statusStarting": "Le service en arrière-plan de l'application exécute encore son étape de démarrage après une installation ou une mise à niveau. Actualisez dans un instant ; si cela persiste, approuvez de nouveau ou contactez le développeur de l'application.",
|
|
62
65
|
"hintPassword": "Saisissez le mot de passe DSM pour confirmer.",
|
|
63
|
-
"hintUnchanged": "Choisissez une autre étendue pour la modifier.",
|
|
64
66
|
"retry": "Réessayer"
|
|
65
67
|
}
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "Processo annullato. La revoca è in sospeso; l’app riproverà.",
|
|
35
35
|
"error": "Impossibile completare l’azione. Aggiornare e riprovare. Se il problema persiste, contattare l’amministratore.",
|
|
36
36
|
"setupError": "Impossibile completare l’approvazione. Inserire di nuovo la password DSM e riprovare, oppure controllare la configurazione dell’app.",
|
|
37
|
+
"passwordRejected": "La password DSM non è corretta. Inserirla di nuovo.",
|
|
38
|
+
"passwordRequired": "Inserire la password DSM per approvare.",
|
|
39
|
+
"passwordConfirmFailed": "DSM non è riuscito a confermare la password dell'amministratore. Non è stato modificato nulla; riprovare.",
|
|
37
40
|
"confirmingHelp": "Il servizio in background dell’app si sta avviando e sta effettuando verifiche con DSM. Può richiedere fino a un minuto.",
|
|
38
41
|
"denied": "Accesso negato. Controllare le autorizzazioni della cartella e riprovare.",
|
|
39
42
|
"session": "Accedere di nuovo a DSM, quindi aggiornare.",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "Preselezione dell’installazione",
|
|
51
54
|
"preselectionHelp": "La preselezione dell’installazione è solo un suggerimento. Confermare questo ambito con la password DSM all’attivazione dell’accesso in background.",
|
|
52
55
|
"scopeMismatch": "La preselezione dell’installazione è diversa dall’ambito confermato. I salvataggi in background seguono l’ambito confermato.",
|
|
53
|
-
"scopeChangeHelp": "La modifica dell’ambito revoca le destinazioni esistenti e annulla i salvataggi in sospeso. Gli utenti devono scegliere di nuovo le destinazioni. I file già salvati restano.",
|
|
54
|
-
"confirmScope": "Conferma modifica dell’ambito",
|
|
55
56
|
"waiting_executor": "In attesa dell’avvio dei servizi di sistema",
|
|
56
57
|
"status": "Stato",
|
|
57
58
|
"statusReady": "Pronto",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "Cartella condivisa da confermare",
|
|
60
61
|
"statusBlocked": "Non disponibile",
|
|
61
62
|
"statusConfirming": "Conferma in corso",
|
|
63
|
+
"statusUnreachable": "L'app non ha ricevuto risposta dal suo servizio di sistema. Possibili cause: l'app è stata aperta tramite un alias del Portale applicazioni ed è stata compilata con una CLI synopkgland precedente; l'accesso a DSM è scaduto; oppure il servizio non è ancora avviato o si è arrestato. Aprire l'app dal desktop DSM o aggiornare la pagina; se il problema persiste, approvare di nuovo o contattare lo sviluppatore dell'app.",
|
|
64
|
+
"statusStarting": "Il servizio in background dell'app sta ancora eseguendo il passaggio di avvio dopo un'installazione o un aggiornamento. Aggiornare tra poco; se continua, approvare di nuovo o contattare lo sviluppatore dell'app.",
|
|
62
65
|
"hintPassword": "Inserire la password DSM per confermare.",
|
|
63
|
-
"hintUnchanged": "Scegliere un ambito diverso per cambiarlo.",
|
|
64
66
|
"retry": "Riprova"
|
|
65
67
|
}
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "ジョブをキャンセルしました。委任の取り消しは保留中で、アプリが再試行します。",
|
|
35
35
|
"error": "操作を完了できませんでした。最新の情報に更新してから、もう一度お試しください。問題が解決しない場合は、管理者に連絡してください。",
|
|
36
36
|
"setupError": "承認を完了できませんでした。DSM パスワードを入力し直して再試行するか、アプリの設定を確認してください。",
|
|
37
|
+
"passwordRejected": "DSM パスワードが正しくありません。もう一度入力してください。",
|
|
38
|
+
"passwordRequired": "承認するには DSM パスワードを入力してください。",
|
|
39
|
+
"passwordConfirmFailed": "DSM で管理者パスワードを確認できませんでした。変更は行われていません。もう一度お試しください。",
|
|
37
40
|
"confirmingHelp": "アプリのバックグラウンドサービスが起動して DSM に確認しています。最大 1 分ほどかかることがあります。",
|
|
38
41
|
"denied": "アクセスが拒否されました。フォルダの権限を確認してもう一度お試しください。",
|
|
39
42
|
"session": "DSM に再度サインインしてから、最新の情報に更新してください。",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "インストール時の事前選択",
|
|
51
54
|
"preselectionHelp": "インストール時の事前選択は提案にすぎません。バックグラウンドアクセスを有効にするときに、DSM パスワードでこの範囲を確認してください。",
|
|
52
55
|
"scopeMismatch": "インストール時の事前選択が確認済みの範囲と異なります。バックグラウンド保存は確認済みの範囲に従います。",
|
|
53
|
-
"scopeChangeHelp": "範囲を変更すると、既存の保存先が取り消され、保留中の保存がキャンセルされます。ユーザーは保存先を選び直す必要があります。保存済みのファイルは残ります。",
|
|
54
|
-
"confirmScope": "範囲の変更を確認",
|
|
55
56
|
"waiting_executor": "システムサービスの起動を待っています",
|
|
56
57
|
"status": "状態",
|
|
57
58
|
"statusReady": "準備完了",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "共有フォルダの確認が必要",
|
|
60
61
|
"statusBlocked": "使用不可",
|
|
61
62
|
"statusConfirming": "確認中",
|
|
63
|
+
"statusUnreachable": "アプリがシステムサービスから応答を得られませんでした。考えられる原因:アプリケーションポータルのエイリアス URL から開いたが、アプリが古い synopkgland CLI でビルドされている、DSM のサインインの有効期限が切れている、またはサービスがまだ起動していないか停止している。DSM デスクトップからアプリを開くか、ページを再読み込みしてください。解決しない場合は、もう一度承認するか、アプリの開発者に連絡してください。",
|
|
64
|
+
"statusStarting": "アプリのバックグラウンドサービスは、インストールまたはアップグレード後の開始ステップをまだ実行中です。しばらくしてから更新してください。続く場合は、もう一度承認するか、アプリの開発者に問い合わせてください。",
|
|
62
65
|
"hintPassword": "DSM パスワードを入力すると確認できます。",
|
|
63
|
-
"hintUnchanged": "別の範囲を選ぶと変更できます。",
|
|
64
66
|
"retry": "再試行"
|
|
65
67
|
}
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "작업이 취소되었습니다. 위임 취소가 보류 중이며 앱이 다시 시도합니다.",
|
|
35
35
|
"error": "작업을 완료할 수 없습니다. 새로 고친 후 다시 시도하십시오. 계속 실패하면 관리자에게 문의하십시오.",
|
|
36
36
|
"setupError": "승인을 완료할 수 없습니다. DSM 암호를 다시 입력하고 다시 시도하거나 앱 설정을 확인하십시오.",
|
|
37
|
+
"passwordRejected": "DSM 암호가 올바르지 않습니다. 다시 입력하십시오.",
|
|
38
|
+
"passwordRequired": "승인하려면 DSM 암호를 입력하십시오.",
|
|
39
|
+
"passwordConfirmFailed": "DSM에서 관리자 암호를 확인하지 못했습니다. 변경된 내용은 없습니다. 다시 시도하십시오.",
|
|
37
40
|
"confirmingHelp": "앱의 백그라운드 서비스가 시작되어 DSM에 확인하는 중입니다. 최대 1분 정도 걸릴 수 있습니다.",
|
|
38
41
|
"denied": "액세스가 거부되었습니다. 폴더 권한을 확인하고 다시 시도하십시오.",
|
|
39
42
|
"session": "DSM에 다시 로그인한 후 새로 고치십시오.",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "설치 시 사전 선택",
|
|
51
54
|
"preselectionHelp": "설치 시 사전 선택은 제안일 뿐입니다. 백그라운드 액세스를 활성화할 때 DSM 암호로 이 범위를 확인하십시오.",
|
|
52
55
|
"scopeMismatch": "설치 시 사전 선택이 확인된 범위와 다릅니다. 백그라운드 저장은 확인된 범위를 따릅니다.",
|
|
53
|
-
"scopeChangeHelp": "범위를 변경하면 기존 대상이 취소되고 대기 중인 저장이 취소됩니다. 사용자는 대상을 다시 선택해야 합니다. 저장된 파일은 유지됩니다.",
|
|
54
|
-
"confirmScope": "범위 변경 확인",
|
|
55
56
|
"waiting_executor": "시스템 서비스 시작을 기다리는 중",
|
|
56
57
|
"status": "상태",
|
|
57
58
|
"statusReady": "준비됨",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "공유 폴더 확인 필요",
|
|
60
61
|
"statusBlocked": "사용 불가",
|
|
61
62
|
"statusConfirming": "확인 중",
|
|
63
|
+
"statusUnreachable": "앱이 시스템 서비스로부터 응답을 받지 못했습니다. 가능한 원인: 응용 프로그램 포털 별칭 URL로 열었지만 앱이 이전 synopkgland CLI로 빌드됨, DSM 로그인이 만료됨, 또는 서비스가 아직 시작되지 않았거나 중지됨. DSM 데스크톱에서 앱을 열거나 페이지를 새로 고치십시오. 계속 실패하면 다시 승인하거나 앱 개발자에게 문의하십시오.",
|
|
64
|
+
"statusStarting": "앱의 백그라운드 서비스가 설치 또는 업그레이드 후 시작 단계를 아직 실행 중입니다. 잠시 후 새로 고치십시오. 계속되면 다시 승인하거나 앱 개발자에게 문의하십시오.",
|
|
62
65
|
"hintPassword": "DSM 비밀번호를 입력하면 확인할 수 있습니다.",
|
|
63
|
-
"hintUnchanged": "다른 범위를 선택해야 변경할 수 있습니다.",
|
|
64
66
|
"retry": "재시도"
|
|
65
67
|
}
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "任务已取消。委托撤销尚未完成,App 将自动重试。",
|
|
35
35
|
"error": "操作未完成,请刷新后重试。若持续失败,请联系管理员。",
|
|
36
36
|
"setupError": "批准未完成,请重新输入 DSM 密码后重试,或检查 App 设置。",
|
|
37
|
+
"passwordRejected": "DSM 密码不正确,请重新输入。",
|
|
38
|
+
"passwordRequired": "请输入 DSM 密码以批准。",
|
|
39
|
+
"passwordConfirmFailed": "DSM 无法确认管理员密码,未做任何更改,请重试。",
|
|
37
40
|
"confirmingHelp": "App 的后台服务正在启动并向 DSM 确认,最多可能需要一分钟。",
|
|
38
41
|
"denied": "访问被拒绝,请检查文件夹权限后重试。",
|
|
39
42
|
"session": "请重新登录 DSM,然后刷新。",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "安装时的预选",
|
|
51
54
|
"preselectionHelp": "安装时的预选仅供参考。启用后台访问时,请用 DSM 密码确认此范围。",
|
|
52
55
|
"scopeMismatch": "安装时的预选与已确认范围不同。后台保存将按已确认范围执行。",
|
|
53
|
-
"scopeChangeHelp": "更改范围会撤销现有目标,并取消待完成的保存。用户必须重新选择目标。已保存的文件会保留。",
|
|
54
|
-
"confirmScope": "确认更改范围",
|
|
55
56
|
"waiting_executor": "等待系统服务启动",
|
|
56
57
|
"status": "状态",
|
|
57
58
|
"statusReady": "就绪",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "需要确认共享文件夹",
|
|
60
61
|
"statusBlocked": "无法使用",
|
|
61
62
|
"statusConfirming": "确认中",
|
|
63
|
+
"statusUnreachable": "应用无法获得系统服务的响应。可能原因:通过应用程序门户的别名网址打开,而应用是用旧版 synopkgland CLI 构建的;DSM 登录已超时;或系统服务尚未启动或已停止。请改从 DSM 桌面打开应用或刷新页面;若仍失败,请重新批准或联系应用开发者。",
|
|
64
|
+
"statusStarting": "应用的后台服务在安装或升级后仍在运行启动步骤。请稍后刷新;若仍持续,请重新批准或联系应用开发者。",
|
|
62
65
|
"hintPassword": "输入 DSM 密码后即可确认。",
|
|
63
|
-
"hintUnchanged": "选择不同的范围后才能更换。",
|
|
64
66
|
"retry": "重试"
|
|
65
67
|
}
|
|
@@ -34,6 +34,9 @@
|
|
|
34
34
|
"pending": "工作已取消。委託尚未撤銷完成,App 會自動重試。",
|
|
35
35
|
"error": "操作未完成,請重新整理後再試。若持續失敗,請聯絡管理員。",
|
|
36
36
|
"setupError": "核准未完成,請重新輸入 DSM 密碼再試,或檢查 App 設定。",
|
|
37
|
+
"passwordRejected": "DSM 密碼不正確,請重新輸入。",
|
|
38
|
+
"passwordRequired": "請輸入 DSM 密碼以核准。",
|
|
39
|
+
"passwordConfirmFailed": "DSM 無法確認管理員密碼,沒有做任何變更,請再試一次。",
|
|
37
40
|
"confirmingHelp": "App 的背景服務正在啟動並向 DSM 確認,最多可能需要一分鐘。",
|
|
38
41
|
"denied": "存取遭拒,請檢查資料夾權限後再試。",
|
|
39
42
|
"session": "請重新登入 DSM,再重新整理。",
|
|
@@ -50,8 +53,6 @@
|
|
|
50
53
|
"preselection": "安裝時的預選",
|
|
51
54
|
"preselectionHelp": "安裝時的預選只供參考。啟用背景存取時,請以 DSM 密碼確認這個範圍。",
|
|
52
55
|
"scopeMismatch": "安裝時的預選與已確認範圍不同。背景儲存會依已確認範圍執行。",
|
|
53
|
-
"scopeChangeHelp": "更換範圍會撤銷既有目的地,並取消待完成的儲存。使用者必須重新選擇目的地。已儲存的檔案會保留。",
|
|
54
|
-
"confirmScope": "確認更換範圍",
|
|
55
56
|
"waiting_executor": "等待系統服務啟動",
|
|
56
57
|
"status": "狀態",
|
|
57
58
|
"statusReady": "就緒",
|
|
@@ -59,7 +60,8 @@
|
|
|
59
60
|
"statusScope": "需要確認共用資料夾",
|
|
60
61
|
"statusBlocked": "無法使用",
|
|
61
62
|
"statusConfirming": "確認中",
|
|
63
|
+
"statusUnreachable": "App 無法取得系統服務的回應。可能原因:從應用程式入口的別名網址開啟,而 App 是以舊版 synopkgland CLI 建置;DSM 登入已逾時;或系統服務尚未啟動或已停止。請改從 DSM 桌面開啟 App 或重新整理頁面;若仍失敗,請重新核准或聯絡 App 開發者。",
|
|
64
|
+
"statusStarting": "App 的背景服務在安裝或升級後仍在執行啟動步驟。請稍後重新整理;若仍持續,請重新核准或聯絡 App 開發者。",
|
|
62
65
|
"hintPassword": "輸入 DSM 密碼後即可確認。",
|
|
63
|
-
"hintUnchanged": "選擇不同的範圍後才能更換。",
|
|
64
66
|
"retry": "重試"
|
|
65
67
|
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"title": "使用 Synology
|
|
3
|
-
"intro": "使用这台 NAS
|
|
2
|
+
"title": "使用 Synology 账户登录",
|
|
3
|
+
"intro": "使用这台 NAS 上的账户登录此 App。",
|
|
4
4
|
"httpsTitle": "需要 HTTPS",
|
|
5
5
|
"failedTitle": "登录失败",
|
|
6
|
-
"account": "
|
|
6
|
+
"account": "账户",
|
|
7
7
|
"password": "密码",
|
|
8
8
|
"otpPrompt": "请输入身份验证器 App 中的验证码。",
|
|
9
9
|
"otp": "验证码",
|
|
10
10
|
"signingIn": "正在登录…",
|
|
11
11
|
"verify": "验证并登录",
|
|
12
12
|
"signIn": "登录",
|
|
13
|
-
"otherAccount": "
|
|
13
|
+
"otherAccount": "使用其他账户",
|
|
14
14
|
"continueDSM": "通过 DSM 继续",
|
|
15
15
|
"errors": {
|
|
16
16
|
"rate_limited": "登录尝试次数过多,请等待一分钟后重试。",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"session_required": "请先在此浏览器中登录 DSM,然后重试。",
|
|
20
20
|
"cross_origin": "登录已被拒绝:浏览器没有表明它来自此 App 的页面。请使用新版浏览器重新打开 App。",
|
|
21
21
|
"origin_required": "登录已被拒绝:浏览器没有表明它来自此 App 的页面。请使用新版浏览器重新打开 App。",
|
|
22
|
-
"failed": "
|
|
22
|
+
"failed": "无法完成登录。请检查账户和密码,或联系管理员。"
|
|
23
23
|
},
|
|
24
24
|
"notices": {
|
|
25
25
|
"expired": "登录已过期,请重新登录。",
|