From 3eb1d6ae774098ff5119afccf0e1d66132673a90 Mon Sep 17 00:00:00 2001
From: Ron Lucke <lucke@elan-ev.de>
Date: Thu, 13 Jan 2022 12:12:08 +0000
Subject: [PATCH] Biest #545

---
 .../vue/components/MyCoursesColorPicker.vue   |  2 +-
 .../courseware/CoursewareActionWidget.vue     |  2 +-
 .../courseware/CoursewareBeforeAfterBlock.vue |  4 ++--
 .../CoursewareBlockExportOptions.vue          |  2 +-
 .../courseware/CoursewareDocumentBlock.vue    |  2 +-
 .../courseware/CoursewareLinkBlock.vue        |  2 +-
 .../CoursewareManagerCopySelector.vue         |  2 +-
 .../courseware/CoursewareManagerElement.vue   |  6 ++---
 .../courseware/CoursewareManagerFiling.vue    |  7 +++---
 .../CoursewareStructuralElement.vue           | 22 +++++--------------
 .../courseware/CoursewareToolsAdmin.vue       |  4 ++--
 .../courseware/CoursewareVideoBlock.vue       |  2 +-
 .../courseware/CoursewareWellcomeScreen.vue   |  2 +-
 resources/vue/mixins/courseware/export.js     |  3 ++-
 14 files changed, 25 insertions(+), 37 deletions(-)

