diff --git a/resources/vue/components/MyCoursesColorPicker.vue b/resources/vue/components/MyCoursesColorPicker.vue
index 54854ea86ac2c7fb4615b729c5d0b2758342c0b2..ecf24a7ff93cab452ca6d0e6d3fb73bdfdd712ce 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 ca1859c9ff2aa8bd666e0edca650f6664edd0948..b0a284c6f2b2d8bc2dc33277196e785fdcc5342a 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 e8d7f91dd27c1543bfdec408d59314d7c65f8d8b..2c68473b9cd45792d24318a78ead9d7415d50df5 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 ec47a6f456d34f44b8c9c13066a3da125eb3f5e1..71f6adca9eb78a836b76b6ef5ee7a5d8eb5462f3 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 1967387990f0e76e7f297e817881984bd072c191..384f56ec9944a64ed5d55e4160a27cc4195779d0 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 c20ef10c5f7bab608f55ff0dc7907bba7aea0215..a2fce7d0045edb8cfca864b155fd5100eed2f3ab 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 621fe862c03b1718f995df5ea4d58879483714e1..6736a5a4fc1614479e4bdc4277908595983b962b 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 4b1dacdcd22d06d7a5ff2f23c755f2a9e2780e02..f2c3254c0a70317bb38f1896205924cf2210a3b0 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 ba388ee0c71e1dd7b404748718970078aa85fd85..d6f1503f1735930a3778cca84a0863df35d8ab2a 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 3c0f7ec5149ff138a46f009a60ec1441c57ccf30..0ba93a1f33e18c5eeb6ad8b33772dbb6087cf9bd 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 3909f2e27fbf387748cbffb934baa93916a0a957..2cd6740871415c2f832b94233f5f5d2392f30e8c 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 71f5f77af57792865b676c31a8be691449c7b853..e5e31fcab435ae82a5997fb65e58e9a5c7ecfb5c 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 8741fd046b433883636850730ea58de6b53b11e7..464e5b13c9b58a62bdcadd23f43b66ad662783d7 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 410a366c00d3917a13ae5c5c324587d2274349ff..00f03fb7d26331393c15f12e5ca09516fd0a8cf3 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}) });
             });
         },