apostrophe 4.12.0 → 4.13.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/CHANGELOG.md +32 -0
- package/lib/moog.js +8 -0
- package/modules/@apostrophecms/color-field/ui/apos/components/AposColor.vue +4 -10
- package/modules/@apostrophecms/color-field/ui/apos/lib/AposColorAlpha.vue +1 -6
- package/modules/@apostrophecms/doc-type/index.js +3 -1
- package/modules/@apostrophecms/file/index.js +1 -0
- package/modules/@apostrophecms/file-tag/index.js +1 -0
- package/modules/@apostrophecms/http/lib/big-upload-middleware.js +34 -34
- package/{lib → modules/@apostrophecms/http/ui/apos}/big-upload-client.js +18 -4
- package/modules/@apostrophecms/http/ui/apos/package.json +4 -0
- package/modules/@apostrophecms/i18n/i18n/de.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/en.json +16 -1
- package/modules/@apostrophecms/i18n/i18n/es.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/fr.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/it.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/pt-BR.json +0 -1
- package/modules/@apostrophecms/i18n/i18n/sk.json +0 -1
- package/modules/@apostrophecms/i18n/index.js +397 -0
- package/modules/@apostrophecms/i18n/ui/apos/apps/AposI18nBatchReporting.js +161 -0
- package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalize.vue +274 -52
- package/modules/@apostrophecms/image/index.js +1 -0
- package/modules/@apostrophecms/image-tag/index.js +1 -0
- package/modules/@apostrophecms/job/index.js +1 -2
- package/modules/@apostrophecms/modal/index.js +2 -1
- package/modules/@apostrophecms/modal/ui/apos/apps/AposModals.js +1 -0
- package/modules/@apostrophecms/modal/ui/apos/components/AposDocsManagerToolbar.vue +8 -1
- package/modules/@apostrophecms/modal/ui/apos/components/AposModalReport.vue +414 -0
- package/modules/@apostrophecms/module/index.js +1 -0
- package/modules/@apostrophecms/notification/index.js +8 -13
- package/modules/@apostrophecms/notification/ui/apos/apps/AposNotification.js +5 -0
- package/modules/@apostrophecms/notification/ui/apos/components/AposNotification.vue +110 -148
- package/modules/@apostrophecms/notification/ui/apos/components/TheAposNotifications.vue +10 -91
- package/modules/@apostrophecms/page/index.js +24 -1
- package/modules/@apostrophecms/piece-type/index.js +32 -1
- package/modules/@apostrophecms/piece-type/ui/apos/components/AposUtilityOperations.vue +1 -0
- package/modules/@apostrophecms/rich-text-widget/ui/apos/components/AposTiptapColor.vue +12 -0
- package/modules/@apostrophecms/schema/index.js +13 -0
- package/modules/@apostrophecms/schema/ui/apos/logic/AposArrayEditor.js +25 -21
- package/modules/@apostrophecms/ui/ui/apos/components/AposButton.vue +3 -2
- package/modules/@apostrophecms/ui/ui/apos/components/AposColorCheckerboard.vue +20 -0
- package/modules/@apostrophecms/ui/ui/apos/components/AposTable.vue +346 -0
- package/modules/@apostrophecms/ui/ui/apos/scss/global/_theme.scss +4 -0
- package/modules/@apostrophecms/ui/ui/apos/scss/mixins/_zindex.scss +1 -1
- package/modules/@apostrophecms/ui/ui/apos/stores/modal.js +13 -0
- package/modules/@apostrophecms/ui/ui/apos/stores/notification.js +204 -0
- package/modules/@apostrophecms/user/index.js +1 -0
- package/package.json +1 -1
- package/test/big-upload.js +3 -4
- package/test/i18n-batch.js +568 -0
- package/test/moog.js +47 -0
- package/test/relationships.js +21 -3
- package/modules/@apostrophecms/color-field/ui/apos/lib/AposColorCheckerboard.vue +0 -90
- package/modules/@apostrophecms/i18n/ui/apos/components/AposI18nLocalizeErrors.vue +0 -154
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.13.0 (2025-02-19)
|
|
4
|
+
|
|
5
|
+
### Adds
|
|
6
|
+
|
|
7
|
+
* Supports progress notification type, can be used when no job are involved. Manage progress state into the new `processes` entity.
|
|
8
|
+
* Moves global notification logic into Pinia store as well as job polling that updates processes.
|
|
9
|
+
|
|
10
|
+
### Fixes
|
|
11
|
+
|
|
12
|
+
* Field inputs inside an array modal can now be focused/tabbed via keyboard
|
|
13
|
+
* Fixes admin bar overlapping widget area add menu.
|
|
14
|
+
* Fixed the checkered background for gauging color transparency.
|
|
15
|
+
* Fixes `group.operations` (batch configuration) merging between modules in the same way that `group.fields` are merged.
|
|
16
|
+
* The i18n manager detects the current locale correctly in some edge cases, like when the locale is changed per document (Editor Modal) and the localization manager is opened from a relationship manager via a document context menu.
|
|
17
|
+
|
|
18
|
+
### Adds
|
|
19
|
+
|
|
20
|
+
* Add support for batch localization of pieces and pages.
|
|
21
|
+
* Adds type for each file uploaded by big-upload. Moves big-upload-client to `apos/ui` folder and makes it esm.
|
|
22
|
+
* When present, projections for reverse relationships now automatically include the special id and field storage properties for the relationship in question, allowing the related documents to be successfully returned.
|
|
23
|
+
* Introduce `AposModalReport` component for displaying table reports. It's accessible via `apos.report(content, options)` method and it's now used in the `@apostrophecms/i18n` module for detailed reporting after a batch localization operation.
|
|
24
|
+
|
|
25
|
+
### Changes
|
|
26
|
+
|
|
27
|
+
* The array editor's `isModified` method is now a computed property for consistency.
|
|
28
|
+
* The `modal` configuration property for batch operations without a group is now accepted and works as expected in the same way as for grouped operations.
|
|
29
|
+
* Explicitly enable document versions for `@apostrophecms/file-tag`, `@apostrophecms/file`, `@apostrophecms/image-tag` and `@apostrophecms/image` piece types.
|
|
30
|
+
|
|
31
|
+
### Adds
|
|
32
|
+
|
|
33
|
+
* If `error.cause` is prevent, log the property.
|
|
34
|
+
|
|
3
35
|
## 4.12.0 (2025-01-27)
|
|
4
36
|
|
|
5
37
|
### Fixes
|
package/lib/moog.js
CHANGED
|
@@ -232,6 +232,10 @@ module.exports = function(options) {
|
|
|
232
232
|
if (properties.group) {
|
|
233
233
|
const groups = klona(that[`${cascade}Groups`]);
|
|
234
234
|
for (const value of Object.values(properties.group)) {
|
|
235
|
+
// Handle `operations` alias of `fields`. Only one of them should be used.
|
|
236
|
+
if (Array.isArray(value.operations)) {
|
|
237
|
+
value.fields = value.operations;
|
|
238
|
+
}
|
|
235
239
|
for (const field of value.fields || []) {
|
|
236
240
|
// Remove fields from existing groups if they're added to a new
|
|
237
241
|
// group.
|
|
@@ -252,6 +256,10 @@ module.exports = function(options) {
|
|
|
252
256
|
value.fields = groups[key].fields.concat(value.fields);
|
|
253
257
|
value.label = value.label || groups[key].label;
|
|
254
258
|
}
|
|
259
|
+
// Copy back `fields` to `operations` (alias).
|
|
260
|
+
if (Array.isArray(value.operations)) {
|
|
261
|
+
value.operations = value.fields;
|
|
262
|
+
}
|
|
255
263
|
}
|
|
256
264
|
|
|
257
265
|
that[`${cascade}Groups`] = {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
class="apos-color__active-color"
|
|
33
33
|
:style="{ background: activeColor }"
|
|
34
34
|
/>
|
|
35
|
-
<
|
|
35
|
+
<AposColorCheckerboard />
|
|
36
36
|
</div>
|
|
37
37
|
</div>
|
|
38
38
|
<div v-if="!disableFields" class="apos-color__field">
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
class="apos-color__presets-color"
|
|
98
98
|
@click="handlePreset(c)"
|
|
99
99
|
>
|
|
100
|
-
<
|
|
100
|
+
<AposColorCheckerboard />
|
|
101
101
|
</div>
|
|
102
102
|
</template>
|
|
103
103
|
</div>
|
|
@@ -110,7 +110,6 @@ import editableInput from '../lib/AposColorEditableInput.vue';
|
|
|
110
110
|
import saturation from '../lib/AposColorSaturation.vue';
|
|
111
111
|
import hue from '../lib/AposColorHue.vue';
|
|
112
112
|
import alpha from '../lib/AposColorAlpha.vue';
|
|
113
|
-
import checkboard from '../lib/AposColorCheckerboard.vue';
|
|
114
113
|
|
|
115
114
|
const defaultOptions = { ...apos.modules['@apostrophecms/color-field'].defaultOptions };
|
|
116
115
|
|
|
@@ -120,8 +119,7 @@ export default {
|
|
|
120
119
|
Saturation: saturation,
|
|
121
120
|
Hue: hue,
|
|
122
121
|
Alpha: alpha,
|
|
123
|
-
EditableContent: editableInput
|
|
124
|
-
Checkboard: checkboard
|
|
122
|
+
EditableContent: editableInput
|
|
125
123
|
},
|
|
126
124
|
mixins: [ colorMixin ],
|
|
127
125
|
props: {
|
|
@@ -296,10 +294,6 @@ export default {
|
|
|
296
294
|
box-shadow: inset 0 0 0 1px rgb(0 0 0 / 15%), inset 0 0 4px rgb(0 0 0 / 25%);
|
|
297
295
|
}
|
|
298
296
|
|
|
299
|
-
.apos-color__color-wrap .apos-color__checkerboard {
|
|
300
|
-
background-size: auto;
|
|
301
|
-
}
|
|
302
|
-
|
|
303
297
|
.apos-color__field {
|
|
304
298
|
display: flex;
|
|
305
299
|
padding-top: 4px;
|
|
@@ -353,7 +347,7 @@ export default {
|
|
|
353
347
|
box-shadow: inset 0 0 0 1px rgb(0 0 0 / 15%);
|
|
354
348
|
}
|
|
355
349
|
|
|
356
|
-
.apos-color__presets-color
|
|
350
|
+
.apos-color__presets-color {
|
|
357
351
|
box-shadow: inset 0 0 0 1px rgb(0 0 0 / 15%);
|
|
358
352
|
border-radius: 3px;
|
|
359
353
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="apos-color__alpha">
|
|
3
3
|
<div class="apos-color__alpha-checkboard-wrap">
|
|
4
|
-
<
|
|
4
|
+
<AposColorCheckerboard />
|
|
5
5
|
</div>
|
|
6
6
|
<div class="apos-color__alpha-gradient" :style="{ background: gradientColor }" />
|
|
7
7
|
<div
|
|
@@ -19,13 +19,8 @@
|
|
|
19
19
|
</template>
|
|
20
20
|
|
|
21
21
|
<script>
|
|
22
|
-
import checkboard from './AposColorCheckerboard.vue';
|
|
23
|
-
|
|
24
22
|
export default {
|
|
25
23
|
name: 'AposColorAlpha',
|
|
26
|
-
components: {
|
|
27
|
-
Checkboard: checkboard
|
|
28
|
-
},
|
|
29
24
|
props: {
|
|
30
25
|
value: {
|
|
31
26
|
type: Object,
|
|
@@ -1751,7 +1751,9 @@ module.exports = {
|
|
|
1751
1751
|
const add = [];
|
|
1752
1752
|
const remove = [];
|
|
1753
1753
|
|
|
1754
|
-
// Add
|
|
1754
|
+
// Add fundamentals by default to allow Apostrophe's core
|
|
1755
|
+
// operations to find what they expect (determining document type,
|
|
1756
|
+
// distinguishing documents from widgets)
|
|
1755
1757
|
const hasExclusion = Object.values(projection).some(value => !value);
|
|
1756
1758
|
if (!_.isEmpty(projection) && !hasExclusion) {
|
|
1757
1759
|
add.push('type');
|
|
@@ -72,34 +72,37 @@ module.exports = (self) => ({
|
|
|
72
72
|
await self.bigUploadCleanup();
|
|
73
73
|
try {
|
|
74
74
|
const id = self.apos.util.generateId();
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
75
|
+
const formattedFiles = Object.fromEntries(
|
|
76
|
+
Object.entries(files).map(([ param, info ]) => {
|
|
77
|
+
if ((typeof param) !== 'string') {
|
|
78
|
+
throw invalid('param');
|
|
79
|
+
}
|
|
80
|
+
if (((typeof info) !== 'object') || (info == null)) {
|
|
81
|
+
throw invalid('info');
|
|
82
|
+
}
|
|
83
|
+
if ((typeof info.name) !== 'string') {
|
|
84
|
+
throw invalid('name');
|
|
85
|
+
}
|
|
86
|
+
if (!info.name.length) {
|
|
87
|
+
throw invalid('name empty');
|
|
88
|
+
}
|
|
89
|
+
if ((typeof info.size) !== 'number') {
|
|
90
|
+
throw invalid('size');
|
|
91
|
+
}
|
|
92
|
+
if ((typeof info.chunks) !== 'number') {
|
|
93
|
+
throw invalid('chunks');
|
|
94
|
+
}
|
|
95
|
+
return [ param, {
|
|
96
|
+
name: info.name,
|
|
97
|
+
size: info.size,
|
|
98
|
+
type: info.type,
|
|
99
|
+
chunks: info.chunks
|
|
100
|
+
} ];
|
|
101
|
+
})
|
|
102
|
+
);
|
|
100
103
|
await self.bigUploads.insert({
|
|
101
104
|
_id: id,
|
|
102
|
-
files,
|
|
105
|
+
files: formattedFiles,
|
|
103
106
|
start: Date.now()
|
|
104
107
|
});
|
|
105
108
|
return req.res.send({
|
|
@@ -162,14 +165,10 @@ module.exports = (self) => ({
|
|
|
162
165
|
let n = 0;
|
|
163
166
|
req.files = {};
|
|
164
167
|
for (const [ param, {
|
|
165
|
-
name, chunks
|
|
168
|
+
name, type, chunks
|
|
166
169
|
} ] of Object.entries(bigUpload.files)) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
ext = ext.substring(1);
|
|
170
|
-
} else {
|
|
171
|
-
ext = 'tmp';
|
|
172
|
-
}
|
|
170
|
+
const extname = require('path').extname(name);
|
|
171
|
+
const ext = extname ? extname.substring(1) : 'tmp';
|
|
173
172
|
const tmp = `${ufs.getTempPath()}/${id}-${n}.${ext}`;
|
|
174
173
|
const out = await open(tmp, 'w');
|
|
175
174
|
for (let i = 0; (i < chunks); i++) {
|
|
@@ -191,7 +190,8 @@ module.exports = (self) => ({
|
|
|
191
190
|
n++;
|
|
192
191
|
req.files[param] = {
|
|
193
192
|
name,
|
|
194
|
-
path: tmp
|
|
193
|
+
path: tmp,
|
|
194
|
+
type
|
|
195
195
|
};
|
|
196
196
|
}
|
|
197
197
|
return next();
|
|
@@ -35,11 +35,10 @@ const defaultChunkSize = 1024 * 1024 * 4;
|
|
|
35
35
|
// may be specified otherwise the standard Apostrophe `apos.http` object
|
|
36
36
|
// and the browser's `FormData` are used.
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
export default async (url, options) => {
|
|
39
39
|
const chunkSize = options.chunkSize || defaultChunkSize;
|
|
40
40
|
const http = options.http || window.apos?.http;
|
|
41
|
-
const
|
|
42
|
-
const files = options.files || [];
|
|
41
|
+
const files = options.files || {};
|
|
43
42
|
const info = {};
|
|
44
43
|
let totalBytes = 0;
|
|
45
44
|
let sentBytes = 0;
|
|
@@ -48,6 +47,7 @@ module.exports = async (url, options) => {
|
|
|
48
47
|
info[param] = {
|
|
49
48
|
name: file.name,
|
|
50
49
|
size: file.size,
|
|
50
|
+
type: file.type,
|
|
51
51
|
chunks: Math.ceil(file.size / chunkSize)
|
|
52
52
|
};
|
|
53
53
|
}
|
|
@@ -81,7 +81,9 @@ module.exports = async (url, options) => {
|
|
|
81
81
|
body: formData
|
|
82
82
|
});
|
|
83
83
|
sentBytes += thisChunkSize;
|
|
84
|
-
|
|
84
|
+
if (typeof options.progress === 'function') {
|
|
85
|
+
progressInterface(options.progress, sentBytes, totalBytes);
|
|
86
|
+
}
|
|
85
87
|
chunk++;
|
|
86
88
|
}
|
|
87
89
|
n++;
|
|
@@ -98,3 +100,15 @@ module.exports = async (url, options) => {
|
|
|
98
100
|
});
|
|
99
101
|
return result;
|
|
100
102
|
};
|
|
103
|
+
|
|
104
|
+
function progressInterface(fn, sent, total) {
|
|
105
|
+
if (typeof fn !== 'function') {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (fn.length === 1) {
|
|
109
|
+
fn(sent / total);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
fn(sent, total);
|
|
114
|
+
}
|
|
@@ -538,7 +538,6 @@
|
|
|
538
538
|
"takeControlFromOther": "{{ who }} bearbeitet dieses Dokument. Willst du die Kontrolle übernehmen?",
|
|
539
539
|
"takeControlFromSelf": "Du bearbeitest dieses Dokument in einer anderen Registerkarte oder einem anderen Fenster. Möchtest du die Kontrolle in dieser Registerkarte übernehmen?",
|
|
540
540
|
"thereAreActiveChanges": "Es gibt Änderungen an diesem Dokument.",
|
|
541
|
-
"thereWasAnIssueLocalizing": "Es ist ein Fehler beim Übersetzen des Inhalts aufgetreten:",
|
|
542
541
|
"thisDocument": "Dieses Dokument",
|
|
543
542
|
"thisDocumentAndRelated": "Dieses und alle zugehörigen Dokumente",
|
|
544
543
|
"title": "Titel",
|
|
@@ -133,6 +133,7 @@
|
|
|
133
133
|
"deleteTable": "Delete Table",
|
|
134
134
|
"description": "Description",
|
|
135
135
|
"deselectAll": "Deselect All",
|
|
136
|
+
"details": "Details",
|
|
136
137
|
"disabled": "Disabled",
|
|
137
138
|
"discardChanges": "Discard Changes",
|
|
138
139
|
"discardChangesPrompt": "Do you want to discard changes?",
|
|
@@ -153,6 +154,7 @@
|
|
|
153
154
|
"doesNotExistYet": "Does Not Exist Yet",
|
|
154
155
|
"doesNotExistYetDescription": "The document does not exist yet as {{ mode }} in the {{ locale }} locale.",
|
|
155
156
|
"download": "Download",
|
|
157
|
+
"downloadAs": "Download as",
|
|
156
158
|
"draft": "Draft",
|
|
157
159
|
"draftDeleted": "Draft Deleted",
|
|
158
160
|
"draftDiscarded": "Draft Discarded",
|
|
@@ -268,7 +270,18 @@
|
|
|
268
270
|
"localizeNewRelated": "Localize new related documents",
|
|
269
271
|
"localizeNotYetLocalized": "Not Yet Localized",
|
|
270
272
|
"localized": "Localized the {{ type }} {{ title }} to {{ locale }}",
|
|
273
|
+
"localizedBatch": "Processed {{ count }} {{ type }}",
|
|
274
|
+
"localizingBatch": "Localizing {{ type }}...",
|
|
271
275
|
"localizingBusy": "Localizing Content",
|
|
276
|
+
"localizingNotificationSuccess": "{{ count }} document successfully localized",
|
|
277
|
+
"localizingNotificationSuccess_plural": "{{ count }} documents successfully localized",
|
|
278
|
+
"localizingNotificationDanger": "{{ count }} document unable to be localized",
|
|
279
|
+
"localizingNotificationDanger_plural": "{{ count }} documents unable to be localized",
|
|
280
|
+
"localizingNotificationWarning": "{{ count }} document successfully localized, {{ skipCount }} skipped",
|
|
281
|
+
"localizingNotificationWarning_plural": "{{ count }} documents successfully localized, {{ skipCount }} skipped",
|
|
282
|
+
"localizingReportDesc": "Some documents could not be localized. You can review and export the list of the skipped documents.",
|
|
283
|
+
"localizingReportHeading": "{{ count }} document could not be localized",
|
|
284
|
+
"localizingReportHeading_plural": "{{ count }} documents could not be localized",
|
|
272
285
|
"logOut": "Log Out",
|
|
273
286
|
"logOutNotLoggedIn": "You were not logged in.",
|
|
274
287
|
"login": "Login",
|
|
@@ -408,6 +421,7 @@
|
|
|
408
421
|
"relatedDocTypesToLocalize": "Related document types to localize",
|
|
409
422
|
"relatedDocsDefinition": "Related documents are documents referenced by this document. This typically includes images, content defined by relationships, etc.",
|
|
410
423
|
"relatedDocsOnly": "Related documents only",
|
|
424
|
+
"relationship": "Relationship",
|
|
411
425
|
"relationshipSuggestionHelp": "Type to search all {{ type }}...",
|
|
412
426
|
"relationshipSuggestionLabel": "Suggestions",
|
|
413
427
|
"relationshipSuggestionNoResults": "Can't find what you're looking for?",
|
|
@@ -540,9 +554,10 @@
|
|
|
540
554
|
"takeControlFromOther": "{{ who }} is editing that document. Do you want to take control?",
|
|
541
555
|
"takeControlFromSelf": "You are editing that document in another tab or window. Do you want to take control in this tab?",
|
|
542
556
|
"thereAreActiveChanges": "There are active changes to this document.",
|
|
543
|
-
"thereWasAnIssueLocalizing": "There was an issue localizing some content:",
|
|
544
557
|
"thisDocument": "This document",
|
|
558
|
+
"theseDocuments": "These documents",
|
|
545
559
|
"thisDocumentAndRelated": "This document and related documents",
|
|
560
|
+
"theseDocumentsAndRelated": "These documents and related documents",
|
|
546
561
|
"title": "Title",
|
|
547
562
|
"toggleEditMode": "Toggle Edit Mode",
|
|
548
563
|
"toggleHeaderCell": "Toggle Header (Cell)",
|
|
@@ -538,7 +538,6 @@
|
|
|
538
538
|
"takeControlFromOther": "{{ who }} está editando ese documento. ¿Quiere tomar el control?",
|
|
539
539
|
"takeControlFromSelf": "Está editando ese documento en otra pestaña o ventana. ¿Quiere tomar control en esta pestaña?",
|
|
540
540
|
"thereAreActiveChanges": "Este documento tiene cambios en curso.",
|
|
541
|
-
"thereWasAnIssueLocalizing": "Hubo un problema al traducir cierto contenido:",
|
|
542
541
|
"thisDocument": "Este documento",
|
|
543
542
|
"thisDocumentAndRelated": "Este documento y documentos relacionados",
|
|
544
543
|
"title": "Título",
|
|
@@ -538,7 +538,6 @@
|
|
|
538
538
|
"takeControlFromOther": "{{ who }} est en train de modifier ce document. Voulez-vous prendre le contrôle ?",
|
|
539
539
|
"takeControlFromSelf": "Vous modifiez ce document dans un autre onglet ou une autre fenêtre. Voulez-vous prendre le contrôle dans cet onglet ?",
|
|
540
540
|
"thereAreActiveChanges": "Il y a des modifications actives à ce document.",
|
|
541
|
-
"thereWasAnIssueLocalizing": "Un problème est survenu lors du changement de langue de certains contenus :",
|
|
542
541
|
"thisDocument": "Ce document",
|
|
543
542
|
"thisDocumentAndRelated": "Ce document et les documents associés",
|
|
544
543
|
"title": "Titre",
|
|
@@ -538,7 +538,6 @@
|
|
|
538
538
|
"takeControlFromOther": "{{ who }} sta modificando quel documento. Vuoi prendere il controllo?",
|
|
539
539
|
"takeControlFromSelf": "Stai modificando quel documento in un'altra scheda o finestra. Vuoi prendere il controllo in questa scheda?",
|
|
540
540
|
"thereAreActiveChanges": "Ci sono modifiche attive a questo documento.",
|
|
541
|
-
"thereWasAnIssueLocalizing": "Si è verificato un problema nella localizzazione di alcuni contenuti:",
|
|
542
541
|
"thisDocument": "Questo documento",
|
|
543
542
|
"thisDocumentAndRelated": "Questo documento e i documenti correlati",
|
|
544
543
|
"title": "Titolo",
|
|
@@ -538,7 +538,6 @@
|
|
|
538
538
|
"takeControlFromOther": "{{ who }} está editando esse documento. Você quer assumir o controle?",
|
|
539
539
|
"takeControlFromSelf": "Você está editando esse documento em outra guia ou janela. Você deseja assumir o controle nesta guia?",
|
|
540
540
|
"thereAreActiveChanges": "Existem alterações ativas neste documento.",
|
|
541
|
-
"thereWasAnIssueLocalizing": "Ocorreu um problema ao localizar algum conteúdo:",
|
|
542
541
|
"thisDocument": "Este documento",
|
|
543
542
|
"thisDocumentAndRelated": "Este e documentos relacionados",
|
|
544
543
|
"title": "Título",
|
|
@@ -538,7 +538,6 @@
|
|
|
538
538
|
"takeControlFromOther": "{{ who }} upravuje tento dokument. Chcete prevziať kontrolu?",
|
|
539
539
|
"takeControlFromSelf": "Tento dokument upravujete na inej karte alebo v inom okne. Chcete na tejto karte prevziať kontrolu?",
|
|
540
540
|
"thereAreActiveChanges": "V tomto dokumente sú aktívne zmeny.",
|
|
541
|
-
"thereWasAnIssueLocalizing": "Pri preklade obsahu sa vyskytol problém:",
|
|
542
541
|
"thisDocument": "Tento dokument",
|
|
543
542
|
"thisDocumentAndRelated": "Tento dokument a súvisiace dokumenty",
|
|
544
543
|
"title": "Názov",
|