+
+
+
+
diff --git a/src/addon/storagemanager/pages/course-storage/course-storage.scss b/src/addon/storagemanager/pages/course-storage/course-storage.scss
index 2c03e4984..77e6022d7 100644
--- a/src/addon/storagemanager/pages/course-storage/course-storage.scss
+++ b/src/addon/storagemanager/pages/course-storage/course-storage.scss
@@ -13,12 +13,7 @@ ion-app.app-root page-addon-storagemanager-course-storage {
font-weight: bold;
font-size: 2rem;
}
- .size {
- margin-top: 4px;
- }
- .size ion-icon {
- margin-right: 4px;
- }
+
.core-module-icon {
margin-right: 4px;
width: 16px;
diff --git a/src/addon/storagemanager/pages/course-storage/course-storage.ts b/src/addon/storagemanager/pages/course-storage/course-storage.ts
index eb605fc57..ff9196403 100644
--- a/src/addon/storagemanager/pages/course-storage/course-storage.ts
+++ b/src/addon/storagemanager/pages/course-storage/course-storage.ts
@@ -19,6 +19,7 @@ import { CoreCourseModulePrefetchDelegate } from '@core/course/providers/module-
import { CoreCourseHelperProvider } from '@core/course/providers/helper';
import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { TranslateService } from '@ngx-translate/core';
+import { CoreConstants } from '@core/constants';
/**
* Page that displays the amount of file storage used by each activity on the course, and allows
@@ -84,6 +85,10 @@ export class AddonStorageManagerCourseStoragePage {
Promise.all(allPromises).then(() => {
this.loaded = true;
+
+ if (this.totalSize == 0) {
+ this.markCourseAsNotDownloaded();
+ }
});
});
}
@@ -162,6 +167,25 @@ export class AddonStorageManagerCourseStoragePage {
modal.dismiss();
this.domUtils.showErrorModalDefault(error, this.translate.instant('core.errordeletefile'));
+ }).finally(() => {
+ // @TODO This is a workaround that should be more specific solving MOBILE-3305.
+ // Also should take into account all modules are not downloaded.
+
+ // Mark course as not downloaded if course size is 0.
+ if (this.totalSize == 0) {
+ this.markCourseAsNotDownloaded();
+ }
});
}
+
+ /**
+ * Mark course as not downloaded.
+ */
+ protected markCourseAsNotDownloaded(): void {
+ // @TODO This is a workaround that should be more specific solving MOBILE-3305.
+ // Also should take into account all modules are not downloaded.
+ // Check after MOBILE-3188 is integrated.
+
+ this.courseProvider.setCourseStatus(this.course.id, CoreConstants.NOT_DOWNLOADED);
+ }
}
diff --git a/src/addon/userprofilefield/textarea/component/addon-user-profile-field-textarea.html b/src/addon/userprofilefield/textarea/component/addon-user-profile-field-textarea.html
index 1d149a8ed..8908db521 100644
--- a/src/addon/userprofilefield/textarea/component/addon-user-profile-field-textarea.html
+++ b/src/addon/userprofilefield/textarea/component/addon-user-profile-field-textarea.html
@@ -9,5 +9,5 @@
{{ field.name }}
-
+
\ No newline at end of file
diff --git a/src/addon/userprofilefield/textarea/textarea.module.ts b/src/addon/userprofilefield/textarea/textarea.module.ts
index f64fc285d..68ad0e678 100644
--- a/src/addon/userprofilefield/textarea/textarea.module.ts
+++ b/src/addon/userprofilefield/textarea/textarea.module.ts
@@ -20,6 +20,7 @@ import { CoreUserProfileFieldDelegate } from '@core/user/providers/user-profile-
import { AddonUserProfileFieldTextareaComponent } from './component/textarea';
import { CoreComponentsModule } from '@components/components.module';
import { CoreDirectivesModule } from '@directives/directives.module';
+import { CoreEditorComponentsModule } from '@core/editor/components/components.module';
@NgModule({
declarations: [
@@ -29,7 +30,8 @@ import { CoreDirectivesModule } from '@directives/directives.module';
IonicModule,
TranslateModule.forChild(),
CoreComponentsModule,
- CoreDirectivesModule
+ CoreDirectivesModule,
+ CoreEditorComponentsModule,
],
providers: [
AddonUserProfileFieldTextareaHandler
diff --git a/src/app/app.md.scss b/src/app/app.md.scss
index a1efde285..eb38e754c 100644
--- a/src/app/app.md.scss
+++ b/src/app/app.md.scss
@@ -68,6 +68,9 @@ ion-app.app-root.md {
.action-sheet-title,
.action-sheet-container > .action-sheet-group:first-child {
box-shadow: 0 3px 5px $gray;
+ @include darkmode() {
+ box-shadow: 0 3px 5px $black;
+ }
}
.action-sheet-title {
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index f28974676..81fdb84a7 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -17,7 +17,6 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { NgModule, COMPILER_OPTIONS } from '@angular/core';
import { IonicApp, IonicModule, Platform, Content, ScrollEvent, Config, Refresher } from 'ionic-angular';
import { assert } from 'ionic-angular/util/util';
-import { HttpModule } from '@angular/http';
import { HttpClient, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { JitCompilerFactory } from '@angular/platform-browser-dynamic';
import { LocationStrategy } from '@angular/common';
@@ -61,6 +60,9 @@ import { CoreSyncProvider } from '@providers/sync';
import { CoreFileHelperProvider } from '@providers/file-helper';
import { CoreCustomURLSchemesProvider } from '@providers/urlschemes';
+// Handlers.
+import { CoreSiteInfoCronHandler } from '@providers/handlers/site-info-cron-handler';
+
// Core modules.
import { CoreComponentsModule } from '@components/components.module';
import { CoreEmulatorModule } from '@core/emulator/emulator.module';
@@ -84,6 +86,8 @@ import { CoreRatingModule } from '@core/rating/rating.module';
import { CoreTagModule } from '@core/tag/tag.module';
import { CoreFilterModule } from '@core/filter/filter.module';
import { CoreH5PModule } from '@core/h5p/h5p.module';
+import { CoreSearchModule } from '@core/search/search.module';
+import { CoreEditorModule } from '@core/editor/editor.module';
// Addon modules.
import { AddonBadgesModule } from '@addon/badges/badges.module';
@@ -198,7 +202,6 @@ export const WP_PROVIDER: any = null;
BrowserModule,
BrowserAnimationsModule,
HttpClientModule, // HttpClient is used to make JSON requests. It fails for HEAD requests because there is no content.
- HttpModule,
IonicModule.forRoot(MoodleMobileApp, {
pageTransition: 'core-page-transition'
}),
@@ -232,6 +235,8 @@ export const WP_PROVIDER: any = null;
CoreTagModule,
CoreFilterModule,
CoreH5PModule,
+ CoreSearchModule,
+ CoreEditorModule,
AddonBadgesModule,
AddonBlogModule,
AddonCalendarModule,
@@ -329,6 +334,7 @@ export const WP_PROVIDER: any = null;
CoreSyncProvider,
CoreFileHelperProvider,
CoreCustomURLSchemesProvider,
+ CoreSiteInfoCronHandler,
{
provide: HTTP_INTERCEPTORS,
useClass: CoreInterceptor,
@@ -341,8 +347,17 @@ export const WP_PROVIDER: any = null;
]
})
export class AppModule {
- constructor(platform: Platform, initDelegate: CoreInitDelegate, updateManager: CoreUpdateManagerProvider, config: Config,
- sitesProvider: CoreSitesProvider, fileProvider: CoreFileProvider, private eventsProvider: CoreEventsProvider) {
+ constructor(
+ platform: Platform,
+ initDelegate: CoreInitDelegate,
+ updateManager: CoreUpdateManagerProvider,
+ config: Config,
+ sitesProvider: CoreSitesProvider,
+ fileProvider: CoreFileProvider,
+ private eventsProvider: CoreEventsProvider,
+ cronDelegate: CoreCronDelegate,
+ siteInfoCronHandler: CoreSiteInfoCronHandler,
+ ) {
// Register a handler for platform ready.
initDelegate.registerProcess({
name: 'CorePlatformReady',
@@ -373,6 +388,9 @@ export class AppModule {
// Execute the init processes.
initDelegate.executeInitProcesses();
+ // Register handlers.
+ cronDelegate.register(siteInfoCronHandler);
+
// Set transition animation.
config.setTransition('core-page-transition', CorePageTransition);
config.setTransition('core-modal-lateral-transition', CoreModalLateralTransition);
diff --git a/src/app/app.scss b/src/app/app.scss
index 75f830591..cc99bbfa8 100644
--- a/src/app/app.scss
+++ b/src/app/app.scss
@@ -12,7 +12,7 @@
// default Sass variables, belong in "theme/variables.scss".
//
// To declare rules for a specific mode, create a child rule
-// for the .md, .ios, or .wp mode classes. The mode class is
+// for the .md, or .ios mode classes. The mode class is
// automatically applied to the element in the app.
// Alignment
@@ -106,19 +106,24 @@ ion-app.app-root {
.item h2 {
text-overflow: inherit;
overflow: inherit;
+ ion-icon, core-icon {
+ vertical-align: bottom;
+ }
}
.core-nav-item-selected, .item.core-nav-item-selected {
@include core-selected-item($core-splitview-selected);
}
- // Recover borders on items inside cards.
+ // Recover borders on items inside cards and lists.
.card.with-borders .core-as-item,
+ .list.with-borders .core-as-item,
.core-as-item {
@include core-as-items();
}
- .card.with-borders .item {
+ .card.with-borders .item,
+ .list.with-borders .item {
@include core-items();
}
@@ -205,6 +210,10 @@ ion-app.app-root {
background-color: $gray-light;
}
+ ion-note.core-note-block {
+ display: block;
+ }
+
// Form items
// -------------------------
@@ -333,6 +342,10 @@ ion-app.app-root {
width: 100%;
}
+ &[fullonclick="true"] {
+ cursor: pointer;
+ }
+
audio, video, a, iframe {
pointer-events: auto;
}
@@ -371,6 +384,7 @@ ion-app.app-root {
background-color: rgba(0, 0, 0, .5);
}
text-align: center;
+ cursor: pointer;
width: 32px;
height: 32px;
@@ -428,8 +442,7 @@ ion-app.app-root {
}
@each $color-name, $color-base, $color-contrast in get-colors($colors) {
&.select-md-#{$color-name},
- &.select-ios-#{$color-name},
- &.select-wp-#{$color-name} {
+ &.select-ios-#{$color-name} {
color: $color-base;
.select-icon .select-icon-inner {
@@ -468,11 +481,6 @@ ion-app.app-root {
box-shadow: $card-ios-box-shadow;
}
- &.select-wp,
- &.button-wp {
- background: $card-wp-background-color;
- }
-
.select-text {
white-space: normal;
}
@@ -506,9 +514,7 @@ ion-app.app-root {
&.select-md,
&.button-md,
&.select-ios,
- &.button-ios,
- &.select-wp,
- &.button-wp {
+ &.button-ios {
background: $core-dark-item-bg-color;
}
}
@@ -663,6 +669,9 @@ ion-app.app-root {
.action-sheet-wrapper {
.action-sheet-button.action-sheet-cancel {
color: $core-action-sheet-cancel-color;
+ @include darkmode() {
+ color: $core-dark-action-sheet-cancel-color;
+ }
}
.action-sheet-selected {
color: $core-color;
@@ -671,6 +680,7 @@ ion-app.app-root {
.alert-message {
overflow-y: auto;
+ user-select: text;
}
ion-alert.core-nohead {
@@ -680,9 +690,6 @@ ion-app.app-root {
&.alert-ios .alert-message {
padding-top: $alert-ios-message-padding-bottom;
}
- &.alert-wp .alert-message {
- padding-top: $alert-wp-message-padding-bottom;
- }
.alert-head {
display: none;
}
@@ -730,11 +737,6 @@ ion-app.app-root {
max-height: $toolbar-ios-height;
}
- .header .toolbar-wp {
- height: $toolbar-wp-height;
- max-height: $toolbar-wp-height;
- }
-
.header .toolbar-md {
height: $toolbar-md-height;
max-height: $toolbar-md-height;
@@ -800,11 +802,6 @@ ion-app.app-root {
@include ios-input-highlight($color-base);
}
- &.item-wp .text-input,
- &.item-wp.item-input.ng-valid.item-input-has-value:not(.input-has-focus):not(.item-input-has-focus) .text-input,
- &.item-wp.item-input.ng-valid.input-has-value:not(.input-has-focus):not(.item-input-has-focus) .text-input {
- border-color: $color-base;
- }
}
.core-#{$color-name}-selected-item {
@@ -1081,6 +1078,7 @@ ion-app.app-root {
}
.core-expandable {
+ cursor: pointer;
ion-icon[item-start] + .item-inner {
@include margin-horizontal(0px, null);
}
@@ -1101,6 +1099,16 @@ ion-app.app-root {
transition: opacity 100ms ease-in-out;
opacity: .1;
}
+
+ a.item,
+ .core-clickable,
+ select {
+ cursor: pointer;
+ }
+
+ a.autolink.glossary:hover {
+ cursor: help;
+ }
}
@each $color-name, $color-base, $color-contrast in get-colors($colors) {
@@ -1111,7 +1119,6 @@ ion-app.app-root {
}
.item-divider-md-#{$color-name} h2,
- .item-divider-wp-#{$color-name} h2,
.item-divider-ios-#{$color-name} h2 {
color: $color-contrast;
}
@@ -1167,6 +1174,16 @@ ion-app.platform-desktop {
white-space: normal !important;
}
+ audio, video {
+ &::-webkit-media-controls-overlay-play-button,
+ &::-webkit-media-controls-play-button,
+ &::-webkit-media-controls-timeline,
+ &::-webkit-media-controls-mute-button,
+ &::-webkit-media-controls-fullscreen-button {
+ cursor: pointer;
+ }
+ }
+
&.platform-windows {
video::-webkit-media-text-track-display {
font-size: 0.6em;
diff --git a/src/app/app.wp.scss b/src/app/app.wp.scss
deleted file mode 100644
index 97a8317ae..000000000
--- a/src/app/app.wp.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-ion-app.app-root.wp {
- .button-wp {
- min-height: $button-wp-height;
- }
-
- // Light buttons color.
- .button-wp-light {
- color: color($colors, primary, base);
- }
-
- .col[align-self-stretch] .card-wp {
- height: calc(100% - #{($card-wp-margin-end + $card-wp-margin-start)});
- }
-
- .bar-buttons core-context-menu .button-clear-wp {
- color: $toolbar-wp-button-color;
- }
-
- .item-wp ion-spinner[item-start] + .item-inner,
- .item-wp ion-spinner[item-start] + .item-input,
- .item-wp ion-icon[item-start] + .item-inner,
- .item-wp ion-icon[item-start] + .item-input,
- .item-wp img[item-start] + .item-inner,
- .item-wp img[item-start] + .item-input {
- @include margin-horizontal(($item-wp-padding-start / 2), null);
- }
-
- .item-wp ion-avatar[item-start] + .item-inner,
- .item-wp ion-avatar[item-start] + .item-input {
- @include margin-horizontal(0, null);
- }
-
- @each $color-name, $color-base, $color-contrast in get-colors($colors-wp) {
- .core-#{$color-name}-card {
- @extend .card-wp ;
- @extend .card-content-wp;
-
- @include darkmode() {
- background-color: $core-dark-item-bg-color;
- }
-
- &[icon-start] {
- @include safe-area-padding(null, null, null, $card-wp-padding-left * 2 + 20);
-
- ion-icon {
- @include safe-area-position(null, null, null, $card-wp-padding-left);
- }
- }
- }
- }
-
- .core-avoid-header ion-content {
- top: $navbar-wp-height;
- height: calc(100% - #{($navbar-wp-height)});
- }
-
- // Different levels of padding.
- @for $i from 0 through 15 {
- .core-padding-#{$i} {
- @include padding(null, null, null, 15px * $i + $item-wp-padding-start);
- }
- }
-}
\ No newline at end of file
diff --git a/src/assets/lang/ar.json b/src/assets/lang/ar.json
index 91b156306..ccfedf209 100644
--- a/src/assets/lang/ar.json
+++ b/src/assets/lang/ar.json
@@ -977,11 +977,9 @@
"core.login.credentialsdescription": "من فضلك قم بإدخال اسم المستخدم وكلمة المرور للدخول إلى",
"core.login.emailconfirmsent": "
تم إرسال بريد إلى {{$a}}
\n
والذي يحتوي على إرشادات سهلة تعينك على إتمام التسجيل
\n
إذا استمرت المشاكل اتصل بمدير هذا الموقع
",
"core.login.emailconfirmsentsuccess": "تم إرسال رسالة التأكيد الإلكترونية بنجاح",
- "core.login.enterthewordsabove": "أدخل الكلمات أعلاه",
"core.login.firsttime": "هل هذه هي المرة الأولى لك؟ الاشتراك من هنا",
"core.login.forcepasswordchangenotice": "يجب عليك تغير كلمة المرور ليتسنى لك الاستمرار",
"core.login.forgotten": "هل نسيت اسم الدخول أو كلمة المرور؟",
- "core.login.getanothercaptcha": "احصل على كاباتشا أخرى",
"core.login.help": "مساعدة",
"core.login.helpmelogin": "
من أجل تسجيل الدخول، يرجى التحقق مما يلي:
\n١- إصدار موقع التعلم الإلكتروني مودل هو الإصدار ٢.٤ أو أعلى. \n٢- قد مكن مسؤول موقع التعلم الإلكتروني مودل الوصول عبر تطبيق مودل.
\nلاختبار التطبيق باستخدام الموقع التجريبي لمودل ضع student أو teacher في حقل عنوان الموقع وانقر على زر دخول",
"core.login.instructions": "التعليمات",
@@ -1179,6 +1177,7 @@
"core.strftimetime": "%I:%M %p",
"core.submit": "سلم",
"core.success": "نجاح",
+ "core.tag.searchtags": "البحث في الوسوم",
"core.tag.tag": "علامة",
"core.tag.tags": "علامات",
"core.teachers": "معلمون",
diff --git a/src/assets/lang/bg.json b/src/assets/lang/bg.json
index fc2086c83..baac3a20d 100644
--- a/src/assets/lang/bg.json
+++ b/src/assets/lang/bg.json
@@ -1127,11 +1127,9 @@
"core.login.createaccount": "Създаване на моята регистрация",
"core.login.createuserandpass": "Изберете Вашето име и парола",
"core.login.emailconfirmsent": "
Трябва вече да е изпратен имейл на вашия адрес {{$a}}
Той съдържа лесни инструкции как да завършите регистрацията си.
Ако продължите да срещате трудности, се обърнете към администратора на сайта.
",
- "core.login.enterthewordsabove": "Въведете думите, изобразени по-горе",
"core.login.firsttime": "За първи път ли сте тук?",
"core.login.forcepasswordchangenotice": "Трябва да промените Вашата парола, преди да продължите",
"core.login.forgotten": "Забравени потребителско име или парола?",
- "core.login.getanothercaptcha": "Получаване на друга CAPTCHA",
"core.login.help": "Помощ",
"core.login.helpmelogin": "
Има много хиляди сайтове със система Moodle по света. Това приложение може да Ви свърже само със сайтове, които специално разрешават достъп с мобилно приложение.
Ако не можете да се свържете със своя сайт, трябва да се обърнете към администратор на Moodle системата на сайта, и да го помолите да прочете информацията от адрес: http://docs.moodle.org/en/Mobile_app
За да пробвате приложението с демонстрационен сайт, напишете teacher или student в полето Адрес на сайта и щракнете Бутон за добавяне.
",
"core.login.instructions": "Инструкции",
@@ -1323,6 +1321,7 @@
"core.strftimetime": "%H:%M",
"core.submit": "Изпълняване",
"core.success": "Успешно",
+ "core.tag.searchtags": "Търсене в етикети",
"core.tag.tags": "Етикети",
"core.teachers": "Преподаватели",
"core.thisdirection": "ltr",
diff --git a/src/assets/lang/ca.json b/src/assets/lang/ca.json
index f223d7f8f..ee550fc75 100644
--- a/src/assets/lang/ca.json
+++ b/src/assets/lang/ca.json
@@ -1353,7 +1353,6 @@
"core.comments.savecomment": "Desa el comentari",
"core.comments.warningcommentsnotsent": "No es poden sincronitzar els comentaris. {{error}}",
"core.commentscount": "Comentaris ({{$a}})",
- "core.commentsnotworking": "No s'han pogut recuperar els comentaris",
"core.completion-alt-auto-fail": "Completat: {{$a}} (no han aconseguit assolir la qualificació)",
"core.completion-alt-auto-n": "Incomplet: {{$a}}",
"core.completion-alt-auto-n-override": "No completada: {{$a.modname}} (establert per {{$a.overrideuser}})",
@@ -1671,7 +1670,6 @@
"core.login.changepasswordinstructions": "No podeu canviar la vostra contrasenya a l'aplicació. Feu clic al botó següent per obrir el lloc en un navegador web per canviar la vostra contrasenya. Tingueu en compte que heu de tancar el navegador després de canviar la contrasenya, ja que no se us redirigirà a l'aplicació.",
"core.login.changepasswordlogoutinstructions": "Si preferiu canviar de lloc o sortir de sessió, feu clic al botó següent:",
"core.login.changepasswordreconnectinstructions": "Feu clic al botó següent per tornar a connectar al lloc. (Tingueu en compte que si no canvieu la contrasenya amb èxit, tornareu a la pantalla anterior).",
- "core.login.checksiteversion": "Comproveu que el vostre lloc utilitza Moodle 2.4 o superior.",
"core.login.confirmdeletesite": "Esteu segur que voleu eliminar el lloc {{sitename}}?",
"core.login.connect": "Connecta",
"core.login.connecttomoodle": "Connecta al Moodle",
@@ -1686,7 +1684,6 @@
"core.login.emailconfirmsentnoemail": "
S'ha enviat un correu a la vostra adreça electrònica.
Conté instruccions per completar el registre.
Si encara teniu problemes, contacteu amb l'administrador del vostre lloc.
",
"core.login.emailconfirmsentsuccess": "El correu de confirmació s'ha enviat correctament.",
"core.login.emailnotmatch": "Les adreces de correu electrònic no coincideixen",
- "core.login.enterthewordsabove": "Introduïu les paraules de dalt",
"core.login.erroraccesscontrolalloworigin": "La crida Cross-Origin que esteu intentant ha sigut rebutjada. Si us plau, visiteu https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium per més informació",
"core.login.errordeletesite": "S'ha produït un error en eliminar aquest lloc. Si us plau, intenteu-ho més tard.",
"core.login.errorupdatesite": "S'ha produït un error actualitzant el testimoni d'aquest lloc.",
@@ -1694,7 +1691,6 @@
"core.login.firsttime": "És la primera vegada que veniu aquí?",
"core.login.forcepasswordchangenotice": "Heu de canviar la contrasenya abans de continuar",
"core.login.forgotten": "Heu oblidat el nom d'usuari o la contrasenya?",
- "core.login.getanothercaptcha": "Obté un altre CAPTCHA",
"core.login.help": "Ajuda",
"core.login.helpmelogin": "
Hi ha molts llocs Moodle al món. Aquesta aplicació només pot connectar-se als llocs Moodle que hagin habilitat l'accés a l'aplicació Moodle.
Si vols provar l'aplicació en un lloc Moodle de mostra, escriu teacher o student al camp Adreça del lloc i fes clic al Botó Connecta.
",
"core.login.instructions": "Instruccions",
@@ -1707,9 +1703,6 @@
"core.login.invalidurl": "S'ha especificat un URL no vàlid",
"core.login.invalidvaluemax": "El valor màxim és {{$a}}",
"core.login.invalidvaluemin": "El valor mínim és {{$a}}",
- "core.login.legacymoodleversion": "Estàs provant de connectar a una versió de Moodle no admesa. Descarrega l'aplicació Moodle Classic per accedir a aquest lloc.",
- "core.login.legacymoodleversiondesktop": "Estàs provant de connectar a {{$a}}.
Aquest lloc té una versió de Moodle antiga no suportada per l'aplicació Moodle Desktop.
Si aquest lloc és teu, contacta el teu Moodle Partner local per obtenir assistència i actualitzar-lo.
Vés a la nostra pàgina de contacte per sol·licitar assistència.",
- "core.login.legacymoodleversiondesktopdownloadold": "
De manera alternativa, encara podeu accedir a aquest lloc amb la versió no suportada de l'aplicació que podeu descarregar d'aquí.",
"core.login.localmobileunexpectedresponse": "Les característiques addicionals de Moodle Mobile han tornat una resposta inesperada, us heu d'autenticar fent servir el servei estàndard de Mobile.",
"core.login.loggedoutssodescription": "Heu de tornar-vos a auteniticar. Cal que entreu al lloc des d'una finestra de navegador.",
"core.login.login": "Inicia la sessió",
@@ -2000,8 +1993,18 @@
"core.submit": "Tramet",
"core.success": "Èxit",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Col·lecció per defecte",
"core.tag.errorareanotsupported": "Aquesta àrea d'etiquetes no està suportada a l'aplicació.",
+ "core.tag.inalltagcoll": "Arreu",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} etiquetada amb «{{$a.tag}}»",
+ "core.tag.notagsfound": "No s'han trobat etiquetes coincidents amb «{{$a}}»",
+ "core.tag.searchtags": "Cerca etiquetes",
+ "core.tag.showingfirsttags": "S'estan mostrant les {{$a}} etiquetes més populars",
"core.tag.tag": "Etiqueta",
+ "core.tag.tagarea_course": "Cursos",
+ "core.tag.tagarea_course_modules": "Activitats i recursos",
+ "core.tag.tagarea_post": "Entrades del blog",
+ "core.tag.tagarea_user": "Interessos de l'usuari",
"core.tag.tags": "Etiquetes",
"core.tag.warningareasnotsupported": "No es mostren algunes àrees d'etiquetes perquè no estan suportades per l'aplicació.",
"core.teachers": "Professors",
diff --git a/src/assets/lang/cs.json b/src/assets/lang/cs.json
index 4cef0d72c..3f100b527 100644
--- a/src/assets/lang/cs.json
+++ b/src/assets/lang/cs.json
@@ -1353,7 +1353,6 @@
"core.comments.savecomment": "Uložit komentář",
"core.comments.warningcommentsnotsent": "Komentáře se nepodařilo synchronizovat. {{error}}",
"core.commentscount": "Komentáře ({{$a}})",
- "core.commentsnotworking": "Komentáře nemohou být obnoveny",
"core.completion-alt-auto-fail": "Dokončeno: {{$a}} (nebylo dosaženo požadované známky)",
"core.completion-alt-auto-n": "Nedokončeno: {{$a}}",
"core.completion-alt-auto-n-override": "Nedokončeno: {{$a.modname}} (nastaveno {{$a.overrideuser}})",
@@ -1671,7 +1670,6 @@
"core.login.changepasswordinstructions": "V aplikaci nemůžete změnit své heslo. Kliknutím na následující tlačítko otevřete stránky ve webovém prohlížeči a změňte své heslo. Vezměte v úvahu, že po změně hesla je třeba prohlížeč zavřít, protože nebudete přesměrováni na aplikaci.",
"core.login.changepasswordlogoutinstructions": "Pokud chcete změnit stránky nebo se odhlásit, klikněte na následující tlačítko:",
"core.login.changepasswordreconnectinstructions": "Klepnutím na následující tlačítko se znovu připojíte ke stránkám. (Vezměte na vědomí, že pokud jste heslo nezměnili úspěšně, vrátíte se na předchozí obrazovku).",
- "core.login.checksiteversion": "Zkontrolujte, zda web používá Moodle 2.4 nebo novější.",
"core.login.confirmdeletesite": "Jste si jisti, že chcete smazat web {{sitename}}?",
"core.login.connect": "Připojit!",
"core.login.connecttomoodle": "Připojit k Moodle",
@@ -1686,7 +1684,6 @@
"core.login.emailconfirmsentnoemail": "
Byla odeslána e-mailová adresa na vaši adresu.
Obsahuje jednoduché pokyny k dokončení registrace.
Pokud máte nadále potíže, obraťte se na správce stránek.
",
"core.login.emailconfirmsentsuccess": "Potvrzovací e-mail byl úspěšně odeslán",
"core.login.emailnotmatch": "E-maily se neshodují",
- "core.login.enterthewordsabove": "Vložte výše uvedená slova",
"core.login.erroraccesscontrolalloworigin": "Cross-Origin volání - váš pokus o provedení byl odmítnut. Zkontrolujte prosím https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Při odstraňování této stránky došlo k chybě. Prosím, zkuste to znovu.",
"core.login.errorupdatesite": "Došlo k chybě při aktualizaci tokenu webu.",
@@ -1694,7 +1691,6 @@
"core.login.firsttime": "Jste tady poprvé?",
"core.login.forcepasswordchangenotice": "Před pokračováním si musíte změnit heslo.",
"core.login.forgotten": "Zapomněli jste své uživatelské jméno či heslo?",
- "core.login.getanothercaptcha": "Získat jiné CAPTCHA",
"core.login.help": "Nápověda",
"core.login.helpmelogin": "
Existuje mnoho tisíců stránek Moodle po celém světě. Tato aplikace se může připojit pouze ke stránkám Moodle, které specificky povolily přístup k mobilním aplikacím.
Nemůžete-li se připojit k vašim stránkám Moodle, musíte se obrátit na správce stránek a požádat ho o přečtení http://docs.moodle.org/en/Mobile_app
Otestujte aplikaci v demo Moodle jako učitel nebo student na poli adresa stránek a klikněte na Připojení.
",
"core.login.instructions": "Pokyny",
@@ -1707,9 +1703,6 @@
"core.login.invalidurl": "Chybná specifikace URL",
"core.login.invalidvaluemax": "Maximální hodnota je {{$a}}",
"core.login.invalidvaluemin": "Minimální hodnota je {{$a}}",
- "core.login.legacymoodleversion": "Pokoušíte se připojit k nepodporované verzi Moodle. Stáhněte si aplikaci Moodle Classic pro přístup k těmto stránkám Moodle.",
- "core.login.legacymoodleversiondesktop": "Snažíte se připojit {{$a}}.
Na těchto stránkách běží zastaralá nepodporovaná verze Moodle, která s touto aplikací Desktop Moodle nebude fungovat.
Pokud se jedná o vaše stránky, obraťte se na místního partnera moodle a obraťte se pro pomoc při jeho aktualizaci.
Prohlédněte kontaktní stránku , kde můžete odeslat žádost o pomoc",
- "core.login.legacymoodleversiondesktopdownloadold": "
Případně můžete stále přistupovat k této stránce pomocí nepodporované verze aplikace, kterou lze stáhnout zde.",
"core.login.localmobileunexpectedresponse": "Kontrola rozšířených vlastností Moodle Mobile vrátil neočekávanou odezvu. Budete ověřen pomocí standardních služeb mobilu .",
"core.login.loggedoutssodescription": "Musíte se znovu autentizovat. Musíte se přihlásit na stránky v okně prohlížeče.",
"core.login.login": "Přihlášení",
@@ -1999,8 +1992,18 @@
"core.submit": "Odeslat",
"core.success": "Úspěch",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Výchozí kolekce",
"core.tag.errorareanotsupported": "Aplikace nepodporuje pole štítků.",
+ "core.tag.inalltagcoll": "Všude",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} označeno štítkem \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Hledání výrazu ve štítku \"{{$a}}\" nepřineslo žádné výsledky",
+ "core.tag.searchtags": "Prohledat štítky",
+ "core.tag.showingfirsttags": "Zobrazit {{$a}} nejpopulárnějších štítků",
"core.tag.tag": "Štítek",
+ "core.tag.tagarea_course": "Kurzy",
+ "core.tag.tagarea_course_modules": "Činnosti a materiály",
+ "core.tag.tagarea_post": "Příspěvky blogu",
+ "core.tag.tagarea_user": "Zájmy uživatele",
"core.tag.tags": "Štítky",
"core.tag.warningareasnotsupported": "Některé oblasti štítků se nezobrazí, protože nejsou aplikací podporovány.",
"core.teachers": "Učitelé",
diff --git a/src/assets/lang/da.json b/src/assets/lang/da.json
index 7d94b8006..9ffa04335 100644
--- a/src/assets/lang/da.json
+++ b/src/assets/lang/da.json
@@ -1323,7 +1323,6 @@
"core.comments.nocomments": "Ingen kommentarer",
"core.comments.savecomment": "Gem kommentar",
"core.commentscount": "Kommentarer ({{$a}})",
- "core.commentsnotworking": "Kommentarer kan ikke hentes",
"core.completion-alt-auto-fail": "Gennemført: {{$a}} (opnåede ikke beståelseskarakter)",
"core.completion-alt-auto-n": "Ikke gennemført: {{$a}}",
"core.completion-alt-auto-n-override": "Ikke fuldført: {{$a.modname}} (set by {{$a.overrideuser}})",
@@ -1591,7 +1590,6 @@
"core.login.authenticating": "Godkender",
"core.login.cancel": "Annuller",
"core.login.changepassword": "Skift adgangskode",
- "core.login.checksiteversion": "Tjek at dit site kører Moodle 2.4 eller nyere.",
"core.login.confirmdeletesite": "Er du sikker på at du ønsker at slette websiden {{sitename}}?",
"core.login.connect": "Tilslut!",
"core.login.connecttomoodle": "Tilslut til Moodle",
@@ -1604,7 +1602,6 @@
"core.login.emailconfirmsentnoemail": "
Du har fået tilsendt en mail.
Den har enkle retningslinjer for hvordan du bliver registreret.
Kontakt sidens administrator hvis du behøver hjælp.
",
"core.login.emailconfirmsentsuccess": "Bekræftelsesmail sendt",
"core.login.emailnotmatch": "Mailadresserne matcher ikke",
- "core.login.enterthewordsabove": "Skriv ordene herover",
"core.login.erroraccesscontrolalloworigin": "Det Cross-Origin opkald du forsøger at udføre er blevet afvist. Kontroller venligst https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "En fejl opstod ved sletning af denne webside. Prøv venligst igen.",
"core.login.errorupdatesite": "En fejl opstod under opdatering af webstedets token.",
@@ -1612,7 +1609,6 @@
"core.login.firsttime": "Er det dit første besøg?",
"core.login.forcepasswordchangenotice": "Du skal ændre din kode inden du kan fortsætte",
"core.login.forgotten": "Har du glemt dit brugernavn eller din adgangskode?",
- "core.login.getanothercaptcha": "Få en anden CAPTCHA",
"core.login.help": "Hjælp",
"core.login.helpmelogin": "
Der er mange tusinde Moodlesites rundt omkring i verden. Denne app kan kun anvendes på sites, der specifikt har aktiveret app-adgang.
App'en kan testes på et Moodle-demosite ved at skrive teacher elllerstudent i feltet Site address og klikke på knappen Connect.
",
"core.login.instructions": "Instruktioner",
@@ -1884,7 +1880,17 @@
"core.submit": "Gem",
"core.success": "Succes",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Standard samling",
+ "core.tag.inalltagcoll": "Overalt",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} tagget med \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Der blev ikke fundet nogen tag-match på \"{{$a}}\"",
+ "core.tag.searchtags": "Søg i tags",
+ "core.tag.showingfirsttags": "Viser de {{$a}} mest populære tags",
"core.tag.tag": "Tag",
+ "core.tag.tagarea_course": "Kurser",
+ "core.tag.tagarea_course_modules": "Aktiviteter og materialer",
+ "core.tag.tagarea_post": "Blogindlæg",
+ "core.tag.tagarea_user": "Brugerinteresser",
"core.tag.tags": "Tags",
"core.teachers": "Lærere",
"core.thereisdatatosync": "Der er {{$a}} offline der skal synkroniseres.",
diff --git a/src/assets/lang/de-du.json b/src/assets/lang/de-du.json
index 193165d6f..123d27c98 100644
--- a/src/assets/lang/de-du.json
+++ b/src/assets/lang/de-du.json
@@ -4,64 +4,83 @@
"addon.calendar.calendarevent": "Kalendereintrag",
"addon.calendar.calendarevents": "Kalender",
"addon.calendar.calendarreminders": "Kalendererinnerungen",
- "addon.calendar.confirmeventdelete": "Möchtest du wirklich diesen Termin löschen?",
+ "addon.calendar.confirmeventdelete": "Möchtest du den Termin '{{$a}}' wirklich löschen?",
+ "addon.calendar.confirmeventseriesdelete": "Der Termin '{{$a.name}}' ist Teil der Serie. Möchtest du nur diesen Termin entfernen oder alle {{$a.count}} Termine dieser Serie?",
"addon.calendar.currentmonth": "Aktueller Monat",
"addon.calendar.defaultnotificationtime": "Standardmäßige Benachrichtigungszeit",
"addon.calendar.errorloadevent": "Fehler beim Laden des Kalendereintrags",
"addon.calendar.errorloadevents": "Fehler beim Laden der Kalendereinträge",
+ "addon.calendar.invalidtimedurationminutes": "Die angegebene Dauer in Minuten ist ungültig. Gib eine Zahl größer als 0 ein oder wähle 'Ohne Zeitangabe'.",
+ "addon.calendar.invalidtimedurationuntil": "Der angegebene Wert für Datum und Zeit von 'Dauer bis' liegt vor der Startzeit des Termins. Korrigiere diese Einstellung.",
"addon.calendar.noevents": "Keine Kalendereinträge",
+ "addon.calendar.nopermissiontoupdatecalendar": "Du hast nicht die Rechte, den Termin zu aktualisieren.",
"addon.calendar.reminders": "Erinnerungen",
"addon.calendar.setnewreminder": "Neue Erinnerung erstellen",
"addon.competency.errornocompetenciesfound": "Keine Kompetenzen gefunden",
"addon.competency.nocompetencies": "Keine Kompetenzen",
"addon.coursecompletion.complete": "Abschließen",
"addon.coursecompletion.couldnotloadreport": "Fehler beim Laden des Abschlussberichts. Versuche es später noch einmal.",
+ "addon.coursecompletion.nottracked": "Aktuell läuft für dich in diesem Kurs keine Abschlussverfolgung",
"addon.coursecompletion.required": "Notwendig",
"addon.coursecompletion.status": "Status",
"addon.files.couldnotloadfiles": "Die Dateiliste konnte nicht geladen werden.",
"addon.files.emptyfilelist": "Keine Dateien",
"addon.files.erroruploadnotworking": "Im Moment können keine Dateien zur Website hochgeladen werden.",
"addon.messageoutput_airnotifier.processorsettingsdesc": "Geräte konfigurieren",
+ "addon.messages.addcontactconfirm": "Möchtest du wirklich {{$a}} zu deinen Kontakten hinzufügen?",
+ "addon.messages.blockuserconfirm": "Möchtest du wirklich {{$a}} blockieren?",
"addon.messages.contactlistempty": "Die Kontaktliste ist leer.",
"addon.messages.contactname": "Name",
- "addon.messages.deleteallconfirm": "Möchtest du die Kommunikation wirklich löschen?",
+ "addon.messages.deleteallconfirm": "Möchtest du wirklich die gesamte Kommunikation löschen? Die Kommunikation bleibt allerdings bei den anderen beteiligten Personen erhalten.",
"addon.messages.deleteallselfconfirm": "Möchtest du diese persönliche Kommunikation wirklich löschen?",
"addon.messages.deletemessage": "Mitteilung löschen",
- "addon.messages.deletemessageconfirmation": "Möchtest du diese Mitteilung wirklich löschen? Die Mitteilung wird nur in deinem Verlauf gelöscht, aber nicht bei der Person, die die Mitteilung gesendet oder empfangen hat..",
+ "addon.messages.deletemessageconfirmation": "Möchtest du diese Mitteilung wirklich löschen? Die Mitteilung wird nur in deinem Verlauf gelöscht, aber nicht bei der Person, die die Mitteilung gesendet oder empfangen hat.",
"addon.messages.errordeletemessage": "Fehler beim Löschen der Mitteilung",
"addon.messages.errorwhileretrievingcontacts": "Fehler beim Abrufen der Kontakte vom Server",
"addon.messages.errorwhileretrievingdiscussions": "Fehler beim Abrufen der Themen vom Server",
"addon.messages.errorwhileretrievingmessages": "Fehler beim Abrufen der Mitteilungen vom Server",
"addon.messages.errorwhileretrievingusers": "Fehler beim Abrufen der Personen vom Server",
+ "addon.messages.isnotinyourcontacts": "{{$a}} gehört nicht zu deinen Kontakten",
"addon.messages.messagenotsent": "Die Mitteilung wurde nicht gesendet. Versuche es später noch einmal.",
"addon.messages.newmessages": "Neue Mitteilungen",
"addon.messages.nousersfound": "Keine Personen gefunden",
- "addon.messages.removecontactconfirm": "Der Kontakt wird aus deiner Kontaktliste gelöscht.",
+ "addon.messages.removecontactconfirm": "Möchtest du wirklich {{$a}} aus deinen Kontakten entfernen?",
+ "addon.messages.requirecontacttomessage": "Du musst {{$a}} anfragen, Sie als Kontakt hinzuzufügen. Erst dann kannst du eine Mitteilung senden.",
+ "addon.messages.selfconversationdefaultmessage": "Speichere Entwürfe von Nachrichten, Links, Notizen usw. für einen späteren Zugriff.",
"addon.messages.showdeletemessages": "Mitteilungen löschen anzeigen",
"addon.messages.type_blocked": "Blockiert",
"addon.messages.type_offline": "Offline",
"addon.messages.type_online": "Online",
"addon.messages.type_search": "Suchergebnisse",
"addon.messages.type_strangers": "Weitere Personen",
+ "addon.messages.unblockuserconfirm": "Möchtest du die Blockierung für {{$a}} wirklich aufheben?",
"addon.messages.useentertosenddescdesktop": "Falls deaktiviert, kannst du mit Ctrl+Enter die Mitteilung senden.",
"addon.messages.useentertosenddescmac": "Falls deaktiviert, kannst du mit Cmd+Enter die Mitteilung senden.",
+ "addon.messages.userwouldliketocontactyou": "{{$a}} möchte dich kontaktieren",
"addon.messages.warningconversationmessagenotsent": "Mitteilung zum Thema {{conversation}} konnte nicht gesendet werden. {{error}}",
"addon.messages.warningmessagenotsent": "Mitteilung an {{user}} konnte nicht gesendet werden. {{error}}",
+ "addon.messages.wouldliketocontactyou": "Ich möchte dich kontaktieren",
"addon.messages.you": "Du:",
+ "addon.messages.youhaveblockeduser": "Du hast diese Person blockiert.",
+ "addon.messages.yourcontactrequestpending": "Deine Kontaktanfrage an {{$a}} ist noch offen",
"addon.mod_assign.acceptsubmissionstatement": "Bestätige die Erklärung zur Eigenständigkeit.",
"addon.mod_assign.cannoteditduetostatementsubmission": "Du kannst in der App keine Abgabe hinzufügen oder bearbeiten, weil keine Erklärung zur Eigenständigkeit von der Website abgerufen werden konnte.",
"addon.mod_assign.cannotgradefromapp": "Manche Bewertungsmethoden werden von der App bisher nicht unterstützt und können nicht verändert werden.",
"addon.mod_assign.cannotsubmitduetostatementsubmission": "Du kannst in der App keine Abgabe machen, weil von der Website keine Erklärung zur Eigenständigkeit abgerufen werden konnte.",
+ "addon.mod_assign.confirmsubmission": "Wenn du nun deine Lösung zur Bewertung einreichst, kannst du nichts mehr verändern. Bist du dir sicher?",
"addon.mod_assign.erroreditpluginsnotsupported": "Du kannst in der App keine Abgabe hinzufügen oder bearbeiten, weil manche Plugins bisher keine Bearbeitung zulassen:",
"addon.mod_assign.errorshowinginformation": "Die Abgabeinformationen können nicht angezeigt werden.",
"addon.mod_assign.feedbacknotsupported": "Dieses Feedback wird von der App nicht unterstützt, so dass Informationen fehlen könnten.",
"addon.mod_assign.gradenotsynced": "Bewertung nicht synchronisiert",
+ "addon.mod_assign.multipleteams_desc": "Diese Aufgabe wird in Gruppen abgegeben. Du bist Mitglied in mehr als einer Gruppe. Um deine Einreichung korrekt deiner Gruppe zuordnen zu können, musst du Mitglied in genau einer Gruppe sein. Kontaktiere deine Trainer/innen, um deine Gruppenzugehörigkeit zu aktualisieren.",
"addon.mod_assign.notallparticipantsareshown": "Teilnehmer/innen, die nichts abgegeben haben, werden nicht angezeigt.",
- "addon.mod_assign.submissionnotsupported": "Diese Abgabe wird von der App nicht unterstützt und es könnten Informationen fehlen.",
- "addon.mod_assign.submitassignment_help": "Sobald die Aufgabe abgegeben ist, kannst du keine Änderungen mehr vornehmen.",
+ "addon.mod_assign.noteam_desc": "Diese Aufgabe wird in Gruppen abgegeben. Du bist kein Mitglied in einer Gruppe und kannst die Aufgabe deswegen nicht einreichen. Kontaktiere deine Trainer/innen, um einer Gruppe hinzugefügt zu werden.",
+ "addon.mod_assign.submissionnotsupported": "Diese Abgabe wird von der App nicht unterstützt und es könnten Infos fehlen.",
+ "addon.mod_assign.submitassignment_help": "Sobald diese Aufgabe abgegeben ist, kannst du nichts mehr ändern.",
"addon.mod_assign.userwithid": "Nutzer/in mit ID {{id}}",
"addon.mod_assign.warningsubmissiongrademodified": "Die Abgabebewertung wurde auf der Website geändert.",
"addon.mod_assign.warningsubmissionmodified": "Die Abgabe wurde auf der Website geändert.",
+ "addon.mod_assign_submission_onlinetext.wordlimitexceeded": "Die maximale Anzahl von Wörtern für diese Aufgabenlösung ist {{$a.limit}}. Deine Antwort hat {{$a.count}} Wörter. Verkürze deinen Text und speichere ihn dann erneut.",
"addon.mod_chat.enterchat": "Willst du den Chat starten? Klick hier.",
"addon.mod_chat.errorwhileconnecting": "Fehler beim Verbinden zum Chat",
"addon.mod_chat.errorwhilegettingchatdata": "Fehler beim Abrufen des Chats",
@@ -70,35 +89,46 @@
"addon.mod_chat.errorwhilesendingmessage": "Fehler beim Senden der Mitteilung",
"addon.mod_chat.messagebeepsyou": "{{$a}} hat dich angepiepst!",
"addon.mod_chat.messageyoubeep": "Du hast {{$a}} angepiepst",
- "addon.mod_chat.mustbeonlinetosendmessages": "Du musst online sein, um Mitteilungen zu senden.",
+ "addon.mod_chat.mustbeonlinetosendmessages": "Du musst online sein, um Mitteilungen senden zu können.",
"addon.mod_chat.nosessionsfound": "Keine Sessions",
"addon.mod_chat.showincompletesessions": "Unvollständige Sessions anzeigen",
+ "addon.mod_choice.cannotsubmit": "Deine Auswahl konnte nicht gespeichert werden. Versuche es noch einmal.",
"addon.mod_choice.errorgetchoice": "Fehler beim Laden der Abstimmung",
+ "addon.mod_choice.previewonly": "Diese Vorschau zeigt die verfügbaren Optionen für diese Aktivität. Du kannst deine Wahl nicht vor {{$a}} einreichen.",
+ "addon.mod_choice.publishinfoanonafter": "Ergebnisse werden nach deiner Antwort ohne Namensnennung veröffentlicht.",
+ "addon.mod_choice.publishinfofullafter": "Ergebnisse werden nach deiner Antwort vollständig mit Namensnennung veröffentlicht.",
+ "addon.mod_choice.publishinfonever": "Die Ergebnisse werden nach deiner Antwort nicht veröffentlicht.",
"addon.mod_choice.responsesresultgraphdescription": "{{number}}% der Teilnehmer/innen haben die Option gewählt: {{text}}.",
"addon.mod_choice.resultsnotsynced": "Deine letzte Antwort ist in den Ergebnissen noch nicht enthalten. Synchronisiere die Daten.",
"addon.mod_choice.yourselection": "Deine Auswahl",
"addon.mod_data.confirmdeleterecord": "Möchtest du diesen Datensatz in der Datenbank wirklich löschen?",
"addon.mod_data.edittagsnotsupported": "Die Bearbeitung von Tags wird in der App nicht unterstützt.",
"addon.mod_data.emptyaddform": "Du hast keine Einträge vorgenommen!",
- "addon.mod_data.entrieslefttoadd": "Du musst {{$a.entriesleft}} (weitere) Einträge vornehmen, um diese Aktivität zu beenden.",
- "addon.mod_data.entrieslefttoaddtoview": "Du musst {{$a.entrieslefttoview}} (weitere) Einträge vornehmen, bevor du andere Teilnehmerbeiträge anschauen darfst.",
+ "addon.mod_data.entrieslefttoadd": "Du musst {{$a.entriesleft}} weitere Einträge vornehmen, um diese Aktivität zu beenden.",
+ "addon.mod_data.entrieslefttoaddtoview": "Du musst {{$a.entrieslefttoview}} weitere Einträge vornehmen, bevor du andere Teilnehmerbeiträge anschauen darfst.",
"addon.mod_data.errorapproving": "Fehler beim Freigeben bzw. Ablehnen des Eintrags",
"addon.mod_data.errordeleting": "Fehler beim Löschen des Eintrags",
+ "addon.mod_data.errormustsupplyvalue": "Du musst hier einen Wert eintragen.",
"addon.mod_data.gettinglocation": "Geodaten holen ...",
"addon.mod_data.mylocation": "Meine Geodaten",
"addon.mod_data.searchbytagsnotsupported": "Die Suche nach Tags wird in der App nicht unterstützt.",
"addon.mod_feedback.captchaofflinewarning": "Ein Feedback mit Captcha kann offline nicht beendet werden. Captcha funktioniert nur, wenn der Server antworten kann.",
+ "addon.mod_feedback.complete_the_form": "",
"addon.mod_feedback.feedback_submitted_offline": "Das Feedback wurde gespeichert, um es später zu übertragen.",
+ "addon.mod_feedback.this_feedback_is_already_submitted": "Du hast diese Aktivität bereits beendet.",
"addon.mod_folder.emptyfilelist": "Keine Dateien",
- "addon.mod_forum.cannotadddiscussionall": "Du darfst kein neues Thema für alle Teilnehmer/innen hinzufügen.",
+ "addon.mod_forum.cannotadddiscussionall": "Du darfst kein neues Thema für alle Teilnehmer/innen anlegen.",
"addon.mod_forum.couldnotadd": "Dein Beitrag wurde nicht abgeschickt.",
"addon.mod_forum.couldnotupdate": "Der Beitrag wurde nicht geändert.",
+ "addon.mod_forum.cutoffdatereached": "Der letzte Abgabetermin für dieses Forum ist erreicht. Du kannst keinen Beitrag mehr schreiben.",
"addon.mod_forum.deletesure": "Möchtest du diesen Beitrag wirklich löschen?",
+ "addon.mod_forum.discussionlocked": "Dieses Thema wurde gesperrt. Du kannst hier nicht weiter antworten.",
"addon.mod_forum.erroremptymessage": "Du hast keinen Text geschrieben.",
"addon.mod_forum.erroremptysubject": "Du hast den Betreff vergessen.",
"addon.mod_forum.errorgetforum": "Fehler beim Laden der Forumsdaten",
"addon.mod_forum.errorgetgroups": "Fehler beim Laden der Gruppeneinstellungen",
"addon.mod_forum.errorposttoallgroups": "Das neue Thema konnte nicht in allen Gruppen angelegt werden.",
+ "addon.mod_forum.favouriteupdated": "Deine Markierungsoption wurde aktualisiert.",
"addon.mod_forum.forumnodiscussionsyet": "Keine Themen im Forum",
"addon.mod_forum.group": "Gruppe",
"addon.mod_forum.numdiscussions": "{{numdiscussions}} Themen",
@@ -123,28 +153,31 @@
"addon.mod_imscp.showmoduledescription": "Beschreibung anzeigen",
"addon.mod_lesson.congratulations": "Herzlichen Glückwunsch! Du hast das Ende der Lektion erreicht.",
"addon.mod_lesson.defaultessayresponse": "Deine Freitext-Antwort wird später bewertet.",
- "addon.mod_lesson.displayscorewithessays": "Du hast bisher {{$a.score}} von {{$a.tempmaxgrade}} Punkten erzielt (ohne Freitext-Aufgaben). Freitext-Aufgaben ({{$a.essayquestions}}) werden später bewertet und zur Gesamtpunktzahl hinzugefügt .
Deine derzeitige Bewertung: {{$a.score}} von {{$a.grade}} Punkten (mit Freitext-Aufgaben).",
- "addon.mod_lesson.displayscorewithoutessays": "Deine Bewertung: {{$a.score}} Punkte (von {{$a.grade}} Punkten).",
- "addon.mod_lesson.enterpassword": "Bitte gib das Kennwort ein:",
- "addon.mod_lesson.eolstudentoutoftimenoanswers": "Du hast keine Fragen beantwortet. Du erhältst daher 0 Punkte/keine Bewertung für die Lektion.",
+ "addon.mod_lesson.displayscorewithessays": "
Du hast bisher für die automatisch bewerteten Fragen die Bewertung {{$a.score}} von {{$a.tempmaxgrade}} erzielt.
\n
Deine Freitext-Aufgaben ({{$a.essayquestions}}) werden später bewertet und zur Gesamtbewertung hinzugefügt.
\n
Deine derzeitige Bewertung ohne die Freitextaufgaben ist {{$a.score}} von {{$a.grade}}.
",
+ "addon.mod_lesson.displayscorewithoutessays": "Deine Bewertung: {{$a.score}} von {{$a.grade}}",
+ "addon.mod_lesson.enterpassword": "Gib bitte das Kennwort ein:",
+ "addon.mod_lesson.eolstudentoutoftimenoanswers": "Du hast keine Fragen beantwortet. Du erhältst deswegen 0 Punkte für die Lektion.",
"addon.mod_lesson.errorprefetchrandombranch": "Diese Lektion enthält einen Sprung zu einer zufälligen Seite. Die Lektion kann in der App nicht versucht werden, ohne im Webbrowser begonnen worden zu sein.",
"addon.mod_lesson.errorreviewretakenotlast": "Dieser Versuch kann nicht mehr angesehen werden, weil ein weiterer Versuch beendet wurde.",
"addon.mod_lesson.finishretakeoffline": "Dieser Versuch wurde offline beendet.",
- "addon.mod_lesson.firstwrong": "Deine Antwort ist falsch. Möchtest du sie noch einmal (ohne Bewertung) wiederholen?",
+ "addon.mod_lesson.firstwrong": "Ihre Antwort ist falsch. Möchtest du es noch einmal (ohne Bewertung) versuchen?",
"addon.mod_lesson.leftduringtimed": "Du hast die Lektion abgebrochen. Die Bearbeitung der Lektion ist zeitlich begrenzt. Klicke auf Fortsetzen, um die Lektion erneut zu beginnen.",
- "addon.mod_lesson.leftduringtimednoretake": "Du hast die Lektion abgebrochen. Die Bearbeitung der Lektion ist zeitlich begrenzt. Du kannst diese Lektion nicht mehr bearbeiten.",
- "addon.mod_lesson.loginfail": "Der Login ist gescheitert. Bitte versuche es noch einmal.",
+ "addon.mod_lesson.leftduringtimednoretake": "Du hast die Lektion abgebrochen. Die Bearbeitung der Lektion ist zeitlich begrenzt. Du kannst diese Lektion nicht weiter bearbeiten.",
+ "addon.mod_lesson.loginfail": "Der Login ist gescheitert. Versuche es bitte noch einmal.",
"addon.mod_lesson.maximumnumberofattemptsreached": "Du hast die Höchstzahl der Versuche erreicht - weiter zur nächsten Seite",
- "addon.mod_lesson.noanswer": "Du hast keine Antwort abgegeben. Gehe zurück und gib eine Antwort ein.",
- "addon.mod_lesson.retakefinishedinsync": "Ein Offline-Versuch wurde synchronisiert. Möchtest du ihn überprüfen?",
+ "addon.mod_lesson.noanswer": "Eine oder mehrere Fragen wurden nicht beantwortet. Gehe zurück und gib Antworten ein.",
+ "addon.mod_lesson.progressbarteacherwarning2": "Die Fortschrittsanzeige wird dir nicht angezeigt, weil du diese Lektion als Trainer/in bearbeiten kannst.",
+ "addon.mod_lesson.progresscompleted": "Du hast {{$a}}% der Lektion erledigt.",
+ "addon.mod_lesson.retakefinishedinsync": "Ein Offline-Versuch wurde synchronisiert. Möchtest du ihn erneut überprüfen?",
"addon.mod_lesson.retakelabelfull": "{{retake}}: {{grade}} {{timestart}} ({{duration}})",
"addon.mod_lesson.retakelabelshort": "{{retake}}: {{grade}} {{timestart}}",
"addon.mod_lesson.secondpluswrong": "Nicht ganz. Möchtest du es noch einmal versuchen?",
- "addon.mod_lesson.teacherjumpwarning": "In der Lektion werden \"{{$a.cluster}}\"-Sprünge und/oder \"{{$a.unseen}}\"-Sprünge verwendet. Diese Sprünge werden durch \"Nächste Seite\"-Sprünge ersetzt. Melde dich als Teilnehmer/in an, um diese Sprünge zu testen.",
+ "addon.mod_lesson.teacherjumpwarning": "In der Lektion werden '{{$a.cluster}}'-Sprünge und/oder '{{$a.unseen}}'-Sprünge verwendet. Diese Sprünge werden durch 'Nächste Seite'-Sprünge ersetzt. Melde dich als Teilnehmer/in an, um die Sprünge zu testen.",
"addon.mod_lesson.teacherongoingwarning": "Die aktuelle Bewertung wird nur für Teilnehmer/innen angezeigt. Melde dich als Teilnehmer/in an, um diese Funktion zu testen.",
- "addon.mod_lesson.teachertimerwarning": "Die Zeitbegrenzung wird nur für Teilnehmer/innen angezeigt. Melde dich als Teilnehmer/in an, um diese Funktion zu testen.",
+ "addon.mod_lesson.teachertimerwarning": "Die Zeitbegrenzung funktioniert nur für Teilnehmer/innen. Melde dich als Teilnehmer/in an, um diese Funktion zu testen.",
"addon.mod_lesson.warningretakefinished": "Der Versuch wurde auf der Website beendet.",
- "addon.mod_lesson.youhaveseen": "Du hast einige Seiten der Lektion schon einmal bearbeitet. Möchtest du sie an der Stelle fortsetzen, an der du damals aufgehört hast?",
+ "addon.mod_lesson.youhaveseen": "Du hast einige Seiten der Lektion schon einmal bearbeitet. Möchtest du an der Stelle weitermachen, an der du damals aufgehört hast?",
+ "addon.mod_lesson.youranswer": "Deine Antwort",
"addon.mod_lesson.yourcurrentgradeisoutof": "Deine derzeitige Bewertung ist {{$a.grade}} von {{$a.total}}",
"addon.mod_lti.errorgetlti": "Fehler beim Laden der Moduldaten",
"addon.mod_lti.errorinvalidlaunchurl": "Die Launch-URL ist ungültig.",
@@ -214,7 +247,7 @@
"addon.notifications.therearentnotificationsyet": "Keine Systemnachrichten",
"addon.storagemanager.deletecourse": "Alle Kursdaten entladen",
"addon.storagemanager.deletedatafrom": "Daten von {{name}} entladen",
- "addon.storagemanager.info": "Auf deinem Gerät gespeicherte Daten beschleunigen die Arbeit und ermöglichen die Offline-Verwendung der App. Du kannst Daten sicher entladen, wenn du Speicherplatz freigeben musst.",
+ "addon.storagemanager.info": "Auf deinem Gerät gespeicherte Daten beschleunigen die Arbeit und ermöglichen die Offline-Verwendung der App. Du kannst Daten entladen, wenn du Speicherplatz freigeben musst.",
"addon.storagemanager.managestorage": "Speicher verwalten",
"addon.storagemanager.storageused": "Verwendeter Dateispeicher:",
"core.android": "Android",
@@ -229,7 +262,6 @@
"core.clicktoseefull": "Tippe zum Anzeigen aller Inhalte",
"core.comments.commentsnotworking": "Kommentare können nicht abgerufen werden.",
"core.comments.warningcommentsnotsent": "Kommentare konnten nicht synchronisiert werden. {{error}}",
- "core.commentsnotworking": "Kommentare können nicht abgerufen werden.",
"core.confirmcanceledit": "Möchtest du diese Seite wirklich verlassen? Alle Änderungen gehen verloren!",
"core.confirmgotabroot": "Möchtest du wirklich zu {{name}} zurückgehen?",
"core.confirmgotabrootdefault": "Möchtest du wirklich zur initalen Seite des aktuellen Tabs zurückkehren?",
@@ -261,7 +293,7 @@
"core.course.errordownloadingcourse": "Fehler beim Herunterladen des Kurses",
"core.course.errordownloadingsection": "Fehler beim Herunterladen des Abschnitts",
"core.course.errorgetmodule": "Fehler beim Laden von Aktivitätsdaten",
- "core.course.insufficientavailablequota": "Dein Gerät konnte keinen Speicherplatz für diesen Download zuweisen. Möglicherweise ist Speicherplatz für anstehende App- und Systemupdates reserviert. Sorge zuerst für ausreichend freien Speicher.",
+ "core.course.insufficientavailablequota": "Dein Gerät konnte für diesen Download keinen Speicherplatz zuweisen. Möglicherweise ist Speicherplatz für anstehende App- und Systemupdates reserviert. Sorge zuerst für ausreichend freien Speicher.",
"core.course.insufficientavailablespace": "Du versuchst, {{size}} herunterzuladen. Dein Gerät hat danach möglicherweise nicht genügend Platz, um normal zu funktionieren. Sorge zuerst für ausreichend freien Speicher.",
"core.course.manualcompletionnotsynced": "Manueller Abschluss wurde nicht synchronisiert",
"core.course.nocontentavailable": "Momentan sind keine Inhalte verfügbar",
@@ -281,6 +313,7 @@
"core.courses.errorselfenrol": "Fehler bei der Selbsteinschreibung",
"core.courses.filtermycourses": "Meine Kurse filtern",
"core.courses.nocourses": "Keine Kursinformation",
+ "core.courses.notenroled": "Du bist nicht in diesen Kurs eingeschrieben",
"core.courses.notenrollable": "Du kannst dich nicht selbst in diesen Kurs einschreiben.",
"core.courses.password": "Einschreibeschlüssel",
"core.courses.paymentrequired": "Dieser Kurs ist gebührenpflichtig. Bitte bezahle die Teilnahmegebühr, um im Kurs eingeschrieben zu werden.",
@@ -298,7 +331,7 @@
"core.dflastweekdate": "ddd",
"core.dfmediumdate": "LLL",
"core.dftimedate": "HH[:]mm",
- "core.digitalminor_desc": "Um ein Nutzerkonto für diese Website zu erstellen, müssen sich deine Erziehungsberechtigten an folgende Stelle wenden:",
+ "core.digitalminor_desc": "Um ein Nutzerkonto zu erstellen, müssen sich deine Erziehungsberechtigten an folgende Stelle wenden:",
"core.discard": "Verwerfen",
"core.dismiss": "Abbrechen",
"core.downloaded": "Heruntergeladen",
@@ -310,7 +343,7 @@
"core.errordownloadingsomefiles": "Fehler beim Laden der Dateien. Einige Dateien könnten fehlen.",
"core.errorfileexistssamename": "Eine Datei mit gleichem Namen existiert bereits.",
"core.errorinvalidform": "Das Formular enthält ungültige Daten. Fülle alle notwendigen Felder aus und prüfe, dass alle Daten richtig sind.",
- "core.errorinvalidresponse": "Ungültige Antwort empfangen. Frage den Administrator, wenn der Fehler weiter auftritt.",
+ "core.errorinvalidresponse": "Ungültige Antwort empfangen. Frage den Administrator, wenn der Fehler wieder auftritt.",
"core.errorloadingcontent": "Fehler beim Laden des Inhalts",
"core.errorofflinedisabled": "Der Offline-Zugriff auf diese Website ist deaktiviert. Du musst online sein, um die App zu verwenden.",
"core.erroropenfilenoapp": "Fehler: Keine App zum Öffnen dieses Dateityps gefunden.",
@@ -320,6 +353,7 @@
"core.errorsomedatanotdownloaded": "Beim Herunterladen dieser Aktivität könnten möglicherweise einige Daten aus Performance- und Datennutzungsgründen ausgenommen worden sein.",
"core.errorsync": "Fehler beim Synchronisieren. Versuche es noch einmal.",
"core.errorsyncblocked": "{{$a}} kann im Moment wegen eines anderen Vorgangs nicht synchronisiert werden. Versuche es später noch einmal. Falls das Problem weiterhin besteht, starte die App neu.",
+ "core.explanationdigitalminor": "Diese Informationen sind notwendig um festzustellen, ob du dich selber registrieren darfst. Nur wenn du alt genug bist, kannst du selber den Richtlinien und Nutzungsbedingungen zustimmen. Andernfalls müssen dies deine Erziehungsberechtigten tun.",
"core.filenameexist": "Der Dateiname existiert bereits: {{$a}}",
"core.fileuploader.audio": "Audio",
"core.fileuploader.camera": "Kamera",
@@ -334,7 +368,7 @@
"core.fileuploader.errorreadingfile": "Fehler beim Lesen der Datei",
"core.fileuploader.errorwhileuploading": "Fehler beim Hochladen der Datei",
"core.fileuploader.file": "Datei",
- "core.fileuploader.fileuploaded": "Datei hochgeladen",
+ "core.fileuploader.fileuploaded": "Datei erfolgreich hochgeladen",
"core.fileuploader.maxbytesfile": "Die Datei {{$a.file}} ist zu groß. Die maximale Größe zum Hochladen ist {{$a.size}}.",
"core.fileuploader.photoalbums": "Fotoalbum",
"core.fileuploader.readingfile": "Datei lesen",
@@ -344,9 +378,13 @@
"core.fileuploader.uploading": "Hochladen ...",
"core.fileuploader.uploadingperc": "Hochladen: {{$a}}%",
"core.fileuploader.video": "Video",
- "core.forcepasswordchangenotice": "Bitte ändere dein Kennwort, bevor du weiterarbeitest.",
+ "core.forcepasswordchangenotice": "Ändere dein Kennwort, bevor du weiterarbeitest.",
"core.fullnameandsitename": "{{fullname}} ({{sitename}})",
+ "core.h5p.confirmdialogbody": "Möchtest du wirklich fortfahren? Die Aktion kann nicht zurückgenommen werden.",
+ "core.h5p.contentchanged": "Dieser Inhalt hat sich seit deiner letzten Verwendung geändert.",
+ "core.h5p.offlineDialogBody": "Infos zum Abschluss dieser Aufgabe konnten nicht gesendet werden. Überprüfe die Internetverbindung.",
"core.h5p.play": "H5P abspielen",
+ "core.h5p.resizescript": "Füge dieses Skript in die Website ein, wenn du eine dynamische Größenanpassung des eingebetteten Inhalts möchtest:",
"core.hasdatatosync": "Die Offline-Daten von {{$a}} müssen synchronisiert werden.",
"core.humanreadablesize": "{{size}} {{unit}}",
"core.image": "Bild",
@@ -360,10 +398,9 @@
"core.login.authenticating": "Authentifizieren ...",
"core.login.changepasswordbutton": "Seite zur Kennwortänderung aufrufen",
"core.login.changepasswordhelp": "Wenn du Probleme beim Ändern deines Kennworts hast, wende dich an den Administrator deiner Website. Administrator/innen sind die Personen, die das Moodle an deiner Schule, Universität, Firma oder Organisation verwalten. Wenn du nicht weißt, wie du mit ihnen Kontakt aufnehmen kannst, wende dich an deine Trainer/innen.",
- "core.login.changepasswordinstructions": "Du kannst dein Kennwort nicht in der App ändern. Klicke auf die folgende Taste, um die Website in einem Webbrowser zu öffnen und dein Kennwort zu ändern. Beachte, dass du den Browser nach dem Ändern des Kennworts schließen musst, da du nicht zur App zurückgeleitet wirst.",
+ "core.login.changepasswordinstructions": "Du kannst dein Kennwort nicht in der App ändern. Klicke auf die folgende Taste, um Moodle in einem Webbrowser zu öffnen und dein Kennwort zu ändern. Beachte, dass du den Browser nach dem Ändern des Kennworts schließen musst, um wieder in die App zurückzukommen.",
"core.login.changepasswordlogoutinstructions": "Wenn du die Website wechseln oder dich abmelden möchtest, klicke auf die folgende Taste:",
"core.login.changepasswordreconnectinstructions": "Klicke auf die folgende Taste, um die Verbindung zur Website wiederherzustellen. Beachte, dass du zum vorherigen Bildschirm zurückkehrst, wenn du dein Kennwort nicht erfolgreich geändert hast.",
- "core.login.checksiteversion": "Prüfe, ob die Website mindestens Moodle 2.4 verwendet.",
"core.login.confirmdeletesite": "Möchtest du '{{sitename}}' wirklich aus der Liste löschen?",
"core.login.connect": "Verbinden",
"core.login.connecttomoodle": "Zu Moodle verbinden",
@@ -373,7 +410,7 @@
"core.login.contactyouradministratorissue": "Frage den Administrator, um folgendes Problem prüfen zu lassen: {{$a}}",
"core.login.createuserandpass": "Wähle deinen Anmeldenamen und dein Kennwort",
"core.login.credentialsdescription": "Gib den Anmeldenamen und das Kennwort ein. ",
- "core.login.emailconfirmsent": "
Um sicherzugehen, dass sich niemand unberechtigt über die von dir angegebene E-Mail anmeldet, wird eine automatische Benachrichtigung an diese Adresse {{$a}} gesendet. Je nach Netzlast trifft sie sofort oder auch etwas später bei dir ein.
\n
Die Benachrichtigung enthält eine Anleitung, wie du deine Registrierung bestätigst.\nDanach bist du auf dieser Moodle-Seite registriert und kannst sofort loslegen.
\n
Bei Problemen wende dich bitte an die Administrator/innen der Website.
",
+ "core.login.emailconfirmsent": "
Um sicherzugehen, dass sich niemand unberechtigt über die von dir angegebene E-Mail anmeldet, wird eine automatische Benachrichtigung an diese Adresse {{$a}} gesendet.
\n
Die Benachrichtigung enthält eine Anleitung, wie du deine Registrierung bestätigst. Danach bist du auf dieser Moodle-Seite registriert und kannst sofort loslegen.
\n
Bei Problemen wende dich bitte an die Administrator/innen der Website.
",
"core.login.emailconfirmsentnoemail": "
An deine E-Mail-Adresse wurde eine Mitteilung gesendet.
Die Mitteilung enthält eine einfache Anleitung, um deine Registrierung abzuschließen. Falls du Probleme hast, frage den Administrator der Website.
",
"core.login.emailnotmatch": "Die E-Mail-Adressen stimmen nicht überein.",
"core.login.erroraccesscontrolalloworigin": "Der Cross-Origin.Aufruf wurde zurückgewiesen. Weitere Infos: https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
@@ -381,7 +418,7 @@
"core.login.errorupdatesite": "Fehler bei der Authentifizierung",
"core.login.findyoursite": "Website suchen",
"core.login.firsttime": "Bist du zum ersten Mal auf dieser Webseite?",
- "core.login.forcepasswordchangenotice": "Bitte ändere dein Kennwort, bevor du weiterarbeitest.",
+ "core.login.forcepasswordchangenotice": "Ändere dein Kennwort, bevor du weiterarbeitest.",
"core.login.helpmelogin": "
Auf der Welt gibt es viele tausend Websites mit Moodle. Diese App kann aber nur mit Websites verbunden werden, die für den Zugriff mit der mobilen Moodle App freigegeben wurden.
Falls du dich nicht mit deiner Website verbinden kannst, frage den Administrator der Website und bitte ihn, die Anleitung zu lesen. https://docs.moodle.org/de/Moodle_App
Um die App mit einer Demoseite auszuprobieren, schreibe teacher oder student in das Feld Website-Adresse und tippe dann auf Verbinden.
",
"core.login.invalidaccount": "Prüfe deine Anmeldedaten oder frage den Administrator der Website.",
"core.login.invaliddate": "Ungültiges Datum",
@@ -390,25 +427,24 @@
"core.login.invalidtime": "Ungültige Zeitangabe",
"core.login.invalidvaluemax": "Der Maximalwert ist {{$a}}.",
"core.login.invalidvaluemin": "Der Minimalwert ist {{$a}}.",
- "core.login.legacymoodleversion": "Du versuchst, dich mit einer nicht unterstützen Moodle-Version zu verbinden. Verwende die Moodle-Classic-App, um auf diese Website zu gelangen.",
- "core.login.legacymoodleversiondesktop": "Du versuchst, dich mit {{$a}} zu verbinden.
Diese Website läuft mit einer alten, nicht unterstützen Moodle-Version, die nicht mit der Moodle-Desktop-App funktioniert.
Falls diese Website dir gehört und du Probleme mit der Aktualisierung hast, frage bitte einen lokalen Moodle-Partner. Deine Anfrage kannst du über unsere Kontaktseite abgeben.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Alternativ kannst du auf diese Website zugreifen, wenn du eine ältere Version der App herunterlädt und verwendest.",
"core.login.localmobileunexpectedresponse": "Die Verbindung zum Plugin 'Moodle Mobile - Zusatzfeatures' ist fehlgeschlagen. Du wirst über den standardmäßigen mobilen Webservice authentifiziert.",
"core.login.loggedoutssodescription": "Du musst dich neu authentifizieren. Melde dich im Browser auf der Website an.",
"core.login.loginbutton": "Anmelden",
"core.login.logininsiterequired": "Du musst dich für diese Website im Browser anmelden.",
- "core.login.loginsteps": "Guten Tag!\n\nUm an den verschiedenen Kursen teilnehmen zu können, musst du dir einen Nutzerzugang für diese Website anlegen. Für einige Kurse könnte zusätzlich ein Zugangsschlüssel notwendig sein.\n\n
Gehe dazu bitte wie folgt vor:\n
\n
Fülle das Formular Neuer Zugang mit deinen Angaben aus.
\n
Du erhältst umgehend eine Benachrichtigung an die von dir angegebene E-Mail-Adresse.
\n
Lies diese E-Mail genau und klicke den darin enthaltenen Link an.
\n
Dein Zugang wird auf diese Weise bestätigt und du wirst automatisch mit deinen zuvor angegebenen Zugangsdaten auf der Startseite eingeloggt.
\n
Jetzt wählst du bitte den Kurs aus, an dem du teilnehmen möchtest.
\n
Für einige Kurse ist ein Zugangsschlüssel notwendig. Benutze dazu bitte den Zugangsschlüssel, den dir deine Trainer/in mitgeteilt hat. Mit diesem Zugangsschlüssel kannst du dich in den entsprechenden Kurs einschreiben.
\n
Nun hast du einen Nutzerzugang zur Website. Zukünftig musst du jedes Mal den bei deiner Registrierung gewählten Anmeldenamen und das Kennwort (im Login-Block auf dieser Seite) eingeben, um sich einzuloggen und Zugang zu den verschiedenen Kursen zu erhalten.
\n",
+ "core.login.loginsteps": "Für den vollen Zugriff auf die Website brauchst du ein Nutzerkonto.",
"core.login.mobileservicesnotenabled": "Der mobile Zugriff ist für diese Website nicht aktiviert. Frage den Administrator, wenn du die mobile App aktiviert haben möchtest.",
"core.login.mustconfirm": "Du musst deinen Zugang bestätigen",
"core.login.newsitedescription": "Gib die URL zu deiner Website ein.",
"core.login.notloggedin": "Du musst angemeldet sein.",
+ "core.login.passwordforgotteninstructions2": "Um dein Kennwort zurückzusetzen, trage bitte entweder deinen Anmeldenamen oder deine E-Mail-Adresse ein. Wenn du in der Datenbank zu finden bist, wird eine Mitteilung an deine E-Mail-Adresse verschickt. Diese Mitteilung enthält eine Anleitung für die weiteren Schritte.",
"core.login.passwordrequired": "Kennwort fehlt",
- "core.login.policyagree": "Lies diese Zustimmungserklärung sorgfältig. Du musst erst zustimmen, um diese Website weiter nutzen zu können. Stimmst du zu?",
+ "core.login.policyagree": "Lies diese Datenschutzinfos sorgfältig. Du musst zustimmen, um diese Website weiter nutzen zu können. Stimmst du zu?",
"core.login.policyagreementclick": "Klicke hier, um die Zustimmungserklärung zu lesen.",
+ "core.login.potentialidps": "Verwende dein Nutzerkonto bei:",
"core.login.problemconnectingerror": "Probleme beim Verbinden mit",
"core.login.problemconnectingerrorcontinue": "Prüfe, ob die URL richtig eingegeben ist. Versuche es noch einmal.",
- "core.login.recaptchachallengeimage": "reCaptcha Challenge Image",
- "core.login.recaptchaexpired": "Überprüfung notwendig. Beantworte die Sicherheitsfrage noch einmal.",
+ "core.login.recaptchachallengeimage": "reCaptcha Challenge-Bild",
+ "core.login.recaptchaexpired": "Überprüfung abgelaufen. Beantworte die Sicherheitsfrage noch einmal.",
"core.login.recaptchaincorrect": "Die Antwort auf die Sicherheitsfrage ist falsch.",
"core.login.reconnect": "Neu verbinden",
"core.login.reconnectdescription": "Die Authentifizierung ist abgelaufen oder ungültig. Du musst dich neu anmelden.",
@@ -419,9 +455,9 @@
"core.login.siteaddress": "URL der Website",
"core.login.sitehasredirect": "Deine Website enthält mindestens eine HTTP-Weiterleitung. Die App kann keine Weiterleitungen verarbeiten und der Verbindungaufbau könnte fehlschlagen.",
"core.login.siteinmaintenance": "Diese Website ist im Wartungsmodus.",
- "core.login.sitepolicynotagreederror": "Zustimmungserklärung nicht bestätigt",
+ "core.login.sitepolicynotagreederror": "Die Zustimmungserklärung wurde nicht bestätigt.",
"core.login.siteurl": "URL der Website",
- "core.login.siteurlrequired": "Die URL der Website ist notwendig, z.B. https://www.meinmoode.de",
+ "core.login.siteurlrequired": "Die URL der Website ist notwendig, z.B. https://www.meinmoodle.de",
"core.login.stillcantconnect": "Kannst du dich immer noch nicht verbinden?",
"core.login.usernamerequired": "Anmeldename fehlt",
"core.login.visitchangepassword": "Möchtest du die Website aufrufen, um das Kennwort zu ändern?",
@@ -435,7 +471,7 @@
"core.nooptionavailable": "Keine Option verfügbar",
"core.nopasswordchangeforced": "Du kannst nicht weitermachen, ohne das Kennwort zu ändern.",
"core.nopermissionerror": "Du hast aktuell keine Rechte, um dies zu tun.",
- "core.nopermissions": "Entschuldigung, aber du besitzt derzeit keine Rechte, dies zu tun ({{$a}}).",
+ "core.nopermissions": "Du hast derzeit keine Rechte, dies zu tun ({{$a}}).",
"core.notapplicable": "n/a",
"core.notingroup": "Diese Aktivität ist nur für Gruppenmitglieder zugänglich. Du bist kein Gruppenmitglied.",
"core.notsent": "Nicht gesendet",
@@ -443,7 +479,7 @@
"core.openfullimage": "Tippe, um das Bild in voller Größe anzuzeigen",
"core.openinbrowser": "Im Browser öffnen",
"core.parentlanguage": "de",
- "core.paymentinstant": "Klicke auf den Button, um die Teilnahmegebühr zu bezahlen. Sobald dieser Zahlvorgang abgeschlossen ist, wirst du automatisch in den Kurs eingeschrieben.",
+ "core.paymentinstant": "Klicke auf die Taste, um die Teilnahmegebühr zu bezahlen. Sobald der Zahlvorgang abgeschlossen ist, wirst du automatisch in den Kurs eingeschrieben.",
"core.percentagenumber": "{{$a}}%",
"core.phone": "Telefon",
"core.pulltorefresh": "Zum Aktualisieren runterziehen",
@@ -533,6 +569,8 @@
"core.strftimerecent": "%d. %b, %H:%M",
"core.strftimerecentfull": "%a, %d. %b %Y, %H:%M",
"core.strftimetime": "%H:%M",
+ "core.strftimetime12": "%I:%M %p",
+ "core.strftimetime24": "%H:%M",
"core.tablet": "Tablet",
"core.tag.errorareanotsupported": "Dieser Tag-Bereich wird von der App nicht unterstützt.",
"core.tag.warningareasnotsupported": "Einige der Tag-Bereiche werden nicht angezeigt, weil sie von der App nicht unterstützt werden.",
@@ -548,6 +586,7 @@
"core.unzipping": "Entpacken ...",
"core.updaterequired": "Aktualisierung der App notwendig",
"core.updaterequireddesc": "Aktualisieren Sie Ihre App auf die Version {{$a}}",
+ "core.upgraderunning": "Diese Website wird gerade aktualisiert. Versuche es später nochmal.",
"core.user.contact": "Kontakt",
"core.user.detailsnotavailable": "Die Nutzerdetails zu dieser Person sind für dich nicht verfügbar.",
"core.user.editingteacher": "Trainer/in",
diff --git a/src/assets/lang/de.json b/src/assets/lang/de.json
index 7dd6f1b60..7d0336939 100644
--- a/src/assets/lang/de.json
+++ b/src/assets/lang/de.json
@@ -21,7 +21,7 @@
"addon.badges.language": "Sprache",
"addon.badges.noalignment": "Für diesen Badge sind keine externen Skills oder Kompetenzen angegeben.",
"addon.badges.nobadges": "Keine Badges verfügbar",
- "addon.badges.norelated": "Dieser Badge hat keine verwandten Badges.",
+ "addon.badges.norelated": "Dieser Badge hat keine zugeordneten Badges.",
"addon.badges.recipientdetails": "Empfängerdetails",
"addon.badges.relatedbages": "Zugeordnete Badges",
"addon.badges.version": "Version",
@@ -91,7 +91,7 @@
"addon.calendar.calendarreminders": "Kalendererinnerungen",
"addon.calendar.categoryevents": "Kursbereichstermine",
"addon.calendar.confirmeventdelete": "Möchten Sie den Termin '{{$a}}' wirklich löschen?",
- "addon.calendar.confirmeventseriesdelete": "Der Termin '{{$a.name}}' ist Teil der Serie. Wollen Sie nur diesen Termin entfernen oder alle {{$a.count}} Termine dieser Serie?",
+ "addon.calendar.confirmeventseriesdelete": "Der Termin '{{$a.name}}' ist Teil der Serie. Möchten Sie nur diesen Termin entfernen oder alle {{$a.count}} Termine dieser Serie?",
"addon.calendar.courseevents": "Kurstermine",
"addon.calendar.currentmonth": "Aktueller Monat",
"addon.calendar.daynext": "Nächster Tag",
@@ -215,11 +215,11 @@
"addon.coursecompletion.coursecompletion": "Kursabschluss",
"addon.coursecompletion.criteria": "Kriterien",
"addon.coursecompletion.criteriagroup": "Kriteriengruppe",
- "addon.coursecompletion.criteriarequiredall": "Alle nachfolgenden Kriterien sind notwendig",
- "addon.coursecompletion.criteriarequiredany": "Eine der nachfolgenden Kriterien ist notwendig",
+ "addon.coursecompletion.criteriarequiredall": "Alle folgenden Kriterien sind notwendig",
+ "addon.coursecompletion.criteriarequiredany": "Eines der folgenden Kriterien ist notwendig",
"addon.coursecompletion.inprogress": "In Bearbeitung",
"addon.coursecompletion.manualselfcompletion": "Manueller eigener Abschluss",
- "addon.coursecompletion.nottracked": "Für Sie läuft aktuell in diesem Kurs keine Abschlussverfolgung",
+ "addon.coursecompletion.nottracked": "Aktuell läuft für Sie in diesem Kurs keine Abschlussverfolgung",
"addon.coursecompletion.notyetstarted": "Noch nicht begonnen",
"addon.coursecompletion.pending": "Unerledigt",
"addon.coursecompletion.required": "Erforderlich",
@@ -258,7 +258,7 @@
"addon.messages.deleteconversation": "Kommunikation löschen",
"addon.messages.deleteforeveryone": "Für mich und alle anderen löschen",
"addon.messages.deletemessage": "Mitteilung löschen",
- "addon.messages.deletemessageconfirmation": "Möchten Sie diese Mitteilung wirklich löschen? Die Mitteilung wird nur in Ihrem Verlauf gelöscht, aber nicht bei der Person, die die Mitteilung gesendet oder empfangen hat..",
+ "addon.messages.deletemessageconfirmation": "Möchten Sie diese Mitteilung wirklich löschen? Die Mitteilung wird nur in Ihrem Verlauf gelöscht, aber nicht bei der Person, die die Mitteilung gesendet oder empfangen hat.",
"addon.messages.errordeletemessage": "Fehler beim Löschen der Mitteilung",
"addon.messages.errorwhileretrievingcontacts": "Fehler beim Abrufen der Kontakte vom Server",
"addon.messages.errorwhileretrievingdiscussions": "Fehler beim Abrufen der Themen vom Server",
@@ -291,10 +291,10 @@
"addon.messages.removefromfavourites": "Markierung der Kommunikaton entfernen",
"addon.messages.removefromyourcontacts": "Aus Kontakten entfernen",
"addon.messages.requests": "Anfragen",
- "addon.messages.requirecontacttomessage": "Sie müssen {{$a}} bitten, Sie als Kontakt hinzuzufügen, um eine Mitteilung senden zu können.",
+ "addon.messages.requirecontacttomessage": "Sie müssen {{$a}} anfragen, Sie als Kontakt hinzuzufügen. Erst dann können Sie eine Mitteilung senden.",
"addon.messages.searchcombined": "Personen und Mitteilungen suchen",
"addon.messages.selfconversation": "Persönlicher Bereich",
- "addon.messages.selfconversationdefaultmessage": "Speichern Sie Entwürfe von Nachrichten, Links, Notizen etc. für einen späteren Zugriff.",
+ "addon.messages.selfconversationdefaultmessage": "Speichern Sie Entwürfe von Nachrichten, Links, Notizen usw. für einen späteren Zugriff.",
"addon.messages.sendcontactrequest": "Kontaktanfrage senden",
"addon.messages.showdeletemessages": "Mitteilungen löschen anzeigen",
"addon.messages.type_blocked": "Blockiert",
@@ -321,10 +321,10 @@
"addon.mod_assign.addnewattempt": "Neuen Versuch hinzufügen",
"addon.mod_assign.addnewattemptfromprevious": "Neuen Versuch auf Grundlage der vorherigen Lösung abgeben",
"addon.mod_assign.addsubmission": "Abgabe hinzufügen",
- "addon.mod_assign.allowsubmissionsanddescriptionfromdatesummary": "Die Aufgabendetails und die Lösungsabgabe stehen zur Verfügung ab {{$a}}",
+ "addon.mod_assign.allowsubmissionsanddescriptionfromdatesummary": "Die Aufgabendetails und die Lösungsabgabe sind verfügbar ab {{$a}}",
"addon.mod_assign.allowsubmissionsfromdate": "Abgabebeginn",
"addon.mod_assign.allowsubmissionsfromdatesummary": "Abgabe möglich ab {{$a}}",
- "addon.mod_assign.applytoteam": "Bewertungen und Feedback der gesamten Gruppe zuweisen.",
+ "addon.mod_assign.applytoteam": "Bewertungen und Feedback der gesamten Gruppe zuweisen",
"addon.mod_assign.assignmentisdue": "Aufgabe ist fällig",
"addon.mod_assign.attemptnumber": "Nummer",
"addon.mod_assign.attemptreopenmethod": "Versuche erneut bearbeitbar",
@@ -334,7 +334,7 @@
"addon.mod_assign.cannoteditduetostatementsubmission": "Sie können in der App keine Abgabe hinzufügen oder bearbeiten, weil keine Erklärung zur Eigenständigkeit von der Website abgerufen werden konnte.",
"addon.mod_assign.cannotgradefromapp": "Manche Bewertungsmethoden werden von der App bisher nicht unterstützt und können nicht verändert werden.",
"addon.mod_assign.cannotsubmitduetostatementsubmission": "Sie können in der App keine Abgabe machen, weil von der Website keine Erklärung zur Eigenständigkeit abgerufen werden konnte.",
- "addon.mod_assign.confirmsubmission": "Wenn Sie nun Ihre Lösung zur Bewertung einreichen, können Sie keine Änderungen mehr vornehmen. Sind Sie sich sicher?",
+ "addon.mod_assign.confirmsubmission": "Wenn Sie nun Ihre Lösung zur Bewertung einreichen, können Sie nichts mehr verändern. Sind Sie sich sicher?",
"addon.mod_assign.currentattempt": "Dies ist Versuch {{$a}}.",
"addon.mod_assign.currentattemptof": "Versuch {{$a.attemptnumber}} (mögliche Versuche {{$a.maxattempts}})",
"addon.mod_assign.currentgrade": "Aktuelle Bewertung in Bewertungen",
@@ -371,14 +371,14 @@
"addon.mod_assign.markingworkflowstatereleased": "Freigegeben (Teilnehmer/innen informieren)",
"addon.mod_assign.modulenameplural": "Aufgaben",
"addon.mod_assign.multipleteams": "Mitglied in mehreren Gruppen",
- "addon.mod_assign.multipleteams_desc": "Diese Aufgabe wird in Gruppen abgegeben. Sie sind Mitglied in mehr als einer Gruppe. Um die Aufgabe einzureichen müssen Sie Mitglied in genau einer Gruppe sein, damit Ihre Einreichung Ihrer Gruppe korrekt zugeordnet werden kann. Bitte kontaktieren Sie Ihren Trainer um Ihre Gruppenzugehörigkeit zu aktualisieren.",
+ "addon.mod_assign.multipleteams_desc": "Diese Aufgabe wird in Gruppen abgegeben. Sie sind Mitglied in mehr als einer Gruppe. Um ihre Einreichung korrekt Ihrer Gruppe zuordnen zu können, müssen Sie Mitglied in genau einer Gruppe sein. Kontaktieren Sie Ihre Trainer/innen, um Ihre Gruppenzugehörigkeit zu aktualisieren.",
"addon.mod_assign.noattempt": "Kein Versuch",
- "addon.mod_assign.nomoresubmissionsaccepted": "Weitere Abgaben sind nur zugelassen, wenn der Abgabezeitraum verlängert wurde.",
+ "addon.mod_assign.nomoresubmissionsaccepted": "Weitere Abgaben sind nur zugelassen, wenn der Abgabezeitraum verlängert wird.",
"addon.mod_assign.noonlinesubmissions": "Diese Aufgabe benötigt keine Online-Abgabe",
"addon.mod_assign.nosubmission": "Für diese Aufgabe wurde nichts abgegeben",
"addon.mod_assign.notallparticipantsareshown": "Teilnehmer/innen, die nichts abgegeben haben, werden nicht angezeigt.",
"addon.mod_assign.noteam": "Nicht Mitglied einer Gruppe",
- "addon.mod_assign.noteam_desc": "Diese Aufgabe wird in Gruppen abgegeben. Sie sind kein Mitglied einer Gruppe, deshalb können Sie die Aufgabe derzeit nicht einreichen. Bitte kontaktieren Sie Ihren Trainer um einer Gruppe hinzugefügt zu werden.",
+ "addon.mod_assign.noteam_desc": "Diese Aufgabe wird in Gruppen abgegeben. Sie sind kein Mitglied in einer Gruppe und können die Aufgabe deswegen nicht einreichen. Kontaktieren Sie Ihre Trainer/innen, um einer Gruppe hinzugefügt zu werden.",
"addon.mod_assign.notgraded": "Nicht bewertet",
"addon.mod_assign.numberofdraftsubmissions": "Entwürfe",
"addon.mod_assign.numberofparticipants": "Teilnehmer/innen",
@@ -390,8 +390,8 @@
"addon.mod_assign.overdue": "Abgabeende überschritten seit: {{$a}}",
"addon.mod_assign.submission": "Abgabe",
"addon.mod_assign.submissioneditable": "Teilnehmer/innen können eingereichte Lösung bearbeiten",
- "addon.mod_assign.submissionnoteditable": "Teilnehmer/innen können eingereichte Lösung nicht bearbeiten",
- "addon.mod_assign.submissionnotsupported": "Diese Abgabe wird von der App nicht unterstützt und es könnten Informationen fehlen.",
+ "addon.mod_assign.submissionnoteditable": "Teilnehmer/innen können die eingereichte Lösung nicht bearbeiten",
+ "addon.mod_assign.submissionnotsupported": "Diese Abgabe wird von der App nicht unterstützt und es könnten Infos fehlen.",
"addon.mod_assign.submissionslocked": "Bei dieser Aufgabe können derzeit keine Lösungen abgeben werden.",
"addon.mod_assign.submissionstatus": "Abgabestatus",
"addon.mod_assign.submissionstatus_": "Keine Abgabe",
@@ -403,7 +403,7 @@
"addon.mod_assign.submissionstatusheading": "Abgabestatus",
"addon.mod_assign.submissionteam": "Gruppe",
"addon.mod_assign.submitassignment": "Aufgabe abgeben",
- "addon.mod_assign.submitassignment_help": "Sobald diese Aufgabe abgegeben wird, sind keine weiteren Änderungen mehr möglich",
+ "addon.mod_assign.submitassignment_help": "Sobald diese Aufgabe abgegeben ist, sind keine Änderungen mehr möglich.",
"addon.mod_assign.submittedearly": "Aufgabe wurde {{$a}} vor dem Abgabeende abgegeben",
"addon.mod_assign.submittedlate": "Aufgabe wurde {{$a}} verspätet abgegeben",
"addon.mod_assign.timemodified": "Zuletzt geändert",
@@ -423,7 +423,7 @@
"addon.mod_assign_submission_comments.pluginname": "Abgabekommentare",
"addon.mod_assign_submission_file.pluginname": "Dateiabgabe",
"addon.mod_assign_submission_onlinetext.pluginname": "Texteingabe online",
- "addon.mod_assign_submission_onlinetext.wordlimitexceeded": "Die Höchstgrenze der Wörter für diese Aufgabenlösung ist {{$a.limit}}. Ihre Antwort enthält {{$a.count}} Wörter. Überarbeiten Sie bitte Ihre Lösung und speichern Sie sie dann erneut.",
+ "addon.mod_assign_submission_onlinetext.wordlimitexceeded": "Die maximale Anzahl von Wörtern für diese Aufgabenlösung ist {{$a.limit}}. Ihre Antwort hat {{$a.count}} Wörter. Verkürzen Sie Ihren Text und speichern Sie ihn dann erneut.",
"addon.mod_book.errorchapter": "Fehler beim Lesen des Kapitels",
"addon.mod_book.modulenameplural": "Bücher",
"addon.mod_book.tagarea_book_chapters": "Buchkapitel",
@@ -432,7 +432,7 @@
"addon.mod_chat.chatreport": "Chat-Protokolle",
"addon.mod_chat.currentusers": "Aktuelle Nutzer/innen",
"addon.mod_chat.enterchat": "Chat betreten",
- "addon.mod_chat.entermessage": "Schreiben Sie Ihre Mitteilung",
+ "addon.mod_chat.entermessage": "Mitteilung schreiben",
"addon.mod_chat.errorwhileconnecting": "Fehler beim Verbinden zum Chat",
"addon.mod_chat.errorwhilegettingchatdata": "Fehler beim Abrufen des Chats",
"addon.mod_chat.errorwhilegettingchatusers": "Fehler beim Anzeigen der Personen im Chat",
@@ -440,21 +440,21 @@
"addon.mod_chat.errorwhilesendingmessage": "Fehler beim Senden der Mitteilung",
"addon.mod_chat.messagebeepseveryone": "{{$a}} piepst jeden an!",
"addon.mod_chat.messagebeepsyou": "{{$a}} hat Sie angepiepst!",
- "addon.mod_chat.messageenter": "{{$a}} hat den Chat gerade betreten",
+ "addon.mod_chat.messageenter": "{{$a}} hat den Chat betreten",
"addon.mod_chat.messageexit": "{{$a}} hat den Chat verlassen",
"addon.mod_chat.messages": "Mitteilungen",
"addon.mod_chat.messageyoubeep": "Sie haben {{$a}} angepiepst",
"addon.mod_chat.modulenameplural": "Chats",
- "addon.mod_chat.mustbeonlinetosendmessages": "Sie müssen online sein, um Mitteilungen zu senden.",
+ "addon.mod_chat.mustbeonlinetosendmessages": "Sie müssen online sein, um Mitteilungen senden zu können.",
"addon.mod_chat.nomessages": "Keine Mitteilungen",
"addon.mod_chat.nosessionsfound": "Keine Sessions",
"addon.mod_chat.saidto": "sagte zu",
"addon.mod_chat.send": "Senden",
- "addon.mod_chat.sessionstart": "Nächster Chat beginnt {{$a.date}}, (also in {{$a.fromnow}})",
+ "addon.mod_chat.sessionstart": "Der nächste Chat beginnt {{$a.date}}, (also in {{$a.fromnow}})",
"addon.mod_chat.showincompletesessions": "Unvollständige Sessions anzeigen",
"addon.mod_chat.talk": "Sprechen",
"addon.mod_chat.viewreport": "Chat-Protokolle anzeigen",
- "addon.mod_choice.cannotsubmit": "Ihre Auswahl konnte nicht gespeichert werden. Versuchen Sie es bitte noch einmal.",
+ "addon.mod_choice.cannotsubmit": "Ihre Auswahl konnte nicht gespeichert werden. Versuchen Sie es noch einmal.",
"addon.mod_choice.choiceoptions": "Abstimmoptionen",
"addon.mod_choice.errorgetchoice": "Fehler beim Laden der Abstimmung",
"addon.mod_choice.expired": "Diese Abstimmung ist seit {{$a}} beendet.",
@@ -465,13 +465,13 @@
"addon.mod_choice.numberofuser": "Anzahl der Antworten",
"addon.mod_choice.numberofuserinpercentage": "Prozent der Antworten",
"addon.mod_choice.previewonly": "Diese Vorschau zeigt die verfügbaren Optionen für diese Aktivität. Sie können Ihre Wahl nicht vor {{$a}} einreichen.",
- "addon.mod_choice.publishinfoanonafter": "Ergebnisse werden ohne Namensnennung nach Ihrer Antwort veröffentlicht.",
+ "addon.mod_choice.publishinfoanonafter": "Ergebnisse werden nach Ihrer Antwort ohne Namensnennung veröffentlicht.",
"addon.mod_choice.publishinfoanonclose": "Ergebnisse werden ohne Namensnennung nach Abschluss der Aktivität veröffentlicht.",
- "addon.mod_choice.publishinfofullafter": "Ergebnisse werden vollständig mit Namensnennung nach Ihrer Antwort veröffentlicht.",
- "addon.mod_choice.publishinfofullclose": "Ergebnisse werden vollständig mit Namensnennung nach Abschluss der Aktivität veröffentlicht.",
+ "addon.mod_choice.publishinfofullafter": "Ergebnisse werden nach Ihrer Antwort vollständig mit Namensnennung veröffentlicht.",
+ "addon.mod_choice.publishinfofullclose": "Ergebnisse werden nach Abschluss der Aktivität vollständig mit Namensnennung veröffentlicht.",
"addon.mod_choice.publishinfonever": "Die Ergebnisse werden nach Ihrer Antwort nicht veröffentlicht.",
"addon.mod_choice.removemychoice": "Meine Auswahl löschen",
- "addon.mod_choice.responses": "Stimmabgaben",
+ "addon.mod_choice.responses": "Antworten",
"addon.mod_choice.responsesresultgraphdescription": "{{number}}% der Teilnehmer/innen haben die Option gewählt: {{text}}.",
"addon.mod_choice.responsesresultgraphheader": "Grafische Darstellung",
"addon.mod_choice.resultsnotsynced": "Ihre letzte Antwort ist in den Ergebnissen noch nicht enthalten. Synchronisieren Sie die Daten.",
@@ -484,19 +484,19 @@
"addon.mod_data.approve": "Zulassen",
"addon.mod_data.approved": "Bestätigt",
"addon.mod_data.ascending": "Aufsteigend",
- "addon.mod_data.authorfirstname": "Vorname (Autor)",
- "addon.mod_data.authorlastname": "Nachname (Autor)",
- "addon.mod_data.confirmdeleterecord": "Möchten Sie diesen Datensatz wirklich in der Datenbank löschen?",
+ "addon.mod_data.authorfirstname": "Vorname (Autor/in)",
+ "addon.mod_data.authorlastname": "Nachname (Autor/in)",
+ "addon.mod_data.confirmdeleterecord": "Möchten Sie diesen Datensatz in der Datenbank wirklich löschen?",
"addon.mod_data.descending": "Absteigend",
"addon.mod_data.disapprove": "Eintrag nicht freigegeben",
"addon.mod_data.edittagsnotsupported": "Das Bearbeitung von Tags wird in der App nicht unterstützt.",
"addon.mod_data.emptyaddform": "Sie haben keine Einträge vorgenommen!",
- "addon.mod_data.entrieslefttoadd": "Sie müssen {{$a.entriesleft}} (weitere) Einträge vornehmen, um diese Aktivität zu beenden.",
- "addon.mod_data.entrieslefttoaddtoview": "Sie müssen {{$a.entrieslefttoview}} (weitere) Einträge vornehmen, bevor Sie andere Teilnehmerbeiträge betrachten können.",
+ "addon.mod_data.entrieslefttoadd": "Sie müssen {{$a.entriesleft}} weitere Einträge vornehmen, um diese Aktivität zu beenden.",
+ "addon.mod_data.entrieslefttoaddtoview": "Sie müssen {{$a.entrieslefttoview}} weitere Einträge vornehmen, bevor Sie andere Teilnehmerbeiträge betrachten können.",
"addon.mod_data.errorapproving": "Fehler beim Freigeben bzw. Ablehnen des Eintrags",
"addon.mod_data.errordeleting": "Fehler beim Löschen des Eintrags",
"addon.mod_data.errormustsupplyvalue": "Sie müssen hier einen Wert eintragen.",
- "addon.mod_data.expired": "Die Aktivität wurde am {{$a}} abgeschlossen und ist nicht weiter verfügbar.",
+ "addon.mod_data.expired": "Die Aktivität wurde am {{$a}} abgeschlossen und ist nicht mehr verfügbar.",
"addon.mod_data.fields": "Felder",
"addon.mod_data.foundrecords": "Einträge gefunden: {{$a.num}}/{{$a.max}} (Filter zurücksetzen)",
"addon.mod_data.gettinglocation": "Geodaten holen ...",
@@ -528,18 +528,18 @@
"addon.mod_feedback.anonymous_entries": "Anonyme Einträge ({{$a}})",
"addon.mod_feedback.average": "Mittelwert",
"addon.mod_feedback.captchaofflinewarning": "Ein Feedback mit Captcha kann offline nicht beendet werden. Captcha funktioniert nur, wenn der Server antworten kann.",
- "addon.mod_feedback.complete_the_form": "Beantworten Sie die Fragen",
+ "addon.mod_feedback.complete_the_form": "Fragebogen ausfüllen",
"addon.mod_feedback.completed_feedbacks": "Ausgefüllte Feedbacks",
- "addon.mod_feedback.continue_the_form": "Beantworten der Fragen fortsetzen",
- "addon.mod_feedback.feedback_is_not_open": "Feedback ist zu diesem Zeitpunkt nicht möglich",
+ "addon.mod_feedback.continue_the_form": "Ausfüllen des Fragebogens fortsetzen",
+ "addon.mod_feedback.feedback_is_not_open": "Ein Feedback ist zu diesem Zeitpunkt nicht möglich",
"addon.mod_feedback.feedback_submitted_offline": "Das Feedback wurde gespeichert, um es später zu übertragen.",
"addon.mod_feedback.feedbackclose": "Antworten erlauben bis",
"addon.mod_feedback.feedbackopen": "Antworten erlauben ab",
- "addon.mod_feedback.mapcourses": "Diesem Feedback Kurse zuordnen",
+ "addon.mod_feedback.mapcourses": "Feedback zu Kursen zuordnen",
"addon.mod_feedback.maximal": "Maximal",
"addon.mod_feedback.minimal": "Minimal",
"addon.mod_feedback.mode": "Modus",
- "addon.mod_feedback.modulenameplural": "Feedbacks",
+ "addon.mod_feedback.modulenameplural": "Feedback",
"addon.mod_feedback.next_page": "Nächste Seite",
"addon.mod_feedback.non_anonymous": "Nicht anonym",
"addon.mod_feedback.non_anonymous_entries": "Nicht-anonyme Einträge ({{$a}})",
@@ -567,11 +567,11 @@
"addon.mod_forum.addtofavourites": "Dieses Thema markieren",
"addon.mod_forum.advanced": "Erweitert",
"addon.mod_forum.cannotadddiscussion": "Nur Gruppenmitglieder dürfen Beiträge zum Forum hinzufügen.",
- "addon.mod_forum.cannotadddiscussionall": "Sie dürfen kein neues Thema für alle Teilnehmer/innen hinzufügen.",
- "addon.mod_forum.cannotcreatediscussion": "Das neue Thema wurde leider nicht gespeichert.",
- "addon.mod_forum.couldnotadd": "Der Beitrag wurde wegen eines Fehlers nicht hinzugefügt.",
- "addon.mod_forum.couldnotupdate": "Der Beitrag wurde wegen eines Fehlers nicht aktualisiert.",
- "addon.mod_forum.cutoffdatereached": "Der Termin der letzten Abgabemöglichkeit für dieses Forum ist erreicht und Sie können nicht mehr hineinschreiben.",
+ "addon.mod_forum.cannotadddiscussionall": "Sie dürfen kein neues Thema für alle Teilnehmer/innen anlegen.",
+ "addon.mod_forum.cannotcreatediscussion": "Das neue Thema konnte nicht angelegt werden.",
+ "addon.mod_forum.couldnotadd": "Fehler. Der Beitrag konnte nicht hinzugefügt werden.",
+ "addon.mod_forum.couldnotupdate": "Fehler. Der Beitrag konnte nicht geändert werden.",
+ "addon.mod_forum.cutoffdatereached": "Der letzte Abgabetermin für dieses Forum ist erreicht. Sie können keinen Beitrag mehr schreiben.",
"addon.mod_forum.delete": "Löschen",
"addon.mod_forum.deletedpost": "Der Beitrag wurde gelöscht.",
"addon.mod_forum.deletesure": "Möchten Sie diesen Beitrag wirklich löschen?",
@@ -582,7 +582,7 @@
"addon.mod_forum.discussionlistsortbylastpostdesc": "Nach Erstelldatum des letzten Beitrags absteigend sortieren",
"addon.mod_forum.discussionlistsortbyrepliesasc": "Nach Anzahl der Antworten aufsteigend sortieren",
"addon.mod_forum.discussionlistsortbyrepliesdesc": "Nach Anzahl der Antworten absteigend sortieren",
- "addon.mod_forum.discussionlocked": "Dieses Thema wurde gesperrt, so dass Sie hier nicht weiter antworten können.",
+ "addon.mod_forum.discussionlocked": "Dieses Thema wurde gesperrt. Sie können hier nicht weiter antworten.",
"addon.mod_forum.discussionpinned": "Angepinnt",
"addon.mod_forum.discussionsubscription": "Themenabonnement",
"addon.mod_forum.edit": "Bearbeiten",
@@ -605,7 +605,7 @@
"addon.mod_forum.numdiscussions": "{{numdiscussions}} Themen",
"addon.mod_forum.numreplies": "{{numreplies}} Antworten",
"addon.mod_forum.pindiscussion": "Dieses Thema anpinnen",
- "addon.mod_forum.pinupdated": "Die Anpinnoption",
+ "addon.mod_forum.pinupdated": "Die Anpinnoption wurde aktualisiert.",
"addon.mod_forum.postisprivatereply": "Der Beitrag wurde privat verfasst und ist nicht für alle Personen sichtbar.",
"addon.mod_forum.posttoforum": "Beitrag absenden",
"addon.mod_forum.posttomygroups": "Kopie an alle Gruppen senden",
@@ -615,18 +615,18 @@
"addon.mod_forum.refreshposts": "Forenbeiträge aktualisieren",
"addon.mod_forum.removefromfavourites": "Themenmarkierung entfernen",
"addon.mod_forum.reply": "Antworten",
- "addon.mod_forum.replyplaceholder": "Schreiben Sie Ihre Antwort…",
+ "addon.mod_forum.replyplaceholder": "Schreiben Sie Ihre Antwort …",
"addon.mod_forum.subject": "Betreff",
"addon.mod_forum.tagarea_forum_posts": "Forenbeiträge",
- "addon.mod_forum.thisforumhasduedate": "Das Fälligkeitsdatum, um einen Beitrag in diesem Forum zu verfassen, ist {{$a}}.",
- "addon.mod_forum.thisforumisdue": "Das Fälligkeitsdatum, um einen Beitrag in diesem Forum zu verfassen, war {{$a}}.",
+ "addon.mod_forum.thisforumhasduedate": "Das Fälligkeitsdatum, um diesem Forum zu schreiben, ist {{$a}}.",
+ "addon.mod_forum.thisforumisdue": "Das Fälligkeitsdatum, um diesem Forum zu schreiben, war {{$a}}.",
"addon.mod_forum.unlockdiscussion": "Dieses Thema entsperren",
- "addon.mod_forum.unpindiscussion": "Dieses Thema loslösen",
+ "addon.mod_forum.unpindiscussion": "Dieses Thema abpinnen",
"addon.mod_forum.unread": "Ungelesen",
"addon.mod_forum.unreadpostsnumber": "{{$a}} ungelesene Beiträge",
"addon.mod_forum.yourreply": "Antwort",
"addon.mod_glossary.addentry": "Eintrag hinzufügen",
- "addon.mod_glossary.aliases": "Alternativbegriff(e)",
+ "addon.mod_glossary.aliases": "Alternativbegriffe",
"addon.mod_glossary.attachment": "Anhang",
"addon.mod_glossary.browsemode": "Einträge durchblättern",
"addon.mod_glossary.byalphabet": "Alphabetisch",
@@ -643,7 +643,7 @@
"addon.mod_glossary.entriestobesynced": "Einträge zum Synchronisieren",
"addon.mod_glossary.entrypendingapproval": "Dieser Eintrag wartet auf eine Freigabe.",
"addon.mod_glossary.entryusedynalink": "Eintrag automatisch verlinken",
- "addon.mod_glossary.errconceptalreadyexists": "Diesen Begriff gibt es bereits. In diesem Glossar sind keine Doppeleinträge möglich.",
+ "addon.mod_glossary.errconceptalreadyexists": "Diesen Begriff gibt es bereits. In diesem Glossar sind keine Doppeleinträge erlaubt.",
"addon.mod_glossary.errorloadingentries": "Fehler beim Laden von Einträgen",
"addon.mod_glossary.errorloadingentry": "Fehler beim Laden des Eintrags",
"addon.mod_glossary.errorloadingglossary": "Fehler beim Laden des Glossars",
@@ -669,39 +669,39 @@
"addon.mod_lesson.cannotfinduser": "Fehler: Nutzer/innen konnten nicht gefunden werden",
"addon.mod_lesson.clusterjump": "Ungesehene Frage innerhalb des Clusters",
"addon.mod_lesson.completed": "Abgeschlossen",
- "addon.mod_lesson.congratulations": "Ende der Lektion.",
+ "addon.mod_lesson.congratulations": "Das Ende der Lektion ist erreicht!",
"addon.mod_lesson.continue": "Fortsetzen",
"addon.mod_lesson.continuetonextpage": "Auf der nächsten Seite fortsetzen",
"addon.mod_lesson.defaultessayresponse": "Die Freitext-Antwort wird später bewertet.",
"addon.mod_lesson.detailedstats": "Ergebnisanalyse",
"addon.mod_lesson.didnotanswerquestion": "Hat diese Frage nicht beantwortet.",
"addon.mod_lesson.displayofgrade": "Anzeige der Bewertungen (für Teilnehmer/innen)",
- "addon.mod_lesson.displayscorewithessays": "
Sie haben bisher die Bewertung {{$a.score}} von {{$a.tempmaxgrade}} für die automatisch bewerteten Fragen erzielt.
\n
Ihre Freitext-Aufgaben ({{$a.essayquestions}}) werden später bewertet und zur Gesamtbewertung hinzugefügt.
\n
Ihre derzeitige Bewertung ohne die Freitextaufgaben ist {{$a.score}} von {{$a.grade}}.
",
+ "addon.mod_lesson.displayscorewithessays": "
Sie haben bisher für die automatisch bewerteten Fragen die Bewertung {{$a.score}} von {{$a.tempmaxgrade}} erzielt.
\n
Ihre Freitext-Aufgaben ({{$a.essayquestions}}) werden später bewertet und zur Gesamtbewertung hinzugefügt.
\n
Ihre derzeitige Bewertung ohne die Freitextaufgaben ist {{$a.score}} von {{$a.grade}}.
",
"addon.mod_lesson.displayscorewithoutessays": "Ihre Bewertung: {{$a.score}} von {{$a.grade}}",
- "addon.mod_lesson.emptypassword": "Das Kennwort muss eingegeben werden",
- "addon.mod_lesson.enterpassword": "Bitte geben Sie das Kennwort ein:",
- "addon.mod_lesson.eolstudentoutoftimenoanswers": "Sie haben keine Fragen beantwortet. Sie erhalten daher 0 Punkte für die Lektion.",
+ "addon.mod_lesson.emptypassword": "Das Kennwort darf nicht leer sein.",
+ "addon.mod_lesson.enterpassword": "Geben Sie bitte das Kennwort ein:",
+ "addon.mod_lesson.eolstudentoutoftimenoanswers": "Sie haben keine Fragen beantwortet. Sie erhalten deswegen 0 Punkte für die Lektion.",
"addon.mod_lesson.errorprefetchrandombranch": "Diese Lektion enthält einen Sprung zu einer zufälligen Seite. Die Lektion kann in der App nicht versucht werden, ohne im Webbrowser begonnen worden zu sein.",
"addon.mod_lesson.errorreviewretakenotlast": "Dieser Versuch kann nicht mehr angesehen werden, weil ein weiterer Versuch beendet wurde.",
"addon.mod_lesson.finish": "Fertigstellen",
"addon.mod_lesson.finishretakeoffline": "Dieser Versuch wurde offline beendet.",
- "addon.mod_lesson.firstwrong": "Ihre Antwort ist falsch. Wollen Sie noch einmal (ohne Bewertung) wiederholen?",
+ "addon.mod_lesson.firstwrong": "Ihre Antwort ist falsch. Möchten Sie es noch einmal (ohne Bewertung) versuchen?",
"addon.mod_lesson.gotoendoflesson": "Zum Lektionende gehen",
"addon.mod_lesson.grade": "Relative Bewertung",
"addon.mod_lesson.highscore": "Beste Bewertung",
"addon.mod_lesson.hightime": "Beste Zeit",
"addon.mod_lesson.leftduringtimed": "Sie haben die Lektion abgebrochen. Die Bearbeitung der Lektion ist zeitlich begrenzt. Klicken Sie auf Fortsetzen, um die Lektion erneut zu beginnen.",
- "addon.mod_lesson.leftduringtimednoretake": "Sie haben die Lektion abgebrochen. Die Bearbeitung der Lektion ist zeitlich begrenzt. Sie können diese Lektion nicht mehr bearbeiten.",
+ "addon.mod_lesson.leftduringtimednoretake": "Sie haben die Lektion abgebrochen. Die Bearbeitung der Lektion ist zeitlich begrenzt. Sie können diese Lektion nicht weiter bearbeiten.",
"addon.mod_lesson.lessonmenu": "Inhaltsverzeichnis",
"addon.mod_lesson.lessonstats": "Statistik",
"addon.mod_lesson.linkedmedia": "Verlinkte Medien",
- "addon.mod_lesson.loginfail": "Der Login ist gescheitert. Bitte versuchen Sie es noch einmal.",
+ "addon.mod_lesson.loginfail": "Der Login ist gescheitert. Versuchen Sie es bitte noch einmal.",
"addon.mod_lesson.lowscore": "Schlechteste Bewertung",
"addon.mod_lesson.lowtime": "Schlechteste Zeit",
"addon.mod_lesson.maximumnumberofattemptsreached": "Sie haben die Höchstzahl der Versuche erreicht - weiter zur nächsten Seite",
"addon.mod_lesson.modattemptsnoteacher": "Navigation nur für Teilnehmer/innen möglich",
"addon.mod_lesson.modulenameplural": "Lektionen",
- "addon.mod_lesson.noanswer": "Eine oder mehrere Fragen wurden nicht beantwortet. Gehen Sie zurück und geben Sie die Antworten ein.",
+ "addon.mod_lesson.noanswer": "Eine oder mehrere Fragen wurden nicht beantwortet. Gehen Sie zurück und geben Sie Antworten ein.",
"addon.mod_lesson.nolessonattempts": "Bisher keine Versuche",
"addon.mod_lesson.nolessonattemptsgroup": "Keines der {{$a}} Gruppenmitglieder hat zu dieser Lektion einen Versuch gemacht.",
"addon.mod_lesson.notcompleted": "Nicht beendet",
@@ -713,20 +713,20 @@
"addon.mod_lesson.or": "ODER",
"addon.mod_lesson.overview": "Übersicht",
"addon.mod_lesson.preview": "Vorschau",
- "addon.mod_lesson.progressbarteacherwarning2": "Die Fortschrittsanzeige wird Ihnen nicht angezeigt, da Sie diese Lektion als Trainer/in bearbeiten können.",
- "addon.mod_lesson.progresscompleted": "Sie haben {{$a}}% der Lektion erledigt",
+ "addon.mod_lesson.progressbarteacherwarning2": "Die Fortschrittsanzeige wird Ihnen nicht angezeigt, weil Sie diese Lektion als Trainer/in bearbeiten können.",
+ "addon.mod_lesson.progresscompleted": "Sie haben {{$a}}% der Lektion erledigt.",
"addon.mod_lesson.question": "Frage",
"addon.mod_lesson.rawgrade": "Absolute Bewertung",
"addon.mod_lesson.reports": "Ergebnisse",
"addon.mod_lesson.response": "Feedback",
- "addon.mod_lesson.retakefinishedinsync": "Ein Offline-Versuch wurde synchronisiert. Möchten Sie ihn überprüfen?",
+ "addon.mod_lesson.retakefinishedinsync": "Ein Offline-Versuch wurde synchronisiert. Möchten Sie ihn erneut prüfen?",
"addon.mod_lesson.retakelabelfull": "{{retake}}: {{grade}} {{timestart}} ({{duration}})",
"addon.mod_lesson.retakelabelshort": "{{retake}}: {{grade}} {{timestart}}",
"addon.mod_lesson.review": "Rückschau",
"addon.mod_lesson.reviewlesson": "Zur Lektion",
"addon.mod_lesson.reviewquestionback": "Wiederholen",
"addon.mod_lesson.reviewquestioncontinue": "Fortsetzen",
- "addon.mod_lesson.secondpluswrong": "Nicht ganz. Wollen Sie noch einmal wiederholen?",
+ "addon.mod_lesson.secondpluswrong": "Nicht ganz. Möchten Sie es noch einmal versuchen?",
"addon.mod_lesson.submit": "Einreichen",
"addon.mod_lesson.teacherjumpwarning": "In der Lektion werden '{{$a.cluster}}'-Sprünge und/oder '{{$a.unseen}}'-Sprünge verwendet. Diese Sprünge werden durch 'Nächste Seite'-Sprünge ersetzt. Melden Sie sich als Teilnehmer/in an, um die Sprünge zu testen.",
"addon.mod_lesson.teacherongoingwarning": "Die aktuelle Bewertung wird nur für Teilnehmer/innen angezeigt. Melden Sie sich als Teilnehmer/in an, um diese Funktion zu testen.",
@@ -738,7 +738,7 @@
"addon.mod_lesson.unseenpageinbranch": "Noch nicht angezeigte Frage innerhalb des Zweiges",
"addon.mod_lesson.warningretakefinished": "Der Versuch wurde auf der Website beendet.",
"addon.mod_lesson.welldone": "Glückwunsch!",
- "addon.mod_lesson.youhaveseen": "Sie haben einige Seiten der Lektion schon einmal bearbeitet. Wollen Sie an der Stelle fortsetzen, an der Sie damals aufgehört haben?",
+ "addon.mod_lesson.youhaveseen": "Sie haben einige Seiten der Lektion schon einmal bearbeitet. Möchten Sie an der Stelle weitermachen, an der Sie damals aufgehört haben?",
"addon.mod_lesson.youranswer": "Ihre Antwort",
"addon.mod_lesson.yourcurrentgradeisoutof": "Ihre derzeitige Bewertung ist {{$a.grade}} von {{$a.total}}",
"addon.mod_lesson.youshouldview": "mindestens zu beantworten: {{$a}}",
@@ -850,7 +850,7 @@
"addon.mod_scorm.errordownloadscorm": "Fehler beim Laden des Lernpakets '{{name}}'.",
"addon.mod_scorm.errorgetscorm": "Fehler beim Laden von Lernpaketdaten",
"addon.mod_scorm.errorinvalidversion": "Die App unterstützt ausschließlich Lernpakete mit SCORM 1.2.",
- "addon.mod_scorm.errornotdownloadable": "Das Herunterladen von Lernpaketen ist für diese Website deaktiviert. Wenden Sie sich an den Administrator.",
+ "addon.mod_scorm.errornotdownloadable": "Das Herunterladen von Lernpaketen ist für diese Website deaktiviert. Fragen Sie den Administrator.",
"addon.mod_scorm.errornovalidsco": "Dieses Lernpaket hat kein sichtbares SCO zum Laden.",
"addon.mod_scorm.errorpackagefile": "Die App unterstützt ausschließlich ZIP-Pakete.",
"addon.mod_scorm.errorsyncscorm": "Fehler beim Synchronisieren. Versuchen Sie es noch einmal.",
@@ -1010,7 +1010,7 @@
"addon.notifications.therearentnotificationsyet": "Keine Systemnachrichten",
"addon.storagemanager.deletecourse": "Alle Kursdaten entladen",
"addon.storagemanager.deletedatafrom": "Daten von {{name}} entladen",
- "addon.storagemanager.info": "Auf Ihrem Gerät gespeicherte Daten beschleunigen die Arbeit und ermöglichen die Offline-Verwendung der App. Sie können Daten sicher entladen, wenn Sie Speicherplatz freigeben müssen.",
+ "addon.storagemanager.info": "Auf Ihrem Gerät gespeicherte Daten beschleunigen die Arbeit und ermöglichen die Offline-Verwendung der App. Sie können Daten entladen, wenn Sie Speicherplatz freigeben müssen.",
"addon.storagemanager.managestorage": "Speicher verwalten",
"addon.storagemanager.storageused": "Verwendeter Dateispeicher:",
"assets.countries.AD": "Andorra",
@@ -1133,12 +1133,12 @@
"assets.countries.KI": "Kiribati",
"assets.countries.KM": "Komoren",
"assets.countries.KN": "Saint Kitts und Nevis",
- "assets.countries.KP": "Korea (Demokratische Volksrepublik Nordkorea)",
- "assets.countries.KR": "Korea (Republik Südkorea)",
+ "assets.countries.KP": "Korea (Demokratische Volksrepublik)",
+ "assets.countries.KR": "Korea (Republik)",
"assets.countries.KW": "Kuwait",
"assets.countries.KY": "Kaiman Inseln",
"assets.countries.KZ": "Kasachstan",
- "assets.countries.LA": "Demokratische Volksrepublik Laos",
+ "assets.countries.LA": "Laos (Demokratische Volksrepublik)",
"assets.countries.LB": "Libanon",
"assets.countries.LC": "Santa Lucia",
"assets.countries.LI": "Liechtenstein",
@@ -1336,9 +1336,9 @@
"core.capturevideo": "Video aufnehmen",
"core.category": "Kursbereich",
"core.choose": "Auswahl",
- "core.choosedots": "Auswählen...",
+ "core.choosedots": "Auswählen ...",
"core.clearsearch": "Suche löschen",
- "core.clicktohideshow": "Zum Erweitern oder Einklappen klicken",
+ "core.clicktohideshow": "Zum Erweitern oder Einklappen tippen",
"core.clicktoseefull": "Tippen zum Anzeigen aller Inhalte",
"core.close": "Schließen",
"core.comments": "Kommentare",
@@ -1353,7 +1353,6 @@
"core.comments.savecomment": "Kommentar speichern",
"core.comments.warningcommentsnotsent": "Kommentare konnten nicht synchronisiert werden. {{error}}",
"core.commentscount": "Kommentare ({{$a}})",
- "core.commentsnotworking": "Kommentare können nicht abgerufen werden.",
"core.completion-alt-auto-fail": "Abgeschlossen: {{$a}} (Bestehensgrenze nicht erreicht)",
"core.completion-alt-auto-n": "Nicht abgeschlossen: {{$a}}",
"core.completion-alt-auto-n-override": "Nicht abgeschlossen: {{$a.modname}} (gesetzt von {{$a.overrideuser}})",
@@ -1403,7 +1402,7 @@
"core.course.errorgetmodule": "Fehler beim Laden von Aktivitätsdaten",
"core.course.hiddenfromstudents": "Für Teilnehmer/innen verborgen",
"core.course.hiddenoncoursepage": "Verfügbar, aber auf der Kursseite verborgen",
- "core.course.insufficientavailablequota": "Ihr Gerät konnte keinen Speicherplatz für diesen Download zuweisen. Möglicherweise ist Speicherplatz für anstehende App- und Systemupdates reserviert. Sorgen Sie zuerst für ausreichend freien Speicher.",
+ "core.course.insufficientavailablequota": "Ihr Gerät konnte für diesen Download keinen Speicherplatz zuweisen. Möglicherweise ist Speicherplatz für anstehende App- und Systemupdates reserviert. Sorgen Sie zuerst für ausreichend freien Speicher.",
"core.course.insufficientavailablespace": "Sie versuchen, {{size}} herunterzuladen. Ihr Gerät hat danach möglicherweise nicht genügend Platz, um normal zu funktionieren. Sorgen Sie zuerst für ausreichend freien Speicher.",
"core.course.manualcompletionnotsynced": "Manueller Abschluss wurde nicht synchronisiert",
"core.course.nocontentavailable": "Momentan sind keine Inhalte verfügbar",
@@ -1461,7 +1460,7 @@
"core.defaultvalue": "Standard ({{$a}})",
"core.delete": "Löschen",
"core.deletedoffline": "Offline gelöscht",
- "core.deleteduser": "Gelöschter Nutzer",
+ "core.deleteduser": "Nutzer/in gelöscht",
"core.deleting": "Löschen ...",
"core.description": "Beschreibung",
"core.dfdaymonthyear": "DD.MM.YYYY",
@@ -1487,7 +1486,7 @@
"core.errordownloadingsomefiles": "Fehler beim Laden der Dateien. Einige Dateien könnten fehlen.",
"core.errorfileexistssamename": "Eine Datei mit gleichem Namen existiert bereits.",
"core.errorinvalidform": "Das Formular enthält ungültige Daten. Füllen Sie alle notwendigen Felder aus und prüfen Sie, dass alle Daten richtig sind.",
- "core.errorinvalidresponse": "Ungültige Antwort empfangen. Wenden Sie sich an den Administrator, wenn der Fehler weiter auftritt.",
+ "core.errorinvalidresponse": "Ungültige Antwort empfangen. Wenden Sie sich an den Administrator, wenn der Fehler wieder auftritt.",
"core.errorloadingcontent": "Fehler beim Laden des Inhalts",
"core.errorofflinedisabled": "Der Offline-Zugriff auf diese Website ist deaktiviert. Sie müssen online sein, um die App zu verwenden.",
"core.erroropenfilenoapp": "Fehler: Keine App zum Öffnen dieses Dateityps gefunden.",
@@ -1536,7 +1535,7 @@
"core.fullnameandsitename": "{{fullname}} ({{sitename}})",
"core.grades.average": "Durchschnitt",
"core.grades.badgrade": "Ungültige Bewertung",
- "core.grades.contributiontocoursetotal": "Beiträge zum Kurs insgesamt",
+ "core.grades.contributiontocoursetotal": "Beiträge zum Kurs gesamt",
"core.grades.feedback": "Feedback",
"core.grades.grade": "Bewertung",
"core.grades.gradeitem": "Bewertungsaspekt",
@@ -1554,7 +1553,7 @@
"core.h5p.additionallicenseinfo": "Zusätzliche Infos zur Lizenz",
"core.h5p.author": "Autor/in",
"core.h5p.authorcomments": "Kommentare",
- "core.h5p.authorcommentsdescription": "Kommentare an den Herausgeber des Inhalts. Dieser Text wird nicht als Teil der Copyright-Informationen veröffentlicht.",
+ "core.h5p.authorcommentsdescription": "Kommentare an den Herausgeber des Inhalts. Dieser Text wird nicht als Teil der Copyright-Infos veröffentlicht.",
"core.h5p.authorname": "Autorenname",
"core.h5p.authorrole": "Autorenrolle",
"core.h5p.by": "von",
@@ -1593,7 +1592,7 @@
"core.h5p.embedtitle": "Einbettcode für diesen Inhalt anzeigen",
"core.h5p.fullscreen": "Vollbild",
"core.h5p.gpl": "General Public License v3",
- "core.h5p.h5ptitle": "Besuchen Sie h5p.org, um weitere Informationen zu erhalten.",
+ "core.h5p.h5ptitle": "Besuchen Sie h5p.org, um weitere Infos zu erhalten.",
"core.h5p.hideadvanced": "Erweitert ausblenden",
"core.h5p.license": "Lizenz",
"core.h5p.licenseCC010": "CC0 1.0 Universal (CC0 1.0) Public Domain",
@@ -1611,17 +1610,17 @@
"core.h5p.licenseextras": "Lizenzextras",
"core.h5p.licenseversion": "Lizenzversion",
"core.h5p.nocopyright": "Für diesen Inhalt sind keine Copyright-Infos verfügbar.",
- "core.h5p.offlineDialogBody": "Infos zum Abschluss dieser Aufgabe konnten nicht gesendet werden. Überprüfe Sie die Internetverbindung.",
+ "core.h5p.offlineDialogBody": "Infos zum Abschluss dieser Aufgabe konnten nicht gesendet werden. Überprüfen Sie die Internetverbindung.",
"core.h5p.offlineDialogHeader": "Ihre Verbindung zum Server wurde unterbrochen.",
"core.h5p.offlineDialogRetryButtonLabel": "Sofort wiederholen",
- "core.h5p.offlineDialogRetryMessage": "Wiederholung in :num ....",
+ "core.h5p.offlineDialogRetryMessage": "Wiederholung in :num ...",
"core.h5p.offlineSuccessfulSubmit": "Ergebnisse erfolgreich übertragen.",
"core.h5p.originator": "Urheber/in",
"core.h5p.pd": "Public Domain",
"core.h5p.pddl": "Public Domain Widmung und Lizenz",
"core.h5p.pdm": "Public Domain Mark (PDM)",
"core.h5p.play": "H5P abspielen",
- "core.h5p.resizescript": "Fügen Sie dieses Skript in Ihre Website ein, wenn Sie eine dynamische Größenanpassung des eingebetteten Inhalts wünschen:",
+ "core.h5p.resizescript": "Fügen Sie dieses Skript in die Website ein, wenn Sie eine dynamische Größenanpassung des eingebetteten Inhalts möchtest:",
"core.h5p.resubmitScores": "Versuch, gespeicherte Ergebnisse zu übermitteln.",
"core.h5p.reuse": "Wiederverwenden",
"core.h5p.reuseContent": "Inhalt wiederverwenden",
@@ -1648,7 +1647,7 @@
"core.humanreadablesize": "{{size}} {{unit}}",
"core.image": "Bild",
"core.imageviewer": "Bildanzeige",
- "core.info": "Informationen",
+ "core.info": "Infos",
"core.invalidformdata": "Falsche Formulardaten!",
"core.ios": "iOS",
"core.labelsep": ": ",
@@ -1668,10 +1667,9 @@
"core.login.changepassword": "Kennwort ändern",
"core.login.changepasswordbutton": "Seite zur Kennwortänderung aufrufen",
"core.login.changepasswordhelp": "Wenn Sie Probleme beim Ändern Ihres Kennworts haben, wenden Sie sich an den Administrator Ihrer Website. Administrator/innen sind die Personen, die das Moodle an Ihrer Schule, Universität, Firma oder Organisation verwalten. Wenn Sie nicht wissen, wie Sie mit ihnen Kontakt aufnehmen können, wenden Sie sich an Ihre Trainer/innen.",
- "core.login.changepasswordinstructions": "Sie können Ihr Kennwort nicht in der App ändern. Klicken Sie auf die folgende Taste, um die Website in einem Webbrowser zu öffnen und Ihr Kennwort zu ändern. Beachten Sie, dass Sie den Browser nach dem Ändern des Kennworts schließen müssen, da Sie nicht zur App zurückgeleitet werden.",
+ "core.login.changepasswordinstructions": "Sie können Ihr Kennwort nicht in der App ändern. Klicken Sie auf die folgende Taste, um Moodle in einem Webbrowser zu öffnen und Ihr Kennwort zu ändern. Beachten Sie, dass Sie den Browser nach dem Ändern des Kennworts schließen müssen, um wieder in die App zurückzukommen.",
"core.login.changepasswordlogoutinstructions": "Wenn Sie die Website wechseln oder sich abmelden möchten, klicken Sie auf die folgende Taste:",
"core.login.changepasswordreconnectinstructions": "Klicken Sie auf die folgende Taste, um die Verbindung zur Website wiederherzustellen. Beachten Sie, dass Sie zum vorherigen Bildschirm zurückkehren, wenn Sie Ihr Kennwort nicht erfolgreich geändert haben.",
- "core.login.checksiteversion": "Prüfen Sie, ob die Website mindestens Moodle 2.4 verwendet.",
"core.login.confirmdeletesite": "Möchten Sie '{{sitename}}' wirklich aus der Liste löschen?",
"core.login.connect": "Verbinden",
"core.login.connecttomoodle": "Zu Moodle verbinden",
@@ -1682,11 +1680,10 @@
"core.login.createaccount": "Neues Nutzerkonto anlegen",
"core.login.createuserandpass": "Anmeldedaten wählen",
"core.login.credentialsdescription": "Geben Sie den Anmeldenamen und das Kennwort ein. ",
- "core.login.emailconfirmsent": "
Um sicherzugehen, dass sich niemand unberechtigt über die von Ihnen angegebene E-Mail anmeldet, wird eine automatische Benachrichtigung an diese Adresse {{$a}} gesendet. Je nach Netzlast trifft sie sofort oder auch etwas später bei Ihnen ein.
\n
Die Benachrichtigung enthält eine Anleitung, wie Sie Ihre Registrierung bestätigen.\nDanach sind Sie auf dieser Moodle-Seite registriert und können sofort loslegen.
\n
Bei Problemen wenden Sie sich bitte an die Administrator/innen der Website.
",
+ "core.login.emailconfirmsent": "
Um sicherzugehen, dass sich niemand unberechtigt über die von Ihnen angegebene E-Mail anmeldet, wird eine automatische Benachrichtigung an diese Adresse {{$a}} gesendet.
\n
Die Benachrichtigung enthält eine Anleitung, wie Sie Ihre Registrierung bestätigen. Danach sind Sie auf dieser Moodle-Seite registriert und können sofort loslegen.
\n
Bei Problemen wenden Sie sich bitte an die Administrator/innen der Website.
",
"core.login.emailconfirmsentnoemail": "
An Ihre E-Mail-Adresse wurde eine Mitteilung gesendet.
Die Mitteilung enthält eine einfache Anleitung, um Ihre Registrierung abzuschließen. Falls Sie Probleme haben, wenden Sie sich an den Administrator der Website.
",
"core.login.emailconfirmsentsuccess": "Die Bestätigungsmitteilung wurde erfolgreich versendet.",
"core.login.emailnotmatch": "Die E-Mail-Adressen stimmen nicht überein.",
- "core.login.enterthewordsabove": "Geben Sie die gezeigten Wörter ein",
"core.login.erroraccesscontrolalloworigin": "Der Cross-Origin-Aufruf wurde zurückgewiesen. Weitere Infos: https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Fehler beim Entfernen der Website aus der Liste. Versuchen Sie es noch einmal.",
"core.login.errorupdatesite": "Fehler bei der Authentifizierung",
@@ -1694,7 +1691,6 @@
"core.login.firsttime": "Sind Sie zum ersten Mal auf dieser Webseite?",
"core.login.forcepasswordchangenotice": "Ändern Sie Ihr Kennwort, bevor Sie weiterarbeiten.",
"core.login.forgotten": "Anmeldename oder Kennwort vergessen?",
- "core.login.getanothercaptcha": "Neues Captcha laden",
"core.login.help": "Hilfe",
"core.login.helpmelogin": "
Auf der Welt gibt es viele tausend Websites mit Moodle. Diese App kann aber nur mit Websites verbunden werden, die für den Zugriff mit der mobilen Moodle App freigegeben wurden.
Falls Sie sich nicht mit Ihrer Website verbinden können, wenden Sie sich an den Administrator der Website und bitten ihn, die Anleitung zu lesen. https://docs.moodle.org/de/Moodle_App
Um die App mit einer Demoseite auszuprobieren, schreiben Sie teacher oder student in das Feld Website-Adresse und tippen dann auf Verbinden.
",
"core.login.instructions": "Anleitung",
@@ -1707,9 +1703,6 @@
"core.login.invalidurl": "Ungültige URL angegeben",
"core.login.invalidvaluemax": "Der Maximalwert ist {{$a}}.",
"core.login.invalidvaluemin": "Der Minimalwert ist {{$a}}.",
- "core.login.legacymoodleversion": "Sie versuchen, sich mit einer nicht unterstützen Moodle-Version zu verbinden. Verwenden Sie die Moodle-Classic-App, um auf diese Website zu gelangen.",
- "core.login.legacymoodleversiondesktop": "Sie versuchen, sich mit {{$a}} zu verbinden.
Diese Website läuft mit einer alten, nicht unterstützen Moodle-Version, die nicht mit der Moodle-Desktop-App funktioniert..
Falls diese Website Ihnen gehört und Sie Probleme mit der Aktualisierung haben, wenden Sie sich bitte an einen lokalen Moodle-Partner. Ihre Anfrage können Sie über unsere Kontaktseite abgeben.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Alternativ können Sie auf diese Website zugreifen, wenn Sie eine ältere Version der App herunterladen und verwenden.",
"core.login.localmobileunexpectedresponse": "Die Verbindung zum Plugin 'Moodle Mobile - Zusatzfeatures' ist fehlgeschlagen. Sie werden über den standardmäßigen mobilen Webservice authentifiziert.",
"core.login.loggedoutssodescription": "Sie müssen sich neu authentifizieren. Melden Sie sich im Browser auf der Website an.",
"core.login.login": "Login",
@@ -1729,15 +1722,15 @@
"core.login.passwordforgotteninstructions2": "Um Ihr Kennwort zurückzusetzen, tragen Sie bitte entweder Ihren Anmeldenamen oder Ihre E-Mail-Adresse ein. Wenn Sie in der Datenbank zu finden sind, wird eine Mitteilung an Ihre E-Mail-Adresse verschickt. Diese Mitteilung enthält eine Anleitung für die weiteren Schritte.",
"core.login.passwordrequired": "Kennwort fehlt",
"core.login.policyaccept": "Ich habe den Text gelesen und stimme ihm zu",
- "core.login.policyagree": "Lesen Sie diese Datenschutzinformation sorgfältig. Sie müssen zustimmen, um die Website nutzen zu können. Stimmen Sie zu?",
- "core.login.policyagreement": "Datenschutzinformation",
- "core.login.policyagreementclick": "URL zur Datenschutzinformation",
+ "core.login.policyagree": "Lesen Sie diese Datenschutzinfos sorgfältig. Sie müssen zustimmen, um die Website nutzen zu können. Stimmen Sie zu?",
+ "core.login.policyagreement": "Datenschutzinfos",
+ "core.login.policyagreementclick": "URL zu den Datenschutzinfos",
"core.login.potentialidps": "Verwenden Sie Ihr Nutzerkonto bei:",
"core.login.problemconnectingerror": "Probleme beim Verbinden mit",
"core.login.problemconnectingerrorcontinue": "Prüfen Sie, ob die URL richtig ist. Versuchen Sie es noch einmal.",
"core.login.profileinvaliddata": "Ungültiger Wert",
"core.login.recaptchachallengeimage": "reCaptcha Challenge-Bild",
- "core.login.recaptchaexpired": "Überprüfung notwendig. Beantworten Sie die Sicherheitsfrage noch einmal.",
+ "core.login.recaptchaexpired": "Überprüfung abgelaufen. Beantworten Sie die Sicherheitsfrage noch einmal.",
"core.login.recaptchaincorrect": "Die Antwort auf die Sicherheitsfrage ist falsch.",
"core.login.reconnect": "Neu verbinden",
"core.login.reconnectdescription": "Die Authentifizierung ist abgelaufen oder ungültig. Sie müssen sich neu anmelden.",
@@ -1760,7 +1753,7 @@
"core.login.username": "Anmeldename",
"core.login.usernameoremail": "Geben Sie den Anmeldenamen oder die E-Mail-Adresse ein.",
"core.login.usernamerequired": "Anmeldename fehlt",
- "core.login.usernotaddederror": "Nutzer wurde nicht hinzugefügt - Fehler",
+ "core.login.usernotaddederror": "Fehler. Nutzer/in wurde nicht hinzugefügt",
"core.login.visitchangepassword": "Möchten Sie die Website aufrufen, um das Kennwort zu ändern?",
"core.login.webservicesnotenabled": "Die Webservices sind für diese Website deaktiviert. Wenden Sie sich an den Administrator, wenn Sie die mobile App aktiviert haben möchten.",
"core.lostconnection": "Die Authentifizierung ist abgelaufen oder ungültig. Sie müssen sich neu anmelden.",
@@ -1818,7 +1811,7 @@
"core.noresults": "Keine Ergebnisse",
"core.noselection": "Keine Auswahl",
"core.notapplicable": "n/a",
- "core.notenrolledprofile": "Dieses Profil ist nicht verfügbar, weil die Person den Kurs bisher nicht betreten hat.",
+ "core.notenrolledprofile": "Das Profil ist nicht verfügbar, weil diese Person den Kurs bisher nicht betreten hat.",
"core.notice": "Hinweis",
"core.notingroup": "Die Aktivität ist nur für Gruppenmitglieder zugänglich.",
"core.notsent": "Nicht gesendet",
@@ -1833,10 +1826,10 @@
"core.othergroups": "Weitere Gruppen",
"core.pagea": "Seite {{$a}}",
"core.parentlanguage": "",
- "core.paymentinstant": "Klicken Sie auf den Button, um das Teilnahmeentgelt zu bezahlen. Sobald der Zahlvorgang abgeschlossen ist, werden Sie automatisch in den Kurs eingeschrieben.",
+ "core.paymentinstant": "Klicken Sie auf die Taste, um das Teilnahmeentgelt zu bezahlen. Sobald der Zahlvorgang abgeschlossen ist, werden Sie automatisch in den Kurs eingeschrieben.",
"core.percentagenumber": "{{$a}}%",
"core.phone": "Telefon",
- "core.pictureof": "Nutzerbild {{$a}}",
+ "core.pictureof": "Nutzerbild von {{$a}}",
"core.previous": "Zurück",
"core.proceed": "Weitermachen",
"core.pulltorefresh": "Zum Aktualisieren runterziehen",
@@ -1967,8 +1960,8 @@
"core.sharedfiles.sharedfiles": "Geteilte Dateien",
"core.sharedfiles.successstorefile": "Die Datei wurde erfolgreich gespeichert. Sie können die Datei in 'Meine Dateien' hochladen oder in einer Aktivität verwenden.",
"core.show": "Anzeigen",
- "core.showless": "Weniger anzeigen...",
- "core.showmore": "Mehr anzeigen...",
+ "core.showless": "Weniger anzeigen ...",
+ "core.showmore": "Mehr anzeigen ...",
"core.site": "Website",
"core.sitehome.sitehome": "Startseite",
"core.sitehome.sitenews": "Ankündigungen",
@@ -2000,8 +1993,18 @@
"core.submit": "Speichern",
"core.success": "erfolgreich",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Standard-Collection",
"core.tag.errorareanotsupported": "Dieser Tag-Bereich wird von der App nicht unterstützt.",
+ "core.tag.inalltagcoll": "Überall",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} mit '{{$a.tag}}' markiert",
+ "core.tag.notagsfound": "Kein Tag passend zu '{{$a}}' gefunden",
+ "core.tag.searchtags": "Tags suchen",
+ "core.tag.showingfirsttags": "Beliebteste Tags anzeigen: {{$a}}",
"core.tag.tag": "Tag",
+ "core.tag.tagarea_course": "Kurse",
+ "core.tag.tagarea_course_modules": "Aktivitäten und Material",
+ "core.tag.tagarea_post": "Blogeinträge",
+ "core.tag.tagarea_user": "Nutzerinteressen",
"core.tag.tags": "Tags",
"core.tag.warningareasnotsupported": "Einige der Tag-Bereiche werden nicht angezeigt, weil sie von der App nicht unterstützt werden.",
"core.teachers": "Trainer/innen",
@@ -2021,7 +2024,7 @@
"core.unzipping": "Entpacken ...",
"core.updaterequired": "Aktualisierung der App notwendig",
"core.updaterequireddesc": "Aktualisieren Sie Ihre App auf die Version {{$a}}",
- "core.upgraderunning": "Diese Website wird gerade aktualisiert. Bitte versuchen Sie es später nochmal.",
+ "core.upgraderunning": "Diese Website wird gerade aktualisiert. Versuchen Sie es später nochmal.",
"core.user": "Nutzer",
"core.user.address": "Adresse",
"core.user.city": "Stadt",
diff --git a/src/assets/lang/el.json b/src/assets/lang/el.json
index 0605f8dfe..008058665 100644
--- a/src/assets/lang/el.json
+++ b/src/assets/lang/el.json
@@ -1314,7 +1314,6 @@
"core.comments.nocomments": "Χωρίς σχόλια",
"core.comments.savecomment": "Αποθήκευση σχολίου",
"core.commentscount": "Σχόλια ({{$a}})",
- "core.commentsnotworking": "Τα σχόλια δεν μπορούν να ανακτηθούν",
"core.completion-alt-auto-fail": "Ολοκληρωμένο: {{$a}} (με βαθμό κάτω της βάσης)",
"core.completion-alt-auto-n": "Μη ολοκληρωμένο: {{$a}}",
"core.completion-alt-auto-n-override": "Δεν ολοκληρώθηκε: {{$a.modname}} (καθορίστηκε από τον/την {{$a.overrideuser}})",
@@ -1520,7 +1519,6 @@
"core.login.authenticating": "Έλεγχος ταυτότητας",
"core.login.cancel": "Άκυρο",
"core.login.changepassword": "Αλλαγή του κωδικού πρόσβασης",
- "core.login.checksiteversion": "Ελέγξτε ποια έκδοση Moodle χρησιμοποιεί το site, Moodle 2.4 ή μετέπειτα έκδοση.",
"core.login.confirmdeletesite": "Είστε σίγουροι ότι θέλετε να διαγράψετε το site {{sitename}};",
"core.login.connect": "Σύνδεση!",
"core.login.connecttomoodle": "Σύνδεση στο Moodle",
@@ -1532,14 +1530,12 @@
"core.login.emailconfirmsent": "
Ένα μήνυμα ηλεκτρονικού ταχυδρομείου θα πρέπει να έχει σταλεί στη διεύθυνσή σας, {{$a}}
\n
Περιέχει απλές οδηγίες για την ολοκλήρωση της εγγραφής σας.
\n
Αν συνεχίζετε να αντιμετωπίζετε δυσκολίες, επικοινωνήστε με το διαχειριστή του δικτυακού τόπου.
",
"core.login.emailconfirmsentsuccess": "Η αποστολή μηνύματος επιβεβαίωσης με ηλεκτρονικό ταχυδρομείο έγινε με επιτυχία.",
"core.login.emailnotmatch": "Οι διευθύνσεις email δεν ταιριάζουν",
- "core.login.enterthewordsabove": "Εισάγετε τις παραπάνω λέξεις",
"core.login.erroraccesscontrolalloworigin": "Η κλήση πολλαπλών προελεύσεων (Cross-Origin call) που προσπαθείτε να εκτελέσετε έχει απορριφθεί. Παρακαλώ ελέγξτε https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Παρουσιάστηκε σφάλμα κατά τη διάρκεια της διαγραφής του site. Δοκιμάστε ξανά αργότερα.",
"core.login.errorupdatesite": "Παρουσιάστηκε σφάλμα κατά την ενημέρωση του site token.",
"core.login.firsttime": "Είναι η πρώτη σας φορά εδώ;",
"core.login.forcepasswordchangenotice": "Πρέπει να αλλάξετε τον κωδικό πρόσβασης για να συνεχίσετε.",
"core.login.forgotten": "Ξεχάσατε το όνομα χρήστη ή τον κωδικό πρόσβασης;",
- "core.login.getanothercaptcha": "Φέρε μια άλλη εικόνα CAPTCHA",
"core.login.help": "Βοήθεια",
"core.login.helpmelogin": "
Υπάρχουν χιλιάδες Moodle ιστότοποι σε όλο τον κόσμο. Αυτή η εφαρμογή μπορεί να συνδεθεί μόνο σε ιστότοπους Moodle που έχουν ενεργοποιήσει συγκεκριμένα την πρόσβαση σε εφαρμογές για κινητά.
Εάν δεν μπορείτε να συνδεθείτε στον ιστότοπό σας Moodle, πρέπει να επικοινωνήσετε με το διαχειριστή του Moodle ιστότοπου όπου θέλετε να συνδεθείτε και ζητήστε τους να διαβάσουν http://docs.moodle.org/en/Mobile_app
Για να δοκιμάσετε την εφαρμογή σε έναν δοκιμαστικό ιστότοπο Moodle δάσκαλος ή σπουδαστής στο πεδίο Διεύθυνση ιστοτόπου και κάντε κλικ στο κουμπί < .
",
"core.login.instructions": "Οδηγίες",
@@ -1817,7 +1813,17 @@
"core.submit": "Υποβολή",
"core.success": "Επιτυχία",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Προεπιλεγμένη συλλογή",
+ "core.tag.inalltagcoll": "Παντού",
+ "core.tag.itemstaggedwith": "Στην περιοχή «{{$a.tagarea}}» τοποθετήθηκε ετικέτα «{{$a.tag}}»",
+ "core.tag.notagsfound": "Δεν βρέθηκαν ετικέτες που να ταιριάζουν με το «{{$a}}»",
+ "core.tag.searchtags": "Αναζήτηση ετικετών",
+ "core.tag.showingfirsttags": "Προβάλλονται οι {{$a}} περισσότερο δημοφιλείς ετικέτες",
"core.tag.tag": "Ετικέτα",
+ "core.tag.tagarea_course": "Μαθήματα",
+ "core.tag.tagarea_course_modules": "Δραστηριότητες και πόροι",
+ "core.tag.tagarea_post": "Αναρτήσεις ιστολογίου",
+ "core.tag.tagarea_user": "Ενδιαφέροντα χρήστη",
"core.tag.tags": "Ετικέτες",
"core.teachers": "Διδάσκοντες",
"core.thereisdatatosync": "Υπάρχουν εκτός σύνδεσης {{$a}} για συγχρονισμό.",
diff --git a/src/assets/lang/en.json b/src/assets/lang/en.json
index b6433e9fb..51b1c753d 100644
--- a/src/assets/lang/en.json
+++ b/src/assets/lang/en.json
@@ -426,6 +426,8 @@
"addon.mod_assign_submission_onlinetext.wordlimitexceeded": "The word limit for this assignment is {{$a.limit}} words and you are attempting to submit {{$a.count}} words. Please review your submission and try again.",
"addon.mod_book.errorchapter": "Error reading chapter of book.",
"addon.mod_book.modulenameplural": "Books",
+ "addon.mod_book.navnexttitle": "Next: {{$a}}",
+ "addon.mod_book.navprevtitle": "Previous: {{$a}}",
"addon.mod_book.tagarea_book_chapters": "Book chapters",
"addon.mod_book.toc": "Table of contents",
"addon.mod_chat.beep": "Beep",
@@ -1322,12 +1324,12 @@
"core.all": "All",
"core.allgroups": "All groups",
"core.allparticipants": "All participants",
- "core.android": "Android",
"core.answer": "Answer",
"core.answered": "Answered",
"core.areyousure": "Are you sure?",
"core.back": "Back",
"core.block.blocks": "Blocks",
+ "core.browser": "Browser",
"core.cancel": "Cancel",
"core.cannotconnect": "Cannot connect: Verify that you have correctly typed the URL and that your site uses Moodle {{$a}} or later.",
"core.cannotdownloadfiles": "File downloading is disabled. Please contact your site administrator.",
@@ -1465,6 +1467,7 @@
"core.deleteduser": "Deleted user",
"core.deleting": "Deleting",
"core.description": "Description",
+ "core.desktop": "Desktop",
"core.dfdaymonthyear": "MM-DD-YYYY",
"core.dfdayweekmonth": "ddd, D MMM",
"core.dffulldate": "dddd, D MMMM YYYY h[:]mm A",
@@ -1475,11 +1478,27 @@
"core.digitalminor_desc": "Please ask your parent/guardian to contact:",
"core.discard": "Discard",
"core.dismiss": "Dismiss",
+ "core.displayoptions": "Display options",
"core.done": "Done",
"core.download": "Download",
"core.downloaded": "Downloaded",
"core.downloading": "Downloading",
"core.edit": "Edit",
+ "core.editor.autosavesucceeded": "Draft saved.",
+ "core.editor.bold": "Bold",
+ "core.editor.clear": "Clear formatting",
+ "core.editor.h3": "Heading (large)",
+ "core.editor.h4": "Heading (medium)",
+ "core.editor.h5": "Heading (small)",
+ "core.editor.hidetoolbar": "Hide toolbar",
+ "core.editor.italic": "Italic",
+ "core.editor.orderedlist": "Ordered list",
+ "core.editor.p": "Paragraph",
+ "core.editor.strike": "Strike through",
+ "core.editor.textrecovered": "A draft version of this text was automatically restored.",
+ "core.editor.toggle": "Toggle editor",
+ "core.editor.underline": "Underline",
+ "core.editor.unorderedlist": "Unordered list",
"core.emptysplit": "This page will appear blank if the left panel is empty or is loading.",
"core.error": "Error",
"core.errorchangecompletion": "An error occurred while changing the completion status. Please try again.",
@@ -1617,6 +1636,7 @@
"core.h5p.offlineDialogRetryButtonLabel": "Retry now",
"core.h5p.offlineDialogRetryMessage": "Retrying in :num....",
"core.h5p.offlineSuccessfulSubmit": "Successfully submitted results.",
+ "core.h5p.offlinedisabled": "The site doesn't allow downloading H5P packages.",
"core.h5p.originator": "Originator",
"core.h5p.pd": "Public Domain",
"core.h5p.pddl": "Public Domain Dedication and Licence",
@@ -1651,7 +1671,6 @@
"core.imageviewer": "Image viewer",
"core.info": "Information",
"core.invalidformdata": "Incorrect form data",
- "core.ios": "iOS",
"core.labelsep": ":",
"core.lastaccess": "Last access",
"core.lastdownloaded": "Last downloaded",
@@ -1686,7 +1705,6 @@
"core.login.emailconfirmsentnoemail": "
An email should have been sent to your address.
It contains easy instructions to complete your registration.
If you continue to have difficulty, contact the site administrator.
",
"core.login.emailconfirmsentsuccess": "Confirmation email sent successfully",
"core.login.emailnotmatch": "Emails do not match",
- "core.login.enterthewordsabove": "Enter the words above",
"core.login.erroraccesscontrolalloworigin": "The cross-origin call you're trying to perform has been rejected. Please check https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "An error occurred while deleting this site. Please try again.",
"core.login.errorupdatesite": "An error occurred while updating the site's token.",
@@ -1694,7 +1712,6 @@
"core.login.firsttime": "Is this your first time here?",
"core.login.forcepasswordchangenotice": "You must change your password to proceed.",
"core.login.forgotten": "Forgotten your username or password?",
- "core.login.getanothercaptcha": "Get another CAPTCHA",
"core.login.help": "Help",
"core.login.helpmelogin": "
There are many thousands of Moodle sites around the world. This app can only connect to Moodle sites that have specifically enabled Mobile app access.
If you can't connect to your Moodle site then you need to contact your site administrator and ask them to read http://docs.moodle.org/en/Mobile_app
To test the app in a Moodle demo site type teacher or student in the Site address field and click the Connect button.
",
"core.login.instructions": "Instructions",
@@ -1761,7 +1778,6 @@
"core.login.visitchangepassword": "Do you want to visit the site to change the password?",
"core.login.webservicesnotenabled": "Web services are not enabled in your site. Please contact your site administrator if you think they should be enabled.",
"core.lostconnection": "Your authentication token is invalid or has expired. You will have to reconnect to the site.",
- "core.mainmenu.appsettings": "App settings",
"core.mainmenu.changesite": "Change site",
"core.mainmenu.help": "Help",
"core.mainmenu.logout": "Log out",
@@ -1892,7 +1908,8 @@
"core.sending": "Sending",
"core.serverconnection": "Error connecting to the server",
"core.settings.about": "About",
- "core.settings.appready": "App ready",
+ "core.settings.appsettings": "App settings",
+ "core.settings.appversion": "App version",
"core.settings.cannotsyncoffline": "Cannot synchronise offline.",
"core.settings.cannotsyncwithoutwifi": "Cannot synchronise because the current settings only allow to synchronise when connected to Wi-Fi. Please connect to a Wi-Fi network.",
"core.settings.colorscheme": "Color Scheme",
@@ -1900,6 +1917,7 @@
"core.settings.colorscheme-dark": "Dark",
"core.settings.colorscheme-light": "Light",
"core.settings.compilationinfo": "Compilation info",
+ "core.settings.copyinfo": "Copy device info on the clipboard",
"core.settings.cordovadevicemodel": "Cordova device model",
"core.settings.cordovadeviceosversion": "Cordova device OS version",
"core.settings.cordovadeviceplatform": "Cordova device platform",
@@ -1912,7 +1930,6 @@
"core.settings.deletesitefilestitle": "Delete site files",
"core.settings.deviceinfo": "Device info",
"core.settings.deviceos": "Device OS",
- "core.settings.devicewebworkers": "Device web workers supported",
"core.settings.disableall": "Disable notifications",
"core.settings.disabled": "Disabled",
"core.settings.displayformat": "Display format",
@@ -1929,9 +1946,10 @@
"core.settings.filesystemroot": "File system root",
"core.settings.fontsize": "Text size",
"core.settings.fontsizecharacter": "A",
+ "core.settings.forcedsetting": "This setting has been forced by your site configuration.",
"core.settings.general": "General",
"core.settings.language": "Language",
- "core.settings.license": "Licence",
+ "core.settings.license": "License",
"core.settings.localnotifavailable": "Local notifications available",
"core.settings.locationhref": "Web view URL",
"core.settings.locked": "Locked",
@@ -1940,19 +1958,24 @@
"core.settings.navigatorlanguage": "Navigator language",
"core.settings.navigatoruseragent": "Navigator userAgent",
"core.settings.networkstatus": "Internet connection status",
+ "core.settings.opensourcelicenses": "Open Source Licences",
+ "core.settings.preferences": "Preferences",
"core.settings.privacypolicy": "Privacy policy",
+ "core.settings.publisher": "Publisher",
"core.settings.pushid": "Push notifications ID",
"core.settings.reportinbackground": "Report errors automatically",
+ "core.settings.screen": "Screen information",
"core.settings.settings": "Settings",
"core.settings.showdownloadoptions": "Show download options",
+ "core.settings.siteinfo": "Site info",
"core.settings.sites": "Sites",
"core.settings.spaceusage": "Space usage",
+ "core.settings.spaceusagehelp": "Deleting the stored information of the site will remove all the site offline data. This information allows you to use the app when offline. ",
"core.settings.synchronization": "Synchronisation",
"core.settings.synchronizenow": "Synchronise now",
+ "core.settings.synchronizenowhelp": "Synchronising a site will send pending changes and all offline activity stored in the device and will synchronise some data like messages and notifications.",
"core.settings.syncsettings": "Synchronisation settings",
"core.settings.total": "Total",
- "core.settings.versioncode": "Version code",
- "core.settings.versionname": "Version name",
"core.settings.wificonnection": "Wi-Fi connection",
"core.sharedfiles.chooseaccountstorefile": "Choose an account to store the file in.",
"core.sharedfiles.chooseactionrepeatedfile": "A file with this name already exists. Do you want to replace the existing file or rename it to \"{{$a}}\"?",
@@ -2070,7 +2093,6 @@
"core.whoops": "Oops!",
"core.whyisthishappening": "Why is this happening?",
"core.whyisthisrequired": "Why is this required?",
- "core.windowsphone": "Windows Phone",
"core.wsfunctionnotavailable": "The web service function is not available.",
"core.year": "year",
"core.years": "years",
diff --git a/src/assets/lang/es-mx.json b/src/assets/lang/es-mx.json
index af686f0f4..b8319abbd 100644
--- a/src/assets/lang/es-mx.json
+++ b/src/assets/lang/es-mx.json
@@ -1353,7 +1353,6 @@
"core.comments.savecomment": "Guardar comentario",
"core.comments.warningcommentsnotsent": "No se pudo sincronizar comentarios. {{error}}",
"core.commentscount": "Comentarios ({{$a}})",
- "core.commentsnotworking": "No pueden recuperarse comentarios",
"core.completion-alt-auto-fail": "Finalizado {{$a}} (no obtuvo calificación de aprobado)",
"core.completion-alt-auto-n": "Sin finalizar: {{$a}}",
"core.completion-alt-auto-n-override": "No completado: {{$a.modname}} (configurado por {{$a.overrideuser}})",
@@ -1671,7 +1670,6 @@
"core.login.changepasswordinstructions": "Usted no puede cambiar su contraseña en la App. Por favor elija el botón siguiente para abrir el sitio en un navegador web para cambiar su contraseña. Considere que Usted necesita cerrar el navegador después de cambiar la contraseña, ya que Usted no será redirigido a la App.",
"core.login.changepasswordlogoutinstructions": "Si prefiere cambiar de sitio o salirse, por favor elija el botón siguiente:",
"core.login.changepasswordreconnectinstructions": "Elija el botón siguiente para reconectarse al sitio. (considere que si no cambia exitosamente su contraseña, Usted regresaría a la pantalla anterior).",
- "core.login.checksiteversion": "Revisar que su sitio usa Moodle 2.4 o más reciente.",
"core.login.confirmdeletesite": "¿Está seguro de querer eliminar el sitio {{sitename}}?",
"core.login.connect": "¡Conectar!",
"core.login.connecttomoodle": "Conectar a Moodle",
@@ -1686,7 +1684,6 @@
"core.login.emailconfirmsentnoemail": "
Un Email debería de haberse enviado a su dirección.
Contiene instrucciones fáciles para completar su registro.
Si persisten las dificultades, póngase en contacto con el administrador del sitio.
",
"core.login.emailconfirmsentsuccess": "Email de confirmación enviado exitosamente",
"core.login.emailnotmatch": "No coinciden los Emails",
- "core.login.enterthewordsabove": "Escriba las palabras de arriba",
"core.login.erroraccesscontrolalloworigin": "La llamada de Orígen Cruzado (''Cross-Origin'') que Usted está tratando de realizar ha sido rechazada. Por favor revise https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Ocurrió un error al eliminar el sitio. Por favor inténtelo nuevamente.",
"core.login.errorupdatesite": "Ocurrió un error al actualizar la ficha (''token'') del sitio",
@@ -1694,7 +1691,6 @@
"core.login.firsttime": "Registrarse como usuario",
"core.login.forcepasswordchangenotice": "Para continuar, deberá cambiar su contraseña.",
"core.login.forgotten": "¿Olvidó su nombre_de_usuario o contraseña?",
- "core.login.getanothercaptcha": "Obtener otro CAPTCHA",
"core.login.help": "Ayuda",
"core.login.helpmelogin": "
Existen muchos miles de sitios Moodle en el mundo. Esta App solamente puede conectar a sitios Moodle que tengan específicamente habilitado el acceso por la App Mobile.
Si Usted no puede conectarse a su sitio Moodle, entonces Usted necesita ponerse en contacto con su administrador del sitio y pedirle que lea http://docs.moodle.org/en/Mobile_app
Para probar la App en un sitio Moodle demostrativo, escriba teacher o student en el campo de la Dirección del sitio y haga click en el Botón Conectar.
",
"core.login.instructions": "Instrucciones",
@@ -1707,9 +1703,6 @@
"core.login.invalidurl": "Se ha especificado una URL no válida",
"core.login.invalidvaluemax": "El valor máximo es {{$a}}",
"core.login.invalidvaluemin": "El valor mínimo es {{$a}}",
- "core.login.legacymoodleversion": "Usted está tratando de conectarse a una versión de Moodle no soportada. Por favor, descargue la App de Moodle Clásico para acceder a este sitio Moodle.",
- "core.login.legacymoodleversiondesktop": "Usted está intentando conectarse a {{$a}}.
Este sitio está ejecutando una versión antigua no soportada de Moodle, la cual no funcionará con esta App de Moodle Desktop.
Si este es su sitio, por favor póngase en contacto con su socio Moodle local para obtener asistencia para actualizarlo.
Vea nuestra página de contacto para enviar una solicitud para asistencia.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Alternativamente, Usted puede continuar accediendo a este sitio usando una versión no soportada de la App que puede descargarse desde aquí.",
"core.login.localmobileunexpectedresponse": "La revisión de las características Adicionales de Moodle Mobile regresó una respuesta inesperada; Usted será autenticado usando el servicio Mobile estándar.",
"core.login.loggedoutssodescription": "Usted tiene que autenticarse nuevamente. Usted necesita ingresar al sitio en una ventana del navegador.",
"core.login.login": "Ingresar",
@@ -2000,8 +1993,18 @@
"core.submit": "Enviar",
"core.success": "Éxito",
"core.tablet": "Tableta",
+ "core.tag.defautltagcoll": "Colección por defecto",
"core.tag.errorareanotsupported": "Esta área de marca no está soportada por la App.",
+ "core.tag.inalltagcoll": "En todas partes",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} marcadas con \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "No se encontraron marcas que coincidan con \"{{$a}}\"",
+ "core.tag.searchtags": "Buscar marcas",
+ "core.tag.showingfirsttags": "Mostrando las {{$a}} marcas más populares",
"core.tag.tag": "Marca",
+ "core.tag.tagarea_course": "Cursos",
+ "core.tag.tagarea_course_modules": "Actividades y recursos",
+ "core.tag.tagarea_post": "Publicacines en blog",
+ "core.tag.tagarea_user": "Intereses del usuario",
"core.tag.tags": "Marcas",
"core.tag.warningareasnotsupported": "Algunas de las áreas de marca no son mostradas porque no están soportadas por la App.",
"core.teachers": "Profesores",
diff --git a/src/assets/lang/es.json b/src/assets/lang/es.json
index c27a69f98..a0567b01c 100644
--- a/src/assets/lang/es.json
+++ b/src/assets/lang/es.json
@@ -1351,7 +1351,6 @@
"core.comments.savecomment": "Guardar comentario",
"core.comments.warningcommentsnotsent": "No se han podido sincronizar los comentarios. {{error}}",
"core.commentscount": "Comentarios ({{$a}})",
- "core.commentsnotworking": "No pueden recuperarse comentarios",
"core.completion-alt-auto-fail": "Finalizado {{$a}} (no ha alcanzado la calificación de aprobado)",
"core.completion-alt-auto-n": "Sin finalizar: {{$a}}",
"core.completion-alt-auto-n-override": "No completado: {{$a.modname}} (configurado por {{$a.overrideuser}})",
@@ -1575,7 +1574,6 @@
"core.login.authenticating": "Autenticando",
"core.login.cancel": "Cancelar",
"core.login.changepassword": "Cambiar contraseña",
- "core.login.checksiteversion": "Comprueba que tu sitio utiliza Moodle 2.4 o superior.",
"core.login.confirmdeletesite": "¿Está seguro de que quiere eliminar el sitio {{sitename}}?",
"core.login.connect": "Conectar",
"core.login.connecttomoodle": "Conectar a Moodle",
@@ -1590,7 +1588,6 @@
"core.login.emailconfirmsentnoemail": "
Un email debería de haberse enviado a su dirección.
Contiene instrucciones fáciles para completar su registro.
Si persisten las dificultades, póngase en contacto con el administrador del sitio.
",
"core.login.emailconfirmsentsuccess": "Correo de confirmación enviado exitosamente",
"core.login.emailnotmatch": "Las direcciones de correo no coinciden.",
- "core.login.enterthewordsabove": "Escriba las palabras de arriba",
"core.login.erroraccesscontrolalloworigin": "La llamada Cross-Origin que está intentando ha sido rechazada. Por favor visite https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Ha ocurrido un error eliminando este sitio. Por favor, inténtelo de nuevo.",
"core.login.errorupdatesite": "Se ha producido un error actualizando el token del sitio.",
@@ -1598,7 +1595,6 @@
"core.login.firsttime": "Registrarse como usuario",
"core.login.forcepasswordchangenotice": "Para continuar, deberá cambiar su contraseña.",
"core.login.forgotten": "¿Olvidó su nombre de usuario o contraseña?",
- "core.login.getanothercaptcha": "Obtener otro CAPTCHA",
"core.login.help": "Ayuda",
"core.login.helpmelogin": "
Existen muchos sitios Moodle en el mundo. Esta aplicación solamente puede conectar a sitios Moodle que tengan específicamente habilitado el acceso por la aplicación Moodle.
Si no puede conectarse a su sitio Moodle, póngase en contacto con el administrador del sitio y pídale que lea http://docs.moodle.org/es/Mobile_app
Para probar la aplicación en un sitio Moodle de muestra, escriba teacher o student en el campo de la Dirección del sitio y haga click en el Botón Conectar.
",
"core.login.instructions": "Instrucciones",
@@ -1611,9 +1607,6 @@
"core.login.invalidurl": "Se ha especificado una URL no válida",
"core.login.invalidvaluemax": "El valor máximo es {{$a}}",
"core.login.invalidvaluemin": "El valor mínimo es {{$a}}",
- "core.login.legacymoodleversion": "Está tratando de conectarse a una versión de Moodle no soportada. Por favor, descargue la aplicación de Moodle Classic para acceder a este sitio Moodle.",
- "core.login.legacymoodleversiondesktop": "Está intentando conectarse a {{$a}}.
Este sitio está ejecutando una versión antigua no soportada de Moodle, la cual no funcionará con esta aplicación de Moodle Desktop.
Si este es su sitio, por favor póngase en contacto con su Moodle Partner local para obtener asistencia para actualizarlo.
Vea nuestra página de contacto para solicitar asistencia.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Alternativamente, puede continuar accediendo a este sitio usando una versión no soportada de la App que puede descargarse desde aquí.",
"core.login.localmobileunexpectedresponse": "Las características adicionales de Moodle Mobile han devuelto una respuesta inesperada, debe autenticarse utilizando el servicio estándar de Mobile.",
"core.login.loggedoutssodescription": "Tiene que autenticarse nuevamente. Necesita acceder al sitio en una ventana del navegador.",
"core.login.login": "Acceder",
@@ -1899,7 +1892,13 @@
"core.success": "Éxito",
"core.tablet": "Tablet",
"core.tag.errorareanotsupported": "Esta etiqueta de area no está permitida por esta aplicación.",
+ "core.tag.searchtags": "Buscar marcas",
+ "core.tag.showingfirsttags": "Mostrando las {{$a}} marcas más populares",
"core.tag.tag": "Marca",
+ "core.tag.tagarea_course": "Cursos",
+ "core.tag.tagarea_course_modules": "Actividades y recursos",
+ "core.tag.tagarea_post": "Publicaciones de blog",
+ "core.tag.tagarea_user": "Intereses del usuario",
"core.tag.tags": "Marcas",
"core.tag.warningareasnotsupported": "Algunas de las etiquetas de areas no se muestran porque no están permitidas en esta aplicación.",
"core.teachers": "Profesores",
diff --git a/src/assets/lang/eu.json b/src/assets/lang/eu.json
index f576b6d56..6ee25d0de 100644
--- a/src/assets/lang/eu.json
+++ b/src/assets/lang/eu.json
@@ -1353,7 +1353,6 @@
"core.comments.savecomment": "Gorde iruzkina",
"core.comments.warningcommentsnotsent": "Ezin izan dira iruzkinak sinkronizatu. {{error}}",
"core.commentscount": "Iruzkinak: ({{$a}})",
- "core.commentsnotworking": "Iruzkinak ezin izan dira atzitu",
"core.completion-alt-auto-fail": "Osatuta: {{$a}} (ez dute gutxieneko kalifikazioa lortu)",
"core.completion-alt-auto-n": "Osatu gabea: {{$a}}",
"core.completion-alt-auto-n-override": "Osatu gabea: {{$a.modname}} ({{$a.overrideuser}}-(e)k baliogabetua)",
@@ -1671,7 +1670,6 @@
"core.login.changepasswordinstructions": "Ezin duzu pasahitza app-an aldatu. Egin klik mesedez hurrengo botoian gunea nabigatzaile batean ireki eta bertatik pasahitza aldatzeko. Kontuan izan pasahitza aldatu ondoren ez zarela app-ra automatikoki bideratua izango eta beraz app-ra itzultzeko nabigatzailea itxi beharko duzu.",
"core.login.changepasswordlogoutinstructions": "Gunea aldatu edo saioa amaitu nahi baduzu, egin klik hurrengo botoian:",
"core.login.changepasswordreconnectinstructions": "Egin klik hurrengo botoian gunera berriz konektatzeko. (Kontuan izan pasahitza aldatzea lortu ez baduzu aurreko pantailara itzuliko zarela)",
- "core.login.checksiteversion": "Egiaztatu zure Moodle guneak 2.4 bertsioa edo aurreragokoa erabiltzen duela.",
"core.login.confirmdeletesite": "Ziur zaude {{sitename}} gunea ezabatu nahi duzula?",
"core.login.connect": "Konektatu!",
"core.login.connecttomoodle": "Moodle-ra konektatu",
@@ -1686,7 +1684,6 @@
"core.login.emailconfirmsentnoemail": "
Zure helbidera e-posta mezu bat bidali da.
Bertan erregistroa amaitzeko argibide errazak aurkituko dituzu.
Arazoekin jarraitzen baduzu jarri zaitez harremanetan zure guneko kudeatzailearekin.
",
"core.login.emailconfirmsentsuccess": "Baieztatze e-maila ondo bidali da",
"core.login.emailnotmatch": "E-posta helbideak ez datoz bat",
- "core.login.enterthewordsabove": "Idatzi goiko hitzak",
"core.login.erroraccesscontrolalloworigin": "Saiatzen ari zaren cross-origin deia ez da onartu. Ikusi mesedez https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Errorea gertatu da gunea ezabatzean. Mesedez saiatu beranduago.",
"core.login.errorupdatesite": "Errore bat gertatu da guneko token-a eguneratzean.",
@@ -1694,7 +1691,6 @@
"core.login.firsttime": "Hau al da zure lehen aldia hemen?",
"core.login.forcepasswordchangenotice": "Jarraitzeko zure pasahitza aldatu behar duzu.",
"core.login.forgotten": "Zure erabiltzaile-izena edo pasahitza ahaztu duzu?",
- "core.login.getanothercaptcha": "Eskuratu beste CAPTCHA bat",
"core.login.help": "Laguntza",
"core.login.helpmelogin": "
Mundu osoan milaka Moodle gune dago. App honek soilik Mobile sarbidea espresuki gaitu duten guneetara konektatu daiteke.
Zure Moodle gunera ezin bazara konektatu zure guneko kudeatzailearekin harremanetan jarri beharko zara eta eskatu http://docs.moodle.org/en/Mobile_app irakurtzeko
App-a probetarako Moodle ingurunean probatzeko idatzi teacher edo studentGunearen helbidea eremuan eta egin klik Konektatu! botoian.
",
"core.login.instructions": "Argibideak",
@@ -1707,9 +1703,6 @@
"core.login.invalidurl": "Balio ez duen URLa ezarri da",
"core.login.invalidvaluemax": "Gehieneko balioa {{$a}} da.",
"core.login.invalidvaluemin": "Gutxieneko balioa {{$a}} da.",
- "core.login.legacymoodleversion": "Onartzen ez den Moodle-ko bertsioa duen gune batera konektatzen saiatzen ari zara. Jaitsi ezazu mesedez Moodle Classic app-a Moodle gune horretara sartzeko.",
- "core.login.legacymoodleversiondesktop": "{{$a}} helbidera konektatzen saiatzen ari zara.
Gune honek zaharkituta dagoen eta jada onartzen ez den Moodle bertsioa erabiltzen du eta ez du Moodle Desktop App honekin funtzionatuko.
Hau zure gunea bada jarri zaitez harremanetan hurbileko Moodle partner batekin eguneratzen lagundu zaitzan.
Ikusi gure kontaktuen orria laguntza-eskaera bat bidaltzeko.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Bestela, zure gunean sartu zaitezke app-aren sostengurik gabeko bertsio bat erabiliz, hemendik jaitsi daitekeena.",
"core.login.localmobileunexpectedresponse": "Moodle Mobile-ko Funtzio Aurreratuen kontrolak ezusteko erantzuna eman du. Mobile zerbitzu estandarra erabilita autentifikatuko zaitugu.",
"core.login.loggedoutssodescription": "Berriz autentifikatu behar duzua. Gunean nabigatzaile leiho baten bitartez hasi behar duzu saioa.",
"core.login.login": "Sartu",
@@ -2000,8 +1993,18 @@
"core.submit": "Bidali",
"core.success": "Ondo",
"core.tablet": "Tablet-a",
+ "core.tag.defautltagcoll": "Lehenetsitako bilduma",
"core.tag.errorareanotsupported": "Etiketa-eremu hau ez da app-an onartzen.",
+ "core.tag.inalltagcoll": "Edonon",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} ondokoarekin etiketatu da: \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Ez da aurkitu \"{{$a}}\"-(r)ekin bat datorren etiketarik",
+ "core.tag.searchtags": "Bilatu etiketak",
+ "core.tag.showingfirsttags": "{{$a}} etiketa ospetsuenak erakusten",
"core.tag.tag": "Etiketa",
+ "core.tag.tagarea_course": "Ikastaroak",
+ "core.tag.tagarea_course_modules": "Jarduerak eta baliabideak",
+ "core.tag.tagarea_post": "Blogetako mezuak",
+ "core.tag.tagarea_user": "Erabiltzailearen interesak",
"core.tag.tags": "Etiketak",
"core.tag.warningareasnotsupported": "Etiketa-eremu batzuk ez dira erakusten app-an a",
"core.teachers": "Irakasleak",
diff --git a/src/assets/lang/fa.json b/src/assets/lang/fa.json
index 2f6ded3e2..651d7aeb0 100644
--- a/src/assets/lang/fa.json
+++ b/src/assets/lang/fa.json
@@ -1207,11 +1207,9 @@
"core.login.createuserandpass": "نام کاربری و رمز عبور خود را انتخاب کنید",
"core.login.emailconfirmsent": "
باید نامهای به آدرس شما در {{$a}} فرستاده شده باشد
\n
این نامه شامل دستورالعملهای سادهای برای تکمیل عضویت شما است.
\n
در صورت تداوم مواجهه با مشکل، با مدیر سایت تماس بگیرید.
",
"core.login.emailconfirmsentsuccess": "ارسال ایمیل تاییدیه موفقیت آمیز بود",
- "core.login.enterthewordsabove": "کلمات بالا را وارد نمائید",
"core.login.firsttime": "برای اولین بار به این صفحه آمدهاید؟",
"core.login.forcepasswordchangenotice": "برای پیشروی باید رمز ورود خود را تغییر دهید.",
"core.login.forgotten": "نام کاربری و یا رمز ورود خود را فراموش کردهاید؟",
- "core.login.getanothercaptcha": "دریافت یک کپچای دیگر",
"core.login.help": "راهنمایی",
"core.login.helpmelogin": "
چندین هزار سایت مودل در دنیا وجود دارد. این برنامه فقط میتواند به آن مودلهایی متصل شود که صراحتا دسترسی «برنامه موبایل» را فعال کردهباشند.
اگر نمیتوانید به سایت مودل خود وصل شوید، باید با مدیر مودل آن سایت تماس بگیرید و بخواهید که http://docs.moodle.org/en/Mobile_app را مطالعه کنند.
\n
برای آزمایش برنامه با استفاده از یک سایت آزمایشی، در قسمت مربوط به آدرس سایت عبارت teacher یا student را وارد کرده و بر روی دکمه اتصال کلیک کنید.
Se sisältää ohjeet, kuinka voit vahvistaa käyttäjätunnuksesi.
\n
Jos vahvistuksessa on ongelmia, ota yhteyttä ylläpitäjään.
",
"core.login.emailconfirmsentsuccess": "Vahvistusviesti lähetetty onnistuneesti",
"core.login.emailnotmatch": "Sähköpostiosoitteet eivät täsmää",
- "core.login.enterthewordsabove": "Kirjoita ylläolevat sanat",
"core.login.errordeletesite": "Sivustoa poistettaessa tapahtui virhe. Ole hyvä ja yritä uudelleen.",
"core.login.errorupdatesite": "Sivuston tokenia päivittäessä tapahtui virhe.",
"core.login.firsttime": "Jos sinulla ei ole vielä tunnusta:",
"core.login.forcepasswordchangenotice": "Sinun pitää vaihtaa salasanasi ennen kuin voit jatkaa.",
"core.login.forgotten": "Unohditko käyttäjätunnuksesi tai salasanasi?",
- "core.login.getanothercaptcha": "Hae uusi varmenne",
"core.login.help": "Ohje",
"core.login.instructions": "Ohjeet",
"core.login.invalidaccount": "Ole hyvä ja tarkista kirjautumistietosi, jos ne ovat oikein pyydä järjestelmän pääkäyttäjää tarkistamaan, että palvelu toimii oikein.",
@@ -1750,6 +1746,7 @@
"core.submit": "Lähetä",
"core.success": "Valmis!",
"core.tablet": "Tabletti-tietokone",
+ "core.tag.searchtags": "Hae tunnisteita",
"core.tag.tag": "Tunniste",
"core.tag.tags": "Tunnisteet",
"core.teachers": "Opettajat",
diff --git a/src/assets/lang/fr.json b/src/assets/lang/fr.json
index cfb645395..3e538595c 100644
--- a/src/assets/lang/fr.json
+++ b/src/assets/lang/fr.json
@@ -1353,7 +1353,6 @@
"core.comments.savecomment": "Enregistrer le commentaire",
"core.comments.warningcommentsnotsent": "Impossible de synchroniser les commentaires. {{error}}",
"core.commentscount": "Commentaires ({{$a}})",
- "core.commentsnotworking": "Les commentaires ne peuvent pas être récupérés",
"core.completion-alt-auto-fail": "Terminé : {{$a}} (n'a pas atteint la note pour passer)",
"core.completion-alt-auto-n": "Non terminé : {{$a}}",
"core.completion-alt-auto-n-override": "Non terminé : {{$a.modname}} (défini par {{$a.overrideuser}})",
@@ -1494,6 +1493,7 @@
"core.erroropenfilenoextension": "Erreur lors de l'ouverture du fichier : le nom du fichier n'a pas d'extension.",
"core.erroropenpopup": "Cette activité essaie d'ouvrir dans une fenêtre surgissante. Ceci n'est pas supporté dans l'app.",
"core.errorrenamefile": "Erreur lors du renommage du fichier. Veuillez essayer à nouveau.",
+ "core.errorsomedatanotdownloaded": "Si vous avez téléchargé cette activité, veuillez prendre note que certaines données ne sont pas téléchargées pour des raisons de performance et d'utilisation de données.",
"core.errorsync": "Une erreur est survenue lors de la synchronisation. Veuillez essayer plus tard.",
"core.errorsyncblocked": "Ce {{$a}} ne peut pas être synchronisé maintenant en raison d'une tâche en cours. Veuillez essayer plus tard. Si le problème persiste, veuillez relancer l'app.",
"core.explanationdigitalminor": "Cette information est requise pour déterminer si vous avez l'âge de la majorité numérique. Cet âge est celui qu'une personne doit avoir pour pouvoir donner son consentement à l'accès et au stockage par un tiers des données personnelles la concernant.",
@@ -1666,7 +1666,8 @@
"core.login.cancel": "Annuler",
"core.login.changepassword": "Changer le mot de passe",
"core.login.changepasswordbutton": "Ouvrir la page de changement de mot de passe",
- "core.login.checksiteversion": "Veuillez vérifier que votre site utilise Moodle 2.4 ou une version ultérieure.",
+ "core.login.changepasswordhelp": "Si vous rencontrez des problèmes lors du changement de mot de passe, veuillez contacter l'administrateur de votre site. Si vous ne savez pas comment le contacter, veuillez contacter votre enseignant.",
+ "core.login.changepasswordinstructions": "Il n'est pas possible de changer votre mot de passe dans l'app. Veuillez cliquer le bouton ci-dessous pour ouvrir le site dans un navigateur, afin de changer votre mot de passe. N'oubliez pas de fermer votre navigateur après avoir changé de mot de passe, car vous ne serez pas redirigé vers l'app.",
"core.login.confirmdeletesite": "Voulez-vous vraiment supprimer la plateforme {{sitename}} ?",
"core.login.connect": "Connecter !",
"core.login.connecttomoodle": "Connexion à Moodle",
@@ -1679,7 +1680,6 @@
"core.login.emailconfirmsentnoemail": "
Un courriel a été envoyé à votre adresse.
Il contient des instructions simples à effectuer pour terminer votre enregistrement.
Si vous rencontrez des difficultés, veuillez contacte l'administrateur du site.",
"core.login.emailconfirmsentsuccess": "Courriel de confirmation envoyé",
"core.login.emailnotmatch": "Les adresses de courriel ne correspondent pas",
- "core.login.enterthewordsabove": "Tapez les mots ci-dessus",
"core.login.erroraccesscontrolalloworigin": "La tentative d'appel « Cross-Origin » que vous avez effectuée a été rejetée. Veuillez consulter https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Une erreur est survenue lors de la suppression de la plateforme. Veuillez essayer plus tard.",
"core.login.errorupdatesite": "Une erreur est survenue lors de la mise à jour du jeton du site.",
@@ -1687,7 +1687,6 @@
"core.login.firsttime": "Première visite sur ce site ?",
"core.login.forcepasswordchangenotice": "Vous devez changer votre mot de passe pour continuer.",
"core.login.forgotten": "Vous avez oublié votre nom d'utilisateur et/ou votre mot de passe ?",
- "core.login.getanothercaptcha": "Obtenir un nouveau CAPTCHA",
"core.login.help": "Aide",
"core.login.helpmelogin": "Il y a plusieurs milliers de sites Moodle dans le monde. Cette app peut uniquement se connecter aux sites Moodle qui ont activé l'accès via l'app mobile.
Si vous n'arrivez pas à vous connecter, veuillez contacter l'administrateur de votre site Moodle et lui demander de lire https://docs.moodle.org/fr/App_Moodle
Pour tester l'app avec un site Moodle de démonstration, tapez teacher ou student dans le champ Adresse du site et tapotez sur le bouton Connexion.
",
"core.login.instructions": "Instructions",
@@ -1700,9 +1699,6 @@
"core.login.invalidurl": "URL spécifié non valide",
"core.login.invalidvaluemax": "La valeur maximale est {{$a}}",
"core.login.invalidvaluemin": "La valeur minimale est {{$a}}",
- "core.login.legacymoodleversion": "Vous essayez de vous connecter à une version non supportée de Moodle. Veuillez télécharger l'app Moodle classique pour accéder à ce site.",
- "core.login.legacymoodleversiondesktop": "Vous essayez de vous connecter à {{$a}}.
Ce site tourne avec un ancienne version non supportée de Moodle, qui ne fonctionnera pas avec cette app Moodle Desktop.
S'il s'agit de votre site, contactez votre partenaire Moodle pour obtenir de l'assistance afin de le mettre à jour.
Consultez notre page de contact pour envoyer une demande d'assistance.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Autrement, vous pouvez accéder à ce site au moyen d'une version non supportée de l'app, téléchargeable ici.",
"core.login.localmobileunexpectedresponse": "La vérification des fonctionnalités additionnelles de Moodle Mobile a envoyé une réponse inattendue. Vous allez être connecté au moyen du service mobile standard.",
"core.login.loggedoutssodescription": "Veuillez vous ré-authentifier en vous connectant au site au moyen d'un navigateur web.",
"core.login.login": "Connexion",
@@ -1993,8 +1989,18 @@
"core.submit": "Envoyer",
"core.success": "Succès",
"core.tablet": "Tablette",
+ "core.tag.defautltagcoll": "Collection par défaut",
"core.tag.errorareanotsupported": "Cette zone de tag n'est pas supportée par l'app.",
+ "core.tag.inalltagcoll": "Partout",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} signalées avec « {{$a.tag}} »",
+ "core.tag.notagsfound": "Aucun tags avec « {{$a}} » trouvé",
+ "core.tag.searchtags": "Chercher des tags",
+ "core.tag.showingfirsttags": "Affichage des {{$a}} tags les plus utilisés",
"core.tag.tag": "Tag",
+ "core.tag.tagarea_course": "Cours",
+ "core.tag.tagarea_course_modules": "Activités et ressources",
+ "core.tag.tagarea_post": "Articles de blog",
+ "core.tag.tagarea_user": "Centres d'intérêt",
"core.tag.tags": "Tags",
"core.tag.warningareasnotsupported": "Certaines zones de tag ne sont pas affichées, car elles ne sont pas supportées par l'app.",
"core.teachers": "Enseignants",
diff --git a/src/assets/lang/he.json b/src/assets/lang/he.json
index 9ba6ed61d..f03f6eb45 100644
--- a/src/assets/lang/he.json
+++ b/src/assets/lang/he.json
@@ -1281,13 +1281,11 @@
"core.login.credentialsdescription": "יש להזין את שם המשתמש והסיסמה שלך כדי להתחבר",
"core.login.emailconfirmsent": "
לכתובתך ב {{$a}} תשלח בקרוב הודעת דואר אלקטרוני.
הודעה זו מכילה הוראות פשוטות להשלמת הרשמתך.
אם תיתקל בקשיים, אנא צור קשר עם מנהל האתר.
",
"core.login.emailconfirmsentsuccess": "אימות דוא\"ל נשלח בהצלחה",
- "core.login.enterthewordsabove": "יש להזין את מילים (תווים או מספרים) המוצגים מעלה (בתמונה)",
"core.login.errordeletesite": "התרחשה שגיאה בזמן מחיקת אתר זה. אנא נסה שוב.",
"core.login.errorupdatesite": "התרחשה שגיאה בזמן עדכון אסימון האתר (token).",
"core.login.firsttime": "האם זהו הביקור הראשון שלך באתר זה?",
"core.login.forcepasswordchangenotice": "יש לשנות סיסמה כדי להמשיך",
"core.login.forgotten": "שכחת את שם המשתמש או את הסיסמה שלך?",
- "core.login.getanothercaptcha": "הצגת CAPTCHA אחר",
"core.login.help": "עזרה",
"core.login.helpmelogin": "
קיימים אלפים רבים של אתרי מוודל ברחבי העולם. אפליקציה זו יכולה להתחבר רק לאתרים בהם .הופעלה גישה לאפליקצית מובייל
בכדי לבדוק את האפליקציה באתר דמו של מוודל, יש להזין teacher או student בשדה כתובת אתר וללחוץ על כפתור הוסף.
",
"core.login.instructions": "הוראות",
@@ -1509,7 +1507,17 @@
"core.submit": "שמירה",
"core.success": "הצלחה",
"core.tablet": "טאבלט",
+ "core.tag.defautltagcoll": "אוסף בררת־המחדל",
+ "core.tag.inalltagcoll": "בכל מקום",
+ "core.tag.itemstaggedwith": "התג '{{$a.tag}}' נוסף ל'{{$a.tagarea}}'",
+ "core.tag.notagsfound": "לא נמצאו תגים בשם \"{{$a}}\"",
+ "core.tag.searchtags": "חיפוש תגים",
+ "core.tag.showingfirsttags": "תצוגת {{$a}} התגים השכיחים ביותר",
"core.tag.tag": "תג",
+ "core.tag.tagarea_course": "קורסים",
+ "core.tag.tagarea_course_modules": "משאבים ופעילויות",
+ "core.tag.tagarea_post": "פרסומי בלוגים",
+ "core.tag.tagarea_user": "תחומי עניין של משתמש",
"core.tag.tags": "תגים",
"core.teachers": "מורים",
"core.thisdirection": "rtl",
diff --git a/src/assets/lang/hi.json b/src/assets/lang/hi.json
index 124a982de..7458e991f 100644
--- a/src/assets/lang/hi.json
+++ b/src/assets/lang/hi.json
@@ -424,7 +424,6 @@
"core.comments.eventcommentcreated": "टिप्पणी बनाई गई",
"core.comments.eventcommentdeleted": "टिप्पणी हटा दी गई",
"core.commentscount": "टिप्पणियाँ ({{$a}})",
- "core.commentsnotworking": "टिप्पणियों को पुनर्प्राप्त नहीं किया जा सकता है",
"core.completion-alt-auto-fail": "समाप्त किया: {{$a}} (पास ग्रेड प्राप्त नहीं हुआ)",
"core.completion-alt-auto-n": "समाप्त नहीं हुई: {{$a}}",
"core.completion-alt-auto-n-override": "समाप्त नहीं हुई: {{$a.modname}} (set by {{$a.overrideuser}})",
@@ -598,7 +597,6 @@
"core.login.authenticating": "प्रमाणित कर रहा है",
"core.login.cancel": "कैन्सॅल",
"core.login.changepassword": "पासवर्ड बदलिए",
- "core.login.checksiteversion": "जांचें कि आपकी साइट Moodle 2.4 या बाद का उपयोग करती है।",
"core.login.confirmdeletesite": "क्या आप वाकई {{sitename}} साइट को हटाना चाहते हैं?",
"core.login.connect": "जुडिये!",
"core.login.connecttomoodle": "मूडल से कनेक्ट करें",
@@ -611,7 +609,6 @@
"core.login.emailconfirmsentnoemail": "
आपके पते पर एक ईमेल भेजा जाना चाहिए। p>
इसमें आपका पंजीकरण पूरा करने के लिए आसान निर्देश शामिल हैं। p>
यदि आपको कठिनाई जारी है, तो साइट व्यवस्थापक से संपर्क करें। p>",
"core.login.emailconfirmsentsuccess": "पुष्टिकरण ईमेल सफलतापूर्वक भेजा गया",
"core.login.emailnotmatch": "ईमेल एक - दूसरे से मेल नहीं खाते",
- "core.login.enterthewordsabove": "ऊपर्युक्त शब्दों को दर्ज करें",
"core.login.erroraccesscontrolalloworigin": "जिस क्रॉस-ऑरिजिन कॉल को आप करने की कोशिश कर रहे हैं, उसे अस्वीकार कर दिया गया है। कृपया https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_hhhium पर जाएं",
"core.login.errordeletesite": "इस साइट को हटाते समय एक त्रुटि हुई। कृपया पुन: प्रयास करें।",
"core.login.errorupdatesite": "साइट के टोकन को अपडेट करते समय एक त्रुटि हुई।",
@@ -619,7 +616,6 @@
"core.login.firsttime": "क्या आप यहाँ पहली बार आयें हैं?",
"core.login.forcepasswordchangenotice": "आगे बढ़ने के लिए आपको अपना पासवर्ड बदलना होगा।",
"core.login.forgotten": "क्या आप अपना यूज़रनेम या पासवर्ड भूल गये हैं?",
- "core.login.getanothercaptcha": "एक और कैप्चा प्राप्त करें",
"core.login.help": "सहायता",
"core.login.helpmelogin": "
दुनिया भर में कई हजारों Moodle साइट्स हैं। यह ऐप केवल उन Moodle साइटों से कनेक्ट हो सकता है जिन्होंने विशेष रूप से मोबाइल ऐप एक्सेस सक्षम किया है। p>
यदि आप अपनी Moodle साइट से कनेक्ट नहीं कर सकते हैं, तो आपको अपने साइट व्यवस्थापक से संपर्क करने और उन्हें पढ़ने के लिए कहने की आवश्यकता है \"http://docs.moodle.org/en/Mobile_app\" लक्ष्य = \"_blank\"> http://docs.moodle.org/en/Mobile_app p>
में एप्लिकेशन का परीक्षण करने के लिए Moodle डेमो साइट प्रकार शिक्षक i> या छात्र i> साइट पते i> फ़ील्ड में और कनेक्ट बटन b> p पर क्लिक करें। >",
"core.login.instructions": "निर्देश",
@@ -630,9 +626,6 @@
"core.login.invalidtime": "अमान्य समय",
"core.login.invalidvaluemax": "अधिकतम मूल्य {{$ a}} है",
"core.login.invalidvaluemin": "न्यूनतम मान {{$ a}} है",
- "core.login.legacymoodleversion": "आप किसी असमर्थित Moodle संस्करण से कनेक्ट करने का प्रयास कर रहे हैं। कृपया, इस Moodle साइट तक पहुँचने के लिए Moodle क्लासिक ऐप डाउनलोड करें",
- "core.login.legacymoodleversiondesktop": "आप {{$a}} b> से जुड़ने का प्रयास कर रहे हैं।
यह साइट Moodle का पुराना असमर्थित संस्करण चला रही है जो इस Moodle डेस्कटॉप ऐप के साथ काम नहीं करेगा।
br> यदि यह आपकी साइट है तो कृपया इसे अपडेट करने के लिए सहायता प्राप्त करने के लिए अपने स्थानीय मूडी साथी से संपर्क करें।
हमारे संपर्क पृष्ठ देखें सहायता के लिए अनुरोध प्रस्तुत करने के लिए।",
- "core.login.legacymoodleversiondesktopdownloadold": "
वैकल्पिक रूप से, आप अभी भी इस साइट को ऐप के एक असमर्थित संस्करण का उपयोग करके एक्सेस कर सकते हैं जिसे यहां से डाउनलोड किया जा सकता है।",
"core.login.localmobileunexpectedresponse": "Moodle मोबाइल एडिशनल फीचर्स चेक ने अप्रत्याशित प्रतिक्रिया दी। आपको मानक मोबाइल सेवा का उपयोग करके प्रमाणित किया जाएगा।",
"core.login.loggedoutssodescription": "आपको फिर से प्रमाणित करना होगा। आपको ब्राउज़र विंडो में साइट पर लॉग इन करना होगा",
"core.login.login": "लॉग-इन",
diff --git a/src/assets/lang/hr.json b/src/assets/lang/hr.json
index 1a233af92..a74d1404d 100644
--- a/src/assets/lang/hr.json
+++ b/src/assets/lang/hr.json
@@ -1341,11 +1341,9 @@
"core.login.createuserandpass": "Stvori novo korisničko ime i lozinku s kojom se mogu prijaviti sustavu",
"core.login.emailconfirmsent": "
Uskoro biste trebali primiti poruku e-poste na vasu adresu {{$a}}
\n
Poruka sadrzava jednostavne upute o daljnjem postupku registracije.
\n
Ako imate tehnickih problema s registracijom ili pitanja u vezi iste, posaljite poruku e-postom administratoru sustava.
",
"core.login.emailconfirmsentsuccess": "Poruka potvrde registracije uspješno poslana",
- "core.login.enterthewordsabove": "Unesite riječi ispisane iznad",
"core.login.firsttime": "Ovdje ste prvi put?",
"core.login.forcepasswordchangenotice": "Morate promijeniti svoju lozinku kako biste mogli nastaviti s radom.",
"core.login.forgotten": "Zaboravili ste svoje korisničko ime ili lozinku?",
- "core.login.getanothercaptcha": "Koristi drugu CAPTCHA",
"core.login.help": "Pomoć",
"core.login.instructions": "Upute",
"core.login.invaliddate": "Neispravan datum",
@@ -1590,7 +1588,14 @@
"core.submit": "Predaj",
"core.success": "Uspješno",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Zadana zbirka",
+ "core.tag.inalltagcoll": "Svuda",
+ "core.tag.searchtags": "Pretraži oznake",
"core.tag.tag": "Oznaka (tag)",
+ "core.tag.tagarea_course": "E-kolegiji",
+ "core.tag.tagarea_course_modules": "Aktivnosti i resursi",
+ "core.tag.tagarea_post": "Blog članci",
+ "core.tag.tagarea_user": "Interesi korisnika",
"core.tag.tags": "Oznake",
"core.teachers": "Nastavnici",
"core.thereisdatatosync": "Postoje offline {{$a}} koje treba sinkronizirati.",
diff --git a/src/assets/lang/hu.json b/src/assets/lang/hu.json
index 22381574e..041c5b204 100644
--- a/src/assets/lang/hu.json
+++ b/src/assets/lang/hu.json
@@ -1374,11 +1374,9 @@
"core.login.createuserandpass": "Új felhasználónév és jelszó megadása",
"core.login.emailconfirmsent": "Egy e-mailt kellett kapnia {{$a}} címére. A levél a regisztráció kitöltéséhez szükséges egyszerű teendőket tartalmazza. Ha továbbra is nehézségekbe ütközik, lépjen kapcsolatba a portál rendszergazdájával.",
"core.login.emailconfirmsentsuccess": "A visszaigazoló e-mail elküldése sikerült",
- "core.login.enterthewordsabove": "Írja le a fenti szavakat",
"core.login.firsttime": "Most van itt először?",
"core.login.forcepasswordchangenotice": "Továbblépéshez módosítsa jelszavát.",
"core.login.forgotten": "Elfelejtette felhasználónevét vagy jelszavát?",
- "core.login.getanothercaptcha": "Másik CAPTCHA beszerzése",
"core.login.help": "Súgó",
"core.login.helpmelogin": "
Több ezer Moodle-portál üzemel szerte a világban. Ez az alkalmazás csak azokhoz a portálokhoz képes kapcsolódni, amelyek lehetővé teszik ezt a mobil alkalmazás számára.
Ha gondot okoz a kapcsolódás, forduljon a Moodle azon rendszergazdájához, aki az adott portált üzemelteti, és kérje meg, hogy olvassa el a http://docs.moodle.org/en/Mobile_app weboldalon lévő információt
Az alkalmazás demó üzemmódú Moodle-portálon való teszteléséhez a Site URL mezőbe írja be a teacher vagy student szót, és kattintson az Add button gombra.
",
"core.login.instructions": "Utasítások",
@@ -1575,7 +1573,17 @@
"core.strftimetime24": "%H:%M",
"core.submit": "Leadás",
"core.success": "Sikerült",
+ "core.tag.defautltagcoll": "Alapgyűjtemény",
+ "core.tag.inalltagcoll": "Mindenhol",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} \"{{$a.tag}}\" címkével megjelölve",
+ "core.tag.notagsfound": "Nincs \"{{$a}}\" szerint megfelelő címke",
+ "core.tag.searchtags": "Címkék közötti keresés",
+ "core.tag.showingfirsttags": "{{$a}} legnépszerűbb címke megjelenítése",
"core.tag.tag": "Címke",
+ "core.tag.tagarea_course": "Kurzusok",
+ "core.tag.tagarea_course_modules": "Tevékenységek és tananyagok",
+ "core.tag.tagarea_post": "Blogüzenetek",
+ "core.tag.tagarea_user": "Érdeklődési kör",
"core.tag.tags": "Címkék",
"core.teachers": "Tanárok",
"core.thisdirection": "ltr",
diff --git a/src/assets/lang/id.json b/src/assets/lang/id.json
index cd6e46eab..b26844535 100644
--- a/src/assets/lang/id.json
+++ b/src/assets/lang/id.json
@@ -646,7 +646,6 @@
"core.comments.nocomments": "Tidak ada komentar",
"core.comments.savecomment": "Simpan komentar",
"core.commentscount": "Komentar ({{$a}})",
- "core.commentsnotworking": "Komentar tidak dapat diambil",
"core.confirmcanceledit": "Apakah Anda yakin ingin meninggalkan halaman ini? Semua perubahan akan hilang.",
"core.confirmloss": "Apakah Anda yakin? Semua perubahan akan hilang",
"core.confirmopeninbrowser": "Apakah Anda ingin membukanya di browse?",
@@ -819,7 +818,6 @@
"core.login.authenticating": "Mengotentikasi",
"core.login.cancel": "Batal",
"core.login.changepassword": "Ubah password",
- "core.login.checksiteversion": "Pastikan situs Anda menggunakan Moodle 2.4 atau yang terbaru.",
"core.login.confirmdeletesite": "Apakah Anda yakin ingin menghapus situs {{sitename}}?",
"core.login.connect": "Terhubung!",
"core.login.connecttomoodle": "Terhubung ke Moodle",
@@ -831,14 +829,12 @@
"core.login.emailconfirmsent": "
Sebuah email telah dikirimkan ke alamat Anda pada {{$a}}\n
yang berisi petunjuk ringkas untuk melengkapi pendaftaran Anda.\n
Jika Anda menemukan kesulitan, hubungi administrator situs ini.
",
"core.login.emailconfirmsentsuccess": "Pengiriman surel konfirmasi sukses",
"core.login.emailnotmatch": "Email tidak sesuai",
- "core.login.enterthewordsabove": "Masukkan kata-kata di atas",
"core.login.erroraccesscontrolalloworigin": "Panggilan Cross-Origin yang coba Anda lakukan telah ditolak. Harap periksa https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Terjadi kesalahan saat menghapus situs. Silahkan coba lagi.",
"core.login.errorupdatesite": "Terjadi kesalahan saat memperbaharui situs. Silahkan coba lagi.",
"core.login.firsttime": "Ini yang pertama kali Anda kesini?",
"core.login.forcepasswordchangenotice": "Anda harus mengubah kata sandi Anda untuk memproses lebih lanjut.",
"core.login.forgotten": "Lupa nama pengguna dan password Anda?",
- "core.login.getanothercaptcha": "Dapatkan CAPTCHA lainnya",
"core.login.help": "Bantuan",
"core.login.helpmelogin": "
Ada banyak situs Moodle di seluruh duinia. Aplikasi ini hanya bisa terhubung ke situs Moodle yang akses Aplikasi Mobilenya telah diaktifkan
Jika Anda tidak bisa terhubung ke situs Moodle Anda maka Anda butuh menghubungi administrator di tempat dimana Anda ingin terhubung dan menginginkan mereka untuk membacanya http://docs.moodle.org/en/Mobile_app
To test the app in a Moodle demo site type teacher or student in the Site address field and click the Connect button.
",
"core.login.instructions": "Instruksi",
diff --git a/src/assets/lang/it.json b/src/assets/lang/it.json
index 553efe5b2..90406155a 100644
--- a/src/assets/lang/it.json
+++ b/src/assets/lang/it.json
@@ -1282,7 +1282,6 @@
"core.comments.nocomments": "Non ci sono commenti",
"core.comments.savecomment": "Salva commento",
"core.commentscount": "Commenti: ({{$a}})",
- "core.commentsnotworking": "Non è possibile scaricare i commenti",
"core.completion-alt-auto-fail": "Completato: {{$a}} (senza raggiungere la sufficienza)",
"core.completion-alt-auto-n": "Non completata: {{$a}}",
"core.completion-alt-auto-n-override": "Non completato: {{$a.modname}} (impostato da {{$a.overrideuser}})",
@@ -1541,7 +1540,6 @@
"core.login.authenticating": "Autenticazione in corso",
"core.login.cancel": "Annulla",
"core.login.changepassword": "Cambia password",
- "core.login.checksiteversion": "Verifica che il sito utilizzi Moodle 2.4 o versioni successive.",
"core.login.confirmdeletesite": "Sei sicuro di eliminare il sito {{sitename}}?",
"core.login.connect": "Collegati!",
"core.login.connecttomoodle": "Collegati a Moodle",
@@ -1550,14 +1548,12 @@
"core.login.credentialsdescription": "Per favore inserisci username e password per l'autenticazione",
"core.login.emailconfirmsent": "
Una email è stata inviata al tuo indirizzo {{$a}}
\n
Contiene semplici istruzioni per completare la tua registrazione.
\n
Se hai qualche difficoltà contatta l'amministratore del sito.
",
"core.login.emailconfirmsentsuccess": "L'email di conferma è stata inviata correttamente",
- "core.login.enterthewordsabove": "Inserisci le parole sovrastanti",
"core.login.erroraccesscontrolalloworigin": "La chiamata cross-origin che stai effettuando è stata rifiutata. Per ulteriori informazioni: https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Si è verificato un errore durante l'eliminazione di questo sito. Per favore riprova.",
"core.login.errorupdatesite": "Si è verificato un errore durante l'aggiornamento del token del sito.",
"core.login.firsttime": "È la prima volta che accedi qui?",
"core.login.forcepasswordchangenotice": "È necessario cambiare la password per proseguire.",
"core.login.forgotten": "Hai dimenticato lo username o la password?",
- "core.login.getanothercaptcha": "Chiedi un altro CAPTCHA",
"core.login.help": "Aiuto",
"core.login.helpmelogin": "
Esistono diverse migliaia di siti Moodle al mondo. Queta app può collegarsi solamente in quei siti dove è stato configurato l'accesso Mobile app.
Se non riesci a collegarti al sito Moodle desiderato devi contattare l'amministratore di quel sito e chiedergli di documentarsi su http://docs.moodle.org/en/Mobile_app
Per provare l'applicazione su un sito Moodle demo inserire teacher oppure student nel campo Username e fare click sul pulsante Aggiungi.
Norėdami išbandyti programėlės demo versiją surinkite teacher (dėstytojui) ar student (besimokančiajam)Svetainės adreso lauke ir paspauskite Prisijungti mygtuką.
",
"core.login.instructions": "Instrukcijos",
@@ -1747,7 +1743,17 @@
"core.submit": "Pateikti",
"core.success": "Sėkmingai",
"core.tablet": "Planšetė",
+ "core.tag.defautltagcoll": "Numatytas rinkinys",
+ "core.tag.inalltagcoll": "Visur",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} pažymėta su \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Nerasta jokių žymių atitiktimi \"{{$a}}\"",
+ "core.tag.searchtags": "Ieškoti žymių",
+ "core.tag.showingfirsttags": "Rodomos {{$a}} populiariausios žymės",
"core.tag.tag": "Žymė",
+ "core.tag.tagarea_course": "Kursai",
+ "core.tag.tagarea_course_modules": "Veiklos ir ištekliai",
+ "core.tag.tagarea_post": "Tinklaraščio įrašai",
+ "core.tag.tagarea_user": "Naudotojo interesai",
"core.tag.tags": "Žymės",
"core.teachers": "Dėstytojai",
"core.thereisdatatosync": "Neprijungtas {{$a}}, kad sinchronizuotų.",
diff --git a/src/assets/lang/lv.json b/src/assets/lang/lv.json
index 0fc45cfee..8b2a70e1b 100644
--- a/src/assets/lang/lv.json
+++ b/src/assets/lang/lv.json
@@ -1383,7 +1383,6 @@
"core.login.authenticating": "Autentificēšana",
"core.login.cancel": "Atcelt",
"core.login.changepassword": "Mainīt paroli",
- "core.login.checksiteversion": "Pārbaudiet, vai jūsu vietne izmanto Moodle 2.4 vai jaunāku versiju.",
"core.login.confirmdeletesite": "Vai tiešām vēlaties dzēst vietni {{sitename}}?",
"core.login.connect": "Savienoties!",
"core.login.connecttomoodle": "Savienoties ar Moodle",
@@ -1414,9 +1413,6 @@
"core.login.invalidurl": "Norādīta nederīga saite",
"core.login.invalidvaluemax": "Maksimālā vērtība ir {{$a}}",
"core.login.invalidvaluemin": "Minimālā vērtība ir {{$a}}",
- "core.login.legacymoodleversion": "Jūs mēģināt izveidot savienojumu ar neatbalstītu Moodle versiju. Lūdzu, lejupielādējiet Moodle Classic lietotni, lai piekļūtu šai Moodle vietnei.",
- "core.login.legacymoodleversiondesktop": "Jūs mēģināt izveidot savienojumu ar {{$ a}} .
Šī vietne darbojas ar novecojušu neatbalstītu Moodle versiju, kas nedarbosies ar šo Moodle darbvirsmas lietotni. << br> Ja šī ir jūsu vietne, lūdzu, sazinieties ar vietējo partneri, lai saņemtu palīdzību, lai to atjauninātu.
Skatiet mūsu kontaktu lapu , lai iesniegt palīdzības pieprasījumu.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Alternatīvi, jūs joprojām varat piekļūt šai vietnei, izmantojot neatbalstītu lietotnes versiju, kuru var lejupielādēt no šejienes.",
"core.login.localmobileunexpectedresponse": "Moodle Mobile papildu funkciju pārbaude atgriezās negaidīti. Jūs autentificēs, izmantojot standarta mobilo pakalpojumu.",
"core.login.loggedoutssodescription": "Jums vēlreiz jāautentificējas. Jums ir jāpiesakās vietnē pārlūkprogrammas logā.",
"core.login.login": "Pieslēgties",
@@ -1682,7 +1678,17 @@
"core.submit": "Iesniegt",
"core.success": "Sekmīgi",
"core.tablet": "Planšete",
+ "core.tag.defautltagcoll": "Noklusējuma kolekcija",
+ "core.tag.inalltagcoll": "Visur",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} tagots ar \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Nav atrasti tagi, kas atbilstu \"{{$a}}\"",
+ "core.tag.searchtags": "Meklēt tagus",
+ "core.tag.showingfirsttags": "Rāda {{$a}} populārākos tagus",
"core.tag.tag": "Tags",
+ "core.tag.tagarea_course": "Kursi",
+ "core.tag.tagarea_course_modules": "Aktivitātes un resursi",
+ "core.tag.tagarea_post": "Blogu ieraksti",
+ "core.tag.tagarea_user": "Lietotāju intereses",
"core.tag.tags": "Tagi",
"core.teachers": "Pasniedzēji",
"core.thereisdatatosync": "Sinhronizācijai ir bezsaistē {{$a}}.",
diff --git a/src/assets/lang/mr.json b/src/assets/lang/mr.json
index 019783b95..d08d61275 100644
--- a/src/assets/lang/mr.json
+++ b/src/assets/lang/mr.json
@@ -654,7 +654,6 @@
"core.choose": "निवडा",
"core.clearsearch": "शोध साफ करा",
"core.clicktoseefull": "संपूर्ण सामग्री पाहण्यासाठी क्लिक करा.",
- "core.commentsnotworking": "टिप्पण्या पुनर्प्राप्त करणे शक्य नाही",
"core.confirmcanceledit": "आपली खात्री आहे की आपण हे पृष्ठ सोडू इच्छिता? सर्व बदल गमावले जातील.",
"core.confirmloss": "तुम्हाला खात्री आहे? सर्व बदल गमावले जातील.",
"core.confirmopeninbrowser": "आपण ते ब्राउझरमध्ये उघडू इच्छिता?",
@@ -814,7 +813,6 @@
"core.login.authenticating": "प्रमाणीकरण करीत आहे",
"core.login.cancel": "रद्द करा",
"core.login.changepassword": "पासवर्ड बदला",
- "core.login.checksiteversion": "आपली साइट Moodle 2.4 किंवा नंतर वापरते हे तपासा.",
"core.login.confirmdeletesite": "Are you sure you want to delete the site {{sitename}}?",
"core.login.connect": "कनेक्ट व्हा!",
"core.login.connecttomoodle": "मूडलला जोडणी करा",
@@ -825,14 +823,12 @@
"core.login.credentialsdescription": "कृपया लॉग इन करण्यासाठी आपले वापरकर्तानाव आणि संकेतशब्द प्रदान करा.",
"core.login.emailconfirmsent": "
आपल्या पत्त्यावर ईमेल {{$a}} b> p> p>
येथे पाठवला गेला पाहीजे कारण त्यात आपली नोंदणी पूर्ण करण्यासाठी सुलभ सूचना आहेत. P>
जर आपल्याला समस्या येणे चालूच राहते, साइट प्रशासकाशी संपर्क साधा. P>",
"core.login.emailnotmatch": "ईमेल जुळत नाहीत",
- "core.login.enterthewordsabove": "वरील शब्द द्या.",
"core.login.erroraccesscontrolalloworigin": "आपण पार करण्याचा प्रयत्न करत असलेला क्रॉस-ओरिजिन कॉल नाकारला गेला आहे. कृपया https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium तपासा",
"core.login.errordeletesite": "ही साइट हटविताना त्रुटी आली. कृपया पुन्हा प्रयत्न करा.",
"core.login.errorupdatesite": "साइटचे टोकन अद्यतनित करताना एक त्रुटी आली.",
"core.login.firsttime": "तुम्ही इथे पहील्यांदा आहात का?",
"core.login.forcepasswordchangenotice": "पुढे जाण्यासाठी तुम्ही तुमचा पासवर्ड बदलला पाहीजे",
"core.login.forgotten": "युजरनेम किंवा पासवर्ड विसरला आहात?",
- "core.login.getanothercaptcha": "दुसरे CAPTCHA मिळवा.",
"core.login.help": "मदत",
"core.login.helpmelogin": "
जगभरातील हजारो मूडल साइट्स आहेत. हा अॅप केवळ मूडल साइटशी कनेक्ट करु शकतो ज्याने विशेषतः मोबाईल अॅप्स प्रवेश सक्षम केला आहे. P>
आपण आपल्या मूडल साइटशी कनेक्ट करू शकत नसल्यास आपण जिथे कनेक्ट करू इच्छिता त्या स्थानावर मूडल प्रशासकाशी संपर्क साधण्याची आणि http://docs.moodle.org/en/Mobile_app
वाचण्यासाठी त्यांना विचारा साइट पत्ता फील्डमध्ये मूडलच्या डेमो साइट प्रकार teacher i> किंवा student i> मध्ये site address कनेक्ट बटण क्लिक करा . P>",
"core.login.instructions": "सूचना",
@@ -1033,6 +1029,7 @@
"core.submit": "सबमीट",
"core.success": "यश",
"core.tablet": "टॅब्लेट",
+ "core.tag.searchtags": "टॅग शोधा",
"core.tag.tag": "टॅग",
"core.tag.tags": "टॅगस",
"core.teachers": "शिक्षक",
diff --git a/src/assets/lang/nl.json b/src/assets/lang/nl.json
index db758f20f..61fdcf152 100644
--- a/src/assets/lang/nl.json
+++ b/src/assets/lang/nl.json
@@ -1353,7 +1353,6 @@
"core.comments.savecomment": "Bewaar notitie",
"core.comments.warningcommentsnotsent": "Kan reacties niet synchroniseren. {{error}}",
"core.commentscount": "Opmerkingen ({{$a}})",
- "core.commentsnotworking": "Opmerkingen konden niet opgehaald worden",
"core.completion-alt-auto-fail": "Voltooid: {{$a}} (bereikte het cijfer voor geslaagd niet)",
"core.completion-alt-auto-n": "Niet voltooid: {{$a}}",
"core.completion-alt-auto-n-override": "Niet voltooid: {{$a.modname}} (ingesteld door {{$a.overrideuser}})",
@@ -1671,7 +1670,6 @@
"core.login.changepasswordinstructions": "Je kunt je wachtwoord niet wijzigen in de app. Klik op onderstaande knop om de site te openen in een browser om je wachtwoord te wijzigen. Sluit je browser na het wijzigen van je wachtwoord, want je zult niet automatisch terug naar de app gestuurd worden.",
"core.login.changepasswordlogoutinstructions": "Als je naar een andere site wil of wil afmelden, klik dan volgende knop:",
"core.login.changepasswordreconnectinstructions": "Klik op volgende knop om opnieuw te verbinden met de site. (Je zult terug naar het vorige scherm gebracht worden als je je wachtwoord fout ingeeft.)",
- "core.login.checksiteversion": "Controleer of je site minstens Moodle 2.4 of nieuwe gebruikt.",
"core.login.confirmdeletesite": "Weet je zeker dat je de site {{sitename}} wil verwijderen?",
"core.login.connect": "Verbinden!",
"core.login.connecttomoodle": "Verbinden met Moodle",
@@ -1686,7 +1684,6 @@
"core.login.emailconfirmsentnoemail": "
Er zou een e-mail naar jouw adres verstuurd moeten zijn.
Die bevat makkelijke instructies om je registratie te voltooien.
Als je blijft problemen ondervinden, neem dan contact op met je site-beheerder.
",
"core.login.emailconfirmsentsuccess": "Bevestigingsmail is verstuurd",
"core.login.emailnotmatch": "E-mailadressen komen niet overeen",
- "core.login.enterthewordsabove": "Vul hier bovenstaande woorden in",
"core.login.erroraccesscontrolalloworigin": "De Cross-Origin call die je probeerde uit te voeren, werd geweigerd. Controleer https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Er is een fout opgetreden bij het verwijderen van deze site. Probeer opnieuw.",
"core.login.errorupdatesite": "Er is een fout opgetreden bij het updaten van het token van deze site.",
@@ -1694,7 +1691,6 @@
"core.login.firsttime": "Is dit de eerste keer dat je hier bent?",
"core.login.forcepasswordchangenotice": "Je moet je wachtwoord wijzigen om verder te kunnen gaan",
"core.login.forgotten": "Ben je je gebruikersnaam of wachtwoord vergeten?",
- "core.login.getanothercaptcha": "Vraag een andere CAPTCHA",
"core.login.help": "Help",
"core.login.helpmelogin": "
Deze app kan alleen verbinding maken met Moodle sites die mobiele toegang ingeschakeld hebben.
Als je niet kunt verbinden met je Moodle-site, neem dan contact op met je site-beheerder en vraag hem om http://docs.moodle.org/en/Mobile_app te lezen.
Om de app in een Moodle demo site te testen, kun je teacher of student in het Site-adres-veld typen en op de verbind-knop klikken.
e",
"core.login.instructions": "Instructies",
@@ -1707,9 +1703,6 @@
"core.login.invalidurl": "Ongeldige URL opgegeven",
"core.login.invalidvaluemax": "De maximum waarde is {{$a}}",
"core.login.invalidvaluemin": "De minimum waard eis {{$a}}",
- "core.login.legacymoodleversion": "Je probeert verbinding te maken met een niet-ondersteunde Moodle-versie. Download de Moodle Classic-app om verbinding te maken met deze site.",
- "core.login.legacymoodleversiondesktop": "Je probeert verbinding te maken met {{$a}}.
Deze site gebruikt een oude, niet-ondersteunde Moodle-versie die niet werkt met deze Moodle Desktop App.
Als dit jouw site is, neem dan contact op met een lokale Moodle-partner om hulp te krijgen bij het upgraden van de site.
Zie de contactpagina om een aanvraag te sturen of om hulp te vragen.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Als alternatief kun je nog steeds toegang krijgen tot de site door het gebruiken van een niet meer ondersteunde versie van de app die je kunt downloaden vanaf hier.",
"core.login.localmobileunexpectedresponse": "Moodle Mobile Additional Features Check gaf een onverwacht antwoord. Je zult aanmelden via de standaard Mobile service.",
"core.login.loggedoutssodescription": "Je moet opnieuw aanmelden. Je moet aanmelden met een browservenster.",
"core.login.login": "Login",
@@ -2000,8 +1993,18 @@
"core.submit": "Insturen",
"core.success": "Succes",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Standaard collectie",
"core.tag.errorareanotsupported": "Dit taggebied wordt niet ondersteund door de app.",
+ "core.tag.inalltagcoll": "Overal",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} getagged met \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Geen tags die overeenkomen met \"{{$a}}\" gevonden",
+ "core.tag.searchtags": "Zoek tags",
+ "core.tag.showingfirsttags": "Toon {{$a}} populairste tags",
"core.tag.tag": "Tag",
+ "core.tag.tagarea_course": "Cursussen",
+ "core.tag.tagarea_course_modules": "Activiteiten en bronnen",
+ "core.tag.tagarea_post": "Blogberichten",
+ "core.tag.tagarea_user": "Gebruikersinteresses",
"core.tag.tags": "Tags",
"core.tag.warningareasnotsupported": "Sommige taggebieden worden niet weergegeven omdat ze niet worden ondersteund door de app.",
"core.teachers": "leraren",
diff --git a/src/assets/lang/no.json b/src/assets/lang/no.json
index 2cff7bb38..29eef28b3 100644
--- a/src/assets/lang/no.json
+++ b/src/assets/lang/no.json
@@ -1421,11 +1421,9 @@
"core.login.createuserandpass": "Lag et brukernavn og passord for innlogging",
"core.login.emailconfirmsent": "
En e-post er nå sendt til adressen {{$a}}
\n
Den inneholder informasjon om hvordan du fullfører registreringen.
\nOBS! Bekreft via URL straks du har fått e-posten. Går det for lang tid vil bekreftelsesprosessen bli automatisk annulert og du må begynne på nytt.\n
Hvis du fortsatt har problemer, vennligst ta kontakt med administrator for portalen.
",
"core.login.emailconfirmsentsuccess": "Vellykket sending av bekreftelsesepost",
- "core.login.enterthewordsabove": "Skriv inn ordene over",
"core.login.firsttime": "Er det første gang du er her?",
"core.login.forcepasswordchangenotice": "Du må endre passordet for å fortsette",
"core.login.forgotten": "Har du glemt brukernavn eller passord?",
- "core.login.getanothercaptcha": "Få en CAPTCHA til",
"core.login.help": "Hjelp",
"core.login.instructions": "Instruksjoner",
"core.login.invaliddate": "Ugyldig dato",
@@ -1603,7 +1601,17 @@
"core.strftimetime24": "%H:%M",
"core.submit": "Send",
"core.success": "Vellykket",
+ "core.tag.defautltagcoll": "Standardsamling",
+ "core.tag.inalltagcoll": "Over alt",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} tagget med \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Fant ingen tagger som lignet på \"{{$a}}\"",
+ "core.tag.searchtags": "Søk i tagger",
+ "core.tag.showingfirsttags": "Viser {{$a}} mest populære tagger",
"core.tag.tag": "Tagg",
+ "core.tag.tagarea_course": "Kurs",
+ "core.tag.tagarea_course_modules": "Aktiviteter og ressurser",
+ "core.tag.tagarea_post": "Blogginnlegg",
+ "core.tag.tagarea_user": "Interesser",
"core.tag.tags": "Tagger",
"core.teachers": "Lærere",
"core.thisdirection": "ltr",
diff --git a/src/assets/lang/pl.json b/src/assets/lang/pl.json
index 7eafaf385..4eb905090 100644
--- a/src/assets/lang/pl.json
+++ b/src/assets/lang/pl.json
@@ -1321,11 +1321,9 @@
"core.login.createuserandpass": "Wybierz nazwę użytkownika oraz hasło, które będą używane do logowania",
"core.login.emailconfirmsent": "
Został do Ciebie wysłany e-mail pod adres {{$a}}.
Zawiera on prostą instrukcję, jak dokończyć rejestrację.
Jeżeli nadal będziesz mieć kłopoty, skontaktuj się z administratorem serwisu.
",
"core.login.emailconfirmsentsuccess": "E-mail z potwierdzeniem został pomyślnie wysłany",
- "core.login.enterthewordsabove": "Wpisz słowa powyżej",
"core.login.firsttime": "Czy jesteś w tym serwisie po raz pierwszy?",
"core.login.forcepasswordchangenotice": "W celu kontynuacji musisz zmienić swoje hasło",
"core.login.forgotten": "Zapomniałeś(aś) nazwy użytkownika lub hasła?",
- "core.login.getanothercaptcha": "Wygeneruj inne CAPTCHA",
"core.login.help": "Pomoc",
"core.login.instructions": "Instrukcje",
"core.login.invaliddate": "Nieprawidłowa data",
@@ -1541,7 +1539,14 @@
"core.strftimetime": "%H:%M %p",
"core.submit": "Prześlij",
"core.success": "Gotowe",
+ "core.tag.defautltagcoll": "Domyślna kolekcja",
+ "core.tag.inalltagcoll": "Wszędzie",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} otagowano \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Nie znaleziono pasujących tagów \"{{$a}}\"",
+ "core.tag.searchtags": "Szukaj tagów",
+ "core.tag.showingfirsttags": "Wyświetl {{$a}} najpopularniejszych tagów",
"core.tag.tag": "Tag",
+ "core.tag.tagarea_course": "Kursy",
"core.tag.tags": "Tagi",
"core.teachers": "Prowadzący",
"core.thisdirection": "ltr",
diff --git a/src/assets/lang/pt-br.json b/src/assets/lang/pt-br.json
index 4b48684c4..90338a819 100644
--- a/src/assets/lang/pt-br.json
+++ b/src/assets/lang/pt-br.json
@@ -1319,7 +1319,6 @@
"core.comments.nocomments": "Nenhum comentário",
"core.comments.savecomment": "Salvar comentário",
"core.commentscount": "Comentários ({{$a}})",
- "core.commentsnotworking": "Os comentários não podem ser recuperados",
"core.completion-alt-auto-fail": "Concluído: {{$a}} (não obteve nota para aprovação)",
"core.completion-alt-auto-n": "Não concluído(s): {{$a}}",
"core.completion-alt-auto-n-override": "Não concluído: {{$a.modname}} (por {{$a.overrideuser}})",
@@ -1627,7 +1626,6 @@
"core.login.authenticating": "Autenticação",
"core.login.cancel": "Cancelar",
"core.login.changepassword": "Mudar a senha",
- "core.login.checksiteversion": "Verifique se seu site usa Moodle 2.4 ou superior.",
"core.login.confirmdeletesite": "Você tem certeza que quer excluir o site {{sitename}}?",
"core.login.connect": "Conectar!",
"core.login.connecttomoodle": "Conectar ao moodle",
@@ -1640,7 +1638,6 @@
"core.login.emailconfirmsentnoemail": "
Um e-mail deve ter sido enviado para o seu endereço.
Ele contém instruções simplificadas para concluir seu registro.
Se você continuar com dificuldades, entre em contato com o administrador do site.
",
"core.login.emailconfirmsentsuccess": "E-mail de confirmação enviado com sucesso",
"core.login.emailnotmatch": "Os e-mail não coincidem",
- "core.login.enterthewordsabove": "Digite as palavras acima",
"core.login.erroraccesscontrolalloworigin": "A chamada de Cross-Origin que você está tentando executar foi rejeitada. Por favor, verifique https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Um erro ocorreu ao excluir esse site. Por favor tente novamente.",
"core.login.errorupdatesite": "Um erro ocorreu quando atualizava o token do site.",
@@ -1648,7 +1645,6 @@
"core.login.firsttime": "Esta é a sua primeira vez aqui?",
"core.login.forcepasswordchangenotice": "Você tem que mudar a senha antes de continuar",
"core.login.forgotten": "Esqueceu o seu usuário ou senha?",
- "core.login.getanothercaptcha": "Mudar imagem",
"core.login.help": "Ajuda",
"core.login.helpmelogin": "
Existem milhares de sites Moodle em todo o mundo. Este aplicativo pode se conectar somente a sites Moodle que habilitaram o acesso para dispositivos móveis.
Se você não conseguir se conectar ao seu site Moodle, entre em contato com o administrador do site e peça a ele para ler http://docs.moodle.org/en/Mobile_app
Para testar o aplicativo em um site de demonstração do Moodle digite teacher ou student no campoEndereço do site e clique no botão Conectar.
",
"core.login.instructions": "Instruções",
@@ -1661,9 +1657,6 @@
"core.login.invalidurl": "URL inválida especificada",
"core.login.invalidvaluemax": "O valor máximo é {{$a}}",
"core.login.invalidvaluemin": "O valor minimo é{{$a}}",
- "core.login.legacymoodleversion": "Você está tentando se conectar a uma versão do Moodle sem suporte. Por favor, baixe o aplicativo Moodle Classic para acessar este site Moodle.",
- "core.login.legacymoodleversiondesktop": "Você está tentando se conectar a {{$a}} b>.
Este site está executando uma versão desatualizada do Moodle, que não funciona com este aplicativo Moodle Desktop. Se este for seu site, entre em contato com seu moodle partner para obter suporte para atualizá-lo.
Veja nossa página de contato para enviar uma solicitação de assistência.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Como alternativa, você ainda pode acessar este site utilizando uma versão sem suporte do aplicativo que pode ser baixada aqui.",
"core.login.localmobileunexpectedresponse": "Verificação do Moodle Mobile Additional Features retornou uma resposta inesperada, você ira se autenticar usando o serviço Mobile padrão",
"core.login.loggedoutssodescription": "Você tem que autenticar novamente. Você precisa fazer login no site em uma janela do navegador.",
"core.login.login": "Acessar",
@@ -1943,7 +1936,17 @@
"core.submit": "Enviar",
"core.success": "Sucesso",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Coleção padrão",
+ "core.tag.inalltagcoll": "Em toda parte",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} marcada com \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Nenhuma tag correspondente a \"{{$a}}\" encontrado",
+ "core.tag.searchtags": "Pesquisar tags",
+ "core.tag.showingfirsttags": "Exibindo {{$a}} tags mais populares",
"core.tag.tag": "Tag",
+ "core.tag.tagarea_course": "Cursos",
+ "core.tag.tagarea_course_modules": "Atividades e recursos",
+ "core.tag.tagarea_post": "Postagens de blog",
+ "core.tag.tagarea_user": "Interesses do usuário",
"core.tag.tags": "Tags",
"core.teachers": "Professores",
"core.thereisdatatosync": "Existem {{$a}} offline para ser sincronizados.",
diff --git a/src/assets/lang/pt.json b/src/assets/lang/pt.json
index b7200312d..a193bd4c4 100644
--- a/src/assets/lang/pt.json
+++ b/src/assets/lang/pt.json
@@ -1351,7 +1351,6 @@
"core.comments.savecomment": "Guardar comentário",
"core.comments.warningcommentsnotsent": "Não foi possível sincronizar os comentários. {{error}}",
"core.commentscount": "Comentários ({{$a}})",
- "core.commentsnotworking": "Não foi possível recuperar os comentários",
"core.completion-alt-auto-fail": "Concluída: {{$a}} (não atingiu nota de aprovação)",
"core.completion-alt-auto-n": "Não concluída: {{$a}}",
"core.completion-alt-auto-n-override": "Não concluída: {{$a.modname}} (marcada por {{$a.overrideuser}})",
@@ -1663,7 +1662,6 @@
"core.login.authenticating": "Autenticação",
"core.login.cancel": "Cancelar",
"core.login.changepassword": "Modificar senha",
- "core.login.checksiteversion": "Verifique se o seu site Moodle está na versão 2.4 ou posterior.",
"core.login.confirmdeletesite": "Tem a certeza que pretende remover o site {{sitename}}?",
"core.login.connect": "Ligar",
"core.login.connecttomoodle": "Ligação ao Moodle",
@@ -1678,7 +1676,6 @@
"core.login.emailconfirmsentnoemail": "
Foi enviado um e-mail para o seu endereço.
Contém instruções fáceis para concluir o seu registo.
Se continuar com dificuldades, entre em contacto com o administrador do site.
",
"core.login.emailconfirmsentsuccess": "E-mail de confirmação enviado com sucesso",
"core.login.emailnotmatch": "Os e-mails não coincidem",
- "core.login.enterthewordsabove": "Insira as palavras indicadas acima",
"core.login.erroraccesscontrolalloworigin": "A acção de Cross-Origin que tentou executar foi rejeitada. Por favor, consulte mais informações em https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Ocorreu um erro ao apagar este site. Por favor, tente novamente.",
"core.login.errorupdatesite": "Ocorreu um erro enquanto atualizava o token do site.",
@@ -1686,7 +1683,6 @@
"core.login.firsttime": "É a sua primeira visita aqui?",
"core.login.forcepasswordchangenotice": "Tem de alterar a sua senha para poder continuar.",
"core.login.forgotten": "Esqueceu-se do seu nome de utilizador ou da senha?",
- "core.login.getanothercaptcha": "Gerar outro CAPTCHA",
"core.login.help": "Ajuda",
"core.login.helpmelogin": "
Existem muitos milhares de sites Moodle em todo o mundo. Esta aplicação só pode ligar-se a sites Moodle que ativaram especificamente o acesso a aplicações para dispositivos móveis.
Se não conseguir ligar-se ao seu site Moodle, entre em contacto com o administrador do site e peça-lhe para consultar http://docs.moodle.org/en/Mobile_app.
Para testar a aplicação num site de demonstração do Moodle digite professor ou aluno no campo Endereço do site e depois clique no botão Ligar.
",
"core.login.instructions": "Instruções",
@@ -1699,9 +1695,6 @@
"core.login.invalidurl": "O URL é inválido",
"core.login.invalidvaluemax": "O valor máximo é {{$a}}",
"core.login.invalidvaluemin": "O valor mínimo é {{$a}}",
- "core.login.legacymoodleversion": "Está a tentar ligar-se a uma versão do Moodle não suportada. Por favor, descarregue a aplicação clássica do Moodle para aceder a este site Moodle.",
- "core.login.legacymoodleversiondesktop": "Está a tentar ligar-se a {{$ a}}.
O site está a usar uma versão desatualizada do Moodle que não funcionará com esta aplicação Moodle.
Se for o seu site, entre em contacto com o seu parceiro Moodle local para obter assistência e atualizá-lo. br>Consulte a nossa página de contacto para enviar um pedido de assistência.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Como alternativa, pode aceder a este site usando uma versão não suportada da aplicação que pode ser descarregada aqui.",
"core.login.localmobileunexpectedresponse": "Ocorreu um erro inesperado na verificação de Moodle Mobile Additional Features. Será autenticado através do serviço Mobile padrão.",
"core.login.loggedoutssodescription": "Tem de autenticar-se novamente. A autenticação no site tem de ser numa janela do navegador.",
"core.login.login": "Entrar",
@@ -1986,8 +1979,18 @@
"core.submit": "Submeter",
"core.success": "Operação realizada com sucesso",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Coleção predefinida",
"core.tag.errorareanotsupported": "Esta área de palavras-chave não é suportada pela aplicação.",
+ "core.tag.inalltagcoll": "Em qualquer local",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} com a palavra-chave \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Não foi encontrada a palavra-chave \"{{$a}}\"",
+ "core.tag.searchtags": "Procurar palavras-chave",
+ "core.tag.showingfirsttags": "A mostrar as {{$a}} palavras-chave mais populares",
"core.tag.tag": "Palavra-chave",
+ "core.tag.tagarea_course": "Disciplinas",
+ "core.tag.tagarea_course_modules": "Atividades e recursos",
+ "core.tag.tagarea_post": "Entradas de blogue",
+ "core.tag.tagarea_user": "Interesses do utilizador",
"core.tag.tags": "Palavras-chave",
"core.tag.warningareasnotsupported": "Algumas das áreas de palavras-chave não são mostraas porque não são suportadas pela aplicação.",
"core.teachers": "Professores",
diff --git a/src/assets/lang/ro.json b/src/assets/lang/ro.json
index 49ae78aac..ab8630b68 100644
--- a/src/assets/lang/ro.json
+++ b/src/assets/lang/ro.json
@@ -1143,14 +1143,12 @@
"core.login.credentialsdescription": "Va rugăm să introduceți userul și parola dumneavoastră pentru a vă conecta",
"core.login.emailconfirmsent": "
Un email a fost trimis la adresa Dvs. {{$a}}
\n
Acest mesaj conţine instrucţiuni despre finalizarea înregistrării.
\n
În cazul în care întâmpinaţi dificultăţi contactaţi administratorul site-ului.
",
"core.login.emailconfirmsentsuccess": "S-a trimis mail-ul de confirmare",
- "core.login.enterthewordsabove": "Introduceţi cuvintele de mai sus",
"core.login.erroraccesscontrolalloworigin": "Operațiune Cross-Origin pe care încercați să o efectuați a fost respinsă. Verificați la https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "A apărut o eroare în timpul ștergerii acestui site. Încercați din nou!",
"core.login.errorupdatesite": "A apărut o eroare în timpul actualizării tokenului pentru acest site.",
"core.login.firsttime": "Este prima oară când accesaţi această pagină?",
"core.login.forcepasswordchangenotice": "Trebui să vă schimbaţi parola pentru a putea continua.",
"core.login.forgotten": "Aţi uitat numele de utilizator sau parola?",
- "core.login.getanothercaptcha": "Obţineţi un alt CAPTCHA",
"core.login.help": "Ajutor",
"core.login.helpmelogin": "
Există mii de siteuri Moodle în întreaga lume. Această aplicație vă poate conecta doar la acele siteuri ce oferă accesul pentru aplicațiile mobile.
Dacă nu vă puteți conecta la siteul Moodle va trebui să contactați un administrator al acelui site și să îi indicați să citească http://docs.moodle.org/en/Mobile_app
Pentru a testa aplicația pe un site Moodle demonstrativ introduceți teacher sau student în câmpurile din siteul URL site și apăsați butonul Adaugă.
",
"core.login.instructions": "Instrucţiuni",
@@ -1390,7 +1388,15 @@
"core.submit": "Trimite",
"core.success": "Succes",
"core.tablet": "Tabletă",
+ "core.tag.defautltagcoll": "Colecție implicită",
+ "core.tag.inalltagcoll": "Peste tot",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} etichetat cu \"{{$a.tag}}\"",
+ "core.tag.searchtags": "Caută etichete",
+ "core.tag.showingfirsttags": "Se afișează cele mai populare {{$a}} etichete",
"core.tag.tag": "Etichetă",
+ "core.tag.tagarea_course": "Cursuri",
+ "core.tag.tagarea_course_modules": "Activități și resurse",
+ "core.tag.tagarea_post": "Postări pe blog",
"core.tag.tags": "Etichete",
"core.teachers": "Profesori",
"core.thisdirection": "ltr",
diff --git a/src/assets/lang/ru.json b/src/assets/lang/ru.json
index 9b99f3565..31cbccb0b 100644
--- a/src/assets/lang/ru.json
+++ b/src/assets/lang/ru.json
@@ -1280,7 +1280,6 @@
"core.comments.nocomments": "Нет комментариев",
"core.comments.savecomment": "Сохранить комментарий",
"core.commentscount": "Комментарии ({{$a}})",
- "core.commentsnotworking": "Комментарии не могут быть найдены",
"core.completion-alt-auto-fail": "Выполнено: {{$a}} (оценка ниже проходного балла)",
"core.completion-alt-auto-n": "Не выполнено: {{$a}}",
"core.completion-alt-auto-n-override": "Не выполнено: {{$a.modname}} (отметил(а) {{$a.overrideuser}})",
@@ -1484,7 +1483,6 @@
"core.login.authenticating": "Аутентификация",
"core.login.cancel": "Отмена",
"core.login.changepassword": "Изменить пароль",
- "core.login.checksiteversion": "Убедитесь, что ваш сайт использует Moodle 2.4 или более позднюю версию.",
"core.login.confirmdeletesite": "Вы уверены, что хотите удалить сайт {{sitename}}?",
"core.login.connect": "Подключено!",
"core.login.connecttomoodle": "Подключение к Moodle",
@@ -1496,14 +1494,12 @@
"core.login.emailconfirmsent": "На указанный Вами адрес электронной почты ({{$a}}) было отправлено письмо с простыми инструкциями для завершения регистрации.\n Если у вас появятся проблемы с регистрацией, свяжитесь с администратором сайта.",
"core.login.emailconfirmsentsuccess": "Письмо подтверждения отправлено успешно",
"core.login.emailnotmatch": "Адреса электронной почты не совпадают",
- "core.login.enterthewordsabove": "Напишите слова, которые Вы видите выше",
"core.login.erroraccesscontrolalloworigin": "Запрос «Cross-Origin», который вы пытаетесь выполнить, отклонён. Пожалуйста, проверьте https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "При удалении этой страницы произошла ошибка. Пожалуйста, попробуйте еще раз.",
"core.login.errorupdatesite": "При обновлении ключа сайта произошла ошибка.",
"core.login.firsttime": "Вы в первый раз на нашем сайте?",
"core.login.forcepasswordchangenotice": "Вы должны изменить свой пароль.",
"core.login.forgotten": "Забыли логин или пароль?",
- "core.login.getanothercaptcha": "Получить другой CAPTCHA (тест для различения людей и компьютеров)",
"core.login.help": "Справка",
"core.login.helpmelogin": "
Во всем мире есть тысячи сайтов Moodle. Это приложение может подключаться только к тем сайтам Moodle, на которых явно разрешен доступ мобильному приложению.
Если Вы не можете подключиться к вашему сайту Moodle, то необходимо связаться с администратором вашего сайта и попросить его прочитать http://docs.moodle.org/en/Mobile_app
Чтобы проверить приложение на демонстрационном сайте Moodle, введите teacher или student в поле Адрес сайта и нажмите Кнопку подключения.
",
"core.login.instructions": "Инструкции",
@@ -1783,7 +1779,17 @@
"core.submit": "Отправить",
"core.success": "Успешно",
"core.tablet": "Планшет",
+ "core.tag.defautltagcoll": "Коллекция по умолчанию",
+ "core.tag.inalltagcoll": "Везде",
+ "core.tag.itemstaggedwith": "Область «{{$a.tagarea}}» помечена тегом «{{$a.tag}}»",
+ "core.tag.notagsfound": "Не найдено тегов, совпадающих с «{{$a}}»",
+ "core.tag.searchtags": "Поиск тегов",
+ "core.tag.showingfirsttags": "Показать {{$a}} наиболее популярных тегов",
"core.tag.tag": "Тег",
+ "core.tag.tagarea_course": "Курсы",
+ "core.tag.tagarea_course_modules": "Элементы и ресурсы",
+ "core.tag.tagarea_post": "Записи блогов",
+ "core.tag.tagarea_user": "Интересы пользователей",
"core.tag.tags": "Теги",
"core.teachers": "Преподаватели",
"core.thereisdatatosync": "Есть {{$a}} для синхронизации, созданные вне сети.",
diff --git a/src/assets/lang/sr-cr.json b/src/assets/lang/sr-cr.json
index 3c7a9893e..9aaf5acb2 100644
--- a/src/assets/lang/sr-cr.json
+++ b/src/assets/lang/sr-cr.json
@@ -1328,7 +1328,6 @@
"core.comments.nocomments": "Нема коментара",
"core.comments.savecomment": "Сачувај коментар",
"core.commentscount": "Коментари ({{$a}})",
- "core.commentsnotworking": "Коментари не могу да буду преузети",
"core.completion-alt-auto-fail": "Завршено: {{$a}} (није постигао/ла прелазну оцену)",
"core.completion-alt-auto-n": "Није завршено: {{$a}}",
"core.completion-alt-auto-n-override": "Није завршено: {{$a.modname}} (подесио/ла {{$a.overrideuser}})",
@@ -1541,7 +1540,6 @@
"core.login.authenticating": "Провера идентитета",
"core.login.cancel": "Одустани",
"core.login.changepassword": "Промени лозинку",
- "core.login.checksiteversion": "Проверите да ли ваш сајт користи Moodle 2.4 или новију верзију.",
"core.login.confirmdeletesite": "Да ли сте сигурни да желите да обришете сајт {{sitename}}?",
"core.login.connect": "Повежите се!",
"core.login.connecttomoodle": "Повежите се са Moodleom",
@@ -1554,7 +1552,6 @@
"core.login.emailconfirmsentnoemail": "
Требало би да је послата е-порука на вашу адресу.
Порука садржи једноставна упутства о даљем поступку регистрације.
Ако и даље имате проблема, контактирајте администратора.
",
"core.login.emailconfirmsentsuccess": "Е-порука за потврду успешно је послата",
"core.login.emailnotmatch": "Адресе е-поште се не поклапају",
- "core.login.enterthewordsabove": "Унесите реч изнад",
"core.login.erroraccesscontrolalloworigin": "Cross-Origin позив који покушавате да изведете је одбијен. Молимо, проверите https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Дошло је до грешке приликом брисања овог сајта. Молим, покушајте поново.",
"core.login.errorupdatesite": "Дошло је до грешке приликом ажурирању токена сајта.",
@@ -1562,7 +1559,6 @@
"core.login.firsttime": "Да ли сте овде први пут?",
"core.login.forcepasswordchangenotice": "Морате променити своју лозинку да бисте наставили",
"core.login.forgotten": "Заборавили сте своје корисничко име или лозинку?",
- "core.login.getanothercaptcha": "Преузмите други CAPTCHА",
"core.login.help": "Помоћ",
"core.login.helpmelogin": "
Постоји више хиљада Moodle сајтова широм света. Ова апликација може да се повеже само са Moodle сајтовима који су експлицитно омогућили приступ мобилној апликацији.
Ако не можете да се повежете са Moodle сајтом, контактирајте администратора вашег сајта и затражите да прочита http://docs.moodle.org/en/Mobile_app
Да бисте тестирали апликацију на Moodle демо сајту упишите teacher или student у поље Адреса сајта и кликните дугме Повежите се!.
",
"core.login.instructions": "Упутства",
@@ -1575,9 +1571,6 @@
"core.login.invalidurl": "Наведена је неисправна URL адреса",
"core.login.invalidvaluemax": "Максимална вредност је {{$a}}",
"core.login.invalidvaluemin": "Минимална вредност је {{$a}}",
- "core.login.legacymoodleversion": "Покушавате да се повежете са неподржаном Moodle верзијом. Молимо, преузмите Moodle Classic апликацију да бисте приступили овом Moodle сајту.",
- "core.login.legacymoodleversiondesktop": "Покушавате да се повежете са сајтом{{$a}}.
Овај сајт користи застарелу неподржану верзију Moodlea која неће радити са овом Moodle Desktop апликацијом.
Ако је ово ваш сајт, обратите се локалном Moodle партнеру да вам помогне да га ажурирате.
Погледајте нашу страницу за контакт како бисте послали захтев за помоћ.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Алтернативно, и даље можете приступити овом сајту помоћу неподржане верзије апликације коју можете преузети овде.",
"core.login.localmobileunexpectedresponse": "Провера Moodle Mobile додатних функционалности вратила је неочекиван одговор. Ваш идентитет биће проверен помоћу стандардног мобилнog сервиса.",
"core.login.loggedoutssodescription": "Морате поново да потврдите свој идентитет. Потребно је да се пријавите на сајт у прозору веб читача.",
"core.login.login": "Пријава",
@@ -1855,7 +1848,17 @@
"core.submit": "Проследи",
"core.success": "Успешно",
"core.tablet": "Таблет",
+ "core.tag.defautltagcoll": "Подразумевана колекција",
+ "core.tag.inalltagcoll": "Свугде",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} означена са \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Нису пронађене ознаке које се поклапају са \"{{$a}}\"",
+ "core.tag.searchtags": "Претражи ознаке",
+ "core.tag.showingfirsttags": "Број најпопуларнијих ознака које се приказују: {{$a}}",
"core.tag.tag": "Ознака",
+ "core.tag.tagarea_course": "Курсеви",
+ "core.tag.tagarea_course_modules": "Активности и ресурси",
+ "core.tag.tagarea_post": "Објаве на блогу",
+ "core.tag.tagarea_user": "Корисничка интересовања",
"core.tag.tags": "Ознаке",
"core.teachers": "Предавачи",
"core.thereisdatatosync": "Број офлајн податак које треба синхронизовати: {{$a}}",
diff --git a/src/assets/lang/sr-lt.json b/src/assets/lang/sr-lt.json
index 75b37e347..6f08390ab 100644
--- a/src/assets/lang/sr-lt.json
+++ b/src/assets/lang/sr-lt.json
@@ -1328,7 +1328,6 @@
"core.comments.nocomments": "Nema komentara",
"core.comments.savecomment": "Sačuvaj komentar",
"core.commentscount": "Komentari ({{$a}})",
- "core.commentsnotworking": "Komentari ne mogu da budu preuzeti",
"core.completion-alt-auto-fail": "Završeno: {{$a}} (nije postigao/la prelaznu ocenu)",
"core.completion-alt-auto-n": "Nije završeno: {{$a}}",
"core.completion-alt-auto-n-override": "Nije završeno: {{$a.modname}} (podesio/la {{$a.overrideuser}})",
@@ -1541,7 +1540,6 @@
"core.login.authenticating": "Provera identiteta",
"core.login.cancel": "Odustani",
"core.login.changepassword": "Promeni lozinku",
- "core.login.checksiteversion": "Proverite da li vaš sajt koristi Moodle 2.4 ili noviju verziju.",
"core.login.confirmdeletesite": "Da li ste sigurni da želite da obrišete sajt {{sitename}}?",
"core.login.connect": "Povežite se!",
"core.login.connecttomoodle": "Povežite se sa Moodleom",
@@ -1554,7 +1552,6 @@
"core.login.emailconfirmsentnoemail": "
Trebalo bi da je poslata e-poruka na vašu adresu.
Poruka sadrži jednostavna uputstva o daljem postupku registracije.
Ako i dalje imate problema, kontaktirajte administratora.
",
"core.login.emailconfirmsentsuccess": "E-poruka za potvrdu uspešno je poslata",
"core.login.emailnotmatch": "Adrese e-pošte se ne poklapaju",
- "core.login.enterthewordsabove": "Unesite reč iznad",
"core.login.erroraccesscontrolalloworigin": "Cross-Origin poziv koji pokušavate da izvedete je odbijen. Molimo, proverite https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Došlo je do greške prilikom brisanja ovog sajta. Molim, pokušajte ponovo.",
"core.login.errorupdatesite": "Došlo je do greške prilikom ažuriranju tokena sajta.",
@@ -1562,7 +1559,6 @@
"core.login.firsttime": "Da li ste ovde prvi put?",
"core.login.forcepasswordchangenotice": "Morate promeniti svoju lozinku da biste nastavili",
"core.login.forgotten": "Zaboravili ste svoje korisničko ime ili lozinku?",
- "core.login.getanothercaptcha": "Preuzmite drugi CAPTCHA",
"core.login.help": "Pomoć",
"core.login.helpmelogin": "
Postoji više hiljada Moodle sajtova širom sveta. Ova aplikacija može da se poveže samo sa Moodle sajtovima koji su eksplicitno omogućili pristup mobilnoj aplikaciji.
Ako ne možete da se povežete sa Moodle sajtom, kontaktirajte administratora vašeg sajta i zatražite da pročita http://docs.moodle.org/en/Mobile_app
Da biste testirali aplikaciju na Moodle demo sajtu upišite teacher ili student u polje Adresa sajta i kliknite dugme Povežite se!.
",
"core.login.instructions": "Uputstva",
@@ -1575,9 +1571,6 @@
"core.login.invalidurl": "Navedena je neispravna URL adresa",
"core.login.invalidvaluemax": "Maksimalna vrednost je {{$a}}",
"core.login.invalidvaluemin": "Minimalna vrednost je {{$a}}",
- "core.login.legacymoodleversion": "Pokušavate da se povežete sa nepodržanom Moodle verzijom. Molimo, preuzmite Moodle Classic aplikaciju da biste pristupili ovom Moodle sajtu.",
- "core.login.legacymoodleversiondesktop": "Pokušavate da se povežete sa sajtom{{$a}}.
Ovaj sajt koristi zastarelu nepodržanu verziju Moodlea koja neće raditi sa ovom Moodle Desktop aplikacijom.
Ako je ovo vaš sajt, obratite se lokalnom Moodle partneru da vam pomogne da ga ažurirate.
Pogledajte našu stranicu za kontakt kako biste poslali zahtev za pomoć.",
- "core.login.legacymoodleversiondesktopdownloadold": "
Alternativno, i dalje možete pristupiti ovom sajtu pomoću nepodržane verzije aplikacije koju možete preuzeti ovde.",
"core.login.localmobileunexpectedresponse": "Provera Moodle Mobile dodatnih funkcionalnosti vratila je neočekivan odgovor. Vaš identitet biće proveren pomoću standardnog mobilnog servisa.",
"core.login.loggedoutssodescription": "Morate ponovo da potvrdite svoj identitet. Potrebno je da se prijavite na sajt u prozoru veb čitača.",
"core.login.login": "Prijava",
@@ -1855,7 +1848,17 @@
"core.submit": "Prosledi",
"core.success": "Uspešno",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Podrazumevana kolekcija",
+ "core.tag.inalltagcoll": "Svugde",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} označena sa \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "Nisu pronađene oznake koje se poklapaju sa \"{{$a}}\"",
+ "core.tag.searchtags": "Pretraži oznake",
+ "core.tag.showingfirsttags": "Broj najpopularnijih oznaka koje se prikazuju: {{$a}}",
"core.tag.tag": "Oznaka",
+ "core.tag.tagarea_course": "Kursevi",
+ "core.tag.tagarea_course_modules": "Aktivnosti i resursi",
+ "core.tag.tagarea_post": "Objave na blogu",
+ "core.tag.tagarea_user": "Korisnička interesovanja",
"core.tag.tags": "Oznake",
"core.teachers": "Predavači",
"core.thereisdatatosync": "Broj oflajn podatak koje treba sinhronizovati: {{$a}}",
diff --git a/src/assets/lang/sv.json b/src/assets/lang/sv.json
index 60b7202e8..6231cfd94 100644
--- a/src/assets/lang/sv.json
+++ b/src/assets/lang/sv.json
@@ -1316,13 +1316,11 @@
"core.login.credentialsdescription": "Ange ditt användarnamn och lösenord för att logga på",
"core.login.emailconfirmsent": "
Vi har skickat ett e-postbrev som Du bör ha fått till Din adress på {{$a}}
\n
Det innehåller enkla instruktioner som hjälper Dig att fullfölja Din registrering.
\n
Om Du stöter på problem, är Du välkommen att kontakta den som ansvarar för webbplatsen.
",
"core.login.emailconfirmsentsuccess": "Bekräftelsemejlet har skickats.",
- "core.login.enterthewordsabove": "Mata in de ovanstående orden",
"core.login.errordeletesite": "Ett fel inträffade vid borttagning av denna webbsida. Var god försök igen.",
"core.login.errorupdatesite": "Ett fel inträffade vid uppdatering av webbplatsens token.",
"core.login.firsttime": "Är det första gången Du är här?",
"core.login.forcepasswordchangenotice": "Du måste använda Ditt lösenord för att kunna fortsätta.",
"core.login.forgotten": "Har Du glömt Ditt användarnamn och lösenord?",
- "core.login.getanothercaptcha": "Skaffa en CAPTCHA till",
"core.login.help": "Hjälp",
"core.login.helpmelogin": "
För att logga in måste du kontrollera att: p> 1. Moodle webbplats är version 2.4 eller högre 2. Moodle administratören har aktiverat Mobil åtkomst
Deneme yapmak için Moodle demo sitesinde ilgili alanlara öğretmen veya öğrenciiçinde Site URL seçeneklerini girin ve ekle butonuna tıklayın",
"core.login.instructions": "Yönergeler",
@@ -1379,7 +1377,17 @@
"core.submit": "Gönder",
"core.success": "Başarı",
"core.tablet": "Tablet",
+ "core.tag.defautltagcoll": "Varsayılan koleksiyon",
+ "core.tag.inalltagcoll": "Her yer",
+ "core.tag.itemstaggedwith": "{{$a.tagarea}} etiketlenen ile birlikte \"{{$a.tag}}\"",
+ "core.tag.notagsfound": "\"{{$a}}\" ile eşleşen etiket bulunamadı",
+ "core.tag.searchtags": "Etiketleri ara",
+ "core.tag.showingfirsttags": "En popüler etiketler {{$a}} gösteriliyor",
"core.tag.tag": "Etiket",
+ "core.tag.tagarea_course": "Dersler",
+ "core.tag.tagarea_course_modules": "Faaliyetler ve kaynaklar",
+ "core.tag.tagarea_post": "Blog girdileri",
+ "core.tag.tagarea_user": "Kullanıcı ilgi alanları",
"core.tag.tags": "Etiketler",
"core.teachers": "Eğitimciler",
"core.thisdirection": "ltr",
diff --git a/src/assets/lang/uk.json b/src/assets/lang/uk.json
index 19f21e2f4..761e07ac5 100644
--- a/src/assets/lang/uk.json
+++ b/src/assets/lang/uk.json
@@ -1145,7 +1145,6 @@
"core.comments.nocomments": "Немає коментарів",
"core.comments.savecomment": "Зберегти коментар",
"core.commentscount": "Коментарі ({{$a}})",
- "core.commentsnotworking": "Коментар не може бути відновлений",
"core.completion-alt-auto-fail": "Виконано: {{$a}} (не вдалося досягти прохідного балу)",
"core.completion-alt-auto-n": "Не виконано: {{$a}}",
"core.completion-alt-auto-pass": "Виконано: {{$a}} (перевищено прохідний бал)",
@@ -1332,7 +1331,6 @@
"core.login.authenticating": "Аутентифікація",
"core.login.cancel": "Скасувати",
"core.login.changepassword": "Змінити пароль",
- "core.login.checksiteversion": "Переконайтеся, що ваш сайт використовує Moodle 2.4 або більш пізньої версії.",
"core.login.confirmdeletesite": "Видалити сайт {{sitename}}?",
"core.login.connect": "З'єднано!",
"core.login.connecttomoodle": "Підключитись до Moodle",
@@ -1343,14 +1341,12 @@
"core.login.credentialsdescription": "Будь ласка, введіть Ваше ім'я користувача та пароль, щоб увійти в систему.",
"core.login.emailconfirmsent": "На зазначену Вами адресу електронної пошти ({{$a}}) було відправлено листа з інструкціями із завершення реєстрації. Якщо у Вас з'являться проблеми з реєстрацією, зв'яжіться з адміністратором сайту.",
"core.login.emailnotmatch": "Email не співпадають",
- "core.login.enterthewordsabove": "Введіть символи, які бачите вище",
"core.login.erroraccesscontrolalloworigin": "Cross-Origin дзвінок був відхилений. Будь ласка, перевірте https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"core.login.errordeletesite": "Під час видалення цього сайту сталася помилка. Будь ласка спробуйте ще раз.",
"core.login.errorupdatesite": "При оновленні токена сайту сталася помилка.",
"core.login.firsttime": "Ви вперше на нашому сайті?",
"core.login.forcepasswordchangenotice": "Щоб продовжити, ви повинні змінити свій пароль.",
"core.login.forgotten": "Забули ім'я або пароль?",
- "core.login.getanothercaptcha": "Отримати інший варант",
"core.login.help": "Допомога",
"core.login.helpmelogin": "
Є багато тисяч сайтів Moodle по всьому світу. Ця програма може підключатися тільки до сайтів Moodle, які є з підтримкою мобільного доступу додатків.
Якщо ви не можете підключитися до вашого сайту Moodle, то вам необхідно звернутися до адміністратора Moodle в тому місці, де планується отримати доступ і попросіть їх прочитати http://docs.moodle.org/en/Mobile_app
Щоб перевірити додаток на Moodle демо сайті в ролі вчителя або студента в полі адреса сайту і натисніть кнопку Підключення .
diff --git a/src/core/courses/pages/self-enrol-password/self-enrol-password.ts b/src/core/courses/pages/self-enrol-password/self-enrol-password.ts
index a646dacb4..17da104ae 100644
--- a/src/core/courses/pages/self-enrol-password/self-enrol-password.ts
+++ b/src/core/courses/pages/self-enrol-password/self-enrol-password.ts
@@ -12,8 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-import { Component } from '@angular/core';
+import { Component, ViewChild, ElementRef } from '@angular/core';
import { IonicPage, ViewController } from 'ionic-angular';
+import { CoreEventsProvider } from '@providers/events';
+import { CoreSitesProvider } from '@providers/sites';
+import { CoreDomUtilsProvider } from '@providers/utils/dom';
/**
* Page that displays a form to enter a password to self enrol in a course.
@@ -24,12 +27,19 @@ import { IonicPage, ViewController } from 'ionic-angular';
templateUrl: 'self-enrol-password.html',
})
export class CoreCoursesSelfEnrolPasswordPage {
- constructor(private viewCtrl: ViewController) { }
+
+ @ViewChild('enrolPasswordForm') formElement: ElementRef;
+
+ constructor(protected viewCtrl: ViewController,
+ protected eventsProvider: CoreEventsProvider,
+ protected sitesProvider: CoreSitesProvider,
+ protected domUtils: CoreDomUtilsProvider) { }
/**
* Close help modal.
*/
close(): void {
+ this.domUtils.triggerFormCancelledEvent(this.formElement, this.sitesProvider.getCurrentSiteId());
this.viewCtrl.dismiss();
}
@@ -43,6 +53,8 @@ export class CoreCoursesSelfEnrolPasswordPage {
e.preventDefault();
e.stopPropagation();
+ this.domUtils.triggerFormSubmittedEvent(this.formElement, false, this.sitesProvider.getCurrentSiteId());
+
this.viewCtrl.dismiss(password);
}
}
diff --git a/src/core/courses/providers/course-link-handler.ts b/src/core/courses/providers/course-link-handler.ts
index b94813f4c..c7fdd7df4 100644
--- a/src/core/courses/providers/course-link-handler.ts
+++ b/src/core/courses/providers/course-link-handler.ts
@@ -178,8 +178,9 @@ export class CoreCoursesCourseLinkHandler extends CoreContentLinksHandlerBase {
error = this.translate.instant('core.courses.notenroled');
}
- const body = this.translate.instant('core.twoparagraphs',
- { p1: error, p2: this.translate.instant('core.confirmopeninbrowser') });
+ const body = this.textUtils.buildSeveralParagraphsMessage(
+ [error, this.translate.instant('core.confirmopeninbrowser')]);
+
this.domUtils.showConfirm(body).then(() => {
this.sitesProvider.getCurrentSite().openInBrowserWithAutoLogin(url);
}).catch(() => {
diff --git a/src/core/editor/components/components.module.ts b/src/core/editor/components/components.module.ts
new file mode 100644
index 000000000..5d8edf3e7
--- /dev/null
+++ b/src/core/editor/components/components.module.ts
@@ -0,0 +1,41 @@
+// (C) Copyright 2015 Moodle Pty Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { IonicModule } from 'ionic-angular';
+import { TranslateModule } from '@ngx-translate/core';
+import { CoreEditorRichTextEditorComponent } from './rich-text-editor/rich-text-editor';
+import { CoreComponentsModule } from '@components/components.module';
+
+@NgModule({
+ declarations: [
+ CoreEditorRichTextEditorComponent
+ ],
+ imports: [
+ CommonModule,
+ IonicModule,
+ TranslateModule.forChild(),
+ CoreComponentsModule,
+ ],
+ providers: [
+ ],
+ exports: [
+ CoreEditorRichTextEditorComponent
+ ],
+ entryComponents: [
+ CoreEditorRichTextEditorComponent
+ ]
+})
+export class CoreEditorComponentsModule {}
diff --git a/src/components/rich-text-editor/core-rich-text-editor.html b/src/core/editor/components/rich-text-editor/core-editor-rich-text-editor.html
similarity index 51%
rename from src/components/rich-text-editor/core-rich-text-editor.html
rename to src/core/editor/components/rich-text-editor/core-editor-rich-text-editor.html
index ba2bd897f..20faba16e 100644
--- a/src/components/rich-text-editor/core-rich-text-editor.html
+++ b/src/core/editor/components/rich-text-editor/core-editor-rich-text-editor.html
@@ -1,81 +1,88 @@
-
diff --git a/src/components/rich-text-editor/rich-text-editor.scss b/src/core/editor/components/rich-text-editor/rich-text-editor.scss
similarity index 88%
rename from src/components/rich-text-editor/rich-text-editor.scss
rename to src/core/editor/components/rich-text-editor/rich-text-editor.scss
index e2dd2ac07..ae01ced74 100644
--- a/src/components/rich-text-editor/rich-text-editor.scss
+++ b/src/core/editor/components/rich-text-editor/rich-text-editor.scss
@@ -10,12 +10,35 @@ ion-app.app-root core-rich-text-editor {
background-color: $gray-darker;
}
+ .core-rte-editor-container {
+ max-height: calc(100% - 46px);
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ &.toolbar-hidden {
+ max-height: 100%;
+ }
+
+ .core-rte-info-message {
+ padding: 5px;
+ border-top: 1px solid $info;
+ background: white;
+ flex-shrink: 1;
+ font-size: 1.4rem;
+
+ .icon {
+ color: $info;
+ }
+ }
+ }
+
.core-rte-editor, .core-textarea {
padding: 2px;
margin: 2px;
width: 100%;
resize: none;
background-color: $white;
+ flex-grow: 1;
@include darkmode() {
background-color: $gray-darker;
color: $white;
@@ -147,7 +170,6 @@ ion-app.app-root core-rich-text-editor {
border: none;
}
}
-
}
body.keyboard-is-open ion-app.app-root core-rich-text-editor {
diff --git a/src/components/rich-text-editor/rich-text-editor.ts b/src/core/editor/components/rich-text-editor/rich-text-editor.ts
similarity index 71%
rename from src/components/rich-text-editor/rich-text-editor.ts
rename to src/core/editor/components/rich-text-editor/rich-text-editor.ts
index d4367e509..a99a15e0c 100644
--- a/src/components/rich-text-editor/rich-text-editor.ts
+++ b/src/core/editor/components/rich-text-editor/rich-text-editor.ts
@@ -21,28 +21,23 @@ import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { CoreUrlUtilsProvider } from '@providers/utils/url';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreEventsProvider } from '@providers/events';
+import { CoreEditorOfflineProvider } from '../../providers/editor-offline';
import { FormControl } from '@angular/forms';
import { Subscription } from 'rxjs';
/**
- * Directive to display a rich text editor if enabled.
+ * Component to display a rich text editor if enabled.
*
- * If enabled, this directive will show a rich text editor. Otherwise it'll show a regular textarea.
- *
- * This directive requires an OBJECT model. The text written in the editor or textarea will be stored inside
- * a "text" property in that object. This is to ensure 2-way data-binding, since using a string as a model
- * could be easily broken.
+ * If enabled, this component will show a rich text editor. Otherwise it'll show a regular textarea.
*
* Example:
*
- *
- * In the example above, the text written in the editor will be stored in newpost.text.
*/
@Component({
selector: 'core-rich-text-editor',
- templateUrl: 'core-rich-text-editor.html'
+ templateUrl: 'core-editor-rich-text-editor.html'
})
-export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy {
+export class CoreEditorRichTextEditorComponent implements AfterContentInit, OnDestroy {
// Based on: https://github.com/judgewest2000/Ionic3RichText/
// @todo: Anchor button, fullscreen...
// @todo: Textarea height is not being updated when editor is resized. Height is calculated if any css is changed.
@@ -52,11 +47,19 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
@Input() name = 'core-rich-text-editor'; // Name to set to the textarea.
@Input() component?: string; // The component to link the files to.
@Input() componentId?: number; // An ID to use in conjunction with the component.
+ @Input() autoSave?: boolean | string; // Whether to auto-save the contents in a draft. Defaults to true.
+ @Input() contextLevel?: string; // The context level of the text.
+ @Input() contextInstanceId?: number; // The instance ID related to the context.
+ @Input() elementId?: string; // An ID to set to the element.
+ @Input() draftExtraParams: {[name: string]: any}; // Extra params to identify the draft.
@Output() contentChanged: EventEmitter;
@ViewChild('editor') editor: ElementRef; // WYSIWYG editor.
@ViewChild('textarea') textarea: TextInput; // Textarea editor.
+ protected DRAFT_AUTOSAVE_FREQUENCY = 30000;
+ protected RESTORE_MESSAGE_CLEAR_TIME = 6000;
+ protected SAVE_MESSAGE_CLEAR_TIME = 2000;
protected element: HTMLDivElement;
protected editorElement: HTMLDivElement;
protected kbHeight = 0; // Last known keyboard height.
@@ -64,7 +67,8 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
protected valueChangeSubscription: Subscription;
protected keyboardObs: any;
- protected initHeightInterval;
+ protected resetObs: any;
+ protected initHeightInterval: NodeJS.Timer;
rteEnabled = false;
editorSupported = true;
@@ -84,22 +88,37 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
u: 'false',
strike: 'false',
p: 'false',
- h1: 'false',
- h2: 'false',
h3: 'false',
+ h4: 'false',
+ h5: 'false',
ul: 'false',
ol: 'false',
};
+ infoMessage: string;
protected isCurrentView = true;
protected toolbarButtonWidth = 40;
protected toolbarArrowWidth = 28;
+ protected pageInstance: string;
+ protected autoSaveInterval: NodeJS.Timer;
+ protected hideMessageTimeout: NodeJS.Timer;
+ protected lastDraft = '';
+ protected draftWasRestored = false;
+ protected originalContent: string;
- constructor(private domUtils: CoreDomUtilsProvider, private urlUtils: CoreUrlUtilsProvider,
- private sitesProvider: CoreSitesProvider, private filepoolProvider: CoreFilepoolProvider,
- @Optional() private content: Content, elementRef: ElementRef, private events: CoreEventsProvider,
- private utils: CoreUtilsProvider, private platform: Platform) {
+ constructor(
+ protected domUtils: CoreDomUtilsProvider,
+ protected urlUtils: CoreUrlUtilsProvider,
+ protected sitesProvider: CoreSitesProvider,
+ protected filepoolProvider: CoreFilepoolProvider,
+ @Optional() protected content: Content,
+ elementRef: ElementRef,
+ protected events: CoreEventsProvider,
+ protected utils: CoreUtilsProvider,
+ protected platform: Platform,
+ protected editorOffline: CoreEditorOfflineProvider) {
this.contentChanged = new EventEmitter();
this.element = elementRef.nativeElement as HTMLDivElement;
+ this.pageInstance = 'app_' + Date.now(); // Generate a "unique" ID based on timestamp.
}
/**
@@ -115,6 +134,8 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
// Setup the editor.
this.editorElement = this.editor.nativeElement as HTMLDivElement;
this.setContent(this.control.value);
+ this.originalContent = this.control.value;
+ this.lastDraft = this.control.value;
this.editorElement.onchange = this.onChange.bind(this);
this.editorElement.onkeyup = this.onChange.bind(this);
this.editorElement.onpaste = this.onChange.bind(this);
@@ -123,7 +144,20 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
// Listen for changes on the control to update the editor (if it is updated from outside of this component).
this.valueChangeSubscription = this.control.valueChanges.subscribe((param) => {
- this.setContent(param);
+ if (!this.draftWasRestored || this.originalContent != param) {
+ // Apply the new content.
+ this.setContent(param);
+ this.originalContent = param;
+ this.infoMessage = null;
+
+ // Save a draft so the original content is saved.
+ this.lastDraft = param;
+ this.editorOffline.saveDraft(this.contextLevel, this.contextInstanceId, this.elementId,
+ this.draftExtraParams, this.pageInstance, param, param);
+ } else {
+ // A draft was restored and the content hasn't changed in the site. Use the draft value instead of this one.
+ this.control.setValue(this.lastDraft, {emitEvent: false});
+ }
});
// Use paragraph on enter.
@@ -148,6 +182,20 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
});
this.updateToolbarButtons();
+
+ if (this.elementId) {
+ // Prepend elementId with 'id_' like in web. Don't use a setter for this because the value shouldn't change.
+ this.elementId = 'id_' + this.elementId;
+ this.element.setAttribute('id', this.elementId);
+ }
+
+ if (this.shouldAutoSaveDrafts()) {
+ this.restoreDraft();
+
+ this.autoSaveDrafts();
+
+ this.deleteDraftOnSubmitOrCancel();
+ }
}
/**
@@ -196,7 +244,7 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
}
if (height > this.minHeight) {
- this.element.style.height = this.domUtils.formatPixelsSize(height);
+ this.element.style.height = this.domUtils.formatPixelsSize(height - 1);
} else {
this.element.style.height = '';
}
@@ -291,8 +339,7 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
return;
}
- $event.preventDefault();
- $event.stopPropagation();
+ this.stopBubble($event);
const move = $event['key'] == 'ArrowLeft' ? -1 : +1,
cursor = this.getCurrentCursorPosition(this.editorElement);
@@ -408,8 +455,7 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
* @param $event The event.
*/
toggleEditor($event: Event): void {
- $event.preventDefault();
- $event.stopPropagation();
+ this.stopBubble($event);
this.setContent(this.control.value);
@@ -533,26 +579,42 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
*
* @param $event Event data
* @param command Command to execute.
+ * @param parameters If parameters is set to block, a formatBlock command will be performed. Otherwise it will switch the
+ * toolbar styles button when set.
*/
- buttonAction($event: any, command: string): void {
+ buttonAction($event: any, command: string, parameters: string): void {
this.stopBubble($event);
if (command) {
- if (command.includes('|')) {
- const parameters = command.split('|')[1];
- command = command.split('|')[0];
-
- document.execCommand(command, false, parameters);
+ if (parameters == 'block') {
+ document.execCommand('formatBlock', false, '<' + command + '>');
} else {
+ if (parameters) {
+ this.toolbarStyles[parameters] = this.toolbarStyles[parameters] == 'true' ? 'false' : 'true';
+ }
+
document.execCommand(command, false);
}
}
}
+ /**
+ * Focus editor when click the area.
+ *
+ * @param e Event
+ */
+ focusRTE(e?: Event): void {
+ if (this.rteEnabled) {
+ this.editorElement.focus();
+ } else {
+ this.textarea.setFocus();
+ }
+ }
+
/**
* Hide the toolbar in phone mode.
*/
- hideToolbar($event: any): void {
+ hideToolbar($event: Event): void {
this.stopBubble($event);
if (this.isPhone) {
@@ -563,7 +625,9 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
/**
* Show the toolbar.
*/
- showToolbar(): void {
+ showToolbar($event: Event): void {
+ this.stopBubble($event);
+
this.editorElement.focus();
this.toolbarHidden = false;
}
@@ -578,6 +642,19 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
event.stopPropagation();
}
+ /**
+ * When a button is clicked first we should stop event propagation, but it has some cases to not.
+ *
+ * @param event Event.
+ */
+ mouseDownAction(event: Event): void {
+ const selection = window.getSelection().toString();
+ // When RTE is focused with a range selection the stopBubble will not fire click.
+ if (!this.rteEnabled || document.activeElement != this.editorElement || selection == '') {
+ this.stopBubble(event);
+ }
+ }
+
/**
* Method that shows the next toolbar buttons.
*/
@@ -648,7 +725,7 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
* Update highlighted toolbar styles.
*/
updateToolbarStyles = (): void => {
- const node = document.getSelection().focusNode;
+ const node = window.getSelection().focusNode;
if (!node) {
return;
}
@@ -673,6 +750,121 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
}
}
+ /**
+ * Check if should auto save drafts.
+ *
+ * @return {boolean} Whether it should auto save drafts.
+ */
+ protected shouldAutoSaveDrafts(): boolean {
+ return !!this.sitesProvider.getCurrentSite() &&
+ (typeof this.autoSave == 'undefined' || this.utils.isTrueOrOne(this.autoSave)) &&
+ typeof this.contextLevel != 'undefined' &&
+ typeof this.contextInstanceId != 'undefined' &&
+ typeof this.elementId != 'undefined';
+ }
+
+ /**
+ * Restore a draft if there is any.
+ *
+ * @return Promise resolved when done.
+ */
+ protected async restoreDraft(): Promise {
+ try {
+ const entry = await this.editorOffline.resumeDraft(this.contextLevel, this.contextInstanceId, this.elementId,
+ this.draftExtraParams, this.pageInstance, this.originalContent);
+
+ if (typeof entry == 'undefined') {
+ // No draft found.
+ return;
+ }
+
+ let draftText = entry.drafttext;
+
+ // Revert untouched editor contents to an empty string.
+ if (draftText == '' || draftText == '
' || draftText == ' ' ||
+ draftText == '
' || draftText == '
') {
+ draftText = '';
+ }
+
+ if (draftText !== '' && draftText != this.control.value) {
+ // Restore the draft.
+ this.control.setValue(draftText, {emitEvent: false});
+ this.setContent(draftText);
+ this.lastDraft = draftText;
+ this.draftWasRestored = true;
+ this.originalContent = entry.originalcontent;
+
+ if (entry.drafttext != entry.originalcontent) {
+ // Notify the user.
+ this.showMessage('core.editor.textrecovered', this.RESTORE_MESSAGE_CLEAR_TIME);
+ }
+ }
+ } catch (error) {
+ // Ignore errors, shouldn't happen.
+ }
+ }
+
+ /**
+ * Automatically save drafts every certain time.
+ */
+ protected autoSaveDrafts(): void {
+ this.autoSaveInterval = setInterval(async () => {
+ const newText = this.control.value;
+
+ if (this.lastDraft == newText) {
+ // Text hasn't changed, nothing to save.
+ return;
+ }
+
+ try {
+ await this.editorOffline.saveDraft(this.contextLevel, this.contextInstanceId, this.elementId,
+ this.draftExtraParams, this.pageInstance, newText, this.originalContent);
+
+ // Draft saved, notify the user.
+ this.lastDraft = newText;
+ this.showMessage('core.editor.autosavesucceeded', this.SAVE_MESSAGE_CLEAR_TIME);
+ } catch (error) {
+ // Error saving draft.
+ }
+ }, this.DRAFT_AUTOSAVE_FREQUENCY);
+ }
+
+ /**
+ * Delete the draft when the form is submitted or cancelled.
+ */
+ protected deleteDraftOnSubmitOrCancel(): void {
+
+ this.resetObs = this.events.on(CoreEventsProvider.FORM_ACTION, async (data) => {
+ const form = this.element.closest('form');
+
+ if (data.form && form && data.form == form) {
+ try {
+ await this.editorOffline.deleteDraft(this.contextLevel, this.contextInstanceId, this.elementId,
+ this.draftExtraParams);
+ } catch (error) {
+ // Error deleting draft. Shouldn't happen.
+ }
+ }
+ }, this.sitesProvider.getCurrentSiteId());
+ }
+
+ /**
+ * Show a message.
+ *
+ * @param message Identifier of the message to display.
+ * @param timeout Number of milliseconds when to remove the message.
+ */
+ protected showMessage(message: string, timeout: number): void {
+ clearTimeout(this.hideMessageTimeout);
+
+ this.infoMessage = message;
+
+ this.hideMessageTimeout = setTimeout(() => {
+ this.hideMessageTimeout = null;
+ this.infoMessage = null;
+ }, timeout);
+ }
+
/**
* User entered the page that contains the component.
*/
@@ -698,5 +890,8 @@ export class CoreRichTextEditorComponent implements AfterContentInit, OnDestroy
document.removeEventListener('selectionchange', this.updateToolbarStyles);
clearInterval(this.initHeightInterval);
this.keyboardObs && this.keyboardObs.off();
+ clearInterval(this.autoSaveInterval);
+ clearTimeout(this.hideMessageTimeout);
+ this.resetObs && this.resetObs.off();
}
}
diff --git a/src/core/editor/editor.module.ts b/src/core/editor/editor.module.ts
new file mode 100644
index 000000000..e55c88a49
--- /dev/null
+++ b/src/core/editor/editor.module.ts
@@ -0,0 +1,38 @@
+// (C) Copyright 2015 Moodle Pty Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import { NgModule } from '@angular/core';
+import { CoreEditorComponentsModule } from './components/components.module';
+import { CoreEditorOfflineProvider } from './providers/editor-offline';
+
+// List of providers (without handlers).
+export const CORE_GRADES_PROVIDERS: any[] = [
+ CoreEditorOfflineProvider,
+];
+
+@NgModule({
+ declarations: [
+ ],
+ imports: [
+ CoreEditorComponentsModule,
+ ],
+ providers: [
+ CoreEditorOfflineProvider,
+ ],
+})
+export class CoreEditorModule {
+ constructor(editorOffline: CoreEditorOfflineProvider) {
+ // Inject the helper even if it isn't used here it's instantiated.
+ }
+}
diff --git a/src/core/editor/lang/en.json b/src/core/editor/lang/en.json
new file mode 100644
index 000000000..508c6ddb0
--- /dev/null
+++ b/src/core/editor/lang/en.json
@@ -0,0 +1,17 @@
+{
+ "autosavesucceeded": "Draft saved.",
+ "bold": "Bold",
+ "clear": "Clear formatting",
+ "h3": "Heading (large)",
+ "h4": "Heading (medium)",
+ "h5": "Heading (small)",
+ "hidetoolbar": "Hide toolbar",
+ "italic": "Italic",
+ "orderedlist": "Ordered list",
+ "p": "Paragraph",
+ "strike": "Strike through",
+ "textrecovered": "A draft version of this text was automatically restored.",
+ "toggle": "Toggle editor",
+ "underline": "Underline",
+ "unorderedlist": "Unordered list"
+}
\ No newline at end of file
diff --git a/src/core/editor/providers/editor-offline.ts b/src/core/editor/providers/editor-offline.ts
new file mode 100644
index 000000000..17d8b44ce
--- /dev/null
+++ b/src/core/editor/providers/editor-offline.ts
@@ -0,0 +1,277 @@
+// (C) Copyright 2015 Moodle Pty Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+import { Injectable } from '@angular/core';
+import { CoreLoggerProvider } from '@providers/logger';
+import { CoreSitesProvider, CoreSiteSchema } from '@providers/sites';
+import { CoreTextUtilsProvider } from '@providers/utils/text';
+import { CoreUtilsProvider } from '@providers/utils/utils';
+
+/**
+ * Service with features regarding rich text editor in offline.
+ */
+@Injectable()
+export class CoreEditorOfflineProvider {
+
+ protected DRAFT_TABLE = 'editor_draft';
+
+ protected logger;
+ protected siteSchema: CoreSiteSchema = {
+ name: 'CoreEditorProvider',
+ version: 1,
+ tables: [
+ {
+ name: this.DRAFT_TABLE,
+ columns: [
+ {
+ name: 'contextlevel',
+ type: 'TEXT',
+ },
+ {
+ name: 'contextinstanceid',
+ type: 'INTEGER',
+ },
+ {
+ name: 'elementid',
+ type: 'TEXT',
+ },
+ {
+ name: 'extraparams', // Moodle web uses a page hash built with URL. App will use some params stringified.
+ type: 'TEXT',
+ },
+ {
+ name: 'drafttext',
+ type: 'TEXT',
+ notNull: true,
+ },
+ {
+ name: 'pageinstance',
+ type: 'TEXT',
+ notNull: true,
+ },
+ {
+ name: 'timecreated',
+ type: 'INTEGER',
+ notNull: true,
+ },
+ {
+ name: 'timemodified',
+ type: 'INTEGER',
+ notNull: true,
+ },
+ {
+ name: 'originalcontent',
+ type: 'TEXT',
+ },
+ ],
+ primaryKeys: ['contextlevel', 'contextinstanceid', 'elementid', 'extraparams'],
+ },
+ ],
+ };
+
+ constructor(
+ logger: CoreLoggerProvider,
+ protected sitesProvider: CoreSitesProvider,
+ protected textUtils: CoreTextUtilsProvider,
+ protected utils: CoreUtilsProvider) {
+ this.logger = logger.getInstance('CoreEditorProvider');
+
+ this.sitesProvider.registerSiteSchema(this.siteSchema);
+ }
+
+ /**
+ * Delete a draft from DB.
+ *
+ * @param contextLevel Context level.
+ * @param contextInstanceId The instance ID related to the context.
+ * @param elementId Element ID.
+ * @param extraParams Object with extra params to identify the draft.
+ * @param siteId Site ID. If not defined, current site.
+ * @return Promise resolved when done.
+ */
+ async deleteDraft(contextLevel: string, contextInstanceId: number, elementId: string, extraParams: {[name: string]: any},
+ siteId?: string): Promise {
+
+ try {
+ const db = await this.sitesProvider.getSiteDb(siteId);
+
+ const params = this.fixDraftPrimaryData(contextLevel, contextInstanceId, elementId, extraParams);
+
+ return db.deleteRecords(this.DRAFT_TABLE, params);
+ } catch (error) {
+ // Ignore errors, probably no draft stored.
+ }
+ }
+
+ /**
+ * Return an object with the draft primary data converted to the right format.
+ *
+ * @param contextLevel Context level.
+ * @param contextInstanceId The instance ID related to the context.
+ * @param elementId Element ID.
+ * @param extraParams Object with extra params to identify the draft.
+ * @return Object with the fixed primary data.
+ */
+ protected fixDraftPrimaryData(contextLevel: string, contextInstanceId: number, elementId: string,
+ extraParams: {[name: string]: any}): CoreEditorDraftPrimaryData {
+
+ return {
+ contextlevel: contextLevel,
+ contextinstanceid: contextInstanceId,
+ elementid: elementId,
+ extraparams: this.utils.sortAndStringify(extraParams || {}),
+ };
+ }
+
+ /**
+ * Get a draft from DB.
+ *
+ * @param contextLevel Context level.
+ * @param contextInstanceId The instance ID related to the context.
+ * @param elementId Element ID.
+ * @param extraParams Object with extra params to identify the draft.
+ * @param siteId Site ID. If not defined, current site.
+ * @return Promise resolved with the draft data. Undefined if no draft stored.
+ */
+ async getDraft(contextLevel: string, contextInstanceId: number, elementId: string, extraParams: {[name: string]: any},
+ siteId?: string): Promise {
+
+ const db = await this.sitesProvider.getSiteDb(siteId);
+
+ const params = this.fixDraftPrimaryData(contextLevel, contextInstanceId, elementId, extraParams);
+
+ return db.getRecord(this.DRAFT_TABLE, params);
+ }
+
+ /**
+ * Get draft to resume it.
+ *
+ * @param contextLevel Context level.
+ * @param contextInstanceId The instance ID related to the context.
+ * @param elementId Element ID.
+ * @param extraParams Object with extra params to identify the draft.
+ * @param pageInstance Unique identifier to prevent storing data from several sources at the same time.
+ * @param originalContent Original content of the editor.
+ * @param siteId Site ID. If not defined, current site.
+ * @return Promise resolved with the draft data. Undefined if no draft stored.
+ */
+ async resumeDraft(contextLevel: string, contextInstanceId: number, elementId: string, extraParams: {[name: string]: any},
+ pageInstance: string, originalContent?: string, siteId?: string): Promise {
+
+ try {
+ // Check if there is a draft stored.
+ const entry = await this.getDraft(contextLevel, contextInstanceId, elementId, extraParams, siteId);
+
+ // There is a draft stored. Update its page instance.
+ try {
+ const db = await this.sitesProvider.getSiteDb(siteId);
+
+ entry.pageinstance = pageInstance;
+ entry.timemodified = Date.now();
+
+ if (originalContent && entry.originalcontent != originalContent) {
+ entry.originalcontent = originalContent;
+ entry.drafttext = ''; // "Discard" the draft.
+ }
+
+ await db.insertRecord(this.DRAFT_TABLE, entry);
+ } catch (error) {
+ // Ignore errors saving the draft. It shouldn't happen.
+ }
+
+ return entry;
+ } catch (error) {
+ // No draft stored. Store an empty draft to save the pageinstance.
+ await this.saveDraft(contextLevel, contextInstanceId, elementId, extraParams, pageInstance, '', originalContent,
+ siteId);
+ }
+ }
+
+ /**
+ * Save a draft in DB.
+ *
+ * @param contextLevel Context level.
+ * @param contextInstanceId The instance ID related to the context.
+ * @param elementId Element ID.
+ * @param extraParams Object with extra params to identify the draft.
+ * @param pageInstance Unique identifier to prevent storing data from several sources at the same time.
+ * @param draftText The text to store.
+ * @param originalContent Original content of the editor.
+ * @param siteId Site ID. If not defined, current site.
+ * @return Promise resolved when done.
+ */
+ async saveDraft(contextLevel: string, contextInstanceId: number, elementId: string, extraParams: {[name: string]: any},
+ pageInstance: string, draftText: string, originalContent?: string, siteId?: string): Promise {
+
+ let timecreated = Date.now();
+ let entry: CoreEditorDraft;
+
+ // Check if there is a draft already stored.
+ try {
+ entry = await this.getDraft(contextLevel, contextInstanceId, elementId, extraParams, siteId);
+
+ timecreated = entry.timecreated;
+ } catch (error) {
+ // No draft already stored.
+ }
+
+ if (entry) {
+ if (entry.pageinstance != pageInstance) {
+ this.logger.warning(`Discarding draft because of pageinstance. Context '${contextLevel}' '${contextInstanceId}', ` +
+ `element '${elementId}'`);
+ throw null;
+ }
+
+ if (!originalContent) {
+ // Original content not set, use the one in the entry.
+ originalContent = entry.originalcontent;
+ }
+ }
+
+ const db = await this.sitesProvider.getSiteDb(siteId);
+
+ const data: CoreEditorDraft = this.fixDraftPrimaryData(contextLevel, contextInstanceId, elementId, extraParams);
+
+ data.drafttext = (draftText || '').trim();
+ data.pageinstance = pageInstance;
+ data.timecreated = timecreated;
+ data.timemodified = Date.now();
+ if (originalContent) {
+ data.originalcontent = originalContent;
+ }
+
+ await db.insertRecord(this.DRAFT_TABLE, data);
+ }
+}
+
+/**
+ * Primary data to identify a stored draft.
+ */
+type CoreEditorDraftPrimaryData = {
+ contextlevel: string; // Context level.
+ contextinstanceid: number; // The instance ID related to the context.
+ elementid: string; // Element ID.
+ extraparams: string; // Extra params stringified.
+};
+
+/**
+ * Draft data stored.
+ */
+type CoreEditorDraft = CoreEditorDraftPrimaryData & {
+ drafttext?: string; // Draft text stored.
+ pageinstance?: string; // Unique identifier to prevent storing data from several sources at the same time.
+ timecreated?: number; // Time created.
+ timemodified?: number; // Time modified.
+ originalcontent?: string; // Original content of the editor.
+};
diff --git a/src/core/emulator/providers/local-notifications.ts b/src/core/emulator/providers/local-notifications.ts
index d3234bcd8..affff2e19 100644
--- a/src/core/emulator/providers/local-notifications.ts
+++ b/src/core/emulator/providers/local-notifications.ts
@@ -14,10 +14,10 @@
import { Injectable } from '@angular/core';
import { LocalNotifications, ILocalNotification, ILocalNotificationAction } from '@ionic-native/local-notifications';
-import { CoreAppProvider } from '@providers/app';
+import { CoreAppProvider, CoreAppSchema } from '@providers/app';
import { CoreTextUtilsProvider } from '@providers/utils/text';
import { CoreUtilsProvider } from '@providers/utils/utils';
-import { SQLiteDB, SQLiteDBTableSchema } from '@classes/sqlitedb';
+import { SQLiteDB } from '@classes/sqlitedb';
import { CoreConstants } from '@core/constants';
import { CoreConfigConstants } from '../../../configconstants';
import * as moment from 'moment';
@@ -43,41 +43,48 @@ export class LocalNotificationsMock extends LocalNotifications {
// Variables for database.
protected DESKTOP_NOTIFS_TABLE = 'desktop_local_notifications';
- protected tableSchema: SQLiteDBTableSchema = {
- name: this.DESKTOP_NOTIFS_TABLE,
- columns: [
+ protected tableSchema: CoreAppSchema = {
+ name: 'LocalNotificationsMock',
+ version: 1,
+ tables: [
{
- name: 'id',
- type: 'INTEGER',
- primaryKey: true
+ name: this.DESKTOP_NOTIFS_TABLE,
+ columns: [
+ {
+ name: 'id',
+ type: 'INTEGER',
+ primaryKey: true
+ },
+ {
+ name: 'title',
+ type: 'TEXT'
+ },
+ {
+ name: 'text',
+ type: 'TEXT'
+ },
+ {
+ name: 'at',
+ type: 'INTEGER'
+ },
+ {
+ name: 'data',
+ type: 'TEXT'
+ },
+ {
+ name: 'triggered',
+ type: 'INTEGER'
+ }
+ ],
},
- {
- name: 'title',
- type: 'TEXT'
- },
- {
- name: 'text',
- type: 'TEXT'
- },
- {
- name: 'at',
- type: 'INTEGER'
- },
- {
- name: 'data',
- type: 'TEXT'
- },
- {
- name: 'triggered',
- type: 'INTEGER'
- }
- ]
+ ],
};
protected appDB: SQLiteDB;
protected scheduled: { [i: number]: any } = {};
protected triggered: { [i: number]: any } = {};
protected observers: {[event: string]: Subject};
+ protected dbReady: Promise; // Promise resolved when the app DB is initialized.
protected defaults = {
actions : [],
attachments : [],
@@ -117,7 +124,9 @@ export class LocalNotificationsMock extends LocalNotifications {
super();
this.appDB = appProvider.getDB();
- this.appDB.createTableFromSchema(this.tableSchema);
+ this.dbReady = appProvider.createTablesFromSchema(this.tableSchema).catch(() => {
+ // Ignore errors.
+ });
// Initialize observers.
this.observers = {
@@ -550,20 +559,21 @@ export class LocalNotificationsMock extends LocalNotifications {
*
* @return Promise resolved with the notifications.
*/
- protected getAllNotifications(): Promise {
- return this.appDB.getAllRecords(this.DESKTOP_NOTIFS_TABLE).then((notifications) => {
- notifications.forEach((notification) => {
- notification.trigger = {
- at: new Date(notification.at)
- };
- notification.data = this.textUtils.parseJSON(notification.data);
- notification.triggered = !!notification.triggered;
+ protected async getAllNotifications(): Promise {
+ await this.dbReady;
- this.mergeWithDefaults(notification);
- });
+ const notifications = await this.appDB.getAllRecords(this.DESKTOP_NOTIFS_TABLE);
+ notifications.forEach((notification) => {
+ notification.trigger = {
+ at: new Date(notification.at),
+ };
+ notification.data = this.textUtils.parseJSON(notification.data);
+ notification.triggered = !!notification.triggered;
- return notifications;
+ this.mergeWithDefaults(notification);
});
+
+ return notifications;
}
/**
@@ -889,7 +899,9 @@ export class LocalNotificationsMock extends LocalNotifications {
* @param id ID of the notification.
* @return Promise resolved when done.
*/
- protected removeNotification(id: number): Promise {
+ protected async removeNotification(id: number): Promise {
+ await this.dbReady;
+
return this.appDB.deleteRecords(this.DESKTOP_NOTIFS_TABLE, { id: id });
}
@@ -979,7 +991,9 @@ export class LocalNotificationsMock extends LocalNotifications {
* @param triggered Whether the notification has been triggered.
* @return Promise resolved when stored.
*/
- protected storeNotification(notification: ILocalNotification, triggered: boolean): Promise {
+ protected async storeNotification(notification: ILocalNotification, triggered: boolean): Promise {
+ await this.dbReady;
+
// Only store some of the properties.
const entry = {
id : notification.id,
diff --git a/src/core/emulator/providers/zip.ts b/src/core/emulator/providers/zip.ts
index 1c3af04a7..0dc848da7 100644
--- a/src/core/emulator/providers/zip.ts
+++ b/src/core/emulator/providers/zip.ts
@@ -85,8 +85,8 @@ export class ZipMock extends Zip {
}
// First of all, create the directory where the files will be unzipped.
- const destParent = destination.substring(0, source.lastIndexOf('/')),
- destFolderName = destination.substr(source.lastIndexOf('/') + 1);
+ const destParent = destination.substring(0, destination.lastIndexOf('/')),
+ destFolderName = destination.substr(destination.lastIndexOf('/') + 1);
return this.file.createDir(destParent, destFolderName, true);
}).then(() => {
diff --git a/src/core/fileuploader/providers/helper.ts b/src/core/fileuploader/providers/helper.ts
index fb1ac27a0..afaa6f909 100644
--- a/src/core/fileuploader/providers/helper.ts
+++ b/src/core/fileuploader/providers/helper.ts
@@ -399,7 +399,10 @@ export class CoreFileUploaderHelperProvider {
// Error, not cancelled.
this.logger.error('Error while recording audio/video', error);
- return Promise.reject(this.translate.instant(defaultMessage));
+ const message = error.code == 20 ? this.translate.instant('core.fileuploader.errornoapp') :
+ (error.message || this.translate.instant(defaultMessage));
+
+ return Promise.reject(message);
} else {
this.logger.debug('Cancelled');
}
diff --git a/src/core/filter/providers/helper.ts b/src/core/filter/providers/helper.ts
index 82c89e8ac..ed0c13460 100644
--- a/src/core/filter/providers/helper.ts
+++ b/src/core/filter/providers/helper.ts
@@ -38,10 +38,12 @@ export class CoreFilterHelperProvider {
protected moduleContextsCache: {
[siteId: string]: {
[courseId: number]: {
- contexts: CoreFilterClassifiedFilters,
- time: number
- }
- }
+ [contextLevel: string]: {
+ contexts: CoreFilterClassifiedFilters,
+ time: number,
+ },
+ },
+ },
} = {};
constructor(logger: CoreLoggerProvider,
@@ -110,7 +112,7 @@ export class CoreFilterHelperProvider {
return getFilters().then((contexts) => {
return this.filterProvider.getAvailableInContexts(contexts, siteId).then((filters) => {
- this.storeInMemoryCache(options.courseId, filters, siteId);
+ this.storeInMemoryCache(options.courseId, contextLevel, filters, siteId);
return filters[contextLevel][instanceId] || [];
});
@@ -278,14 +280,16 @@ export class CoreFilterHelperProvider {
const siteId = site.getId();
// Check if we have the context in the memory cache.
- if (this.moduleContextsCache[siteId] && this.moduleContextsCache[siteId][courseId]) {
- const cachedCourse = this.moduleContextsCache[siteId][courseId];
+ if (this.moduleContextsCache[siteId] && this.moduleContextsCache[siteId][courseId] &&
+ this.moduleContextsCache[siteId][courseId][contextLevel]) {
+
+ const cachedData = this.moduleContextsCache[siteId][courseId][contextLevel];
if (!this.appProvider.isOnline() ||
- Date.now() <= cachedCourse.time + site.getExpirationDelay(CoreSite.FREQUENCY_RARELY)) {
+ Date.now() <= cachedData.time + site.getExpirationDelay(CoreSite.FREQUENCY_RARELY)) {
// We can use cache, return the filters if found.
- return cachedCourse.contexts[contextLevel] && cachedCourse.contexts[contextLevel][instanceId];
+ return cachedData.contexts[contextLevel] && cachedData.contexts[contextLevel][instanceId];
}
}
}
@@ -316,11 +320,14 @@ export class CoreFilterHelperProvider {
* @param contexts Filters to store, classified by contextlevel and instanceid
* @param siteId Site ID.
*/
- protected storeInMemoryCache(courseId: number, contexts: CoreFilterClassifiedFilters, siteId: string): void {
+ protected storeInMemoryCache(courseId: number, contextLevel: string, contexts: CoreFilterClassifiedFilters, siteId: string)
+ : void {
+
this.moduleContextsCache[siteId] = this.moduleContextsCache[siteId] || {};
- this.moduleContextsCache[siteId][courseId] = {
+ this.moduleContextsCache[siteId][courseId] = this.moduleContextsCache[siteId][courseId] || {};
+ this.moduleContextsCache[siteId][courseId][contextLevel] = {
contexts: contexts,
- time: Date.now()
+ time: Date.now(),
};
}
}
diff --git a/src/core/grades/components/course/core-grades-course.html b/src/core/grades/components/course/core-grades-course.html
index 9832467c9..9a6ee1845 100644
--- a/src/core/grades/components/course/core-grades-course.html
+++ b/src/core/grades/components/course/core-grades-course.html
@@ -16,7 +16,7 @@
-
+
diff --git a/src/core/grades/components/course/course.scss b/src/core/grades/components/course/course.scss
index 5a3a9eb4e..c5ccb244d 100644
--- a/src/core/grades/components/course/course.scss
+++ b/src/core/grades/components/course/course.scss
@@ -85,6 +85,10 @@ ion-app.app-root core-grades-course {
font-size: 0.85em;
}
}
+
+ .core-grades-grade-clickable {
+ cursor: pointer;
+ }
}
}
diff --git a/src/core/h5p/components/h5p-player/h5p-player.ts b/src/core/h5p/components/h5p-player/h5p-player.ts
index 4804c4dbf..25153b69c 100644
--- a/src/core/h5p/components/h5p-player/h5p-player.ts
+++ b/src/core/h5p/components/h5p-player/h5p-player.ts
@@ -73,7 +73,8 @@ export class CoreH5PPlayerComponent implements OnInit, OnChanges, OnDestroy {
this.logger = loggerProvider.getInstance('CoreH5PPlayerComponent');
this.site = sitesProvider.getCurrentSite();
this.siteId = this.site.getId();
- this.siteCanDownload = this.sitesProvider.getCurrentSite().canDownloadFiles();
+ this.siteCanDownload = this.sitesProvider.getCurrentSite().canDownloadFiles() &&
+ !this.h5pProvider.isOfflineDisabledInSite();
}
/**
diff --git a/src/core/h5p/lang/en.json b/src/core/h5p/lang/en.json
index 923542f14..d661721f0 100644
--- a/src/core/h5p/lang/en.json
+++ b/src/core/h5p/lang/en.json
@@ -64,6 +64,7 @@
"offlineDialogRetryButtonLabel": "Retry now",
"offlineDialogRetryMessage": "Retrying in :num....",
"offlineSuccessfulSubmit": "Successfully submitted results.",
+ "offlinedisabled": "The site doesn't allow downloading H5P packages.",
"originator": "Originator",
"pd": "Public Domain",
"pddl": "Public Domain Dedication and Licence",
diff --git a/src/core/h5p/providers/h5p.ts b/src/core/h5p/providers/h5p.ts
index 6750e226c..75fe4b2b9 100644
--- a/src/core/h5p/providers/h5p.ts
+++ b/src/core/h5p/providers/h5p.ts
@@ -1876,6 +1876,30 @@ export class CoreH5PProvider {
});
}
+ /**
+ * Check whether H5P offline is disabled.
+ *
+ * @param siteId Site ID. If not defined, current site.
+ * @return Promise resolved with boolean: whether is disabled.
+ */
+ async isOfflineDisabled(siteId?: string): Promise {
+ const site = await this.sitesProvider.getSite(siteId);
+
+ return this.isOfflineDisabledInSite(site);
+ }
+
+ /**
+ * Check whether H5P offline is disabled.
+ *
+ * @param site Site instance. If not defined, current site.
+ * @return Whether is disabled.
+ */
+ isOfflineDisabledInSite(site?: CoreSite): boolean {
+ site = site || this.sitesProvider.getCurrentSite();
+
+ return site.isFeatureDisabled('NoDelegate_H5POffline');
+ }
+
/**
* Performs actions required when a library has been installed.
*
@@ -2578,7 +2602,7 @@ export class CoreH5PProvider {
url = url.replace('/webservice/pluginfile', '/pluginfile');
}
- return url;
+ return this.urlUtils.removeUrlParams(url);
}
/**
diff --git a/src/core/h5p/providers/pluginfile-handler.ts b/src/core/h5p/providers/pluginfile-handler.ts
index 3a38e6381..8f0ca98d7 100644
--- a/src/core/h5p/providers/pluginfile-handler.ts
+++ b/src/core/h5p/providers/pluginfile-handler.ts
@@ -22,6 +22,7 @@ import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreH5PProvider } from './h5p';
import { CoreWSExternalFile } from '@providers/ws';
import { FileEntry } from '@ionic-native/file';
+import { TranslateService } from '@ngx-translate/core';
/**
* Handler to treat H5P files.
@@ -35,7 +36,8 @@ export class CoreH5PPluginFileHandler implements CorePluginFileHandler {
protected textUtils: CoreTextUtilsProvider,
protected utils: CoreUtilsProvider,
protected fileProvider: CoreFileProvider,
- protected h5pProvider: CoreH5PProvider) { }
+ protected h5pProvider: CoreH5PProvider,
+ protected translate: TranslateService) { }
/**
* React to a file being deleted.
@@ -112,6 +114,28 @@ export class CoreH5PPluginFileHandler implements CorePluginFileHandler {
return this.h5pProvider.canGetTrustedH5PFileInSite();
}
+ /**
+ * Check if a file is downloadable.
+ *
+ * @param file The file data.
+ * @param siteId Site ID. If not defined, current site.
+ * @return Promise resolved with a boolean and a reason why it isn't downloadable if needed.
+ */
+ async isFileDownloadable(file: CoreWSExternalFile, siteId?: string): Promise<{downloadable: boolean, reason?: string}> {
+ const offlineDisabled = await this.h5pProvider.isOfflineDisabled(siteId);
+
+ if (offlineDisabled) {
+ return {
+ downloadable: false,
+ reason: this.translate.instant('core.h5p.offlinedisabled'),
+ };
+ } else {
+ return {
+ downloadable: true,
+ };
+ }
+ }
+
/**
* Check whether the file should be treated by this handler. It is used in functions where the component isn't used.
*
diff --git a/src/core/login/lang/en.json b/src/core/login/lang/en.json
index fe816b435..054a51168 100644
--- a/src/core/login/lang/en.json
+++ b/src/core/login/lang/en.json
@@ -22,7 +22,6 @@
"emailconfirmsentnoemail": "
An email should have been sent to your address.
It contains easy instructions to complete your registration.
If you continue to have difficulty, contact the site administrator.
",
"emailconfirmsentsuccess": "Confirmation email sent successfully",
"emailnotmatch": "Emails do not match",
- "enterthewordsabove": "Enter the words above",
"erroraccesscontrolalloworigin": "The cross-origin call you're trying to perform has been rejected. Please check https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"errordeletesite": "An error occurred while deleting this site. Please try again.",
"errorupdatesite": "An error occurred while updating the site's token.",
@@ -30,7 +29,6 @@
"firsttime": "Is this your first time here?",
"forcepasswordchangenotice": "You must change your password to proceed.",
"forgotten": "Forgotten your username or password?",
- "getanothercaptcha": "Get another CAPTCHA",
"help": "Help",
"helpmelogin": "
There are many thousands of Moodle sites around the world. This app can only connect to Moodle sites that have specifically enabled Mobile app access.
If you can't connect to your Moodle site then you need to contact your site administrator and ask them to read http://docs.moodle.org/en/Mobile_app
To test the app in a Moodle demo site type teacher or student in the Site address field and click the Connect button.