@nocobase/app-template-default 1.0.0-beta.80 → 1.0.0-beta.82
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/.agents/rules/shell.md +2 -0
- package/.agents/rules/workspace.md +9 -0
- package/.prettierignore +3 -0
- package/AGENTS.md +2 -1
- package/README.MD +4 -0
- package/client/components/attachment-list.tsx +589 -0
- package/client/components/back-button.tsx +15 -4
- package/client/components/breadcrumbs.tsx +12 -1
- package/client/extensions/nocobase-file-component-ui/components/file-list.tsx +68 -71
- package/client/extensions/nocobase-file-component-ui/components/file-preview-dialog.tsx +26 -12
- package/client/extensions/nocobase-file-component-ui/components/file-preview-field.tsx +6 -6
- package/client/extensions/nocobase-file-component-ui/components/file-thumbnail.tsx +3 -3
- package/client/extensions/nocobase-file-component-ui/components/file-upload-field.tsx +19 -19
- package/client/extensions/nocobase-file-component-ui/components/previewers/file-preview-content.tsx +27 -19
- package/client/extensions/nocobase-file-component-ui/components/previewers/office-open-xml-preview.tsx +12 -8
- package/client/extensions/nocobase-file-component-ui/index.ts +6 -6
- package/client/extensions/nocobase-file-component-ui/lib/message-key.ts +14 -11
- package/client/extensions/nocobase-file-component-ui/locales/de-DE.ts +49 -0
- package/client/extensions/nocobase-file-component-ui/locales/en-US.ts +47 -0
- package/client/extensions/nocobase-file-component-ui/locales/es-ES.ts +48 -0
- package/client/extensions/nocobase-file-component-ui/locales/fr-FR.ts +49 -0
- package/client/extensions/nocobase-file-component-ui/locales/id-ID.ts +46 -0
- package/client/extensions/nocobase-file-component-ui/locales/ja-JP.ts +51 -0
- package/client/extensions/nocobase-file-component-ui/locales/pt-BR.ts +49 -0
- package/client/extensions/nocobase-file-component-ui/locales/vi-VN.ts +47 -0
- package/client/extensions/nocobase-file-component-ui/locales/zh-CN.ts +43 -0
- package/client/extensions/nocobase-file-component-ui/locales/zh-TW.ts +43 -0
- package/client/extensions/nocobase-file-component-ui/types.ts +3 -1
- package/client/locales/en-US.ts +2 -0
- package/client/locales/system/settings-en-US.ts +3 -0
- package/client/locales/system/settings-zh-CN.ts +2 -0
- package/client/locales/zh-CN.ts +2 -0
- package/client/pages/settings/role-form.tsx +5 -1
- package/client/pages/settings/user-form.tsx +13 -1
- package/client/pages/settings/users.tsx +1 -1
- package/client/routing/route-context.tsx +33 -1
- package/eslint.config.js +2 -0
- package/package.json +23 -21
- package/scripts/check-packages.mjs +46 -0
- package/tailwind.config.mjs +3 -9
- package/tests/client/list-return-state.test.tsx +202 -0
- package/tests/client/role-return.test.tsx +104 -0
- package/tests/client/user-drawer.test.tsx +48 -0
- package/tests/project/internal-packages.test.ts +98 -0
- package/tests/project/tailwind-sources.test.ts +2 -2
- package/tests/server/authorization-assignment-safety.test.ts +10 -9
- package/tests/server/member-role.test.ts +299 -0
- package/client/extensions/nocobase-file-component-ui/README.md +0 -13
package/client/extensions/nocobase-file-component-ui/components/previewers/file-preview-content.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { messageKey } from '../../lib/message-key.js';
|
|
2
2
|
import { useTranslation } from '@nocobase/i18n/client';
|
|
3
|
-
import type { FileRecord } from '../../types';
|
|
3
|
+
import type { FileRecord } from '../../types.js';
|
|
4
4
|
import { useEffect, useRef, useState, type ReactElement } from 'react';
|
|
5
5
|
import ReactMarkdown from 'react-markdown';
|
|
6
6
|
import remarkGfm from 'remark-gfm';
|
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
resolveOfficeEmbedUrl,
|
|
10
10
|
resolveOfficeOpenXmlFormat,
|
|
11
11
|
type FilePreviewKind,
|
|
12
|
-
} from '../../lib/file-preview';
|
|
12
|
+
} from '../../lib/file-preview.js';
|
|
13
13
|
import { Button } from '#components/ui/button';
|
|
14
|
-
import { resolveSafeFileUrl } from '../../lib/file-url';
|
|
15
|
-
import { FileThumbnail } from '../file-thumbnail';
|
|
14
|
+
import { resolveSafeFileUrl } from '../../lib/file-url.js';
|
|
15
|
+
import { FileThumbnail } from '../file-thumbnail.js';
|
|
16
16
|
|
|
17
|
-
import { OfficeOpenXmlPreview } from './office-open-xml-preview';
|
|
17
|
+
import { OfficeOpenXmlPreview } from './office-open-xml-preview.js';
|
|
18
18
|
|
|
19
19
|
const OFFICE_PREVIEW_TIMEOUT_MS = 15_000;
|
|
20
20
|
|
|
@@ -30,7 +30,7 @@ export interface FilePreviewContentProps {
|
|
|
30
30
|
export function FilePreviewContent(
|
|
31
31
|
inputProps: FilePreviewContentProps,
|
|
32
32
|
): ReactElement {
|
|
33
|
-
const { t } = useTranslation(
|
|
33
|
+
const { t } = useTranslation();
|
|
34
34
|
const { file, kind, url, text, error, onDownload } = inputProps;
|
|
35
35
|
|
|
36
36
|
const format =
|
|
@@ -67,7 +67,9 @@ export function FilePreviewContent(
|
|
|
67
67
|
<DownloadFallback file={file} onDownload={onDownload} />
|
|
68
68
|
) : (
|
|
69
69
|
<div role='status'>
|
|
70
|
-
{t('files.loadingPreview', {
|
|
70
|
+
{t('fileUi.files.loadingPreview', {
|
|
71
|
+
defaultValue: 'Loading preview...',
|
|
72
|
+
})}
|
|
71
73
|
</div>
|
|
72
74
|
);
|
|
73
75
|
switch (kind) {
|
|
@@ -87,7 +89,9 @@ export function FilePreviewContent(
|
|
|
87
89
|
return (
|
|
88
90
|
<pre className='max-h-[70vh] overflow-auto whitespace-pre-wrap rounded-md bg-muted p-3 text-sm'>
|
|
89
91
|
{text ??
|
|
90
|
-
t('files.loadingPreview', {
|
|
92
|
+
t('fileUi.files.loadingPreview', {
|
|
93
|
+
defaultValue: 'Loading preview...',
|
|
94
|
+
})}
|
|
91
95
|
</pre>
|
|
92
96
|
);
|
|
93
97
|
default:
|
|
@@ -96,13 +100,15 @@ export function FilePreviewContent(
|
|
|
96
100
|
}
|
|
97
101
|
|
|
98
102
|
function MarkdownPreview(inputProps: { readonly text?: string }): ReactElement {
|
|
99
|
-
const { t } = useTranslation(
|
|
103
|
+
const { t } = useTranslation();
|
|
100
104
|
const { text } = inputProps;
|
|
101
105
|
|
|
102
106
|
if (text === undefined)
|
|
103
107
|
return (
|
|
104
108
|
<div role='status'>
|
|
105
|
-
{t('files.loadingPreview', {
|
|
109
|
+
{t('fileUi.files.loadingPreview', {
|
|
110
|
+
defaultValue: 'Loading preview...',
|
|
111
|
+
})}
|
|
106
112
|
</div>
|
|
107
113
|
);
|
|
108
114
|
return (
|
|
@@ -129,7 +135,7 @@ function ImagePreview(inputProps: {
|
|
|
129
135
|
readonly url: string;
|
|
130
136
|
readonly onDownload?: () => void;
|
|
131
137
|
}): ReactElement {
|
|
132
|
-
const { t } = useTranslation(
|
|
138
|
+
const { t } = useTranslation();
|
|
133
139
|
const { file, url, onDownload } = inputProps;
|
|
134
140
|
|
|
135
141
|
// The browser decodes the image itself, so its error event is the only signal
|
|
@@ -140,7 +146,7 @@ function ImagePreview(inputProps: {
|
|
|
140
146
|
return (
|
|
141
147
|
<DownloadFallback
|
|
142
148
|
file={file}
|
|
143
|
-
message={t('files.imageFailed', {
|
|
149
|
+
message={t('fileUi.files.imageFailed', {
|
|
144
150
|
defaultValue:
|
|
145
151
|
'This image could not be displayed. It may be corrupted or in an unsupported format.',
|
|
146
152
|
})}
|
|
@@ -164,7 +170,7 @@ function OfficePreview(inputProps: {
|
|
|
164
170
|
readonly error?: string;
|
|
165
171
|
readonly onDownload?: () => void;
|
|
166
172
|
}): ReactElement {
|
|
167
|
-
const { t } = useTranslation(
|
|
173
|
+
const { t } = useTranslation();
|
|
168
174
|
const { file, url, error, onDownload } = inputProps;
|
|
169
175
|
|
|
170
176
|
const [failed, setFailed] = useState(false);
|
|
@@ -189,7 +195,9 @@ function OfficePreview(inputProps: {
|
|
|
189
195
|
if (!url && !error)
|
|
190
196
|
return (
|
|
191
197
|
<div role='status'>
|
|
192
|
-
{t('files.loadingPreview', {
|
|
198
|
+
{t('fileUi.files.loadingPreview', {
|
|
199
|
+
defaultValue: 'Loading preview...',
|
|
200
|
+
})}
|
|
193
201
|
</div>
|
|
194
202
|
);
|
|
195
203
|
if (!embedUrl || failed) {
|
|
@@ -199,10 +207,10 @@ function OfficePreview(inputProps: {
|
|
|
199
207
|
message={
|
|
200
208
|
(error ? t(messageKey(error), { defaultValue: error }) : undefined) ??
|
|
201
209
|
(failed
|
|
202
|
-
? t('files.officeFailed', {
|
|
210
|
+
? t('fileUi.files.officeFailed', {
|
|
203
211
|
defaultValue: 'Office Online could not load this file.',
|
|
204
212
|
})
|
|
205
|
-
: t('files.officeUrl', {
|
|
213
|
+
: t('fileUi.files.officeUrl', {
|
|
206
214
|
defaultValue:
|
|
207
215
|
'Office Online requires an internet-accessible absolute file URL.',
|
|
208
216
|
}))
|
|
@@ -228,10 +236,10 @@ function DownloadFallback(inputProps: {
|
|
|
228
236
|
readonly thumbnailIconOnly?: boolean;
|
|
229
237
|
readonly onDownload?: () => void;
|
|
230
238
|
}): ReactElement {
|
|
231
|
-
const { t } = useTranslation(
|
|
239
|
+
const { t } = useTranslation();
|
|
232
240
|
const {
|
|
233
241
|
file,
|
|
234
|
-
message = t('files.previewUnavailable', {
|
|
242
|
+
message = t('fileUi.files.previewUnavailable', {
|
|
235
243
|
defaultValue: 'Preview is unavailable for this file type.',
|
|
236
244
|
}),
|
|
237
245
|
thumbnailIconOnly = false,
|
|
@@ -247,7 +255,7 @@ function DownloadFallback(inputProps: {
|
|
|
247
255
|
<p>{message}</p>
|
|
248
256
|
{onDownload ? (
|
|
249
257
|
<Button type='button' onClick={onDownload}>
|
|
250
|
-
{t('files.downloadFile', { defaultValue: 'Download file' })}
|
|
258
|
+
{t('fileUi.files.downloadFile', { defaultValue: 'Download file' })}
|
|
251
259
|
</Button>
|
|
252
260
|
) : null}
|
|
253
261
|
</div>
|
|
@@ -31,7 +31,7 @@ export function OfficeOpenXmlPreview({
|
|
|
31
31
|
error,
|
|
32
32
|
onDownload,
|
|
33
33
|
}: OfficeOpenXmlPreviewProps): ReactElement {
|
|
34
|
-
const { t } = useTranslation(
|
|
34
|
+
const { t } = useTranslation();
|
|
35
35
|
const hostRef = useRef<HTMLDivElement>(null);
|
|
36
36
|
const [loaded, setLoaded] = useState(false);
|
|
37
37
|
const [viewerError, setViewerError] = useState<string>();
|
|
@@ -53,7 +53,7 @@ export function OfficeOpenXmlPreview({
|
|
|
53
53
|
setViewerError(
|
|
54
54
|
cause instanceof OfficeOpenXmlPreviewError
|
|
55
55
|
? cause.message
|
|
56
|
-
: t('files.ooxmlLoadFailed', {
|
|
56
|
+
: t('fileUi.files.ooxmlLoadFailed', {
|
|
57
57
|
defaultValue: 'Unable to render this Office Open XML file.',
|
|
58
58
|
}),
|
|
59
59
|
);
|
|
@@ -61,7 +61,7 @@ export function OfficeOpenXmlPreview({
|
|
|
61
61
|
const timeout = window.setTimeout(() => {
|
|
62
62
|
reportViewerError(
|
|
63
63
|
new OfficeOpenXmlPreviewError(
|
|
64
|
-
t('files.ooxmlLoadTimedOut', {
|
|
64
|
+
t('fileUi.files.ooxmlLoadTimedOut', {
|
|
65
65
|
defaultValue: `The preview did not finish loading within ${OFFICE_OPEN_XML_PREVIEW_TIMEOUT_MS / 60_000} minutes.`,
|
|
66
66
|
minutes: OFFICE_OPEN_XML_PREVIEW_TIMEOUT_MS / 60_000,
|
|
67
67
|
}),
|
|
@@ -110,7 +110,9 @@ export function OfficeOpenXmlPreview({
|
|
|
110
110
|
if (!url) {
|
|
111
111
|
return (
|
|
112
112
|
<div role='status'>
|
|
113
|
-
{t('files.loadingPreview', {
|
|
113
|
+
{t('fileUi.files.loadingPreview', {
|
|
114
|
+
defaultValue: 'Loading preview...',
|
|
115
|
+
})}
|
|
114
116
|
</div>
|
|
115
117
|
);
|
|
116
118
|
}
|
|
@@ -122,7 +124,9 @@ export function OfficeOpenXmlPreview({
|
|
|
122
124
|
role='status'
|
|
123
125
|
className='absolute inset-0 z-10 flex items-center justify-center bg-background'
|
|
124
126
|
>
|
|
125
|
-
{t('files.loadingPreview', {
|
|
127
|
+
{t('fileUi.files.loadingPreview', {
|
|
128
|
+
defaultValue: 'Loading preview...',
|
|
129
|
+
})}
|
|
126
130
|
</div>
|
|
127
131
|
) : null}
|
|
128
132
|
<div
|
|
@@ -148,7 +152,7 @@ async function fetchOfficeOpenXml(
|
|
|
148
152
|
});
|
|
149
153
|
if (!response.ok) {
|
|
150
154
|
throw new OfficeOpenXmlPreviewError(
|
|
151
|
-
t('files.previewRequestFailed', {
|
|
155
|
+
t('fileUi.files.previewRequestFailed', {
|
|
152
156
|
defaultValue: `Preview request failed (${response.status}).`,
|
|
153
157
|
status: response.status,
|
|
154
158
|
}),
|
|
@@ -209,7 +213,7 @@ function OfficeOpenXmlDownloadFallback({
|
|
|
209
213
|
readonly message: string;
|
|
210
214
|
readonly onDownload?: () => void;
|
|
211
215
|
}): ReactElement {
|
|
212
|
-
const { t } = useTranslation(
|
|
216
|
+
const { t } = useTranslation();
|
|
213
217
|
return (
|
|
214
218
|
<div className='flex flex-col items-center gap-3 py-8'>
|
|
215
219
|
<div className='h-24 w-24'>
|
|
@@ -218,7 +222,7 @@ function OfficeOpenXmlDownloadFallback({
|
|
|
218
222
|
<p role='alert'>{message}</p>
|
|
219
223
|
{onDownload ? (
|
|
220
224
|
<Button type='button' onClick={onDownload}>
|
|
221
|
-
{t('files.downloadFile', { defaultValue: 'Download file' })}
|
|
225
|
+
{t('fileUi.files.downloadFile', { defaultValue: 'Download file' })}
|
|
222
226
|
</Button>
|
|
223
227
|
) : null}
|
|
224
228
|
</div>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { FileList } from './components/file-list';
|
|
2
|
-
export { FilePreviewDialog } from './components/file-preview-dialog';
|
|
3
|
-
export { FilePreviewField } from './components/file-preview-field';
|
|
4
|
-
export { FileThumbnail } from './components/file-thumbnail';
|
|
5
|
-
export { FileUploadField } from './components/file-upload-field';
|
|
6
|
-
export type * from './types';
|
|
1
|
+
export { FileList } from './components/file-list.js';
|
|
2
|
+
export { FilePreviewDialog } from './components/file-preview-dialog.js';
|
|
3
|
+
export { FilePreviewField } from './components/file-preview-field.js';
|
|
4
|
+
export { FileThumbnail } from './components/file-thumbnail.js';
|
|
5
|
+
export { FileUploadField } from './components/file-upload-field.js';
|
|
6
|
+
export type * from './types.js';
|
|
7
7
|
export { clientFileRepositoryManagerToken } from '@nocobase/app-plugin-file/client';
|
|
8
8
|
export type { ClientFileRepository } from '@nocobase/app-plugin-file/client';
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
// Built-in errors remain readable when passed between Registry components.
|
|
2
2
|
const messageKeys = new Map<string, string>([
|
|
3
|
-
['File upload failed.', 'uploadFailed'],
|
|
4
|
-
['The maximum number of files has been reached.', 'fileLimitReached'],
|
|
5
|
-
['File exceeds the maximum size.', 'fileTooLarge'],
|
|
6
|
-
['File type is not allowed.', 'fileTypeNotAllowed'],
|
|
7
|
-
['File removal failed.', 'removalFailed'],
|
|
8
|
-
['File URL is not allowed.', 'urlNotAllowed'],
|
|
9
|
-
['File download failed.', 'downloadFailed'],
|
|
10
|
-
['File URL is missing or not allowed.', 'invalidUrl'],
|
|
11
|
-
['Unable to load the PDF preview.', 'pdfPreviewFailed'],
|
|
12
|
-
[
|
|
13
|
-
|
|
3
|
+
['File upload failed.', 'fileUi.uploadFailed'],
|
|
4
|
+
['The maximum number of files has been reached.', 'fileUi.fileLimitReached'],
|
|
5
|
+
['File exceeds the maximum size.', 'fileUi.fileTooLarge'],
|
|
6
|
+
['File type is not allowed.', 'fileUi.fileTypeNotAllowed'],
|
|
7
|
+
['File removal failed.', 'fileUi.removalFailed'],
|
|
8
|
+
['File URL is not allowed.', 'fileUi.urlNotAllowed'],
|
|
9
|
+
['File download failed.', 'fileUi.downloadFailed'],
|
|
10
|
+
['File URL is missing or not allowed.', 'fileUi.invalidUrl'],
|
|
11
|
+
['Unable to load the PDF preview.', 'fileUi.pdfPreviewFailed'],
|
|
12
|
+
[
|
|
13
|
+
'The file URL returned HTML or XML instead of a PDF.',
|
|
14
|
+
'fileUi.pdfPreviewMarkup',
|
|
15
|
+
],
|
|
16
|
+
['Unable to load the file preview.', 'fileUi.previewFailed'],
|
|
14
17
|
]);
|
|
15
18
|
|
|
16
19
|
export function messageKey(message: string): string {
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { FileUiResource } from './en-US.js';
|
|
2
|
+
const messages = {
|
|
3
|
+
'files.ooxmlLoadFailed':
|
|
4
|
+
'Diese Office Open XML-Datei kann nicht gerendert werden.',
|
|
5
|
+
'files.ooxmlLoadTimedOut':
|
|
6
|
+
'Die Vorschau wurde nicht innerhalb von {{minutes}} Minuten vollständig geladen.',
|
|
7
|
+
'files.previewRequestFailed':
|
|
8
|
+
'Vorschauanforderung fehlgeschlagen ({{status}}).',
|
|
9
|
+
uploadFailed: 'Datei-Upload fehlgeschlagen.',
|
|
10
|
+
fileLimitReached: 'Die maximale Anzahl an Dateien wurde erreicht.',
|
|
11
|
+
fileTooLarge: 'Datei überschreitet die maximale Größe.',
|
|
12
|
+
fileTypeNotAllowed: 'Dateityp ist nicht zulässig.',
|
|
13
|
+
removalFailed: 'Das Entfernen der Datei ist fehlgeschlagen.',
|
|
14
|
+
urlNotAllowed: 'Datei URL ist nicht zulässig.',
|
|
15
|
+
downloadFailed: 'Datei-Download fehlgeschlagen.',
|
|
16
|
+
invalidUrl: 'Datei URL fehlt oder ist nicht zulässig.',
|
|
17
|
+
pdfPreviewFailed: 'Die PDF-Vorschau kann nicht geladen werden.',
|
|
18
|
+
pdfPreviewMarkup: 'Die Datei URL gab HTML oder XML statt einer PDF zurück.',
|
|
19
|
+
previewFailed: 'Die Dateivorschau konnte nicht geladen werden.',
|
|
20
|
+
'files.empty': 'Keine Akten.',
|
|
21
|
+
'files.preview': 'Vorschau',
|
|
22
|
+
'files.download': 'Herunterladen',
|
|
23
|
+
'files.remove': 'Entfernen',
|
|
24
|
+
'files.chooseMany': 'Dateien auswählen',
|
|
25
|
+
'files.chooseOne': 'Datei auswählen',
|
|
26
|
+
'files.retry': 'Erneut versuchen',
|
|
27
|
+
'files.done': 'Erledigt',
|
|
28
|
+
'files.uploading': 'Hochladen',
|
|
29
|
+
'files.failed': 'Fehlgeschlagen',
|
|
30
|
+
'files.pending': 'Ausstehend',
|
|
31
|
+
'files.previous': 'Vorherige Datei',
|
|
32
|
+
'files.next': 'Nächste Datei',
|
|
33
|
+
'files.loadingPreview': 'Vorschau wird geladen...',
|
|
34
|
+
'files.downloadFile': 'Datei herunterladen',
|
|
35
|
+
'files.previewUnavailable':
|
|
36
|
+
'Die Vorschau ist für diesen Dateityp nicht verfügbar.',
|
|
37
|
+
'files.imageFailed':
|
|
38
|
+
'Dieses Bild konnte nicht angezeigt werden. Möglicherweise ist es beschädigt oder liegt in einem nicht unterstützten Format vor.',
|
|
39
|
+
'files.officeFailed': 'Office Online konnte diese Datei nicht laden.',
|
|
40
|
+
'files.officeUrl':
|
|
41
|
+
'Office Online erfordert eine über das Internet zugängliche absolute Datei URL.',
|
|
42
|
+
'files.cancelFile': 'Abbrechen {{filename}}',
|
|
43
|
+
'files.status.uploading': 'Hochladen',
|
|
44
|
+
'files.status.pending': 'Ausstehend',
|
|
45
|
+
'files.status.error': 'Fehlgeschlagen',
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const resource: FileUiResource = { fileUi: messages };
|
|
49
|
+
export default resource;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { LocaleResource } from '@nocobase/i18n';
|
|
2
|
+
const messages = {
|
|
3
|
+
'files.ooxmlLoadFailed': 'Unable to render this Office Open XML file.',
|
|
4
|
+
'files.ooxmlLoadTimedOut':
|
|
5
|
+
'The preview did not finish loading within {{minutes}} minutes.',
|
|
6
|
+
'files.previewRequestFailed': 'Preview request failed ({{status}}).',
|
|
7
|
+
uploadFailed: 'File upload failed.',
|
|
8
|
+
fileLimitReached: 'The maximum number of files has been reached.',
|
|
9
|
+
fileTooLarge: 'File exceeds the maximum size.',
|
|
10
|
+
fileTypeNotAllowed: 'File type is not allowed.',
|
|
11
|
+
removalFailed: 'File removal failed.',
|
|
12
|
+
urlNotAllowed: 'File URL is not allowed.',
|
|
13
|
+
downloadFailed: 'File download failed.',
|
|
14
|
+
invalidUrl: 'File URL is missing or not allowed.',
|
|
15
|
+
pdfPreviewFailed: 'Unable to load the PDF preview.',
|
|
16
|
+
pdfPreviewMarkup: 'The file URL returned HTML or XML instead of a PDF.',
|
|
17
|
+
previewFailed: 'Unable to load the file preview.',
|
|
18
|
+
'files.empty': 'No files.',
|
|
19
|
+
'files.preview': 'Preview',
|
|
20
|
+
'files.download': 'Download',
|
|
21
|
+
'files.remove': 'Remove',
|
|
22
|
+
'files.chooseMany': 'Choose files',
|
|
23
|
+
'files.chooseOne': 'Choose file',
|
|
24
|
+
'files.retry': 'Retry',
|
|
25
|
+
'files.done': 'Done',
|
|
26
|
+
'files.uploading': 'Uploading',
|
|
27
|
+
'files.failed': 'Failed',
|
|
28
|
+
'files.pending': 'Pending',
|
|
29
|
+
'files.previous': 'Previous file',
|
|
30
|
+
'files.next': 'Next file',
|
|
31
|
+
'files.loadingPreview': 'Loading preview...',
|
|
32
|
+
'files.downloadFile': 'Download file',
|
|
33
|
+
'files.previewUnavailable': 'Preview is unavailable for this file type.',
|
|
34
|
+
'files.imageFailed':
|
|
35
|
+
'This image could not be displayed. It may be corrupted or in an unsupported format.',
|
|
36
|
+
'files.officeFailed': 'Office Online could not load this file.',
|
|
37
|
+
'files.officeUrl':
|
|
38
|
+
'Office Online requires an internet-accessible absolute file URL.',
|
|
39
|
+
'files.cancelFile': 'Cancel {{filename}}',
|
|
40
|
+
'files.status.uploading': 'Uploading',
|
|
41
|
+
'files.status.pending': 'Pending',
|
|
42
|
+
'files.status.error': 'Failed',
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const resource: { fileUi: typeof messages } = { fileUi: messages };
|
|
46
|
+
export type FileUiResource = LocaleResource<typeof resource>;
|
|
47
|
+
export default resource;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { FileUiResource } from './en-US.js';
|
|
2
|
+
const messages = {
|
|
3
|
+
'files.ooxmlLoadFailed': 'No se puede procesar este archivo Office Open XML.',
|
|
4
|
+
'files.ooxmlLoadTimedOut':
|
|
5
|
+
'La vista previa no terminó de cargarse en {{minutes}} minutos.',
|
|
6
|
+
'files.previewRequestFailed':
|
|
7
|
+
'La solicitud de vista previa falló ({{status}}).',
|
|
8
|
+
uploadFailed: 'Falló la carga del archivo.',
|
|
9
|
+
fileLimitReached: 'Se alcanzó el número máximo de archivos.',
|
|
10
|
+
fileTooLarge: 'El archivo excede el tamaño máximo.',
|
|
11
|
+
fileTypeNotAllowed: 'El tipo de archivo no está permitido.',
|
|
12
|
+
removalFailed: 'Falló la eliminación del archivo.',
|
|
13
|
+
urlNotAllowed: 'El archivo URL no está permitido.',
|
|
14
|
+
downloadFailed: 'Falló la descarga del archivo.',
|
|
15
|
+
invalidUrl: 'Falta el archivo URL o no está permitido.',
|
|
16
|
+
pdfPreviewFailed: 'No se puede cargar la vista previa del PDF.',
|
|
17
|
+
pdfPreviewMarkup: 'El archivo URL devolvió HTML o XML en lugar de un PDF.',
|
|
18
|
+
previewFailed: 'No se puede cargar la vista previa del archivo.',
|
|
19
|
+
'files.empty': 'Sin archivos.',
|
|
20
|
+
'files.preview': 'Vista previa',
|
|
21
|
+
'files.download': 'Descargar',
|
|
22
|
+
'files.remove': 'Quitar',
|
|
23
|
+
'files.chooseMany': 'Elegir archivos',
|
|
24
|
+
'files.chooseOne': 'Elegir archivo',
|
|
25
|
+
'files.retry': 'Reintentar',
|
|
26
|
+
'files.done': 'Hecho',
|
|
27
|
+
'files.uploading': 'Subiendo',
|
|
28
|
+
'files.failed': 'Falló',
|
|
29
|
+
'files.pending': 'Pendiente',
|
|
30
|
+
'files.previous': 'Archivo anterior',
|
|
31
|
+
'files.next': 'Siguiente archivo',
|
|
32
|
+
'files.loadingPreview': 'Cargando vista previa...',
|
|
33
|
+
'files.downloadFile': 'Descargar archivo',
|
|
34
|
+
'files.previewUnavailable':
|
|
35
|
+
'La vista previa no está disponible para este tipo de archivo.',
|
|
36
|
+
'files.imageFailed':
|
|
37
|
+
'Esta imagen no se pudo mostrar. Puede que esté dañado o tenga un formato no compatible.',
|
|
38
|
+
'files.officeFailed': 'Office Online no pudo cargar este archivo.',
|
|
39
|
+
'files.officeUrl':
|
|
40
|
+
'Office Online requiere un archivo absoluto accesible desde Internet URL.',
|
|
41
|
+
'files.cancelFile': 'Cancelar {{filename}}',
|
|
42
|
+
'files.status.uploading': 'Subiendo',
|
|
43
|
+
'files.status.pending': 'Pendiente',
|
|
44
|
+
'files.status.error': 'Falló',
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const resource: FileUiResource = { fileUi: messages };
|
|
48
|
+
export default resource;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { FileUiResource } from './en-US.js';
|
|
2
|
+
const messages = {
|
|
3
|
+
'files.ooxmlLoadFailed':
|
|
4
|
+
'Impossible de restituer ce fichier Office Open XML.',
|
|
5
|
+
'files.ooxmlLoadTimedOut':
|
|
6
|
+
"Le chargement de l'aperçu n'a pas été terminé dans les minutes {{minutes}}.",
|
|
7
|
+
'files.previewRequestFailed': "La demande d'aperçu a échoué ({{status}}).",
|
|
8
|
+
uploadFailed: 'Le téléchargement du fichier a échoué.',
|
|
9
|
+
fileLimitReached: 'Le nombre maximum de fichiers a été atteint.',
|
|
10
|
+
fileTooLarge: 'Le fichier dépasse la taille maximale.',
|
|
11
|
+
fileTypeNotAllowed: "Le type de fichier n'est pas autorisé.",
|
|
12
|
+
removalFailed: 'La suppression du fichier a échoué.',
|
|
13
|
+
urlNotAllowed: "Le fichier URL n'est pas autorisé.",
|
|
14
|
+
downloadFailed: 'Le téléchargement du fichier a échoué.',
|
|
15
|
+
invalidUrl: "Le fichier URL est manquant ou n'est pas autorisé.",
|
|
16
|
+
pdfPreviewFailed: "Impossible de charger l'aperçu PDF.",
|
|
17
|
+
pdfPreviewMarkup:
|
|
18
|
+
"Le fichier URL renvoie du HTML ou du XML au lieu d'un PDF.",
|
|
19
|
+
previewFailed: "Impossible de charger l'aperçu du fichier.",
|
|
20
|
+
'files.empty': 'Aucun dossier.',
|
|
21
|
+
'files.preview': 'Aperçu',
|
|
22
|
+
'files.download': 'Télécharger',
|
|
23
|
+
'files.remove': 'Supprimer',
|
|
24
|
+
'files.chooseMany': 'Choisir les fichiers',
|
|
25
|
+
'files.chooseOne': 'Choisir un fichier',
|
|
26
|
+
'files.retry': 'Réessayer',
|
|
27
|
+
'files.done': 'Terminé',
|
|
28
|
+
'files.uploading': 'Téléchargement',
|
|
29
|
+
'files.failed': 'Échec',
|
|
30
|
+
'files.pending': 'En attente',
|
|
31
|
+
'files.previous': 'Fichier précédent',
|
|
32
|
+
'files.next': 'Fichier suivant',
|
|
33
|
+
'files.loadingPreview': "Chargement de l'aperçu...",
|
|
34
|
+
'files.downloadFile': 'Télécharger le fichier',
|
|
35
|
+
'files.previewUnavailable':
|
|
36
|
+
"L'aperçu n'est pas disponible pour ce type de fichier.",
|
|
37
|
+
'files.imageFailed':
|
|
38
|
+
"Cette image n'a pas pu être affichée. Il est peut-être corrompu ou dans un format non pris en charge.",
|
|
39
|
+
'files.officeFailed': "Office Online n'a pas pu charger ce fichier.",
|
|
40
|
+
'files.officeUrl':
|
|
41
|
+
'Office Online nécessite un fichier absolu URL accessible sur Internet.',
|
|
42
|
+
'files.cancelFile': 'Annuler {{filename}}',
|
|
43
|
+
'files.status.uploading': 'Téléchargement',
|
|
44
|
+
'files.status.pending': 'En attente',
|
|
45
|
+
'files.status.error': 'Échec',
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const resource: FileUiResource = { fileUi: messages };
|
|
49
|
+
export default resource;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { FileUiResource } from './en-US.js';
|
|
2
|
+
const messages = {
|
|
3
|
+
'files.ooxmlLoadFailed': 'Tidak dapat merender file Office Open XML ini.',
|
|
4
|
+
'files.ooxmlLoadTimedOut':
|
|
5
|
+
'Pratinjau tidak selesai dimuat dalam waktu {{minutes}} menit.',
|
|
6
|
+
'files.previewRequestFailed': 'Permintaan pratinjau gagal ({{status}}).',
|
|
7
|
+
uploadFailed: 'Pengunggahan file gagal.',
|
|
8
|
+
fileLimitReached: 'Jumlah maksimum file telah tercapai.',
|
|
9
|
+
fileTooLarge: 'File melebihi ukuran maksimum.',
|
|
10
|
+
fileTypeNotAllowed: 'Jenis file tidak diperbolehkan.',
|
|
11
|
+
removalFailed: 'Penghapusan file gagal.',
|
|
12
|
+
urlNotAllowed: 'File URL tidak diperbolehkan.',
|
|
13
|
+
downloadFailed: 'Pengunduhan file gagal.',
|
|
14
|
+
invalidUrl: 'File URL hilang atau tidak diizinkan.',
|
|
15
|
+
pdfPreviewFailed: 'Tidak dapat memuat pratinjau PDF.',
|
|
16
|
+
pdfPreviewMarkup: 'File URL mengembalikan HTML atau XML, bukan PDF.',
|
|
17
|
+
previewFailed: 'Tidak dapat memuat pratinjau file.',
|
|
18
|
+
'files.empty': 'Tidak ada file.',
|
|
19
|
+
'files.preview': 'Pratinjau',
|
|
20
|
+
'files.download': 'Unduh',
|
|
21
|
+
'files.remove': 'Hapus',
|
|
22
|
+
'files.chooseMany': 'Pilih file',
|
|
23
|
+
'files.chooseOne': 'Pilih berkas',
|
|
24
|
+
'files.retry': 'Coba lagi',
|
|
25
|
+
'files.done': 'Selesai',
|
|
26
|
+
'files.uploading': 'Mengunggah',
|
|
27
|
+
'files.failed': 'Gagal',
|
|
28
|
+
'files.pending': 'Tertunda',
|
|
29
|
+
'files.previous': 'Berkas sebelumnya',
|
|
30
|
+
'files.next': 'Berkas selanjutnya',
|
|
31
|
+
'files.loadingPreview': 'Memuat pratinjau...',
|
|
32
|
+
'files.downloadFile': 'Unduh berkas',
|
|
33
|
+
'files.previewUnavailable': 'Pratinjau tidak tersedia untuk jenis file ini.',
|
|
34
|
+
'files.imageFailed':
|
|
35
|
+
'Gambar ini tidak dapat ditampilkan. Mungkin rusak atau dalam format yang tidak didukung.',
|
|
36
|
+
'files.officeFailed': 'Office Online tidak dapat memuat file ini.',
|
|
37
|
+
'files.officeUrl':
|
|
38
|
+
'Office Online memerlukan file absolut URL yang dapat diakses internet.',
|
|
39
|
+
'files.cancelFile': 'Batalkan {{filename}}',
|
|
40
|
+
'files.status.uploading': 'Mengunggah',
|
|
41
|
+
'files.status.pending': 'Tertunda',
|
|
42
|
+
'files.status.error': 'Gagal',
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const resource: FileUiResource = { fileUi: messages };
|
|
46
|
+
export default resource;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { FileUiResource } from './en-US.js';
|
|
2
|
+
const messages = {
|
|
3
|
+
'files.ooxmlLoadFailed':
|
|
4
|
+
'この Office Open XML ファイルをレンダリングできません。',
|
|
5
|
+
'files.ooxmlLoadTimedOut':
|
|
6
|
+
'プレビューのロードが {{minutes}} 分以内に完了しませんでした。',
|
|
7
|
+
'files.previewRequestFailed':
|
|
8
|
+
'プレビューリクエストが失敗しました({{status}})。',
|
|
9
|
+
uploadFailed: 'ファイルのアップロードに失敗しました。',
|
|
10
|
+
fileLimitReached: 'ファイル数が上限に達しました。',
|
|
11
|
+
fileTooLarge: 'ファイルが最大サイズを超えています。',
|
|
12
|
+
fileTypeNotAllowed: 'ファイルタイプは許可されていません。',
|
|
13
|
+
removalFailed: 'ファイルの削除に失敗しました。',
|
|
14
|
+
urlNotAllowed: 'ファイル URL は許可されません。',
|
|
15
|
+
downloadFailed: 'ファイルのダウンロードに失敗しました。',
|
|
16
|
+
invalidUrl: 'ファイル URL が見つからないか、許可されていません。',
|
|
17
|
+
pdfPreviewFailed: 'PDF プレビューを読み込めません。',
|
|
18
|
+
pdfPreviewMarkup:
|
|
19
|
+
'ファイル URL は PDF ではなく HTML または XML を返しました。',
|
|
20
|
+
previewFailed: 'ファイルプレビューを読み込めません。',
|
|
21
|
+
'files.empty': 'ファイルがありません。',
|
|
22
|
+
'files.preview': 'プレビュー',
|
|
23
|
+
'files.download': 'ダウンロード',
|
|
24
|
+
'files.remove': '削除',
|
|
25
|
+
'files.chooseMany': 'ファイルを選択してください',
|
|
26
|
+
'files.chooseOne': 'ファイルを選択してください',
|
|
27
|
+
'files.retry': '再試行',
|
|
28
|
+
'files.done': '完了',
|
|
29
|
+
'files.uploading': 'アップロード中',
|
|
30
|
+
'files.failed': '失敗しました',
|
|
31
|
+
'files.pending': '保留中',
|
|
32
|
+
'files.previous': '前のファイル',
|
|
33
|
+
'files.next': '次のファイル',
|
|
34
|
+
'files.loadingPreview': 'プレビューを読み込んでいます...',
|
|
35
|
+
'files.downloadFile': 'ダウンロードファイル',
|
|
36
|
+
'files.previewUnavailable':
|
|
37
|
+
'このファイル形式ではプレビューを利用できません。',
|
|
38
|
+
'files.imageFailed':
|
|
39
|
+
'この画像は表示できませんでした。破損しているか、サポートされていない形式である可能性があります。',
|
|
40
|
+
'files.officeFailed':
|
|
41
|
+
'Office Online はこのファイルを読み込むことができませんでした。',
|
|
42
|
+
'files.officeUrl':
|
|
43
|
+
'Office Online には、インターネットからアクセスできる絶対ファイル URL が必要です。',
|
|
44
|
+
'files.cancelFile': 'キャンセル {{filename}}',
|
|
45
|
+
'files.status.uploading': 'アップロード中',
|
|
46
|
+
'files.status.pending': '保留中',
|
|
47
|
+
'files.status.error': '失敗しました',
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const resource: FileUiResource = { fileUi: messages };
|
|
51
|
+
export default resource;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { FileUiResource } from './en-US.js';
|
|
2
|
+
const messages = {
|
|
3
|
+
'files.ooxmlLoadFailed':
|
|
4
|
+
'Não é possível renderizar este arquivo Office Open XML.',
|
|
5
|
+
'files.ooxmlLoadTimedOut':
|
|
6
|
+
'A visualização não terminou de carregar em {{minutes}} minutos.',
|
|
7
|
+
'files.previewRequestFailed':
|
|
8
|
+
'Falha na solicitação de visualização ({{status}}).',
|
|
9
|
+
uploadFailed: 'Falha no upload do arquivo.',
|
|
10
|
+
fileLimitReached: 'O número máximo de arquivos foi atingido.',
|
|
11
|
+
fileTooLarge: 'O arquivo excede o tamanho máximo.',
|
|
12
|
+
fileTypeNotAllowed: 'O tipo de arquivo não é permitido.',
|
|
13
|
+
removalFailed: 'Falha na remoção do arquivo.',
|
|
14
|
+
urlNotAllowed: 'O arquivo URL não é permitido.',
|
|
15
|
+
downloadFailed: 'Falha no download do arquivo.',
|
|
16
|
+
invalidUrl: 'O arquivo URL está ausente ou não é permitido.',
|
|
17
|
+
pdfPreviewFailed: 'Não é possível carregar a visualização do PDF.',
|
|
18
|
+
pdfPreviewMarkup: 'O arquivo URL retornou HTML ou XML em vez de PDF.',
|
|
19
|
+
previewFailed: 'Não foi possível carregar a visualização do arquivo.',
|
|
20
|
+
'files.empty': 'Nenhum arquivo.',
|
|
21
|
+
'files.preview': 'Visualização',
|
|
22
|
+
'files.download': 'Baixar',
|
|
23
|
+
'files.remove': 'Remover',
|
|
24
|
+
'files.chooseMany': 'Escolha arquivos',
|
|
25
|
+
'files.chooseOne': 'Escolha o arquivo',
|
|
26
|
+
'files.retry': 'Tentar novamente',
|
|
27
|
+
'files.done': 'Concluído',
|
|
28
|
+
'files.uploading': 'Carregando',
|
|
29
|
+
'files.failed': 'Falha',
|
|
30
|
+
'files.pending': 'Pendente',
|
|
31
|
+
'files.previous': 'Arquivo anterior',
|
|
32
|
+
'files.next': 'Próximo arquivo',
|
|
33
|
+
'files.loadingPreview': 'Carregando visualização...',
|
|
34
|
+
'files.downloadFile': 'Baixar arquivo',
|
|
35
|
+
'files.previewUnavailable':
|
|
36
|
+
'A visualização não está disponível para este tipo de arquivo.',
|
|
37
|
+
'files.imageFailed':
|
|
38
|
+
'Esta imagem não pôde ser exibida. Ele pode estar corrompido ou em um formato não compatível.',
|
|
39
|
+
'files.officeFailed': 'O Office Online não pôde carregar este arquivo.',
|
|
40
|
+
'files.officeUrl':
|
|
41
|
+
'O Office Online requer um arquivo absoluto URL acessível pela Internet.',
|
|
42
|
+
'files.cancelFile': 'Cancelar {{filename}}',
|
|
43
|
+
'files.status.uploading': 'Carregando',
|
|
44
|
+
'files.status.pending': 'Pendente',
|
|
45
|
+
'files.status.error': 'Falha',
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const resource: FileUiResource = { fileUi: messages };
|
|
49
|
+
export default resource;
|