diff --git a/resources/vue/components/MyCoursesColorPicker.vue b/resources/vue/components/MyCoursesColorPicker.vue
index 54854ea86ac..ecf24a7ff93 100644
--- a/resources/vue/components/MyCoursesColorPicker.vue
+++ b/resources/vue/components/MyCoursesColorPicker.vue
@@ -33,7 +33,7 @@ export default {
             return classes;
         },
         getTitle (i, index) {
-            let title = this.$gettext('Gruppe') + ' ' + i;
+            let title = this.$gettextInterpolate('Gruppe %{ group }', {group: i});
             if (this.course.group === index) {
                 title += ' ('  + this.$gettext('ausgewählt') + ')';
             }
diff --git a/resources/vue/components/courseware/CoursewareActionWidget.vue b/resources/vue/components/courseware/CoursewareActionWidget.vue
index ca1859c9ff2..b0a284c6f2b 100644
--- a/resources/vue/components/courseware/CoursewareActionWidget.vue
+++ b/resources/vue/components/courseware/CoursewareActionWidget.vue
@@ -113,7 +113,7 @@ export default {
         },
         createBookmark() {
             this.addBookmark(this.structuralElement);
-            this.companionInfo({ info: this.$gettext('Das Lesezeichen wurde gesetzt') });
+            this.companionInfo({ info: this.$gettext('Das Lesezeichen wurde gesetzt.') });
         },
         oerElement() {
             this.showElementOerDialog(true);
diff --git a/resources/vue/components/courseware/CoursewareBeforeAfterBlock.vue b/resources/vue/components/courseware/CoursewareBeforeAfterBlock.vue
index e8d7f91dd27..2c68473b9cd 100755
--- a/resources/vue/components/courseware/CoursewareBeforeAfterBlock.vue
+++ b/resources/vue/components/courseware/CoursewareBeforeAfterBlock.vue
@@ -171,8 +171,8 @@ export default {
         },
         storeBlock() {
             let cmpInfo = false;
-            let cmpInfoBefore = this.$gettext('Bitte wählen Sie ein Vorherbilder aus.');
-            let cmpInfoAfter = this.$gettext('Bitte wählen Sie ein Nachherbilder aus.');
+            let cmpInfoBefore = this.$gettext('Bitte wählen Sie ein Vorherbild aus.');
+            let cmpInfoAfter = this.$gettext('Bitte wählen Sie ein Nachherbild aus.');
             let attributes = {};
             attributes.payload = {};
             attributes.payload.before_source = this.currentBeforeSource;
diff --git a/resources/vue/components/courseware/CoursewareBlockExportOptions.vue b/resources/vue/components/courseware/CoursewareBlockExportOptions.vue
index ec47a6f456d..71f6adca9eb 100755
--- a/resources/vue/components/courseware/CoursewareBlockExportOptions.vue
+++ b/resources/vue/components/courseware/CoursewareBlockExportOptions.vue
@@ -1,6 +1,6 @@
 <template>
     <section class="cw-block-export-options">
-        <header><translate>Export Options</translate></header>
+        <header><translate>Export Optionen</translate></header>
         <div class="cw-block-features-content">
             <button class="button" @click="$emit('close')"><translate>Schließen</translate></button>
         </div>
diff --git a/resources/vue/components/courseware/CoursewareDocumentBlock.vue b/resources/vue/components/courseware/CoursewareDocumentBlock.vue
index 1967387990f..384f56ec994 100755
--- a/resources/vue/components/courseware/CoursewareDocumentBlock.vue
+++ b/resources/vue/components/courseware/CoursewareDocumentBlock.vue
@@ -239,7 +239,7 @@ export default {
         storeBlock() {
             if (this.currentFile === undefined) {
                 this.companionWarning({
-                    info: this.$gettext('Bitte wählen Sie eine Datei aus')
+                    info: this.$gettext('Bitte wählen Sie eine Datei aus.')
                 });
                 return false;
             } else {
diff --git a/resources/vue/components/courseware/CoursewareLinkBlock.vue b/resources/vue/components/courseware/CoursewareLinkBlock.vue
index c20ef10c5f7..a2fce7d0045 100755
--- a/resources/vue/components/courseware/CoursewareLinkBlock.vue
+++ b/resources/vue/components/courseware/CoursewareLinkBlock.vue
@@ -132,7 +132,7 @@ export default {
             attributes.payload.title = this.currentTitle;
             if (this.currentType === 'internal' && this.currentTarget === '') {
                 this.companionWarning({
-                    info: this.$gettext('Bitte wählen Sie eine Seite als Ziel aus')
+                    info: this.$gettext('Bitte wählen Sie eine Seite als Ziel aus.')
                 });
                 return false;
             } else {
diff --git a/resources/vue/components/courseware/CoursewareManagerCopySelector.vue b/resources/vue/components/courseware/CoursewareManagerCopySelector.vue
index 621fe862c03..6736a5a4fc1 100755
--- a/resources/vue/components/courseware/CoursewareManagerCopySelector.vue
+++ b/resources/vue/components/courseware/CoursewareManagerCopySelector.vue
@@ -1,7 +1,7 @@
 <template>
     <div class="cw-manager-copy-selector">
         <div v-if="sourceEmpty" class="cw-manager-copy-selector-source">
-            <button class="button" @click="selectSource('own'); loadOwnCourseware()"><translate>Aus meine Inhalte kopieren</translate></button>
+            <button class="button" @click="selectSource('own'); loadOwnCourseware()"><translate>Aus persönlichen Lernmaterialien kopieren</translate></button>
             <button class="button" @click="selectSource('remote')"><translate>Aus Veranstaltung kopieren</translate></button>
         </div>
         <div v-else>
diff --git a/resources/vue/components/courseware/CoursewareManagerElement.vue b/resources/vue/components/courseware/CoursewareManagerElement.vue
index 4b1dacdcd22..f2c3254c0a7 100755
--- a/resources/vue/components/courseware/CoursewareManagerElement.vue
+++ b/resources/vue/components/courseware/CoursewareManagerElement.vue
@@ -362,7 +362,7 @@ export default {
                         parentId: parentId,
                         element: element,
                     }).catch((error) => {
-                        let message = `${element.attributes.title} ` + this.$gettext('konnte nicht kopiert werden.');
+                        let message = this.$gettextInterpolate('%{ pageTitle } konnte nicht kopiert werden.', {pageTitle: element.attributes.title});
                         this.text.copyProcessFailed.push(message);
                         this.showFailedCopyProcessCompanion();
                     });
@@ -399,7 +399,7 @@ export default {
                         parentId: parentId,
                         container: container,
                     }).catch((error) => {
-                        let message = this.$gettext('Abschnitt konnte nicht kopiert werden') + ` - ${container.attributes.title}`;
+                        let message = this.$gettextInterpolate('Abschnitt "%{ containerTitle }" konnte nicht kopiert werden', {containerTitle: container.attributes.title});
                         this.text.copyProcessFailed.push(message);
                         this.showFailedCopyProcessCompanion();
                     });
@@ -461,7 +461,7 @@ export default {
                         parentId: parentId,
                         block: block,
                     }).catch((error) => {
-                        let message = this.$gettext('Block konnte nicht kopiert werden') + ` - ${block.attributes.title}`;
+                        let message = this.$gettextInterpolate('Block "%{ blockTitle }" konnte nicht kopiert werden', {blockTitle: block.attributes.title});
                         this.text.copyProcessFailed.push(message);
                         this.showFailedCopyProcessCompanion();
                     });
diff --git a/resources/vue/components/courseware/CoursewareManagerFiling.vue b/resources/vue/components/courseware/CoursewareManagerFiling.vue
index ba388ee0c71..d6f1503f173 100755
--- a/resources/vue/components/courseware/CoursewareManagerFiling.vue
+++ b/resources/vue/components/courseware/CoursewareManagerFiling.vue
@@ -4,10 +4,9 @@
         :class="{ 'cw-manager-filing-active': active, 'cw-manager-filing-disabled': disabled }"
         @click="toggleFiling"
     >
-        <span v-if="itemType === 'element'"><translate>Seite</translate> </span>
-        <span v-if="itemType === 'container'"><translate>Abschnitt</translate> </span>
-        <span v-if="itemType === 'block'"><translate>Block</translate> </span>
-        <translate>an dieser Stelle einfügen</translate>
+        <span v-if="itemType === 'element'"><translate>Seite an dieser Stelle einfügen</translate> </span>
+        <span v-if="itemType === 'container'"><translate>Abschnitt an dieser Stelle einfügen</translate> </span>
+        <span v-if="itemType === 'block'"><translate>Block an dieser Stelle einfügen</translate> </span>
     </div>
 </template>
 
diff --git a/resources/vue/components/courseware/CoursewareStructuralElement.vue b/resources/vue/components/courseware/CoursewareStructuralElement.vue
index 3c0f7ec5149..0ba93a1f33e 100755
--- a/resources/vue/components/courseware/CoursewareStructuralElement.vue
+++ b/resources/vue/components/courseware/CoursewareStructuralElement.vue
@@ -343,11 +343,7 @@
             >
                 <template v-slot:dialogContent>
                     <div v-show="!exportRunning">
-                        <translate
-                            >Hiermit exportieren Sie die Seite "{{ currentElement.attributes.title }}" als
-                            ZIP-Datei.</translate
-                        >
-
+                        <translate> Hiermit exportieren Sie die Seite "%{ currentElement.attributes.title }" als ZIP-Datei.</translate>
                         <div class="cw-element-export">
                             <label>
                                 <input type="checkbox" v-model="exportChildren" />
@@ -564,7 +560,7 @@ export default {
 
         textOer() {
             return {
-                title: this.$gettext('Seite auf') + ' ' + this.oerTitle + ' ' + this.$gettext('veröffentlichen'),
+                title: this.$gettextInterpolate('Seite auf %{ oerTitle } veröffentlichen', {oerTitle: this.oerTitle}),
                 confirm: this.$gettext('Veröffentlichen'),
                 close: this.$gettext('Schließen'),
             };
@@ -580,11 +576,7 @@ export default {
             textDelete.alert = this.$gettext('Möchten Sie die Seite wirklich löschen?');
             if (this.structuralElementLoaded) {
                 textDelete.alert =
-                    this.$gettext('Möchten Sie die Seite') +
-                    ' "' +
-                    this.structuralElement.attributes.title +
-                    '" ' +
-                    this.$gettext('wirklich löschen?');
+                    this.$gettextInterpolate('Möchten Sie die Seite %{ pageTitle } wirklich löschen?', {pageTitle: this.structuralElement.attributes.title});
             }
 
             return textDelete;
@@ -1114,11 +1106,7 @@ export default {
             let newElement = this.$store.getters['courseware-structural-elements/lastCreated'];
             this.companionSuccess({
                 info:
-                    this.$gettext('Seite') +
-                    ' "' +
-                    newElement.attributes.title +
-                    '" ' +
-                    this.$gettext('wurde erfolgreich angelegt.'),
+                    this.$gettextInterpolate('Seite %{ pageTitle } wurde erfolgreich angelegt.', {pageTitle: newElement.attributes.title})
             });
         },
         containerComponent(container) {
@@ -1126,7 +1114,7 @@ export default {
         },
         setBookmark() {
             this.addBookmark(this.structuralElement);
-            this.companionInfo({ info: this.$gettext('Das Lesezeichen wurde gesetzt') });
+            this.companionInfo({ info: this.$gettext('Das Lesezeichen wurde gesetzt.') });
         },
         updateReadApproval(approval) {
             this.currentElement.attributes['read-approval'] = approval;
diff --git a/resources/vue/components/courseware/CoursewareToolsAdmin.vue b/resources/vue/components/courseware/CoursewareToolsAdmin.vue
index 3909f2e27fb..2cd67408714 100755
--- a/resources/vue/components/courseware/CoursewareToolsAdmin.vue
+++ b/resources/vue/components/courseware/CoursewareToolsAdmin.vue
@@ -4,7 +4,7 @@
             <fieldset>
                 <legend><translate>Allgemeine Einstellungen</translate></legend>
                 <label>
-                    <span><translate>Art der Kapitelabfolge</translate></span>
+                    <span><translate>Art der Inhaltsabfolge</translate></span>
                     <select class="size-s" v-model="currentProgression">
                         <option value="0"><translate>Frei</translate></option>
                         <option value="1"><translate>Sequentiell</translate></option>
@@ -51,7 +51,7 @@ export default {
         },
         store() {
             this.companionSuccess({
-                info: this.$gettext('Einstellungen wurden übernommen'),
+                info: this.$gettext('Einstellungen wurden übernommen.'),
             })
             this.storeCoursewareSettings({
                 permission: this.currentPermissionLevel,
diff --git a/resources/vue/components/courseware/CoursewareVideoBlock.vue b/resources/vue/components/courseware/CoursewareVideoBlock.vue
index 71f5f77af57..e5e31fcab43 100755
--- a/resources/vue/components/courseware/CoursewareVideoBlock.vue
+++ b/resources/vue/components/courseware/CoursewareVideoBlock.vue
@@ -159,7 +159,7 @@ export default {
                 attributes.payload.file_id = '';
                 attributes.payload.web_url = this.currentWebUrl;
             } else {
-                cmpInfo = this.$gettext('Bitte wählen Sie ein Video aus');
+                cmpInfo = this.$gettext('Bitte wählen Sie ein Video aus.');
             }
             attributes.payload.aspect = this.currentAspect;
             attributes.payload.context_menu = this.currentContextMenu;
diff --git a/resources/vue/components/courseware/CoursewareWellcomeScreen.vue b/resources/vue/components/courseware/CoursewareWellcomeScreen.vue
index 8741fd046b4..464e5b13c9b 100755
--- a/resources/vue/components/courseware/CoursewareWellcomeScreen.vue
+++ b/resources/vue/components/courseware/CoursewareWellcomeScreen.vue
@@ -65,7 +65,7 @@ export default {
             this.$store.dispatch('coursewareViewMode', 'edit');
             this.$store.dispatch('coursewareConsumeMode', false);
             this.companionSuccess({
-                info: this.$gettext('Elemente für Ihren ersten Inhalt wurden angelegt'),
+                info: this.$gettext('Elemente für Ihren ersten Inhalt wurden angelegt.'),
             });
             const newBlock = this.$store.getters['courseware-blocks/lastCreated'];
             newContainer.attributes.payload.sections[0].blocks.push(newBlock.id);
diff --git a/resources/vue/mixins/courseware/export.js b/resources/vue/mixins/courseware/export.js
index 410a366c00d..00f03fb7d26 100755
--- a/resources/vue/mixins/courseware/export.js
+++ b/resources/vue/mixins/courseware/export.js
@@ -10,6 +10,7 @@ export default {
             containerById: 'courseware-containers/byId',
             folderById: 'folders/byId',
             filesById: 'files/byId',
+            oerTitle: 'oerTitle',
             structuralElementById: 'courseware-structural-elements/byId',
         }),
     },
@@ -186,7 +187,7 @@ export default {
                 data: formData,
                 headers: { "Content-Type": "multipart/form-data"}
             }).then( () => {
-                this.companionInfo({ info: this.$gettext('Seite wurde an OER Campus gesendet.') });
+                this.companionInfo({ info: this.$gettextInterpolate('Seite wurde an %{ oerTitle } gesendet.', {oerTitle: this.oerTitle}) });
             });
         },
 
-- 
GitLab