diff --git a/html/moodle2/CHANGES.txt b/html/moodle2/CHANGES.txt
index 19cd5c1239..5bd214cc32 100755
--- a/html/moodle2/CHANGES.txt
+++ b/html/moodle2/CHANGES.txt
@@ -3,6 +3,15 @@ Release notes for Odissea (http://odissea.xtec.cat)
More information on each of the fixes can be found in the project
development home at https://github.com/projectestac/odissea/
+Changes 17.04.24
+---------------------------------------------------------------------------------------
+- Updated mod/hotpot
+- Updated all related wiris plugins
+- Updated LangPacks
+- Added Vicens Vives modules: one course format, two blocks and a local (Trello #1331)
+- Added H5P module (Trello #1571)
+
+
Changes 17.03.28
---------------------------------------------------------------------------------------
- Moodle upgraded to from 3.1.5 (Trello #1553)
diff --git a/html/moodle2/blocks/courses_vicensvives/README.md b/html/moodle2/blocks/courses_vicensvives/README.md
new file mode 100644
index 0000000000..57e4a719c2
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/README.md
@@ -0,0 +1,105 @@
+Bloque de cursos Vicens Vives
+=============================
+
+Bloque para listar, crear y actualizar cursos a partir de lubros importados del
+web service de Vicens Vives. También permite configurar automáticamente el web
+service de Moodle.
+
+Versiones de Moodle: 2.8, 2.9, 3.0, 3.1
+
+Parámetros de configuración
+---------------------------
+
+ * **URL API**: URL del web service de Vicens Vives. Por defecto es
+ `http://api.vicensvivesdigital.com/rest`.
+ * **Clave compartida**: Clave compartida con el Web Service de Vicens Vives
+ para obtener la información de los libros.
+ * **Secreto compartido**: Secreto compartido con el Web Service de Vicens Vives
+ para obtener la información de los libros.
+ * **Número de cursos**: Número de cursos que se muestra en el bloque.
+ * **Categoría para cursos**: Categoría por defecto para los cursos de libros de
+ Vicens Vives.
+
+Se muestra un aviso si hay algun error en conectar con el web service de Vicens
+Vives o en configurar el web service de Moodle.
+
+Configuración del web service de Moodle
+---------------------------------------
+
+En guardar los parámetros de configuración se prepara Moodle para que desde
+Vicens Vives puedan llamar al web service del plugin local. Se realizan los
+pasos siguientes:
+
+ * Se habilitan los web services en Moodle.
+ * Se habilita el protocolo REST.
+ * Se crea un usuario con username "wsvicensvives".
+ * Se crea un rol con nombre "Web Service Vicens Vives" y permisos para usar web
+ services REST y editar calificaciones.
+ * Se asigna el rol al usuario en contexto global.
+ * Se genera un token para el usuario en el servicio Vicens Vives.
+ * Se envía el token a Vicens Vives mediante una llamada a su web service.
+
+Cliente del web service de Vicens Vives
+---------------------------------------
+
+El fichero `lib/vicensvives.php` contiene la implementación del cliente del web
+service de Vicens Vives. El cliente puede devolver una de los siguientes
+errores:
+
+ * Web service no configurado: falta configurar las credenciales (clave
+ compartida y secreto compartido).
+ * Fallo de autenticación: no se ha podido obtener un token de autenticación con
+ las credenciales configuradas.
+ * Credenciales ya usadas en otro sitio: Vicens Vives no permite usar las mismas
+ credenciales en más de una instancia de Moodle.
+ * Error desconocido: si el web service de Vicens Vives devuelve un tipo de
+ error no reconocido por el cliente.
+
+El token de autenticación se guarda en la base de datos. Si en hacer una llamada
+el web service devuelve un error de token inexistente o caducado, se vuelve a
+pedir uno nueo con las credenciales configuradas.
+
+El bloque de licencias también usa este cliente para llamar al web service.
+
+La API del web service está documentada en http://api.vicensvivesdigital.com/
+
+Creación de cursos
+------------------
+
+El enlace "Crear un nuevo curso" del bloque permite crear un curso a partir de
+un libro seleccionado de una lista de libros disponibles.
+
+El idnumber de los cursos creados tiene el formato `vv-BOOKID-N-SUBJECT`. BOOKID
+es el ID del libro, N es un número secuencial para distinguir cursos creados a
+partir del mismo libro, y SUBJECT es la materia del cursos: "mates", "lengua",
+"naturales" o "sociales". Se asigna el formato de curso Vicens Vives a los
+cursos.
+
+El libro tiene una estructura de tres niveles: unidades, secciones y
+recursos/actividades. En Moodle cada unidad se crea como una sección, y cada
+apartado se crea como una etiqueta y (opcionalmente) una actividad LTI. Cada
+recurso/actividad se crea como una actividad LTI, excepto los enlaces que son
+recursos URL. Los idnumber de las actividades contienen el ID del libro, el tipo
+de elemento y el ID del elemento en el libro.
+
+En el libro | En Moodle | idnumber
+------------|-----------|---------------------------
+Unit | Sección | BOOKID_unit_UNITID
+Section | Etiqueta | BOOKID_lebel_SECTIONID
+ | LTI | BOOKID_section_SECTIONID
+Question | LTI | BOOKID_question_QUESTIONID
+Link | URL | BOOKID_link_LINKID
+Document | LTI | BOOKID_document_DOCUMENTID
+
+La clase `courses_vicensvives_add_book` del fichero `locallib.php` implementa la
+creación y actualización de cursos. Entre versiones diferentes de Moodle sólo
+cambian los métodos `create_mod` y `set_num_sections`.
+
+Actualización de cursos
+-----------------------
+
+El enlace "Ver cursos" muestra una lista de los cursos creados a partir de
+libros importados. El botón "Actualizar" vuelve a importar el lubro y añade los
+contenidos nuevas al curso (no actualiza los contenidos ya creados). Las
+unidades, secciones y actividades se añaden ordenadas según su posición en el
+libro.
diff --git a/html/moodle2/blocks/courses_vicensvives/block_courses_vicensvives.php b/html/moodle2/blocks/courses_vicensvives/block_courses_vicensvives.php
new file mode 100644
index 0000000000..4d215060ab
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/block_courses_vicensvives.php
@@ -0,0 +1,112 @@
+.
+
+require_once($CFG->dirroot . '/course/lib.php');
+
+class block_courses_vicensvives extends block_list {
+
+ public function init() {
+ $this->title = get_string('pluginname', 'block_courses_vicensvives');
+ }
+
+ public function instance_allow_multiple() {
+ return false;
+ }
+
+ public function has_config() {
+ return true;
+ }
+
+ public function instance_config_save($data, $nolongerused = false) {
+ echo "esto no se cuando se ejecuta";die;
+ if (empty($data->quizid)) {
+ $data->quizid = $this->get_owning_quiz();
+ }
+ parent::instance_config_save($data);
+ }
+
+ public function get_content() {
+ global $CFG, $USER, $DB, $OUTPUT;
+
+ if ($this->content !== null) {
+ return $this->content;
+ }
+
+ $this->content = new stdClass;
+ $this->content->items = array();
+ $this->content->icons = array();
+ $this->content->footer = '';
+
+ $icon = $OUTPUT->pix_icon('i/course', '');
+
+ // Administradores.
+ if (is_siteadmin()) {
+ $text = get_string('show_courses', 'block_courses_vicensvives');
+ $url = new moodle_url('/blocks/courses_vicensvives/courses.php');
+ $this->content->items[] = html_writer::link($url, $text);
+
+ $text = get_string('addcourse', 'block_courses_vicensvives');
+ $url = new moodle_url('/blocks/courses_vicensvives/books.php');
+ $this->content->items[] = html_writer::link($url, $text);
+
+ return $this->content;
+ }
+
+ // Profesores y gestores
+ $contextcat = context_coursecat::instance($CFG->block_courses_vicensvives_defaultcategory);
+ if (isloggedin() and !isguestuser()) {
+ $mycourses = enrol_get_my_courses(null, 'visible DESC, fullname ASC');
+ if (!$mycourses and !has_capability('moodle/course:create', $contextcat)) {
+ return $this->content;
+ }
+
+ // Filtrar mycourses con sólo los de VV.
+ $courses = $mycourses;
+
+ $i = 0;
+ foreach ($courses as $course) {
+ // Falta filtrar VV.
+ $coursecontext = context_course::instance($course->id); // Eliminamos alumnos de esta manera.
+ if (has_capability('moodle/course:update', $coursecontext) and $i < $CFG->block_courses_vicensvives_maxcourses) {
+ $linkcss = $course->visible ? "" : " class=\"dimmed\" ";
+ $text = $icon . ' ' . format_string($course->shortname, true, array('context' => $coursecontext));
+ $url = new moodle_url('/course/view.php', array('id' => $course->id));
+ $attributes = array('class' => $course->visible ? '' : 'dimmed');
+ $this->content->items[] = html_writer::link($url, $text, $attributes);
+ $i++;
+ } else if ($i >= $CFG->block_courses_vicensvives_maxcourses) {
+ $text = get_string('show_more', 'block_courses_vicensvives');
+ $url = new moodle_url('/blocks/courses_vicensvives/courses.php');
+ $this->content->items[] = html_writer::link($url, $text);
+ break;
+ }
+ }
+
+ if (has_capability('moodle/course:create', $contextcat)) {
+ $text = get_string('addcourse', 'block_courses_vicensvives');
+ $url = new moodle_url('/blocks/courses_vicensvives/books.php');
+ $this->content->items[] = html_writer::link($url, $text);
+ }
+
+ return $this->content;
+ }
+
+ return $this->content;
+ }
+
+}
+
+
diff --git a/html/moodle2/blocks/courses_vicensvives/books.php b/html/moodle2/blocks/courses_vicensvives/books.php
new file mode 100644
index 0000000000..ed6cc7c8d8
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/books.php
@@ -0,0 +1,223 @@
+.
+
+require('../../config.php');
+require_once($CFG->dirroot.'/lib/resourcelib.php');
+require_once($CFG->dirroot.'/lib/tablelib.php');
+require_once($CFG->dirroot.'/blocks/courses_vicensvives/locallib.php');
+
+function str_contains($haystack, $needle) {
+ // Normaliza el texto a carñacteres ASCII en mínuscula y sin espacios duplicados
+ $normalize = function($text) {
+ $text = core_text::specialtoascii($text);
+ $text = core_text::strtolower($text);
+ $text = preg_replace('/\s+/', ' ', trim($text));
+ return $text;
+ };
+ $haystack = $normalize($haystack);
+ $needle = $normalize($needle);
+ return core_text::strpos($haystack, $needle) !== false;
+}
+
+require_login(null, false);
+
+$context = context_coursecat::instance($CFG->block_courses_vicensvives_defaultcategory);
+require_capability('moodle/course:create', $context);
+
+$baseurl = new moodle_url('/blocks/courses_vicensvives/books.php');
+
+$PAGE->set_context($context);
+$PAGE->set_url($baseurl);
+$PAGE->set_pagelayout('standard');
+$PAGE->set_title(get_string('books', 'block_courses_vicensvives'));
+$PAGE->set_heading(get_string('books', 'block_courses_vicensvives'));
+
+$viewbooks = new moodle_url('/blocks/courses_vicensvives/books.php');
+$PAGE->navbar->add(get_string('blocks'));
+$PAGE->navbar->add(get_string('pluginname', 'block_courses_vicensvives'));
+$PAGE->navbar->add(get_string('books', 'block_courses_vicensvives'), $viewbooks);
+
+$ws = new vicensvives_ws();
+
+$lang = $CFG->lang == 'ca' ? 'ca' : 'es';
+
+try {
+ $levels = array(0 => '');
+ foreach ($ws->levels($lang) as $level) {
+ $levels[$level->idLevel] = $level->shortname;
+ }
+
+ $subjects = array(0 => '');
+ foreach ($ws->subjects($lang) as $subject) {
+ $subjects[$subject->idSubject] = $subject->name;
+ }
+
+ $allbooks = array();
+ foreach ($ws->books() as $book) {
+ $allbooks[$book->idBook] = $book;
+ }
+
+} catch (vicensvives_ws_error $e) {
+ echo $OUTPUT->header();
+ echo html_writer::tag('p', $e->getMessage(), array('class' => 'alert alert-error'));
+ echo $OUTPUT->footer();
+ exit;
+}
+
+if ($bookid = optional_param('create', false, PARAM_INT)) {
+ if (!isset($allbooks[$bookid])) {
+ redirect($baseurl);
+ }
+
+ $book = $allbooks[$bookid];
+ $customdata = array(
+ 'fullname' => $book->fullname,
+ 'subject' => isset($subjects[$book->idSubject]) ? $subjects[$book->idSubject] : '',
+ 'level' => isset($levels[$book->idLevel]) ? $levels[$book->idLevel] : '',
+ 'isbn' => $book->isbn,
+ );
+ $formurl = new moodle_url($baseurl, array('create' => $bookid));
+ $form = new \block_courses_vicensvives\create_form($formurl, $customdata, 'post');
+
+ if ($form->is_cancelled()) {
+ redirect($baseurl);
+ } else if ($data = $form->get_data()) {
+ $PAGE->set_pagelayout('base');
+ echo $OUTPUT->header();
+ echo $OUTPUT->heading(get_string('creatingcourse', 'block_courses_vicensvives') . ': ' . $book->fullname);
+
+ @set_time_limit(0);
+ raise_memory_limit(MEMORY_HUGE);
+
+ $progress = new progress_bar();
+ $courseid = courses_vicensvives_add_book::create($bookid, $data->format, $progress);
+
+ $errormsg = courses_vicensvives_add_book::enrol_user($courseid, $USER->id);
+ if ($errormsg) {
+ echo $OUTPUT->notification($errormsg, 'warning');
+ }
+
+ $urlcourse = new moodle_url('/course/view.php', array('id' => $courseid));
+ $link = html_writer::link($urlcourse, get_string('gotocourse', 'block_courses_vicensvives'));
+ echo html_writer::div("($link)", 'continuebutton');
+
+ echo $OUTPUT->footer();
+ } else {
+ echo $OUTPUT->header();
+ $form->display();
+ echo $OUTPUT->footer();
+ }
+
+ exit;
+}
+
+$search = array(
+ 'fullname' => optional_param('fullname', '', PARAM_TEXT),
+ 'idsubject' => optional_param('idsubject', '', PARAM_INT),
+ 'idlevel' => optional_param('idlevel', '', PARAM_INT),
+ 'isbn' => optional_param('isbn', '', PARAM_TEXT),
+);
+
+$customdata = array('levels' => $levels, 'subjects' => $subjects, 'search' => $search);
+$form = new \block_courses_vicensvives\filter_form(null, $customdata, 'get');
+
+if ($form->is_cancelled()) {
+ redirect($baseurl);
+}
+
+$filteredbooks = array();
+
+foreach ($allbooks as $book) {
+ if ($search['fullname'] and !str_contains($book->fullname, $search['fullname'])) {
+ continue;
+ }
+ if ($search['idsubject'] and $book->idSubject != $search['idsubject']) {
+ continue;
+ }
+ if ($search['idlevel'] and $book->idLevel != $search['idlevel']) {
+ continue;
+ }
+ if ($search['isbn'] and !str_contains($book->isbn, $search['isbn'])) {
+ continue;
+ }
+ $filteredbooks[$book->idBook] = $book;
+}
+
+
+echo $OUTPUT->header();
+echo $OUTPUT->heading('');
+
+$form->display();
+
+if ($filteredbooks) {
+ $a = array('total' => count($allbooks), 'found' => count($filteredbooks));
+ $string = get_string('searchresult', 'block_courses_vicensvives', $a);
+} else {
+ $string = get_string('searchempty', 'block_courses_vicensvives', count($allbooks));
+}
+echo $OUTPUT->heading($string);
+
+$table = new flexible_table('vicensvives_books');
+$url = new moodle_url($baseurl, $search);
+$table->define_baseurl($url);
+$table->define_columns(array('name', 'subject', 'level', 'isbn', 'actions'));
+$table->set_attribute('class', 'vicensvives_books');
+$table->column_class('actions', 'vicensvives_actions');
+$table->define_headers(array(
+ get_string('fullname', 'block_courses_vicensvives'),
+ get_string('subject', 'block_courses_vicensvives'),
+ get_string('level', 'block_courses_vicensvives'),
+ get_string('isbn', 'block_courses_vicensvives'),
+ get_string('actions', 'block_courses_vicensvives'),
+));
+$table->sortable(true, 'name');
+$table->no_sorting('actions');
+$table->pagesize(50, count($filteredbooks));
+$table->setup();
+
+$rows = array();
+foreach ($filteredbooks as $book) {
+ $row = new stdClass;
+ $row->name = $book->fullname;
+ $row->subject = isset($subjects[$book->idSubject]) ? $subjects[$book->idSubject] : '';
+ $row->level = isset($levels[$book->idLevel]) ? $levels[$book->idLevel] : '';
+ $row->isbn = $book->isbn;
+ $addurl = new moodle_url('/blocks/courses_vicensvives/books.php', array('create' => $book->idBook));
+ $title = get_string('addcourse', 'block_courses_vicensvives');
+ $icon = html_writer::empty_tag('img', array('src' => $OUTPUT->pix_url('t/addfile'), 'alt' => $title));
+ $row->actions = html_writer::link($addurl, $icon, array('title' => $title));
+ $rows[] = $row;
+}
+
+// Ordenación
+foreach ($table->get_sort_columns() as $column => $order) {
+ core_collator::asort_objects_by_property($rows, $column);
+ if ($order == SORT_DESC) {
+ $rows = array_reverse($rows);
+ }
+ break; // Ordenación sólo por el primer criterio
+}
+
+// Paginación
+$rows = array_slice($rows, $table->get_page_start(), $table->get_page_size());
+
+foreach ($rows as $row) {
+ $table->add_data(array($row->name, $row->subject, $row->level, $row->isbn, $row->actions));
+}
+
+$table->finish_output();
+
+echo $OUTPUT->footer();
diff --git a/html/moodle2/blocks/courses_vicensvives/classes/create_form.php b/html/moodle2/blocks/courses_vicensvives/classes/create_form.php
new file mode 100644
index 0000000000..8453888ed0
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/classes/create_form.php
@@ -0,0 +1,63 @@
+.
+
+namespace block_courses_vicensvives;
+
+defined('MOODLE_INTERNAL') || die;
+
+require_once($CFG->dirroot.'/lib/formslib.php');
+
+class create_form extends \moodleform {
+
+ public function definition() {
+ global $CFG;
+
+ $mform = $this->_form;
+
+ $mform->addElement('header', 'addcourse', get_string('addcourse', 'block_courses_vicensvives'));
+
+ $label = get_string('fullname', 'block_courses_vicensvives');
+ $mform->addElement('static', 'fullname', $label, $this->_customdata['fullname']);
+
+ $label = get_string('level', 'block_courses_vicensvives');
+ $mform->addElement('static', 'level', $label, $this->_customdata['level']);
+
+ $label = get_string('subject', 'block_courses_vicensvives');
+ $mform->addElement('static', 'subject', $label, $this->_customdata['subject']);
+
+ $label = get_string('isbn', 'block_courses_vicensvives');
+ $mform->addElement('static', 'isbn', $label, $this->_customdata['isbn']);
+
+ $options = array(
+ 'vv' => 'Vicens Vives',
+ 'topics' => get_string('standardformat', 'block_courses_vicensvives'),
+ );
+ $mform->addElement('select', 'format', get_string('format', 'block_courses_vicensvives'), $options);
+ $mform->setType('format', PARAM_ALPHA);
+
+ $text = get_string('createwarning', 'block_courses_vicensvives');
+ $content = \html_writer::div($text, 'vicensvives_create_warning');
+ $mform->addElement('static', 'warning', '', $content);
+
+ $buttonarray = array();
+ $label = get_string('create', 'block_courses_vicensvives');
+ $buttonarray[] = $mform->createElement('submit', 'submitbutton', $label);
+ $label = get_string('cancel', 'block_courses_vicensvives');
+ $buttonarray[] = $mform->createElement('cancel', 'cancel', $label);;
+ $mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
+ $mform->closeHeaderBefore('buttonar');
+ }
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/classes/event/webservice_called.php b/html/moodle2/blocks/courses_vicensvives/classes/event/webservice_called.php
new file mode 100644
index 0000000000..0a95b0f0e9
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/classes/event/webservice_called.php
@@ -0,0 +1,54 @@
+.
+
+namespace block_courses_vicensvives\event;
+
+class webservice_called extends \core\event\base {
+
+ protected function init() {
+ $this->data['crud'] = 'r';
+ $this->data['edulevel'] = self::LEVEL_OTHER;
+ }
+
+ public static function get_name() {
+ return get_string('webservicecalled', 'block_courses_vicensvives');
+ }
+
+ public function get_description() {
+ return 'Se ha llamado el webservice: ' . $this->get_info();
+ }
+
+ public function get_legacy_logdata() {
+ $info = $this->get_info();
+
+ if (strlen($info) > 255) {
+ $info = substr($info, 0, 252) . '...';
+ }
+
+ return array($this->courseid, 'vicensvives', 'webservice', $this->other['script'], $info);
+ }
+
+ private function get_info() {
+ $method = strtoupper($this->other['method']);
+ $path = $this->other['path'];
+ $status = $this->other['status'];
+ $info = "$method $path => $status";
+ if (!empty($this->other['message'])) {
+ $info .= ' ' . $this->other['message'];
+ }
+ return $info;
+ }
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/classes/filter_form.php b/html/moodle2/blocks/courses_vicensvives/classes/filter_form.php
new file mode 100644
index 0000000000..63c16204b7
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/classes/filter_form.php
@@ -0,0 +1,63 @@
+.
+
+namespace block_courses_vicensvives;
+
+defined('MOODLE_INTERNAL') || die;
+
+require_once($CFG->dirroot.'/lib/formslib.php');
+
+class filter_form extends \moodleform {
+
+ public function definition() {
+ global $CFG;
+
+ $mform = $this->_form;
+ $levels = $this->_customdata['levels'];
+ $subjects = $this->_customdata['subjects'];
+ $search = $this->_customdata['search'];
+
+ $mform->addElement('header', 'search', get_string('search'));
+ if (!$search['fullname'] and !$search['idsubject'] and !$search['idlevel'] and !$search['isbn']) {
+ $mform->setExpanded('search', false, true);
+ }
+
+ $string = get_string('fullname', 'block_courses_vicensvives');
+ $mform->addElement('text', 'fullname', $string);
+ $mform->setType('fullname', PARAM_TEXT);
+ $mform->setDefault('fullname', $search['fullname']);
+
+ $string = get_string('subject', 'block_courses_vicensvives');
+ $mform->addElement('select', 'idsubject', $string, $subjects);
+ $mform->setType('idsubject', PARAM_INT);
+ $mform->setDefault('idsubject', $search['idsubject']);
+
+ $string = get_string('level', 'block_courses_vicensvives');
+ $mform->addElement('select', 'idlevel', $string, $levels);
+ $mform->setType('idlevel', PARAM_INT);
+ $mform->setDefault('idlevel', $search['idlevel']);
+
+ $string = get_string('isbn', 'block_courses_vicensvives');
+ $mform->addElement('text', 'isbn', $string);
+ $mform->setType('isbn', PARAM_TEXT);
+ $mform->setDefault('isbn', $search['isbn']);
+
+ $buttonarray = array();
+ $buttonarray[] = &$mform->createElement('submit', 'search', get_string('search'));
+ $buttonarray[] = &$mform->createElement('cancel', 'reset', get_string('reset'));
+ $mform->addGroup($buttonarray, 'buttonar', '', array(' '), false);
+ }
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/courses.php b/html/moodle2/blocks/courses_vicensvives/courses.php
new file mode 100644
index 0000000000..59d835948f
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/courses.php
@@ -0,0 +1,115 @@
+.
+
+require('../../config.php');
+require_once("$CFG->dirroot/blocks/courses_vicensvives/locallib.php");
+
+if (!isloggedin() or isguestuser()) {
+ require_login();
+}
+require_login(null, false);
+
+$returnurl = new moodle_url('/blocks/courses_vicensvives/courses.php');
+$PAGE->set_url($returnurl);
+
+$PAGE->set_context(context_system::instance());
+
+$PAGE->set_pagelayout('standard');
+
+$PAGE->set_title(get_string('courses', 'block_courses_vicensvives'));
+$PAGE->set_heading(get_string('courses', 'block_courses_vicensvives'));
+
+$viewcourses = new moodle_url('/blocks/courses_vicensvives/courses.php');
+$PAGE->navbar->add(get_string('blocks'));
+$PAGE->navbar->add(get_string('pluginname', 'block_courses_vicensvives'));
+$PAGE->navbar->add(get_string('courses', 'block_courses_vicensvives'), $viewcourses);
+
+if ($courseid = optional_param('update', false, PARAM_INT)) {
+ $context = context_coursecat::instance($CFG->block_courses_vicensvives_defaultcategory);
+ require_capability('moodle/course:create', $context);
+ require_sesskey();
+
+ @set_time_limit(0);
+ raise_memory_limit(MEMORY_HUGE);
+
+ $PAGE->set_pagelayout('base');
+ echo $OUTPUT->header();
+
+ $coursename = format_string(get_course($courseid)->fullname);
+ echo $OUTPUT->heading(get_string('updateingcourse', 'block_courses_vicensvives') . ': ' . $coursename);
+
+ $progress = new progress_bar();
+ $updatedunits = courses_vicensvives_add_book::update($courseid , $progress);
+
+ if ($updatedunits) {
+ echo $OUTPUT->heading(get_string('updatedunits', 'block_courses_vicensvives'), 4);
+ echo html_writer::start_tag('ul', array('class' => 'vicensives_newunits'));
+ foreach ($updatedunits as $unit) {
+ echo html_writer::tag('li', html_writer::tag('strong', $unit->label . '.') . ' ' . $unit->name);
+ }
+ echo html_writer::end_tag('ul');
+ } else {
+ echo $OUTPUT->heading(get_string('noupdatedunits', 'block_courses_vicensvives'), 4);
+ }
+
+ $urlcourse = new moodle_url('/course/view.php', array('id' => $courseid));
+ $link = html_writer::link($urlcourse, get_string('gotocourse', 'block_courses_vicensvives'));
+ echo html_writer::div("($link)", 'continuebutton');
+
+ echo $OUTPUT->footer();
+
+ exit;
+}
+
+$fields = 'id, format, fullname, visible, summary, summaryformat';
+
+if (has_capability('moodle/course:update', context_system::instance())) {
+ $select = $DB->sql_like('idnumber', ':idnumber');
+ $params = array('idnumber' => 'vv-%');
+ $courses = $DB->get_records_select('course', $select, $params, 'sortorder', $fields);
+} else {
+ $courses = array();
+ foreach (enrol_get_my_courses($fields, 'visible DESC, fullname ASC') as $course) {
+ if (!preg_match('/^vv-/i', $course->idnumber)) {
+ continue;
+ }
+ $coursecontext = context_course::instance($course->id);
+ if ($course->visible or has_capability('moodle/course:viewhiddencourses', $coursecontext)) {
+ $courses[] = $course;
+ }
+ }
+}
+
+if (!$courses) {
+ redirect($CFG->wwwroot, get_string('nohaycursos', 'block_courses_vicensvives'), 10);
+}
+
+echo $OUTPUT->header();
+
+$contextcat = context_coursecat::instance($CFG->block_courses_vicensvives_defaultcategory);
+if (has_capability('moodle/course:create', $contextcat)) {
+ $url = new moodle_url('/blocks/courses_vicensvives/books.php');
+ $text = get_string('addcourse', 'block_courses_vicensvives');
+ echo $OUTPUT->single_button($url, $text);
+}
+
+$renderer = $PAGE->get_renderer('block_courses_vicensvives');
+
+foreach ($courses as $course) {
+ echo $renderer->course_info_box($course);
+}
+
+echo $OUTPUT->footer();
diff --git a/html/moodle2/blocks/courses_vicensvives/db/access.php b/html/moodle2/blocks/courses_vicensvives/db/access.php
new file mode 100644
index 0000000000..78bc5579cd
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/db/access.php
@@ -0,0 +1,38 @@
+.
+
+
+$capabilities = array(
+
+ 'block/courses_vicensvives:myaddinstance' => array(
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_SYSTEM,
+ 'archetypes' => array(),
+ 'clonepermissionsfrom' => 'moodle/my:manageblocks'
+ ),
+
+ 'block/courses_vicensvives:addinstance' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_XSS,
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_BLOCK,
+ 'archetypes' => array(
+ 'editingteacher' => CAP_ALLOW,
+ 'manager' => CAP_ALLOW
+ ),
+
+ 'clonepermissionsfrom' => 'moodle/site:manageblocks'
+ ),
+);
diff --git a/html/moodle2/blocks/courses_vicensvives/lang/ca/block_courses_vicensvives.php b/html/moodle2/blocks/courses_vicensvives/lang/ca/block_courses_vicensvives.php
new file mode 100644
index 0000000000..f3ac416ba1
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/lang/ca/block_courses_vicensvives.php
@@ -0,0 +1,93 @@
+.
+
+$string['pluginname'] = 'Cursos Vicens Vives';
+
+// Settings.
+$string['apiurl'] = 'URL API';
+$string['sharekey'] = 'Clau compartida';
+$string['sharepass'] = 'Secret compartit';
+
+$string['configapiurl'] = 'URL del servei web de Vicens Vives';
+$string['configsharekey'] = 'Clau compartida amb el servei web de Vicens Vives per obtenir la informació dels llibres.';
+$string['configsharepass'] = 'Secret compartit amb el servei web de Vicens Vives per obternir la informació dels llibres.';
+
+$string['connectok'] = "La connexió amb Vicens Vives s'hi ha establert correctament";
+$string['connectfail'] = "La connexió amb Vicens Vives ha fallat; comprova'n les credencials";
+
+$string['maxcourses'] = 'Nombre de cursos';
+$string['defaultcategory'] = 'Categoria per a cursos';
+
+$string['configdefaultcategory'] = 'Categoria per defecte per als cursos de llibres de Vicens Vives.';
+$string['configmaxcourses'] = 'Nombre de cursos que es mostra en el bloc.';
+
+$string['configmoodlews'] = 'Servei web de Moodle';
+$string['configmoodlewsdesc'] = 'Es configurarà el servei web de Moodle i se sincronitzarà el token amb Vicens Vives.';
+
+// Errors
+$string['wsnotconfigured'] = 'El servei web de Vicens Vives no està configurat.';
+$string['wsauthfailed'] = "Ha fallat l'autentificació amb el servei web de Vicens Vives. ";
+$string['wsunknownerror'] = 'Hi ha hagut un error inesperat en connectar amb el servei web de Vicens Vives.';
+$string['wssitemismatch'] = "Les credencials (clau i secret compartit) ja s'estan utilitzant en una altra instal·lació de Moodle.";
+$string['booknotfetched'] = "No s'hi ha pogut obtenir el llibre.";
+$string['moodlewsnotinstalled'] = "El plugin del servei web de qualificacions no està instal·lat.";
+$string['moodlewsnotenabled'] = "El servei web de qualificacions no està activat; es configurarà quan es desin els canvis.";
+
+// Contenido del bloque.
+$string['show_more'] = 'Veure més...';
+$string['show_courses'] = 'Veure cursos';
+
+// Páginas del bloque.
+$string['courses'] = 'Cursos';
+$string['books'] = 'Llibres';
+$string['addcourse'] = 'Crear un curs nou';
+$string['nohaycursos'] = 'No hi ha cap curs per mostrar';
+$string['searchresult'] = '{$a->found} de {$a->total} llibres';
+$string['searchempty'] = '{$a} llibres';
+$string['standardformat'] = 'Estàndard de Moodle (per unitats)';
+
+// Tabla libros
+$string['fullname'] = 'Nom';
+$string['subject'] = 'Assignatura';
+$string['level'] = 'Nivell';
+$string['isbn'] = 'ISBN';
+$string['actions'] = 'Accions';
+$string['nobooksfound'] = "No s'hi han trobat llibres";
+
+// Crear el curs.
+$string['create'] = 'Crear';
+$string['format'] = 'Format';
+$string['cancel'] = 'Cancel·lar';
+$string['createwarning'] = 'Aquest procés pot trigar uns quants minuts.';
+$string['creatingcourse'] = 'Creant curs';
+$string['gotocourse'] = 'Anar al curs';
+$string['editingteachernotexist'] = "L'usuari no s'hi ha pogut matricular: El rol 'editingteacher' no existeix.";
+$string['manualnotenable'] = "L'usuari no s'hi ha pogut matricular: La matrícula manual no està activada. ";
+$string['nofetchbook'] = "No s'hi ha pogut obtenir el llibre";
+$string['nocreatecourse'] = "No s'hi ha pogut crear el curs";
+$string['nocreatestructure'] = "No s'hi ha pogut crear l'estructura del curs";
+
+// Actualizar curso
+$string['updateingcourse'] = 'Actualitzant curs';
+$string['updatedunits'] = 'Unitats afegides o actualitzades';
+$string['noupdatedunits'] = 'No hi ha actualitzacions per a aquest llibre.';
+
+// Permisos
+$string['courses_vicensvives:addinstance'] = 'Crear instància del bloc.';
+$string['courses_vicensvives:myaddinstance'] = 'Crear instància del bloc en my.';
+
+// Event
+$string['eventwebservicecalled'] = 'Servei web cridat';
diff --git a/html/moodle2/blocks/courses_vicensvives/lang/en/block_courses_vicensvives.php b/html/moodle2/blocks/courses_vicensvives/lang/en/block_courses_vicensvives.php
new file mode 100644
index 0000000000..66696ec3f0
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/lang/en/block_courses_vicensvives.php
@@ -0,0 +1,93 @@
+.
+
+$string['pluginname'] = 'Courses Vicens Vives';
+
+// Settings.
+$string['apiurl'] = 'URL API';
+$string['sharekey'] = 'Clave compartida';
+$string['sharepass'] = 'Secreto compartido';
+
+$string['configapiurl'] = 'URL del web service de Vicens Vives';
+$string['configsharekey'] = 'Clave compartida con el Web Service de Vicens Vives para obtener la información de los libros.';
+$string['configsharepass'] = 'Secreto compartido con el Web Service de Vicens Vives para obtener la información de los libros.';
+
+$string['connectok'] = 'La conexión con Vicens Vives se ha establecido correctamente';
+$string['connectfail'] = 'La conexión con Vicens Vives ha fallado, comprueba las credenciales';
+
+$string['maxcourses'] = 'Número de cursos';
+$string['defaultcategory'] = 'Categoría para cursos';
+
+$string['configdefaultcategory'] = 'Categoría por defecto para los cursos de libros de Vicens Vives.';
+$string['configmaxcourses'] = 'Número de cursos que se muestra en el bloque.';
+
+$string['configmoodlews'] = 'Web service de Moodle';
+$string['configmoodlewsdesc'] = 'Se configurará el web service de Moodle y se sincronizará el token con Vicens Vives.';
+
+// Errors
+$string['wsnotconfigured'] = 'El Web Service de Vicens Vives no está configurado.';
+$string['wsauthfailed'] = 'Ha fallado la autentificación con el Web Service de Vicens Vives.';
+$string['wsunknownerror'] = 'Se ha producido un error inesperado en conectar con el Web Service de Vicens Vives.';
+$string['wssitemismatch'] = 'Las credenciales (clave y secreto compartido) ya se están utilitzando en otra instalación de Moodle.';
+$string['booknotfetched'] = 'No se ha podido obtener el libro.';
+$string['moodlewsnotinstalled'] = 'El plugin del web service de calificaciones no está instalado.';
+$string['moodlewsnotenabled'] = 'El web service de calificaciones no está activado, se configurará en guardar los cambios.';
+
+// Contenido del bloque.
+$string['show_more'] = 'Ver más...';
+$string['show_courses'] = 'Ver cursos';
+
+// Páginas del bloque.
+$string['courses'] = 'Cursos';
+$string['books'] = 'Libros';
+$string['addcourse'] = 'Crear un nuevo curso';
+$string['nohaycursos'] = 'No hay cursos que mostrar';
+$string['searchresult'] = '{$a->found} de {$a->total} libros';
+$string['searchempty'] = '{$a} libros';
+$string['standardformat'] = 'Estándar de Moodle (por temas)';
+
+// Tabla libros
+$string['fullname'] = 'Nombre';
+$string['subject'] = 'Materia';
+$string['level'] = 'Nivel';
+$string['isbn'] = 'ISBN';
+$string['actions'] = 'Acciones';
+$string['nobooksfound'] = 'No se han encontrado libros';
+
+// Crear el curs.
+$string['create'] = 'Crear';
+$string['format'] = 'Formato';
+$string['cancel'] = 'Cancelar';
+$string['createwarning'] = 'Este proceso puede tardar unos minutos.';
+$string['creatingcourse'] = 'Creando curso';
+$string['gotocourse'] = 'Ir al curso';
+$string['editingteachernotexist'] = "No se ha podido matricular al usuario: El rol 'editingteacher' no existe.";
+$string['manualnotenable'] = "No se ha podido matricular al usuario: La matriculación manual no está activada.";
+$string['nofetchbook'] = 'No se ha podido obtener el libro';
+$string['nocreatecourse'] = 'Nos se ha podido crear el curso';
+$string['nocreatestructure'] = 'No se ha podido crear la estructura del curso';
+
+// Actualizar curso
+$string['updateingcourse'] = 'Actualizando curso';
+$string['updatedunits'] = 'Unidades añadidas o actualizadas';
+$string['noupdatedunits'] = 'No hay actualizaciones para este libro.';
+
+// Permisos
+$string['courses_vicensvives:addinstance'] = 'Crear instancia del bloque.';
+$string['courses_vicensvives:myaddinstance'] = 'Crear instancia del bloque en my.';
+
+// Event
+$string['eventwebservicecalled'] = 'Web service llamado';
diff --git a/html/moodle2/blocks/courses_vicensvives/lang/es/block_courses_vicensvives.php b/html/moodle2/blocks/courses_vicensvives/lang/es/block_courses_vicensvives.php
new file mode 100644
index 0000000000..67ba644478
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/lang/es/block_courses_vicensvives.php
@@ -0,0 +1,93 @@
+.
+
+$string['pluginname'] = 'Cursos Vicens Vives';
+
+// Settings.
+$string['apiurl'] = 'URL API';
+$string['sharekey'] = 'Clave compartida';
+$string['sharepass'] = 'Secreto compartido';
+
+$string['configapiurl'] = 'URL del web service de Vicens Vives';
+$string['configsharekey'] = 'Clave compartida con el web service de Vicens Vives para obtener la información de los libros.';
+$string['configsharepass'] = 'Secreto compartido con el web service de Vicens Vives para obtener la información de los libros.';
+
+$string['connectok'] = 'La conexión con Vicens Vives se ha establecido correctamente';
+$string['connectfail'] = 'La conexión con Vicens Vives ha fallado, comprueba las credenciales';
+
+$string['maxcourses'] = 'Número de cursos';
+$string['defaultcategory'] = 'Categoría para cursos';
+
+$string['configdefaultcategory'] = 'Categoría por defecto para los cursos de libros de Vicens Vives.';
+$string['configmaxcourses'] = 'Número de cursos que se muestra en el bloque.';
+
+$string['configmoodlews'] = 'Web service de Moodle';
+$string['configmoodlewsdesc'] = 'Se configurará el web service de Moodle y se sincronizará el token con Vicens Vives.';
+
+// Errors
+$string['wsnotconfigured'] = 'El web service de Vicens Vives no está configurado.';
+$string['wsauthfailed'] = 'Ha fallado la autentificación con el web service de Vicens Vives.';
+$string['wsunknownerror'] = 'Se ha producido un error inesperado al conectar con el web service de Vicens Vives.';
+$string['wssitemismatch'] = 'Las credenciales (clave y secreto compartido) ya se están utilitzando en otra instalación de Moodle.';
+$string['booknotfetched'] = 'No se ha podido obtener el libro.';
+$string['moodlewsnotinstalled'] = 'El plugin del web service de calificaciones no está instalado.';
+$string['moodlewsnotenabled'] = 'El web service de calificaciones no está activado; se configurará al guardar los cambios.';
+
+// Contenido del bloque.
+$string['show_more'] = 'Ver más...';
+$string['show_courses'] = 'Ver cursos';
+
+// Páginas del bloque.
+$string['courses'] = 'Cursos';
+$string['books'] = 'Libros';
+$string['addcourse'] = 'Crear un nuevo curso';
+$string['nohaycursos'] = 'No hay cursos que mostrar';
+$string['searchresult'] = '{$a->found} de {$a->total} libros';
+$string['searchempty'] = '{$a} libros';
+$string['standardformat'] = 'Estándar de Moodle (por temas)';
+
+// Tabla libros
+$string['fullname'] = 'Nombre';
+$string['subject'] = 'Asignatura';
+$string['level'] = 'Nivel';
+$string['isbn'] = 'ISBN';
+$string['actions'] = 'Acciones';
+$string['nobooksfound'] = 'No se han encontrado libros';
+
+// Crear el curs.
+$string['create'] = 'Crear';
+$string['format'] = 'Formato';
+$string['cancel'] = 'Cancelar';
+$string['createwarning'] = 'Este proceso puede tardar unos minutos.';
+$string['creatingcourse'] = 'Creando curso';
+$string['gotocourse'] = 'Ir al curso';
+$string['editingteachernotexist'] = "No se ha podido matricular al usuario: El rol 'editingteacher' no existe.";
+$string['manualnotenable'] = "No se ha podido matricular al usuario: La matriculación manual no está activada.";
+$string['nofetchbook'] = 'No se ha podido obtener el libro';
+$string['nocreatecourse'] = 'No se ha podido crear el curso';
+$string['nocreatestructure'] = 'No se ha podido crear la estructura del curso';
+
+// Actualizar curso
+$string['updateingcourse'] = 'Actualizando curso';
+$string['updatedunits'] = 'Unidades añadidas o actualizadas';
+$string['noupdatedunits'] = 'No hay actualizaciones para este libro.';
+
+// Permisos
+$string['courses_vicensvives:addinstance'] = 'Crear instancia del bloque.';
+$string['courses_vicensvives:myaddinstance'] = 'Crear instancia del bloque en my.';
+
+// Event
+$string['eventwebservicecalled'] = 'Web service llamado';
diff --git a/html/moodle2/blocks/courses_vicensvives/lib/vicensvives.php b/html/moodle2/blocks/courses_vicensvives/lib/vicensvives.php
new file mode 100644
index 0000000000..d8d8e2de05
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/lib/vicensvives.php
@@ -0,0 +1,228 @@
+.
+
+class vicensvives_ws {
+
+ const WS_URL = 'http://api.vicensvivesdigital.com/rest';
+
+ public static function configured() {
+ global $CFG;
+
+ return !empty($CFG->vicensvives_sharekey) and !empty($CFG->vicensvives_sharepass);
+ }
+
+ public function book($bookid) {
+ if (!$bookid) {
+ return null;
+ }
+ return $this->call('get', 'books/' . $bookid, array('lti_info' => "true"));
+ }
+
+ public function books() {
+ $books = $this->call('get', 'books', array('own' => "true")) ?: array();
+
+ foreach ($books as $key => $book) {
+ if (empty($book->idBook)) {
+ unset($books[$key]);
+ }
+ $book->isbn = isset($book->isbn) ? $book->isbn : '';
+ }
+
+ return $books;
+ }
+
+ public function levels($lang) {
+ $levels = $this->call('get', 'levels', array('lang' => $lang)) ?: array();
+ foreach ($levels as $key => $level) {
+ if (empty($level->idLevel)) {
+ unset($levels[$key]);
+ }
+ }
+ return $levels;
+ }
+
+ public function licenses($book=null, $activated=null) {
+ $params = array();
+ if ($book !== null) {
+ $params['book'] = (int) $book;
+ }
+ if ($activated !== null) {
+ $params['activated'] = (bool) $activated;
+ }
+ return $this->call('get', 'licenses', $params);
+ }
+
+ public function send_token($token) {
+ global $CFG;
+ $params = array(
+ 'url' => $CFG->wwwroot,
+ 'token' => $token,
+ 'identifier' => get_site_identifier(),
+ 'serviceEndpoint' => $CFG->wwwroot . '/webservice/rest/server.php',
+ );
+ return (bool) $this->call('post', 'schools/moodle', $params);
+ }
+
+ public function subjects($lang) {
+ $subjects = $this->call('get', 'subjects', array('lang' => $lang)) ?: array();
+ foreach ($subjects as $key => $subject) {
+ if (empty($subject->idSubject)) {
+ unset($subjects[$key]);
+ }
+ }
+ return $subjects;
+ }
+
+ private function call($method, $path, $params=null) {
+ global $CFG;
+
+ if (empty($CFG->vicensvives_sharekey) or empty($CFG->vicensvives_sharepass)) {
+ throw new vicensvives_ws_error('wsnotconfigured');
+ }
+
+ if (empty($CFG->vicensvives_accesstoken)) {
+ $this->refresh_token();
+ }
+
+ list($status, $response) = $this->curl($method, $path, $params);
+
+ // El token no existe o ha caducado
+ if ($status == 401 and isset($response->cod) and $response->cod == 401007) {
+ $this->refresh_token();
+ list($status, $response) = $this->curl($method, $path, $params);
+ }
+
+ // Credenciales ya usadas en otro sitio (schools/moodle)
+ if ($status == 401 and isset($response->cod) and $response->cod == 401025) {
+ throw new vicensvives_ws_error('wssitemismatch');
+ }
+
+ // Error desconocido
+ if ($status != 200) {
+ throw new vicensvives_ws_error('wsunknownerror');
+ }
+
+ return $response;
+ }
+
+ private function curl($method, $path, $params=null, $auth=true) {
+ global $CFG;
+
+ $url = !empty($CFG->vicensvives_apiurl) ? $CFG->vicensvives_apiurl : self::WS_URL;
+ $url .= '/' . $path;
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_HEADER, false);
+ curl_setopt($ch, CURLOPT_VERBOSE, false);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible;)');
+
+ if ($method == 'post') {
+ curl_setopt($ch, CURLOPT_POST, true);
+ if ($params) {
+ curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params, '', '&'));
+ }
+ } else if ($method == 'put') {
+ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
+ if ($params) {
+ curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params, '', '&'));
+ }
+ } else if ($method == 'delete') {
+ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
+ } else {
+ if ($params) {
+ $url .= '?' . http_build_query($params, '', '&');
+ }
+ }
+
+ // Start the header.
+ $header = array();
+ if ($auth) {
+ $header[] = 'Authorization: Bearer ' . $CFG->vicensvives_accesstoken;
+ }
+
+ // La llamada schools/moodle requiere los parámetros en formato JSON
+ if ($path == 'schools/moodle') {
+ $json = json_encode($params);
+ $header[] = 'Content-Type: application/json';
+ $header[] = 'Content-Length: ' . strlen($json);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
+ }
+
+ // Add header to curl.
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
+
+ curl_setopt($ch, CURLOPT_URL, $url);
+ $response = json_decode(curl_exec($ch));
+ $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+ curl_close($ch);
+
+ $this->log($method, $path, $params, $status, $response);
+
+ return array($status, $response);
+ }
+
+ private function log($method, $path, $params, $status, $response) {
+ global $PAGE, $SCRIPT;
+
+ $data = array(
+ 'context' => $PAGE->context,
+ 'other' => array(
+ 'script' => $SCRIPT,
+ 'method' => $method,
+ 'path' => $path,
+ 'params' => $params,
+ 'status' => $status,
+ 'message' => !empty($response->msg) ? $response->msg : '',
+ ),
+ );
+
+ $event = \block_courses_vicensvives\event\webservice_called::create($data);
+ $event->trigger();
+ }
+
+ private function refresh_token() {
+ global $CFG;
+
+ unset_config('vicensvives_accesstoken');
+
+ $params = array(
+ 'client_id' => $CFG->vicensvives_sharekey,
+ 'client_secret' => $CFG->vicensvives_sharepass,
+ 'grant_type' => 'client_credentials',
+ );
+
+ list($status, $response) = $this->curl('post', 'oauth', $params, false);
+
+ if ($status == 200 and !empty($response->access_token)) {
+ set_config('vicensvives_accesstoken', $response->access_token);
+ } else if ($status == 401 and isset($response->cod) and $response->cod == 401001) {
+ throw new vicensvives_ws_error('wsauthfailed');
+ } else {
+ throw new vicensvives_ws_error('wsunknownerror');
+ }
+ }
+}
+
+class vicensvives_ws_error extends moodle_exception {
+ public function __construct($errorcode, $a=null, $debuginfo=null) {
+ parent::__construct($errorcode, 'block_courses_vicensvives', '', $a, $debuginfo);
+ }
+}
+
+function vicensvives_reset_token() {
+ unset_config('vicensvives_accesstoken');
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/locallib.php b/html/moodle2/blocks/courses_vicensvives/locallib.php
new file mode 100644
index 0000000000..8d9e67cd1c
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/locallib.php
@@ -0,0 +1,659 @@
+.
+
+require_once($CFG->dirroot.'/blocks/courses_vicensvives/lib/vicensvives.php');
+require_once($CFG->dirroot.'/course/lib.php');
+require_once($CFG->libdir.'/gradelib.php');
+
+class courses_vicensvives_add_book {
+
+ private $book;
+ private $progress;
+ private $current = 0;
+ private $total;
+ private $course;
+ private $updatedunits = array();
+
+ private function __construct($bookid, $course, progress_bar $progress) {
+ $this->course = $course;
+ $this->progress = $progress;
+ if ($this->progress) {
+ $this->progress->create();
+ }
+ $ws = new vicensvives_ws();
+ $this->book = $ws->book($bookid);
+ if (!$this->book) {
+ throw new moodle_exception('booknotfetched', 'block_courses_vicensvives');
+ }
+ $this->total = $this->progress_total(!$course);
+ $this->update_progress();
+ }
+
+ public static function create($bookid, $format, progress_bar $progress=null) {
+ $addbook = new self($bookid, null, $progress);
+ $courseid = $addbook->create_course($format);
+ $addbook->create_course_content();
+ return $courseid;
+ }
+
+ public static function enrol_user($courseid, $userid) {
+ global $DB;
+
+ if (!$role = $DB->get_record('role', array('shortname' => 'editingteacher'))) {
+ return get_string('editingteachernotexist', 'block_courses_vicensvives');
+ }
+
+ // Matriculación manual.
+ if (!enrol_is_enabled('manual')) {
+ return get_string('manualnotenable', 'block_courses_vicensvives');
+ }
+
+ $context = context_course::instance($courseid);
+ if (user_has_role_assignment($userid, $role->id, $context->id)) {
+ return;
+ }
+
+ $manual = enrol_get_plugin('manual');
+ $instances = enrol_get_instances($courseid, false);
+ foreach ($instances as $instance) {
+ if ($instance->enrol === 'manual') {
+ $manual->enrol_user($instance, $userid, $role->id);
+ break;
+ }
+ }
+ }
+
+ public static function update($courseid, progress_bar $progress=null) {
+ global $DB;
+
+ $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
+
+ $bookid = null;
+ preg_match('/^vv-(\d+)-/', $course->idnumber, $match);
+ if ($match) {
+ $bookid = (int) $match[1];
+ }
+
+ $addbook = new self($bookid, $course, $progress);
+ $addbook->create_course_content();
+
+ return $addbook->updatedunits;
+ }
+
+ private function create_course($format) {
+ global $CFG, $DB;
+
+ $courseobj = new stdClass();
+ $courseobj->category = $CFG->block_courses_vicensvives_defaultcategory;
+
+ // Asignación de un shortname y idnumber no utilitzados
+ for ($n = 1; true; $n++) {
+ $shortname = $this->book->shortname . '_' . $n;
+ $idnumber = 'vv-' . $this->book->idBook . '-' . $n . '-' . $this->book->subject;
+ $select = 'shortname = ? OR idnumber = ?';
+ $params = array($shortname, $idnumber);
+ if (!$DB->record_exists_select('course', $select, $params)) {
+ break;
+ }
+ }
+ $courseobj->shortname = $shortname;
+ $courseobj->fullname = $this->book->fullname;
+ $courseobj->idnumber = $idnumber;
+ $courseobj->summary = $this->book->authors;
+ // Comprobar q existe el formato de curso personalizado para aplicarlo.
+ $courseobj->format = 'topics';
+ $courseformats = get_plugin_list('format');
+ if (isset($courseformats[$format])) {
+ $courseobj->format = $format;
+ }
+ // De esta manera no crearemos el foro de noticias.
+ $courseobj->newsitems = 0;
+
+ $this->course = create_course($courseobj);
+
+ $gradecategory = grade_category::fetch_course_category($this->course->id);
+ $gradecategory->aggregation = GRADE_AGGREGATE_MEAN;
+ $gradecategory->update();
+
+ $this->update_progress();
+
+ return $this->course->id;
+ }
+
+ private function create_course_content() {
+ $coursegradecat = grade_category::fetch_course_category($this->course->id);
+
+ $sectionnum = 1;
+ foreach ($this->book->units as $unit) {
+ $mods = $this->get_section_mods($unit);
+
+ $sectionname = $unit->label . '. ' . $unit->name;
+ $section = $this->setup_section($sectionnum, $sectionname, $mods);
+
+ $this->set_num_sections($sectionnum);
+
+ $idnumber = $this->book->idBook . '_unit_' . $unit->id;
+ $gradecat = $this->setup_grade_category($coursegradecat, $idnumber, $section->name, $section->section, true);
+
+ $this->update_progress();
+
+ $this->create_section_content($section, $unit, $mods, $gradecat);
+ $sectionnum++;
+ }
+
+ rebuild_course_cache($this->course->id);
+ get_fast_modinfo($this->course);
+ grade_regrade_final_grades($this->course->id);
+ $this->update_progress();
+ }
+
+ // Esta función es diferente para cada versión de Moodle
+ private function create_mod($mod, $section) {
+ global $CFG, $DB;
+
+ $fromform = new stdClass();
+ $fromform->module = $DB->get_field('modules', 'id', array('name' => $mod['modname']));
+ $fromform->modulename = $mod['modname'];
+ $fromform->visible = true;
+ $fromform->cmidnumber = $mod['idnumber'];
+ $fromform->name = $mod['name'];
+ $fromform->indent = $mod['indent'];
+ $fromform->intro = '-';
+ $fromform->introformat = 0;
+ $fromform->availablefrom = 0;
+ $fromform->availableuntil = 0;
+ $fromform->showavailability = 0;
+ $fromform->conditiongradegroup = array();
+ $fromform->conditionfieldgroup = array();
+ $fromform->conditioncompletiongroup = array();
+ $fromform->grade = $CFG->gradepointdefault;
+
+ foreach ($mod['params'] as $key => $value) {
+ $fromform->$key = $value;
+ }
+
+ courses_vicensvives_add_moduleinfo($fromform, $this->course, $section);
+
+ return $fromform->coursemodule;
+ }
+
+ private function create_section_content($section, $unit, $mods, $gradecat) {
+ global $DB;
+
+ $roleid = $DB->get_field('role', 'id', array('shortname' => 'user'));
+
+ $sequence = $section->sequence ? explode(',', $section->sequence) : array();
+ $prevmod = null;
+
+ foreach ($mods as $mod) {
+ $cm = $this->get_cm($mod, $section);
+
+ if ($cm) {
+ // Actualizamos idnumber si ha cambiado (etiquetas y enlaces creadas con una versión anterior)
+ if ($cm->idnumber != $mod['idnumber']) {
+ $DB->set_field('course_modules', 'idnumber', $mod['idnumber'], array('id' => $cm->id));
+ }
+
+ $prevmod = $cm->id;
+ $sortgradeitem = false;
+
+ } else {
+ $transaction = $DB->start_delegated_transaction();
+
+ // Nueva actividad
+ $cmid = $this->create_mod($mod, $section);
+
+ // Añade a la sección
+ if ($prevmod) {
+ $index = array_search($prevmod, $sequence);
+ array_splice($sequence, $index + 1, 0, array($cmid));
+ } else {
+ $sequence[] = $cmid;
+ }
+ $section->sequence = implode(',', $sequence);
+ $DB->set_field('course_sections', 'sequence', $section->sequence, array('id' => $section->id));
+
+ // Denegación del permiso de edición de la actividad
+ $context = context_module::instance($cmid);
+ assign_capability('moodle/course:manageactivities', CAP_PROHIBIT, $roleid, $context);
+
+ $this->updatedunits[$unit->id] = $unit;
+
+ $transaction->allow_commit();
+
+ $prevmod = $cmid;
+ $sortgradeitem = true;
+ }
+
+ if (!empty($mod['gradecat'])) {
+ $index = array_search($prevmod, $sequence);
+ $prevcmids = array_slice($sequence, 0, $index);
+ $this->setup_grade_item($gradecat, $mod, $prevcmids, $sortgradeitem);
+ }
+
+ $this->update_progress();
+ }
+ }
+
+ private function get_cm($mod, $section) {
+ global $DB;
+
+ $conditions = array('course' => $this->course->id, 'idnumber' => $mod['idnumber']);
+ $cm = $DB->get_record('course_modules', $conditions);
+ if ($cm) {
+ return $cm;
+ }
+
+ // Anteriormente las etiquetas no tenían idnumber asignado, buscamos la etiqueta por nombre.
+ if ($mod['modname'] == 'label') {
+ $sql = 'SELECT cm.*
+ FROM {course_modules} cm
+ JOIN {modules} m ON m.id = cm.module
+ JOIN {label} l ON l.id = cm.instance
+ WHERE cm.course = :course
+ AND cm.section = :section
+ AND m.name = :modname
+ AND l.name = :name';
+ $params = array(
+ 'course' => $this->course->id,
+ 'section' => $section->id,
+ 'modname' => 'label',
+ 'name' => $mod['name'],
+ );
+ $records = $DB->get_records_sql($sql, $params, 0, 1);
+ if ($records) {
+ return reset($records);
+ }
+ }
+
+ // Anteriormente los enlaces tenían el idnumber con un formato diferente
+ if ($mod['modname'] == 'url') {
+ if (preg_match('/^.+_(link_.+)$/', $mod['idnumber'], $match)) {
+ $conditions = array('course' => $this->course->id, 'idnumber' => $match[1]);
+ $cm = $DB->get_record('course_modules', $conditions);
+ if ($cm) {
+ return $cm;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private function get_lti_mod($type, $element, $gradecat) {
+ $mod = array(
+ 'idnumber' => $this->book->idBook . '_' . $type . '_' . $element->id,
+ 'name' => $element->lti->activityName,
+ 'modname' => 'lti',
+ 'indent' => 1,
+ 'params' => array(
+ 'toolurl' => $element->lti->launchURL,
+ 'instructorchoicesendname' => true,
+ 'instructorchoicesendemailaddr' => true,
+ 'launchcontainer' => 4, // window
+ ),
+ 'gradecat' => null,
+ );
+ if (isset($element->element->lti->activityDescription)) {
+ $mod['params']['intro'] = $element->lti->activityDescription;
+ }
+ if (isset($element->lti->consumerKey)) {
+ $mod['params']['resourcekey'] = $element->lti->consumerKey;
+ }
+ if (isset($element->lti->sharedSecret)) {
+ $mod['params']['password'] = $element->lti->sharedSecret;
+ }
+ if (isset($element->lti->customParameters)) {
+ $mod['params']['instructorcustomparameters'] = $element->lti->customParameters;
+ }
+ if (isset($element->lti->acceptGrades)) {
+ $mod['params']['instructorchoiceacceptgrades'] = (int) $element->lti->acceptGrades;
+ if ($element->lti->acceptGrades != 0) {
+ $mod['gradecat'] = $gradecat;
+ }
+ }
+ return $mod;
+ }
+
+ private function get_section_mods($unit) {
+ $mods = array();
+ $sectionnum = 0;
+
+ foreach ($unit->sections as $section) {
+ $mods[] = array(
+ 'idnumber' => $this->book->idBook . '_label_' . $section->id,
+ 'name' => '', // Se generar a partir de la descripción
+ 'modname' => 'label',
+ 'indent' => 0,
+ 'params' => array(
+ 'intro' => html_writer::tag('h4', s($section->label) . '. ' . s($section->name)),
+ 'introformat' => FORMAT_HTML,
+ ),
+ 'gradecat' => null,
+ );
+
+ $gradecat = array(
+ 'idnumber' => $this->book->idBook . '_label_' . $section->id,
+ 'name' => s($section->label) . '. ' . s($section->name),
+ 'position' => $sectionnum,
+ );
+
+ if (!empty($section->lti)) {
+ $mods[] = $this->get_lti_mod('section', $section, $gradecat);
+ }
+
+ if (!empty($section->questions)) {
+ foreach ($section->questions as $question) {
+ $mods[] = $this->get_lti_mod('question', $question, $gradecat);
+ }
+ }
+ if (!empty($section->links)) {
+ foreach ($section->links as $link) {
+ $mods[] = array(
+ 'idnumber' => $this->book->idBook . '_link_' . $link->id,
+ 'name' => $link->name,
+ 'modname' => 'url',
+ 'indent' => 1,
+ 'params' => array(
+ 'externalurl' => $link->url,
+ 'intro' => $link->summary,
+ 'display' => 0,
+ ),
+ 'gradecat' => null,
+ );
+ }
+ }
+ if (!empty($section->documents)) {
+ foreach ($section->documents as $document) {
+ $mods[] = $this->get_lti_mod('document', $document, $gradecat);
+ }
+ }
+
+ $sectionnum++;
+ }
+
+ return $mods;
+ }
+
+ private function progress_total($createcourse=true) {
+ $total = 1; // fetch book content
+ $total += ($createcourse ? 1 : 0); // create course
+ foreach ($this->book->units as $unit) {
+ $total++; // setup section
+ foreach ($unit->sections as $section) {
+ $total++; // section label
+ if (!empty($section->lti)) {
+ $total++; // section lti
+ }
+ $total += count($section->questions);
+ $total += count($section->links);
+ $total += count($section->documents);
+ }
+ }
+ $total++; // rebuild course cache
+ return $total;
+ }
+
+ // Esta función es diferente para cada versión de Moodle
+ private function set_num_sections($sectionnum) {
+ global $DB;
+
+ $conditions = array('courseid' => $this->course->id, 'sectionid' => 0, 'name' => 'numsections');
+ $numsections = (int) $DB->get_field('course_format_options', 'value', $conditions);
+ if ($sectionnum > $numsections) {
+ $DB->set_field('course_format_options', 'value', $sectionnum, $conditions);
+ }
+ }
+
+ private function setup_grade_category(grade_category $parent, $idnumber, $name, $position, $sort=false) {
+ // Obtien o crea la categoria
+ $params = array('courseid' => $parent->courseid, 'itemtype' => 'category', 'idnumber' => $idnumber);
+ $item = grade_item::fetch($params);
+ if ($item) {
+ $category = grade_category::fetch(array('id' => $item->iteminstance));
+ if ($category->parent != $parent->id or $category->fullname != $name) {
+ $category->parent = $parent->id;
+ $category->fullname = $name;
+ $category->update();
+ // Obtiene al grade_item actualizado
+ $item = $category->get_grade_item();
+ $sort = true;
+ }
+ } else {
+ $params = array(
+ 'courseid' => $parent->courseid,
+ 'parent' => $parent->id,
+ 'fullname' => $name,
+ );
+ $category = new grade_category($params, false);
+ $category->apply_default_settings();
+ $category->apply_forced_settings();
+ $category->aggregation = GRADE_AGGREGATE_MEAN;
+ $category->insert();
+ $item = $category->get_grade_item();
+ $item->idnumber = $idnumber;
+ $item->update();
+ $sort = true;
+ }
+
+ if ($sort) {
+ // Obtiene los grade_items de las categorías del mismo nivel y los ordena por sortorder
+ $categories = grade_category::fetch_all(array('parent' => $parent->id));
+ $items = array();
+ foreach ($categories as $c) {
+ $items[] = $c->get_grade_item();
+ }
+ usort($items, function($a, $b) {
+ return $a->sortorder - $b->sortorder;
+ });
+
+ // Ordena la categoría
+ if (isset($items[$position]) and $items[$position]->id != $item->id) {
+ $item->move_after_sortorder($items[$position]->sortorder - 1);
+ }
+ }
+
+ return $category;
+ }
+
+
+ private function setup_grade_item(grade_category $parent, $mod, $prevcmids, $sort=false) {
+ global $DB;
+
+ $gradecat = $this->setup_grade_category($parent, $mod['gradecat']['idnumber'], $mod['gradecat']['name'],
+ $mod['gradecat']['position']);
+
+ $params = array('courseid' => $gradecat->courseid, 'idnumber' => $mod['idnumber']);
+ $items = grade_item::fetch_all($params);
+ if (!$items) {
+ return;
+ }
+
+ foreach ($items as $item) {
+ if ($item->categoryid != $gradecat->id) {
+ $item->categoryid = $gradecat->id;
+ $item->update();
+ $sort = true;
+ }
+ }
+
+ if (!$sort) {
+ return;
+ }
+
+ usort($items, function($a, $b) {
+ return $a->sortorder - $b->sortorder;
+ });
+
+ list($sqlin, $params) = $DB->get_in_or_equal($prevcmids, SQL_PARAMS_NAMED);
+ $sql = "SELECT MAX(sortorder)
+ FROM {course_modules} cm
+ JOIN {modules} m ON m.id = cm.module
+ JOIN {grade_items} gi ON gi.iteminstance = cm.instance AND gi.itemmodule = m.name
+ WHERE cm.id $sqlin
+ AND gi.itemtype = :itemtype
+ AND gi.courseid = cm.course";
+ $params['itemtype'] = 'mod';
+ $sortorder = $DB->get_field_sql($sql, $params);
+
+ if (!$sortorder) {
+ $sortorder = $gradecat->get_grade_item()->sortorder;
+ }
+
+ foreach ($items as $item) {
+ if ($item->sortorder != $sortorder + 1) {
+ $item->move_after_sortorder($sortorder);
+ $sortorder = $item->sortorder;
+ }
+ }
+ }
+
+ private function setup_section($sectionnum, $name, array $mods=null) {
+ global $DB;
+
+ $section = null;
+
+ // Búsqueda de la sección basada en los elementos ya creados
+ if ($mods) {
+ $idnumbers = array();
+ foreach ($mods as $mod) {
+ $idnumbers[] = $mod['idnumber'];
+ }
+
+ list($idnumbersql, $params) = $DB->get_in_or_equal($idnumbers, SQL_PARAMS_NAMED);
+ $sql = "SELECT s.*
+ FROM {course_modules} cm
+ JOIN {course_sections} s ON s.id = cm.section
+ WHERE cm.course = :courseid AND cm.idnumber $idnumbersql
+ ORDER BY s.section";
+ $params['courseid'] = $this->course->id;
+ $sections = $DB->get_records_sql($sql, $params, 0, 1);
+
+ if ($sections) {
+ $section = reset($sections);
+ }
+ }
+
+ // No existe ningún elemento, buscamos la primera sección vacía
+ if (!$section) {
+ $sections = $DB->get_records('course_sections', array('course' => $this->course->id), 'section');
+ $nextsectionnum = 1;
+ foreach ($sections as $section) {
+ $nextsectionnum = $section->section + 1;
+ if ($section->section > 0 and $section->sequence == '') {
+ break;
+ }
+ }
+ // Si no existe ninguna sección vacía, creamos una nueva
+ if (!$section or $section->section == 0 or $section->sequence != '') {
+ $section = new stdClass();
+ $section->course = $this->course->id;
+ $section->section = $nextsectionnum;
+ $section->summary = '';
+ $section->summaryformat = FORMAT_HTML;
+ $section->sequence = '';
+ $section->id = $DB->insert_record('course_sections', $section);
+ }
+ }
+
+ // Actualización del nombre de la sección
+ $section->name = $name;
+ $DB->set_field('course_sections', 'name', $name, array('id' => $section->id ));
+
+ // Reordenación de las secciones
+ if ($sectionnum != $section->section) {
+ move_section_to($this->course, $section->section, $sectionnum);
+ return $DB->get_record('course_sections', array('id' => $section->id));
+ }
+
+ return $section;
+ }
+
+ private function update_progress($msg='') {
+ $this->current++;
+ if ($this->progress) {
+ $this->progress->update($this->current, $this->total, $msg);
+ }
+ }
+}
+
+// Función basa en add_moduleinfo, con estas diferencias:
+// - Se pasa el objeto de la sección para evitar una consulta a la base de datos
+// - Se ha eliminado código que procesa parámetros no utilitzados
+// - Se guarda el campo "indent"
+// - No se llama rebuild_course_cache (se llama una sola vez al final)
+// - No se llama grade_regrade_final_grades (se llama una sola vez al final)
+// - No añade el módulo a la sección (se hace posteriormente)
+function courses_vicensvives_add_moduleinfo($moduleinfo, $course, $section) {
+ global $DB, $CFG;
+
+ require_once("$CFG->dirroot/course/modlib.php");
+
+ // Attempt to include module library before we make any changes to DB.
+ include_modulelib($moduleinfo->modulename);
+
+ $moduleinfo->course = $course->id;
+ $moduleinfo = set_moduleinfo_defaults($moduleinfo);
+
+ $moduleinfo->groupmode = 0; // Do not set groupmode.
+
+ // First add course_module record because we need the context.
+ $newcm = new stdClass();
+ $newcm->course = $course->id;
+ $newcm->module = $moduleinfo->module;
+ $newcm->instance = 0; // Not known yet, will be updated later (this is similar to restore code).
+ $newcm->visible = $moduleinfo->visible;
+ $newcm->visibleold = $moduleinfo->visible;
+ if (isset($moduleinfo->cmidnumber)) {
+ $newcm->idnumber = $moduleinfo->cmidnumber;
+ }
+ $newcm->groupmode = $moduleinfo->groupmode;
+ $newcm->groupingid = $moduleinfo->groupingid;
+ $newcm->showdescription = 0;
+ $newcm->indent = $moduleinfo->indent;
+
+ $newcm->added = time();
+ $newcm->section = $section->id;
+ if (!$moduleinfo->coursemodule = $DB->insert_record("course_modules", $newcm)) {
+ print_error('cannotaddcoursemodule');
+ }
+
+ $addinstancefunction = $moduleinfo->modulename."_add_instance";
+ try {
+ $returnfromfunc = $addinstancefunction($moduleinfo, null);
+ } catch (moodle_exception $e) {
+ $returnfromfunc = $e;
+ }
+ if (!$returnfromfunc or !is_number($returnfromfunc)) {
+ // Undo everything we can. This is not necessary for databases which
+ // support transactions, but improves consistency for other databases.
+ $modcontext = context_module::instance($moduleinfo->coursemodule);
+ context_helper::delete_instance(CONTEXT_MODULE, $moduleinfo->coursemodule);
+ $DB->delete_records('course_modules', array('id' => $moduleinfo->coursemodule));
+
+ if ($e instanceof moodle_exception) {
+ throw $e;
+ } else if (!is_number($returnfromfunc)) {
+ print_error('invalidfunction', '', course_get_url($course, $section->section));
+ } else {
+ print_error('cannotaddnewmodule', '', course_get_url($course, $section->section), $moduleinfo->modulename);
+ }
+ }
+
+ $moduleinfo->instance = $returnfromfunc;
+
+ $DB->set_field('course_modules', 'instance', $returnfromfunc, array('id' => $moduleinfo->coursemodule));
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/renderer.php b/html/moodle2/blocks/courses_vicensvives/renderer.php
new file mode 100644
index 0000000000..4895a62e05
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/renderer.php
@@ -0,0 +1,86 @@
+.
+
+class block_courses_vicensvives_renderer extends plugin_renderer_base {
+
+ public function course_info_box($course) {
+ global $CFG;
+
+ $output = '';
+
+ $context = context_course::instance($course->id);
+
+ // Rewrite file URLs so that they are correct
+ $course->summary = file_rewrite_pluginfile_urls($course->summary, 'pluginfile.php', $context->id, 'course', 'summary', null);
+
+ $output .= html_writer::start_tag('div', array('class' => 'vicensvives_course clearfix'));
+ $output .= html_writer::start_tag('div', array('class' => 'vicensvives_course_left'));
+ $output .= html_writer::start_tag('h3', array('class' => 'vicensvives_course_name'));
+
+ $linkhref = new moodle_url('/course/view.php', array('id' => $course->id));
+
+ $linktext = format_string($course->fullname);
+ $linkparams = array('title' => get_string('entercourse'));
+ if (empty($course->visible)) {
+ $linkparams['class'] = 'dimmed';
+ }
+ $output .= html_writer::link($linkhref, $linktext, $linkparams);
+ $output .= html_writer::end_tag('h3');
+
+ $output .= html_writer::start_tag('ul', array('class' => 'vicensvives_course_teachers'));
+ foreach ($this->get_course_contacts($course) as $userid => $coursecontact) {
+ $name = $coursecontact['rolename'].': '.
+ html_writer::link(new moodle_url('/user/view.php',
+ array('id' => $userid, 'course' => SITEID)),
+ $coursecontact['username']);
+ $output .= html_writer::tag('li', $name);
+ }
+ $output .= html_writer::end_tag('ul');
+
+ $output .= html_writer::end_tag('div'); // End of info div
+
+ $context = context_coursecat::instance($CFG->block_courses_vicensvives_defaultcategory);
+ if (has_capability('moodle/course:create', $context)) {
+ $url = new moodle_url('/blocks/courses_vicensvives/courses.php', array('update' => $course->id));
+ $label = get_string('update');
+ $button = $this->single_button($url, $label);
+ $output .= html_writer::tag('div', $button, array('class' => 'vicensvives_course_right'));
+ }
+
+ $output .= html_writer::start_tag('div', array('class' => 'vicensvives_course_right'));
+ $options = new stdClass();
+ $options->noclean = true;
+ $options->para = false;
+ $options->overflowdiv = true;
+ if (!isset($course->summaryformat)) {
+ $course->summaryformat = FORMAT_MOODLE;
+ }
+ $output .= format_text($course->summary, $course->summaryformat, $options, $course->id);
+ $output .= html_writer::end_tag('div'); // End of summary div
+
+ $output .= html_writer::end_tag('div'); // End of coursebox div
+
+ return $output;
+ }
+
+ // Esta función es diferente para cada versión de Moodle
+ private function get_course_contacts($course) {
+ global $CFG;
+ require_once($CFG->libdir. '/coursecatlib.php');
+ $course = new course_in_list($course);
+ return $course->get_course_contacts();
+ }
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/settings.php b/html/moodle2/blocks/courses_vicensvives/settings.php
new file mode 100644
index 0000000000..1d2a1598de
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/settings.php
@@ -0,0 +1,55 @@
+.
+
+defined('MOODLE_INTERNAL') || die;
+
+require_once($CFG->dirroot.'/blocks/courses_vicensvives/lib/vicensvives.php');
+
+global $DB;
+if ($ADMIN->fulltree) {
+
+ require_once($CFG->dirroot.'/blocks/courses_vicensvives/settingslib.php');
+ require_once($CFG->dirroot.'/blocks/courses_vicensvives/lib/vicensvives.php');
+
+ $settings->add(new courses_vicensvives_setting_wscheck());
+
+ $setting = new admin_setting_configtext('vicensvives_apiurl',
+ get_string('apiurl', 'block_courses_vicensvives'), get_string('configapiurl', 'block_courses_vicensvives'),
+ vicensvives_ws::WS_URL, PARAM_URL);
+ $setting->set_updatedcallback('vicensvives_reset_token');
+ $settings->add($setting);
+
+ $setting = new admin_setting_configpasswordunmask('vicensvives_sharekey',
+ get_string('sharekey', 'block_courses_vicensvives'), get_string('configsharekey', 'block_courses_vicensvives'), '');
+ $setting->set_updatedcallback('vicensvives_reset_token');
+ $settings->add($setting);
+
+ $setting = new admin_setting_configpasswordunmask('vicensvives_sharepass',
+ get_string('sharepass', 'block_courses_vicensvives'), get_string('configsharepass', 'block_courses_vicensvives'), '');
+ $setting->set_updatedcallback('vicensvives_reset_token');
+ $settings->add($setting);
+
+ $selectnum = range(0, 100);
+ $settings->add( new admin_setting_configselect('block_courses_vicensvives_maxcourses',
+ get_string('maxcourses', 'block_courses_vicensvives'),
+ get_string('configmaxcourses', 'block_courses_vicensvives'), 10, $selectnum));
+
+ $settings->add(new admin_settings_coursecat_select('block_courses_vicensvives_defaultcategory',
+ get_string('defaultcategory', 'block_courses_vicensvives'),
+ get_string('configdefaultcategory', 'block_courses_vicensvives'), 1));
+
+ $settings->add(new courses_vicensvives_setting_moodlews());
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/settingslib.php b/html/moodle2/blocks/courses_vicensvives/settingslib.php
new file mode 100644
index 0000000000..e98d150f6f
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/settingslib.php
@@ -0,0 +1,282 @@
+.
+
+require_once($CFG->libdir.'/adminlib.php');
+
+/**
+ * Parámetro falso para comprobar la configuración y mostrar errores.
+ */
+class courses_vicensvives_setting_wscheck extends admin_setting {
+
+ private $error;
+
+ public function __construct() {
+ parent::__construct('vicensvives_wscheck', '', '', null);
+ }
+
+ public function get_setting() {
+ return true;
+ }
+
+ public function write_setting($data) {
+ return '';
+ }
+
+ public function output_html($data, $query='') {
+ $errors = array();
+
+ // Comprueba la conexión con el web service de Vicens Vives
+ $ws = new vicensvives_ws();
+ try {
+ $ws->books();
+ } catch (vicensvives_ws_error $e) {
+ $errors[] = html_writer::tag('div', $e->getMessage(), array('class' => 'alert alert-error'));
+ }
+
+ // Comprueba si el plugin local del web service está instalado
+ if (!courses_vicensvives_setting_moodlews::get_service()) {
+ $message = get_string('moodlewsnotinstalled', 'block_courses_vicensvives');
+ $errors[] = html_writer::tag('div', $message, array('class' => 'alert alert-error'));
+ }
+
+ $adminroot = admin_get_root();
+
+ if (!$errors) {
+ // Comprueba si el web service está configurado
+ if (!courses_vicensvives_setting_moodlews::is_enabled()) {
+ $message = get_string('moodlewsnotenabled', 'block_courses_vicensvives');
+ $errors[] = html_writer::tag('div', $message, array('class' => 'alert alert-error'));
+ }
+
+ // Comprueba si ha habido un error en enviar el token
+ if (array_key_exists('s__vicensvives_moodlews', $adminroot->errors)) {
+ $message = $adminroot->errors['s__vicensvives_moodlews']->error;
+ $errors[] = html_writer::tag('div', $message, array('class' => 'alert alert-error'));
+ }
+ }
+
+ return implode('', $errors);
+ }
+}
+
+/**
+ * Parámetro para configurar el web service de Moodle y enviar el token a Vicens Vives.
+ */
+class courses_vicensvives_setting_moodlews extends admin_setting {
+
+ const USERNAME = 'wsvicensvives';
+ const FIRSTNAME = 'Web Service';
+ const LASTNAME = 'Vicens Vives';
+ const SERVICE = 'local_wsvicensvives';
+ const PROTOCOL = 'rest';
+ const ROLESHORTNAME = 'wsvicensvives';
+ const ROLENAME = 'Web Service Vicens Vives';
+
+ private static $capabilities = array(
+ 'webservice/rest:use',
+ 'moodle/grade:edit',
+ );
+
+ public function __construct() {
+ parent::__construct('vicensvives_moodlews', '', '', null);
+ }
+
+ public function get_setting() {
+ $value = get_config($this->plugin, $this->name);
+ if ($value === false) {
+ // Parámetro no configurado (en instalar)
+ return null;
+ }
+ return true;
+ }
+
+ public function output_html($data, $query='') {
+ $attributes = array('type' => 'hidden', 'name' => $this->get_full_name(), 'value' => '1');
+ return html_writer::empty_tag('input', $attributes);
+ }
+
+ public function write_setting($data) {
+ // Marcamos el parámetro como configurado
+ set_config($this->name, '1', $this->plugin);
+
+ if (vicensvives_ws::configured() and self::get_service()) {
+ return self::enable();
+ }
+
+ return '';
+ }
+
+ public static function get_service() {
+ global $DB;
+ $conditions = array('component' => self::SERVICE);
+ return $DB->get_record('external_services', $conditions);
+ }
+
+ public static function is_enabled() {
+ global $CFG;
+
+ // Web services activados
+ if (empty($CFG->enablewebservices)) {
+ return false;
+ }
+
+ // Protocolo REST
+ $protocols = explode(',', get_config('core', 'webserviceprotocols'));
+ if (!in_array(self::PROTOCOL, $protocols)) {
+ return false;
+ }
+
+ // Servicio activado
+ $service = self::get_service();
+ if (!$service or !$service->enabled) {
+ return false;
+ }
+
+ // Usuario
+ $userid = self::get_user_id();
+ if (!$userid) {
+ return false;
+ }
+
+ // Rol
+ $roleid = self::get_role_id();
+ if (!$roleid) {
+ return false;
+ }
+ $context = context_system::instance();
+ $rolecaps = role_context_capabilities($roleid, $context);
+ foreach (self::$capabilities as $name) {
+ if (!isset($rolecaps[$name]) or $rolecaps[$name] != CAP_ALLOW) {
+ return false;
+ }
+ }
+ if (!user_has_role_assignment($userid, $roleid, $context->id)) {
+ return false;
+ }
+
+ // Token
+ if (!self::get_token($service, $userid)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ private static function enable() {
+ global $CFG, $DB, $USER;
+
+ require_once("$CFG->dirroot/user/lib.php");
+
+ $context = context_system::instance();
+
+ // Web services activados
+ set_config('enablewebservices', true);
+
+ // Protocolo REST
+ $protocols = explode(',', get_config('core', 'webserviceprotocols'));
+ if (!in_array(self::PROTOCOL, $protocols)) {
+ $protocols[] = self::PROTOCOL;
+ set_config('webserviceprotocols', trim(implode(',', $protocols), ','));
+ }
+
+ // Servicio
+ $service = self::get_service();
+ if (!$service->enabled) {
+ $DB->set_field('external_services', 'enabled', 1, array('id' => $service->id));
+ }
+
+ // Usuario
+ $userid = self::get_user_id();
+ if (!$userid) {
+ $user = new stdClass;
+ $user->username = self::USERNAME;
+ $user->firstname = self::FIRSTNAME;
+ $user->lastname = self::LASTNAME;
+ $user->mnethostid = $CFG->mnet_localhost_id;
+ $user->auth = 'webservice';
+ $user->confirmed = true;
+ $userid = user_create_user($user, false);
+ }
+
+ // Rol
+ $roleid = self::get_role_id();
+ if (!$roleid) {
+ $roleid = create_role(self::ROLENAME, self::ROLESHORTNAME, '');
+ set_role_contextlevels($roleid, array(CONTEXT_SYSTEM));
+ }
+ foreach (self::$capabilities as $name) {
+ assign_capability($name, CAP_ALLOW, $roleid, $context, true);
+ }
+ $context->mark_dirty();
+ role_assign($roleid, $userid, $context->id);
+
+ // Token
+ $token = self::get_token($service, $userid);
+
+ // Crea el token en activar
+ if (!$token) {
+ $token = md5(uniqid(rand(), 1));
+ $record = new stdClass();
+ $record->token = $token;
+ $record->tokentype = EXTERNAL_TOKEN_PERMANENT;
+ $record->userid = $userid;
+ $record->externalserviceid = $service->id;
+ $record->contextid = $context->id;
+ $record->creatorid = $USER->id;
+ $record->timecreated = time();
+ $DB->insert_record('external_tokens', $record);
+ }
+
+ // Emvía el token a Vicens Vives
+ try {
+ $ws = new vicensvives_ws();
+ $ws->send_token($token);
+ } catch (vicensvives_ws_error $e) {
+ return $e->getMessage();
+ }
+
+ return '';
+ }
+
+ private static function get_role_id() {
+ global $DB;
+ $conditions = array('shortname' => self::ROLESHORTNAME);
+ return $DB->get_field('role', 'id', $conditions);
+ }
+
+ private static function get_token($service, $userid) {
+ global $DB;
+
+ $context = context_system::instance();
+ $conditions = array(
+ 'tokentype' => EXTERNAL_TOKEN_PERMANENT,
+ 'userid' => $userid,
+ 'externalserviceid' => $service->id,
+ 'contextid' => $context->id,
+ );
+ return $DB->get_field('external_tokens', 'token', $conditions);
+ }
+
+ private static function get_user_id() {
+ global $CFG, $DB;
+ $conditions = array(
+ 'username' => self::USERNAME,
+ 'mnethostid' => $CFG->mnet_localhost_id,
+ 'deleted' => 0,
+ );
+ return $DB->get_field('user', 'id', $conditions);
+ }
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/styles.css b/html/moodle2/blocks/courses_vicensvives/styles.css
new file mode 100644
index 0000000000..1a0b4f3354
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/styles.css
@@ -0,0 +1,65 @@
+.block_courses_vicensvives .footer {
+ margin-top: 5px;
+}
+
+.vicensvives_courses {
+ padding: 20px;
+}
+
+table.vicensvives_books {
+ width: 95%;
+}
+
+table.vicensvives_books th {
+ text-align: left;
+}
+
+table.vicensvives_books .vicensvives_actions {
+ text-align: center;
+}
+
+ul.vicensives_newunits {
+ margin-left: 0;
+ list-style: none;
+}
+
+.vicensvives_course {
+ margin: 15px 0;
+ border: 1px solid #DDD;
+ border-radius: 10px;
+}
+
+.vicensvives_course_name {
+ margin: 3px 0;
+ text-align: left;
+}
+
+.vicensvives_course_teachers {
+ list-style: none;
+ margin: 5px 0 0 0;
+ padding: 0;
+ font-size: 0.9em;
+}
+
+.vicensvives_course_left {
+ float: left;
+ width: 40%;
+ margin: 5px;
+ font-size: 1em;
+}
+
+.vicensvives_course_right {
+ float: right;
+ width: 55%;
+ margin: 5px;
+ font-size: 0.9em;
+}
+
+#page-blocks-courses_vicensvives-addbook .progress .bar {
+ transition: none !important;
+}
+
+.vicensvives_create_warning {
+ margin-top: 10px;
+ font-weight: bold;
+}
diff --git a/html/moodle2/blocks/courses_vicensvives/version.php b/html/moodle2/blocks/courses_vicensvives/version.php
new file mode 100644
index 0000000000..3cae7a8593
--- /dev/null
+++ b/html/moodle2/blocks/courses_vicensvives/version.php
@@ -0,0 +1,21 @@
+.
+
+defined('MOODLE_INTERNAL') || die();
+
+$plugin->version = 2016091500; // The current plugin version (Date: YYYYMMDDXX)
+$plugin->requires = 2014111000; // Requires this Moodle version
+$plugin->component = 'block_courses_vicensvives'; // Full name of the plugin (used for diagnostics)
diff --git a/html/moodle2/blocks/licenses_vicensvives/README.md b/html/moodle2/blocks/licenses_vicensvives/README.md
new file mode 100644
index 0000000000..b6d38a0243
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/README.md
@@ -0,0 +1,13 @@
+Bloque de licencias Vicens Vives
+================================
+
+Bloque que informa de las licencias disponibles y utilizadas.
+
+Dentro de un curso, el bloque muestra el número de licencias utilizadas y
+disponibles para el libro del curso. Se muestran por separado las licencias para
+profesores y estudiantes.
+
+El bloque incluye un enlace a una lista con la información de las licencias de
+todos los libros.
+
+Versiones de Moodle: 2.8, 2.9, 3.0, 3.1
diff --git a/html/moodle2/blocks/licenses_vicensvives/block_licenses_vicensvives.php b/html/moodle2/blocks/licenses_vicensvives/block_licenses_vicensvives.php
new file mode 100644
index 0000000000..0487ee77a3
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/block_licenses_vicensvives.php
@@ -0,0 +1,69 @@
+.
+
+
+class block_licenses_vicensvives extends block_base {
+
+ public function init() {
+ $this->title = get_string('pluginname', 'block_licenses_vicensvives');
+ }
+
+ public function instance_allow_multiple() {
+ return false;
+ }
+
+ public function get_content() {
+ global $CFG, $COURSE;
+
+ if ($this->content !== null) {
+ return $this->content;
+ }
+
+ $this->content = new stdClass;
+ $this->content->text = '';
+ $this->content->footer = '';
+
+ require_once("$CFG->dirroot/blocks/licenses_vicensvives/locallib.php");
+
+ $context = context_system::instance();
+
+ if (has_capability('moodle/course:update', $context)) {
+ $this->title = get_string('pluginname', 'block_licenses_vicensvives');
+ if (preg_match('/^vv-([0-9]+)-/', $COURSE->idnumber, $match)) {
+ $idbook = (int) $match[1];
+ try {
+ $licenses = vicensvives_count_licenses($idbook);
+ } catch (vicensvives_ws_error $e) {
+ $this->content->text = html_writer::tag('div', $e->getMessage(), array('class' => 'error alert alert-error'));
+ return $this->context;
+ }
+ if (isset($licenses[$idbook])) {
+ $count = $licenses[$idbook];
+ $student = get_string('studentlicenses', 'block_licenses_vicensvives') . ': '
+ . $count->studentactivated . ' / ' . $count->studenttotal;
+ $teacher = get_string('teacherlicenses', 'block_licenses_vicensvives') . ': '
+ . $count->teacheractivated . ' / ' . $count->teachertotal;
+ $this->content->text .= $student . '
' . $teacher . '
';
+ }
+ }
+ $url = new moodle_url('/blocks/licenses_vicensvives/licenses.php', array('course' => $COURSE->id));
+ $text = get_string('showlicenses', 'block_licenses_vicensvives');
+ $this->content->text .= html_writer::link($url, $text);
+ }
+
+ return $this->content;
+ }
+}
diff --git a/html/moodle2/blocks/licenses_vicensvives/db/access.php b/html/moodle2/blocks/licenses_vicensvives/db/access.php
new file mode 100644
index 0000000000..bacf1b9878
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/db/access.php
@@ -0,0 +1,37 @@
+.
+
+$capabilities = array(
+
+ 'block/licenses_vicensvives:myaddinstance' => array(
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_SYSTEM,
+ 'archetypes' => array(),
+ 'clonepermissionsfrom' => 'moodle/my:manageblocks'
+ ),
+
+ 'block/licenses_vicensvives:addinstance' => array(
+ 'riskbitmask' => RISK_SPAM | RISK_XSS,
+ 'captype' => 'write',
+ 'contextlevel' => CONTEXT_BLOCK,
+ 'archetypes' => array(
+ 'editingteacher' => CAP_ALLOW,
+ 'manager' => CAP_ALLOW
+ ),
+
+ 'clonepermissionsfrom' => 'moodle/site:manageblocks'
+ ),
+);
diff --git a/html/moodle2/blocks/licenses_vicensvives/lang/ca/block_licenses_vicensvives.php b/html/moodle2/blocks/licenses_vicensvives/lang/ca/block_licenses_vicensvives.php
new file mode 100644
index 0000000000..dd1d32b8b4
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/lang/ca/block_licenses_vicensvives.php
@@ -0,0 +1,32 @@
+.
+
+$string['pluginname'] = 'Llicències Vicens Vives';
+
+// Contenido del bloque.
+$string['showlicenses'] = 'Veure llicències';
+$string['studentlicenses'] = 'Llicències estudiant';
+$string['teacherlicenses'] = 'Llicències professor';
+$string['activated'] = 'actives';
+$string['total'] = 'totals';
+
+// Páginas del bloque.
+$string['licenses'] = 'Llicències';
+$string['nohaylicencias'] = 'No hi ha cap llicència per mostrar';
+
+// Permisos
+$string['licenses_vicensvives:addinstance'] = 'Crear instància del bloc.';
+$string['licenses_vicensvives:myaddinstance'] = 'Crear instància del bloc en my.';
diff --git a/html/moodle2/blocks/licenses_vicensvives/lang/en/block_licenses_vicensvives.php b/html/moodle2/blocks/licenses_vicensvives/lang/en/block_licenses_vicensvives.php
new file mode 100644
index 0000000000..628c76564d
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/lang/en/block_licenses_vicensvives.php
@@ -0,0 +1,32 @@
+.
+
+$string['pluginname'] = 'Licenses Vicens Vives';
+
+// Contenido del bloque.
+$string['showlicenses'] = 'Show licenses';
+$string['studentlicenses'] = 'Student licenses';
+$string['teacherlicenses'] = 'Teacher licenses';
+$string['activated'] = 'active';
+$string['total'] = 'total';
+
+// Páginas del bloque.
+$string['licenses'] = 'Licenses';
+$string['nohaylicencias'] = 'There are no licenses to show';
+
+// Permisos
+$string['licenses_vicensvives:addinstance'] = 'Add block instance.';
+$string['licenses_vicensvives:myaddinstance'] = 'Add block instance into my.';
diff --git a/html/moodle2/blocks/licenses_vicensvives/lang/es/block_licenses_vicensvives.php b/html/moodle2/blocks/licenses_vicensvives/lang/es/block_licenses_vicensvives.php
new file mode 100644
index 0000000000..912aaef401
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/lang/es/block_licenses_vicensvives.php
@@ -0,0 +1,32 @@
+.
+
+$string['pluginname'] = 'Licencias Vicens Vives';
+
+// Contenido del bloque.
+$string['showlicenses'] = 'Ver licencias';
+$string['studentlicenses'] = 'Licencias estudiante';
+$string['teacherlicenses'] = 'Licencias profesor';
+$string['activated'] = 'activas';
+$string['total'] = 'totales';
+
+// Páginas del bloque.
+$string['licenses'] = 'Licencias';
+$string['nohaylicencias'] = 'No hay licencias que mostrar';
+
+// Permisos
+$string['licenses_vicensvives:addinstance'] = 'Crear instancia del bloque.';
+$string['licenses_vicensvives:myaddinstance'] = 'Crear instancia del bloque en my.';
diff --git a/html/moodle2/blocks/licenses_vicensvives/licenses.php b/html/moodle2/blocks/licenses_vicensvives/licenses.php
new file mode 100644
index 0000000000..62d4de42ba
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/licenses.php
@@ -0,0 +1,163 @@
+.
+
+require('../../config.php');
+
+require_once($CFG->dirroot.'/blocks/licenses_vicensvives/locallib.php');
+require_once($CFG->dirroot.'/lib/formslib.php');
+require_once($CFG->dirroot.'/lib/tablelib.php');
+
+function str_contains($haystack, $needle) {
+ // Normaliza el texto a carñacteres ASCII en mínuscula y sin espacios duplicados
+ $normalize = function($text) {
+ $text = core_text::specialtoascii($text);
+ $text = core_text::strtolower($text);
+ $text = preg_replace('/\s+/', ' ', trim($text));
+ return $text;
+ };
+ $haystack = $normalize($haystack);
+ $needle = $normalize($needle);
+ return core_text::strpos($haystack, $needle) !== false;
+}
+
+$courseid = optional_param('course', SITEID, PARAM_INT);
+
+require_login($courseid, false);
+
+require_capability('moodle/course:update', context_system::instance());
+
+$baseurl = new moodle_url('/blocks/licenses_vicensvives/licenses.php', array('course' => $courseid));
+
+$PAGE->set_url($baseurl);
+
+$PAGE->set_pagelayout('standard');
+
+$PAGE->set_title(get_string('licenses', 'block_licenses_vicensvives'));
+$PAGE->set_heading(get_string('licenses', 'block_licenses_vicensvives'));
+
+$PAGE->navbar->add(get_string('blocks'));
+$PAGE->navbar->add(get_string('pluginname', 'block_licenses_vicensvives'));
+$PAGE->navbar->add(get_string('licenses', 'block_licenses_vicensvives'));
+
+$ws = new vicensvives_ws();
+
+$lang = $CFG->lang == 'ca' ? 'ca' : 'es';
+
+$levels = array(0 => '');
+foreach ($ws->levels($lang) as $level) {
+ $levels[$level->idLevel] = $level->shortname;
+}
+
+$subjects = array(0 => '');
+foreach ($ws->subjects($lang) as $subject) {
+ $subjects[$subject->idSubject] = $subject->name;
+}
+
+$licenses = vicensvives_count_licenses();
+$allbooks = array();
+
+foreach ($ws->books() as $book) {
+ if (isset($licenses[$book->idBook])) {
+ $allbooks[] = $book;
+ }
+}
+
+$search = array(
+ 'fullname' => optional_param('fullname', '', PARAM_TEXT),
+ 'idsubject' => optional_param('idsubject', '', PARAM_INT),
+ 'idlevel' => optional_param('idlevel', '', PARAM_INT),
+ 'isbn' => optional_param('isbn', '', PARAM_TEXT),
+);
+
+$customdata = array('levels' => $levels, 'subjects' => $subjects, 'search' => $search);
+$form = new \block_courses_vicensvives\filter_form(null, $customdata, 'get');
+
+if ($form->is_cancelled()) {
+ redirect($baseurl);
+}
+
+$filteredbooks = array();
+
+foreach ($allbooks as $book) {
+ if ($search['fullname'] and !str_contains($book->fullname, $search['fullname'])) {
+ continue;
+ }
+ if ($search['idsubject'] and $book->idSubject != $search['idsubject']) {
+ continue;
+ }
+ if ($search['idlevel'] and $book->idLevel != $search['idlevel']) {
+ continue;
+ }
+ if ($search['isbn'] and !str_contains($book->isbn, $search['isbn'])) {
+ continue;
+ }
+ $filteredbooks[$book->idBook] = $book;
+}
+
+echo $OUTPUT->header();
+echo $OUTPUT->heading('');
+
+$form->display();
+
+if ($filteredbooks) {
+ $a = array('total' => count($allbooks), 'found' => count($filteredbooks));
+ $string = get_string('searchresult', 'block_courses_vicensvives', $a);
+} else {
+ $string = get_string('searchempty', 'block_courses_vicensvives', count($allbooks));
+}
+echo $OUTPUT->heading($string);
+
+$table = new flexible_table('vicensvives_books');
+$url = new moodle_url($baseurl, $search);
+$table->define_baseurl($url);
+$table->define_columns(array('name', 'subject', 'level', 'isbn', 'student', 'teacher'));
+$table->set_attribute('class', 'vicensvives_books');
+$table->column_class('actions', 'vicensvives_actions');
+$table->define_headers(array(
+ get_string('fullname', 'block_courses_vicensvives'),
+ get_string('subject', 'block_courses_vicensvives'),
+ get_string('level', 'block_courses_vicensvives'),
+ get_string('isbn', 'block_courses_vicensvives'),
+ get_string('studentlicenses', 'block_licenses_vicensvives')
+ . '
(' . get_string('activated', 'block_licenses_vicensvives')
+ . ' / ' . get_string('total', 'block_licenses_vicensvives') . ')',
+ get_string('teacherlicenses', 'block_licenses_vicensvives')
+ . '
(' . get_string('activated', 'block_licenses_vicensvives')
+ . ' / ' . get_string('total', 'block_licenses_vicensvives') . ')',
+));
+$table->pagesize(50, count($filteredbooks));
+$table->setup();
+
+// Ordenación
+core_collator::asort_objects_by_property($filteredbooks, 'fullname');
+
+// Paginación
+$books = array_slice($filteredbooks, $table->get_page_start(), $table->get_page_size());
+
+foreach ($books as $book) {
+ $table->add_data(array(
+ $book->fullname,
+ isset($subjects[$book->idSubject]) ? $subjects[$book->idSubject] : '',
+ isset($levels[$book->idLevel]) ? $levels[$book->idLevel] : '',
+ $book->isbn,
+ $licenses[$book->idBook]->studentactivated . ' / ' . $licenses[$book->idBook]->studenttotal,
+ $licenses[$book->idBook]->teacheractivated . ' / ' . $licenses[$book->idBook]->teachertotal,
+ ));
+}
+
+$table->finish_output();
+
+echo $OUTPUT->footer();
diff --git a/html/moodle2/blocks/licenses_vicensvives/locallib.php b/html/moodle2/blocks/licenses_vicensvives/locallib.php
new file mode 100644
index 0000000000..68dc1f89a8
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/locallib.php
@@ -0,0 +1,42 @@
+.
+
+require_once("$CFG->dirroot/blocks/courses_vicensvives/lib/vicensvives.php");
+
+function vicensvives_count_licenses($idbook=null) {
+ $result = array();
+ $ws = new vicensvives_ws();
+
+ foreach ($ws->licenses($idbook) as $license) {
+ $idbook = $license->idBook;
+ if (!isset($result[$idbook])) {
+ $result[$idbook] = new stdClass;
+ $result[$idbook]->studenttotal = 0;
+ $result[$idbook]->studentactivated = 0;
+ $result[$idbook]->teachertotal = 0;
+ $result[$idbook]->teacheractivated = 0;
+ }
+ if ($license->userType == 'Student') {
+ $result[$idbook]->studenttotal++;
+ $result[$idbook]->studentactivated += (int) $license->activated;
+ } else if ($license->userType == 'Teacher') {
+ $result[$idbook]->teachertotal++;
+ $result[$idbook]->teacheractivated += (int) $license->activated;
+ }
+ }
+
+ return $result;
+}
diff --git a/html/moodle2/blocks/licenses_vicensvives/styles.css b/html/moodle2/blocks/licenses_vicensvives/styles.css
new file mode 100644
index 0000000000..f92df7c819
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/styles.css
@@ -0,0 +1,7 @@
+.block_licenses_vicensvives .footer {
+ margin-top: 5px;
+}
+
+.block_licenses_vicensvives .error {
+ margin-bottom: 0;
+}
diff --git a/html/moodle2/blocks/licenses_vicensvives/version.php b/html/moodle2/blocks/licenses_vicensvives/version.php
new file mode 100644
index 0000000000..96f3a7f0fa
--- /dev/null
+++ b/html/moodle2/blocks/licenses_vicensvives/version.php
@@ -0,0 +1,24 @@
+.
+
+defined('MOODLE_INTERNAL') || die();
+
+$plugin->version = 2016091500;
+$plugin->requires = 2014111000;
+$plugin->component = 'block_licenses_vicensvives';
+$plugin->dependencies = array(
+ 'block_courses_vicensvives' => 2016091500,
+);
diff --git a/html/moodle2/course/format/vv/README.md b/html/moodle2/course/format/vv/README.md
new file mode 100644
index 0000000000..8624ee0c6f
--- /dev/null
+++ b/html/moodle2/course/format/vv/README.md
@@ -0,0 +1,73 @@
+Formato de curso para Vicens Vives
+==================================
+
+Formato de cursos basado en el formato por temas. Muestra la estructura del
+curso organizada por temas, apartados y actividades. El tema gráfico tiene un
+color asignado según la materia del curso.
+
+Los ficheros de Javscript (format.js) y CSS (styles.css) son iguales en todas
+las versiones de Moodle.
+
+Versiones de Moodle: 2.8, 2.9, 3.0, 3.1
+
+Estructura
+----------
+
+Las actividades se organizan en un árbol con tres niveles: temas, apartados y
+actividades. La apartados no tienen equivalencia en Moodle, sólo son una forma
+de agrupar actividades usando etiquetas como título y separador. Por ejemplo, un
+tema de Moodle tiene las actividades siguientes:
+
+- Tema 1
+ - Foro
+ - Etiqueta 1
+ - Página 1
+ - Tarea 1
+ - Etiqueta 2
+ - Página 2
+ - Tarea 2
+ - Etiqueta 3
+ - Cuestionario 1
+
+Se mostrará con esta estructura:
+
+- Tema 1
+ - Foro
+ - Etiqueta 1
+ - Página 1
+ - Tarea 1
+ - Etiqueta 2
+ - Página 2
+ - Tarea 2
+ - Etiqueta 3
+ - Cuestionario 1
+
+Los temas y secciones están inicialmente colapsados.
+
+Numeración apartados
+--------------------
+
+Los apartados están numerados con un número o letra, que debe indicarse en el
+nombre de la etiqueta con el formato "[X] Nombre de la etiqueta". La X es el
+número o letra que se mostrará en el recuadro de la numeración.
+
+Color
+-----
+
+Para determinar el color del tema gráfico se usa el campo idnumber del curso.
+Este campo tiene el formato "vv-ID_BOOK-RANDOM-SUBJECT". El color depende del
+SUBJECT, que puede ser puede ser "mates", "lengua", "naturales" o "sociales".
+
+Iconos
+------
+
+Las actividades de los libros importados tienen iconos personalizados. Se usa el
+idnumber para determinar el icono de cada actividad. El idnumber debe contener
+*unit*, *section*, *document*, *question* o *link*. Si el idnumber no cumple el
+formato se muestra el icono estándar de la actividad.
+
+Mover actividades
+-----------------
+
+No se muestra el botón para mover una actividad en las actividades importadas.
+Las creadas manualmente se pueden mover normalmente.
diff --git a/html/moodle2/course/format/vv/format.js b/html/moodle2/course/format/vv/format.js
new file mode 100644
index 0000000000..54511c8004
--- /dev/null
+++ b/html/moodle2/course/format/vv/format.js
@@ -0,0 +1,61 @@
+(function(window) {
+
+ $(document).ready(initBoxes);
+
+ function initBoxes() {
+ $('.vv-sectionname').unbind('click');
+ $('.vv-sectionname').bind('click', handleH3Pressed);
+
+ $('.vv-subsectionname').unbind('click');
+ $('.vv-subsectionname').bind('click', handleLiPressed);
+
+ $('.vv-sectionname a, .vv-subsectionname a').click(function(event) {
+ event.stopPropagation();
+ });
+
+ if (window.location.hash.match(/^#section-(\d+)$/)) {
+ var $section = $(window.location.hash);
+ var $sectionname = $section.children('.vv-sectionname');
+ if ($section.length && $sectionname.length) {
+ $section.children('ul.vv-section').slideDown();
+ $sectionname.addClass('vv-opened');
+ $sectionname.attr('data-state','opened');
+ }
+ }
+ }
+
+ function handleH3Pressed() {
+ var state = $(this).attr('data-state');
+ if (state === undefined) {
+ $(this).attr('data-state','closed');
+ }
+ state = $(this).attr('data-state');
+ if (state === 'opened') {
+ $(this).parent().find('> ul.vv-section').slideUp();
+ $(this).removeClass('vv-opened');
+ $(this).attr('data-state','closed');
+ } else {
+ $(this).parent().find('> ul.vv-section').slideDown();
+ $(this).addClass('vv-opened');
+ $(this).attr('data-state','opened');
+ }
+ }
+
+ function handleLiPressed() {
+ var state = $(this).attr('data-state');
+ if (state === undefined) {
+ $(this).attr('data-state','closed');
+ }
+ state = $(this).attr('data-state');
+ if (state === 'opened') {
+ $(this).parent().find('> ul.vv-subsection').slideUp();
+ $(this).removeClass('vv-opened');
+ $(this).attr('data-state','closed');
+ } else {
+ $(this).parent().find('> ul.vv-subsection').slideDown();
+ $(this).addClass('vv-opened');
+ $(this).attr('data-state','opened');
+ }
+ }
+
+})(this);
diff --git a/html/moodle2/course/format/vv/format.php b/html/moodle2/course/format/vv/format.php
new file mode 100644
index 0000000000..fbf0031fb4
--- /dev/null
+++ b/html/moodle2/course/format/vv/format.php
@@ -0,0 +1,37 @@
+.
+
+defined('MOODLE_INTERNAL') || die();
+
+require_once($CFG->libdir.'/filelib.php');
+require_once($CFG->libdir.'/completionlib.php');
+
+$context = context_course::instance($course->id);
+
+if (($marker >= 0) && has_capability('moodle/course:setcurrentsection', $context) && confirm_sesskey()) {
+ $course->marker = $marker;
+ course_set_marker($course->id, $marker);
+}
+
+// make sure all sections are created
+$course = course_get_format($course)->get_course();
+course_create_sections_if_missing($course, range(0, $course->numsections));
+
+$renderer = $PAGE->get_renderer('format_vv');
+$renderer->print_multiple_section_page($course, null, null, null, null);
+
+// Include course format js module
+$PAGE->requires->js('/course/format/vv/format.js');
diff --git a/html/moodle2/course/format/vv/lang/ca/format_vv.php b/html/moodle2/course/format/vv/lang/ca/format_vv.php
new file mode 100644
index 0000000000..1413c1a8bc
--- /dev/null
+++ b/html/moodle2/course/format/vv/lang/ca/format_vv.php
@@ -0,0 +1,24 @@
+.
+
+$string['pluginname'] = 'Format Vicens Vives';
+$string['currentsection'] = 'Unitat actual';
+$string['hidefromothers'] = 'Ocultar unitat';
+$string['page-course-view-topics'] = 'Qualsevol pàgina principal de curs en format per unitats';
+$string['page-course-view-topics-x'] = 'Qualsevol pàgina de curs en format per unitats';
+$string['section0name'] = 'General';
+$string['sectionname'] = 'Unitat';
+$string['showfromothers'] = 'Mostrar unitat';
diff --git a/html/moodle2/course/format/vv/lang/en/format_vv.php b/html/moodle2/course/format/vv/lang/en/format_vv.php
new file mode 100644
index 0000000000..44f05dccfa
--- /dev/null
+++ b/html/moodle2/course/format/vv/lang/en/format_vv.php
@@ -0,0 +1,24 @@
+.
+
+$string['pluginname'] = 'Vicens Vives format';
+$string['currentsection'] = 'This unit';
+$string['sectionname'] = 'Unit';
+$string['section0name'] = 'General';
+$string['page-course-view-topics'] = 'Any course main page in units format';
+$string['page-course-view-topics-x'] = 'Any course page in units format';
+$string['hidefromothers'] = 'Hide units';
+$string['showfromothers'] = 'Show units';
diff --git a/html/moodle2/course/format/vv/lang/es/format_vv.php b/html/moodle2/course/format/vv/lang/es/format_vv.php
new file mode 100644
index 0000000000..fd533d8430
--- /dev/null
+++ b/html/moodle2/course/format/vv/lang/es/format_vv.php
@@ -0,0 +1,24 @@
+.
+
+$string['pluginname'] = 'Formato Vicens Vives';
+$string['currentsection'] = 'Tema actual';
+$string['hidefromothers'] = 'Ocultar tema';
+$string['page-course-view-topics'] = 'Cualquier página principal de curso en formato por temas';
+$string['page-course-view-topics-x'] = 'Cualquier página de curso en formato por temas';
+$string['section0name'] = 'General';
+$string['sectionname'] = 'Tema';
+$string['showfromothers'] = 'Mostrar tema';
diff --git a/html/moodle2/course/format/vv/lib.php b/html/moodle2/course/format/vv/lib.php
new file mode 100644
index 0000000000..6a8fb96191
--- /dev/null
+++ b/html/moodle2/course/format/vv/lib.php
@@ -0,0 +1,82 @@
+.
+
+require_once("{$CFG->dirroot}/course/format/topics/lib.php");
+
+class format_vv extends format_topics {
+
+ /**
+ * Returns the information about the ajax support in the given source format
+ *
+ * The returned object's property (boolean)capable indicates that
+ * the course format supports Moodle course ajax features.
+ * The property (array)testedbrowsers can be used as a parameter for {@link ajaxenabled()}.
+ *
+ * @return stdClass
+ */
+ public function supports_ajax() {
+ $ajaxsupport = new stdClass();
+ $ajaxsupport->capable = false;
+ $ajaxsupport->testedbrowsers = array();
+ return $ajaxsupport;
+ }
+
+ /**
+ * Definitions of the additional options that this course format uses for course
+ *
+ * Topics format uses the following options:
+ * - coursedisplay
+ * - numsections
+ * - hiddensections
+ *
+ * @param bool $foreditform
+ * @return array of options
+ */
+ public function course_format_options($foreditform = false) {
+ $options = parent::course_format_options($foreditform);
+ unset($options['coursedisplay']); // This format is only single-page
+ unset($options['hiddensections']); // Hidden sections are always invisible
+ return $options;
+ }
+
+ /**
+ * Allows course format to execute code on moodle_page::set_course()
+ *
+ * @param moodle_page $page instance of page calling set_course
+ */
+ public function page_set_course(moodle_page $page) {
+ global $PAGE;
+
+ if (!$PAGE->requires->is_head_done()) {
+ $PAGE->requires->jquery();
+ }
+ }
+
+ /**
+ * Returns the format options stored for this course or course section
+ *
+ * @param null|int|stdClass|section_info $section if null the course format options will be returned
+ * otherwise options for specified section will be returned. This can be either
+ * section object or relative section number (field course_sections.section)
+ * @return array
+ */
+ public function get_format_options($section = null) {
+ $options = parent::get_format_options($section);
+ $options['coursedisplay'] = COURSE_DISPLAY_SINGLEPAGE; // This format is only single-page
+ $options['hiddensections'] = 1; // Hidden sections are always invisible
+ return $options;
+ }
+}
diff --git a/html/moodle2/course/format/vv/pix/arrow-hor.png b/html/moodle2/course/format/vv/pix/arrow-hor.png
new file mode 100644
index 0000000000..79946b0117
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/arrow-hor.png differ
diff --git a/html/moodle2/course/format/vv/pix/arrow-ver.png b/html/moodle2/course/format/vv/pix/arrow-ver.png
new file mode 100644
index 0000000000..708ab5b46a
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/arrow-ver.png differ
diff --git a/html/moodle2/course/format/vv/pix/edubook.png b/html/moodle2/course/format/vv/pix/edubook.png
new file mode 100644
index 0000000000..09054686f2
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/edubook.png differ
diff --git a/html/moodle2/course/format/vv/pix/edubook.svg b/html/moodle2/course/format/vv/pix/edubook.svg
new file mode 100644
index 0000000000..1bc816dc48
--- /dev/null
+++ b/html/moodle2/course/format/vv/pix/edubook.svg
@@ -0,0 +1,21 @@
+
+
+
diff --git a/html/moodle2/course/format/vv/pix/icon-activitat-B.png b/html/moodle2/course/format/vv/pix/icon-activitat-B.png
new file mode 100644
index 0000000000..1606993a78
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-activitat-B.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-activitat-G.png b/html/moodle2/course/format/vv/pix/icon-activitat-G.png
new file mode 100644
index 0000000000..5f5111dfe2
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-activitat-G.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-activitat-O.png b/html/moodle2/course/format/vv/pix/icon-activitat-O.png
new file mode 100644
index 0000000000..fa6da2915e
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-activitat-O.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-activitat-R.png b/html/moodle2/course/format/vv/pix/icon-activitat-R.png
new file mode 100644
index 0000000000..7d591c87b5
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-activitat-R.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-apartat-B.png b/html/moodle2/course/format/vv/pix/icon-apartat-B.png
new file mode 100644
index 0000000000..590deaaf9d
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-apartat-B.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-apartat-G.png b/html/moodle2/course/format/vv/pix/icon-apartat-G.png
new file mode 100644
index 0000000000..bd4a385267
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-apartat-G.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-apartat-O.png b/html/moodle2/course/format/vv/pix/icon-apartat-O.png
new file mode 100644
index 0000000000..d6e176d104
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-apartat-O.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-apartat-R.png b/html/moodle2/course/format/vv/pix/icon-apartat-R.png
new file mode 100644
index 0000000000..42199769e5
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-apartat-R.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-document-B.png b/html/moodle2/course/format/vv/pix/icon-document-B.png
new file mode 100644
index 0000000000..7c2a179db9
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-document-B.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-document-G.png b/html/moodle2/course/format/vv/pix/icon-document-G.png
new file mode 100644
index 0000000000..b5be158bf3
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-document-G.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-document-O.png b/html/moodle2/course/format/vv/pix/icon-document-O.png
new file mode 100644
index 0000000000..2cf59e3e8f
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-document-O.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-document-R.png b/html/moodle2/course/format/vv/pix/icon-document-R.png
new file mode 100644
index 0000000000..50302eb78c
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-document-R.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-link-B.png b/html/moodle2/course/format/vv/pix/icon-link-B.png
new file mode 100644
index 0000000000..9070a8fbc9
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-link-B.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-link-G.png b/html/moodle2/course/format/vv/pix/icon-link-G.png
new file mode 100644
index 0000000000..6b5668956b
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-link-G.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-link-O.png b/html/moodle2/course/format/vv/pix/icon-link-O.png
new file mode 100644
index 0000000000..0e91dbac32
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-link-O.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-link-R.png b/html/moodle2/course/format/vv/pix/icon-link-R.png
new file mode 100644
index 0000000000..6c2675255a
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-link-R.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-resum-B.png b/html/moodle2/course/format/vv/pix/icon-resum-B.png
new file mode 100644
index 0000000000..2a85e026e1
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-resum-B.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-resum-G.png b/html/moodle2/course/format/vv/pix/icon-resum-G.png
new file mode 100644
index 0000000000..56714bc1e9
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-resum-G.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-resum-O.png b/html/moodle2/course/format/vv/pix/icon-resum-O.png
new file mode 100644
index 0000000000..fed39af9dc
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-resum-O.png differ
diff --git a/html/moodle2/course/format/vv/pix/icon-resum-R.png b/html/moodle2/course/format/vv/pix/icon-resum-R.png
new file mode 100644
index 0000000000..993f4b415d
Binary files /dev/null and b/html/moodle2/course/format/vv/pix/icon-resum-R.png differ
diff --git a/html/moodle2/course/format/vv/renderer.php b/html/moodle2/course/format/vv/renderer.php
new file mode 100644
index 0000000000..9fe6ee1bd4
--- /dev/null
+++ b/html/moodle2/course/format/vv/renderer.php
@@ -0,0 +1,758 @@
+.
+
+defined('MOODLE_INTERNAL') || die();
+
+require_once($CFG->dirroot.'/course/format/topics/renderer.php');
+require_once($CFG->dirroot.'/course/renderer.php');
+
+class format_vv_renderer extends format_topics_renderer {
+
+ /**
+ * Constructor method, calls the parent constructor
+ *
+ * @param moodle_page $page
+ * @param string $target one of rendering target constants
+ */
+ public function __construct(moodle_page $page, $target) {
+ parent::__construct($page, $target);
+ $this->courserenderer = $this->page->get_renderer('format_vv', 'course');
+ }
+
+ /**
+ * Generate the section title, wraps it in a link to the section page if page is to be displayed on a separate page
+ *
+ * @param stdClass $section The course_section entry from DB
+ * @param stdClass $course The course entry from DB
+ * @return string HTML to output.
+ */
+ public function section_title($section, $course) {
+ $title = get_section_name($course, $section);
+ $url = course_get_url($course, $section->section, array('navigation' => true));
+ if ($url) {
+ $title = html_writer::link($url, $title);
+ }
+ return $title;
+ }
+
+ /**
+ * Generate the section title to be displayed on the section page, without a link
+ *
+ * @param stdClass $section The course_section entry from DB
+ * @param stdClass $course The course entry from DB
+ * @return string HTML to output.
+ */
+ public function section_title_without_link($section, $course) {
+ return get_section_name($course, $section);
+ }
+
+ /**
+ * Output the html for a multiple section page
+ *
+ * @param stdClass $course The course entry from DB
+ * @param array $sections (argument not used)
+ * @param array $mods (argument not used)
+ * @param array $modnames (argument not used)
+ * @param array $modnamesused (argument not used)
+ */
+ public function print_multiple_section_page($course, $sections, $mods, $modnames, $modnamesused) {
+ global $PAGE;
+
+ $modinfo = get_fast_modinfo($course);
+ $course = course_get_format($course)->get_course();
+
+ $context = context_course::instance($course->id);
+
+ echo html_writer::start_tag('div', array('class' => 'vv-' . $this->get_book_type($course)));
+ $coursefullname = format_string($course->fullname, true, array('context' => $context));
+ echo html_writer::tag('div', $coursefullname, array('class' => 'vv-title'));
+
+ // Copy activity clipboard..
+ echo $this->course_activity_clipboard($course, 0);
+
+ // Now the list of sections..
+ echo $this->start_section_list();
+
+ foreach ($modinfo->get_section_info_all() as $section => $thissection) {
+ if ($section == 0) {
+ // 0-section is displayed a little different then the others
+ if ($thissection->summary or !empty($modinfo->sections[0]) or $PAGE->user_is_editing()) {
+ echo $this->section_header($thissection, $course, false, 0);
+ echo $this->courserenderer->course_section_cm_list($course, $thissection, 0);
+ echo $this->courserenderer->course_section_add_cm_control($course, 0, 0);
+ echo $this->section_footer();
+ }
+ continue;
+ }
+ if ($section > $course->numsections) {
+ // activities inside this section are 'orphaned', this section will be printed as 'stealth' below
+ continue;
+ }
+ // Show the section if the user is permitted to access it, OR if it's not available
+ // but there is some available info text which explains the reason & should display.
+ $showsection = $thissection->uservisible ||
+ ($thissection->visible && !$thissection->available &&
+ !empty($thissection->availableinfo));
+ if (!$showsection) {
+ // If the hiddensections option is set to 'show hidden sections in collapsed
+ // form', then display the hidden section message - UNLESS the section is
+ // hidden by the availability system, which is set to hide the reason.
+ if (!$course->hiddensections && $thissection->available) {
+ echo $this->section_hidden($section, $course->id);
+ }
+
+ continue;
+ }
+
+ echo $this->section_header($thissection, $course, false, 0);
+ if ($thissection->uservisible) {
+ echo $this->courserenderer->course_section_cm_list($course, $thissection, 0);
+ echo $this->courserenderer->course_section_add_cm_control($course, $section, 0);
+ }
+ echo $this->section_footer();
+ }
+
+ if ($PAGE->user_is_editing() and has_capability('moodle/course:update', $context)) {
+ // Print stealth sections if present.
+ foreach ($modinfo->get_section_info_all() as $section => $thissection) {
+ if ($section <= $course->numsections or empty($modinfo->sections[$section])) {
+ // this is not stealth section or it is empty
+ continue;
+ }
+ echo $this->stealth_section_header($section);
+ echo $this->courserenderer->course_section_cm_list($course, $thissection, 0);
+ echo $this->stealth_section_footer();
+ }
+
+ echo $this->end_section_list();
+
+ echo html_writer::start_tag('div', array('id' => 'changenumsections', 'class' => 'mdl-right'));
+
+ // Increase number of sections.
+ $straddsection = get_string('increasesections', 'moodle');
+ $url = new moodle_url('/course/changenumsections.php',
+ array('courseid' => $course->id,
+ 'increase' => true,
+ 'sesskey' => sesskey()));
+ $icon = $this->output->pix_icon('t/switch_plus', $straddsection);
+ echo html_writer::link($url, $icon.get_accesshide($straddsection), array('class' => 'increase-sections'));
+
+ if ($course->numsections > 0) {
+ // Reduce number of sections sections.
+ $strremovesection = get_string('reducesections', 'moodle');
+ $url = new moodle_url('/course/changenumsections.php',
+ array('courseid' => $course->id,
+ 'increase' => false,
+ 'sesskey' => sesskey()));
+ $icon = $this->output->pix_icon('t/switch_minus', $strremovesection);
+ echo html_writer::link($url, $icon.get_accesshide($strremovesection), array('class' => 'reduce-sections'));
+ }
+
+ echo html_writer::end_tag('div');
+ } else {
+ echo $this->end_section_list();
+ }
+
+ echo html_writer::end_tag('div');
+ }
+
+ /**
+ * Generate the starting container html for a list of sections
+ * @return string HTML to output.
+ */
+ protected function start_section_list() {
+ return html_writer::start_tag('ul', array('class' => 'vv-topics'));
+ }
+
+ /**
+ * Generate the display of the header part of a section before
+ * course modules are included
+ *
+ * @param stdClass $section The course_section entry from DB
+ * @param stdClass $course The course entry from DB
+ * @param bool $onsectionpage true if being printed on a single-section page
+ * @param int $sectionreturn The section to return to after an action
+ * @return string HTML to output.
+ */
+ protected function section_header($section, $course, $onsectionpage, $sectionreturn=null) {
+ global $PAGE;
+
+ $o = '';
+ $currenttext = '';
+ $sectionstyle = '';
+
+ if ($section->section != 0) {
+ // Only in the non-general sections.
+ if (!$section->visible) {
+ $sectionstyle = ' hidden';
+ }
+ }
+
+ $o .= html_writer::start_tag('li', array('id' => 'section-'.$section->section,
+ 'class' => 'vv-section clearfix'.$sectionstyle, 'role' => 'region',
+ 'aria-label' => get_section_name($course, $section)));
+
+ // When not on a section page, we display the section titles except the general section if null
+ $hasnamenotsecpg = (!$onsectionpage && ($section->section != 0 || !is_null($section->name)));
+
+ // When on a section page, we only display the general section title, if title is not the default one
+ $hasnamesecpg = ($onsectionpage && ($section->section == 0 && !is_null($section->name)));
+
+ $classes = ' accesshide';
+ if ($hasnamenotsecpg || $hasnamesecpg) {
+ $classes = '';
+ }
+
+ $icons = html_writer::tag('span', '', array('class' => 'vv-icon-section'));
+ $icons .= html_writer::tag('span', '', array('class' => 'vv-icon-arrow'));
+ $edit = '';
+
+ $context = context_course::instance($course->id);
+ if ($PAGE->user_is_editing() && has_capability('moodle/course:update', $context)) {
+ $url = new moodle_url('/course/editsection.php', array('id' => $section->id, 'sr' => $sectionreturn));
+ $edit .= html_writer::start_tag('span', array('class' => 'commands'));
+ if ($section->section != 0) {
+ $controls = $this->section_edit_controls($course, $section, $onsectionpage);
+ if (!empty($controls)) {
+ $edit .= implode('', $controls);
+ }
+ }
+ $edit .= html_writer::end_tag('span');
+ }
+
+ $title = $this->section_title($section, $course);
+ $o .= $this->output->heading($icons . $title . ' ' . $edit, 3, 'vv-sectionname' . $classes);
+
+ $o .= $this->section_availability_message($section,
+ has_capability('moodle/course:viewhiddensections', $context));
+
+ return $o;
+ }
+
+
+ /**
+ * Generate the display of the footer part of a section
+ *
+ * @return string HTML to output.
+ */
+ protected function section_footer() {
+ return html_writer::end_tag('li');
+ }
+
+ /**
+ * Generate the header html of a stealth section
+ *
+ * @param int $sectionno The section number in the coruse which is being dsiplayed
+ * @return string HTML to output.
+ */
+ protected function stealth_section_header($sectionno) {
+ $o = '';
+ $o .= html_writer::start_tag('li', array('id' => 'section-'.$sectionno, 'class' => 'section main clearfix orphaned hidden'));
+ $o .= $this->output->heading(get_string('orphanedactivitiesinsectionno', '', $sectionno), 3, 'sectionname');
+ return $o;
+ }
+
+ /**
+ * Generate footer html of a stealth section
+ *
+ * @return string HTML to output.
+ */
+ protected function stealth_section_footer() {
+ return html_writer::end_tag('li');
+ }
+
+ /**
+ * Generate the edit controls of a section
+ *
+ * @param stdClass $course The course entry from DB
+ * @param stdClass $section The course_section entry from DB
+ * @param bool $onsectionpage true if being printed on a section page
+ * @return array of links with edit controls
+ */
+ protected function section_edit_controls($course, $section, $onsectionpage = false) {
+ global $PAGE;
+
+ if (!$PAGE->user_is_editing()) {
+ return array();
+ }
+
+ $coursecontext = context_course::instance($course->id);
+
+ if ($onsectionpage) {
+ $baseurl = course_get_url($course, $section->section);
+ } else {
+ $baseurl = course_get_url($course);
+ }
+ $baseurl->param('sesskey', sesskey());
+
+ $controls = array();
+
+ $url = clone($baseurl);
+ if (has_capability('moodle/course:sectionvisibility', $coursecontext)) {
+ if ($section->visible) { // Show the hide/show eye.
+ $strhidefromothers = get_string('hidefromothers', 'format_'.$course->format);
+ $url->param('hide', $section->section);
+ $controls[] = html_writer::link($url,
+ html_writer::empty_tag('img', array('src' => $this->output->pix_url('i/hide'),
+ 'class' => 'icon hide', 'alt' => $strhidefromothers)),
+ array('title' => $strhidefromothers, 'class' => 'editing_showhide'));
+ } else {
+ $strshowfromothers = get_string('showfromothers', 'format_'.$course->format);
+ $url->param('show', $section->section);
+ $controls[] = html_writer::link($url,
+ html_writer::empty_tag('img', array('src' => $this->output->pix_url('i/show'),
+ 'class' => 'icon hide', 'alt' => $strshowfromothers)),
+ array('title' => $strshowfromothers, 'class' => 'editing_showhide'));
+ }
+ }
+
+ return $controls;
+ }
+
+ private function get_book_type($course) {
+ $subjects = array("mates", "lengua", "naturales", "sociales");
+ $subject = substr($course->idnumber, strrpos($course->idnumber, '-') + 1);
+ if (!in_array($subject, $subjects)) {
+ return $subjects[0];
+ }
+ return $subject;
+ }
+}
+
+class format_vv_course_renderer extends core_course_renderer {
+
+ /**
+ * Renders HTML to display a list of course modules in a course section
+ * Also displays "move here" controls in Javascript-disabled mode
+ *
+ * This function calls {@link core_course_renderer::course_section_cm()}
+ *
+ * @param stdClass $course course object
+ * @param int|stdClass|section_info $section relative section number or section object
+ * @param int $sectionreturn section number to return to
+ * @param int $displayoptions
+ * @return void
+ */
+ public function course_section_cm_list($course, $section, $sectionreturn = null, $displayoptions = array()) {
+ global $USER;
+
+ $output = '';
+ $modinfo = get_fast_modinfo($course);
+ if (is_object($section)) {
+ $section = $modinfo->get_section_info($section->section);
+ } else {
+ $section = $modinfo->get_section_info($section);
+ }
+ $completioninfo = new completion_info($course);
+
+ // check if we are currently in the process of moving a module with JavaScript disabled
+ $ismoving = $this->page->user_is_editing() && ismoving($course->id);
+ if ($ismoving) {
+ $movingpix = new pix_icon('movehere', get_string('movehere'), 'moodle', array('class' => 'movetarget'));
+ $strmovefull = strip_tags(get_string("movefull", "", "'$USER->activitycopyname'"));
+ }
+
+ // Get the list of modules visible to user (excluding the module being moved if there is one)
+ $moduleshtml = array();
+ if (!empty($modinfo->sections[$section->section])) {
+ foreach ($modinfo->sections[$section->section] as $modnumber) {
+ $mod = $modinfo->cms[$modnumber];
+
+ if ($ismoving and $mod->id == $USER->activitycopy) {
+ // do not display moving mod
+ continue;
+ }
+
+ if ($modulehtml = $this->course_section_cm_list_item($course,
+ $completioninfo, $mod, $sectionreturn, $displayoptions)) {
+ $moduleshtml[$modnumber] = $modulehtml;
+ }
+ }
+ }
+
+ $sectionoutput = '';
+ if (!empty($moduleshtml) || $ismoving) {
+ $insubsection = false;
+
+ foreach ($moduleshtml as $modnumber => $modulehtml) {
+ if ($ismoving) {
+ $movingurl = new moodle_url('/course/mod.php', array('moveto' => $modnumber, 'sesskey' => sesskey()));
+ $sectionoutput .= html_writer::tag('li',
+ html_writer::link($movingurl, $this->output->render($movingpix), array('title' => $strmovefull)),
+ array('class' => 'movehere vv-activity'));
+ }
+
+ $mod = $modinfo->cms[$modnumber];
+ if ($mod->modname == 'label') {
+ if ($insubsection) {
+ $sectionoutput .= html_writer::end_tag('ul');
+ $sectionoutput .= html_writer::end_tag('li');
+ }
+ $sectionoutput .= html_writer::start_tag('li', array('class' => 'vv-subsection'));
+ $sectionoutput .= $modulehtml;
+ $sectionoutput .= html_writer::start_tag('ul', array('class' => 'vv-subsection vv-hidden'));
+ $insubsection = true;
+ } else {
+ $sectionoutput .= $modulehtml;
+ }
+ }
+
+ if ($ismoving) {
+ $movingurl = new moodle_url('/course/mod.php', array('movetosection' => $section->id, 'sesskey' => sesskey()));
+ $sectionoutput .= html_writer::tag('li',
+ html_writer::link($movingurl, $this->output->render($movingpix), array('title' => $strmovefull)),
+ array('class' => 'movehere vv-activity'));
+ }
+
+ if ($insubsection) {
+ $sectionoutput .= html_writer::end_tag('ul');
+ $sectionoutput .= html_writer::end_tag('li');
+ }
+ }
+
+ // Always output the section module list.
+ $class = 'vv-section img-text';
+ if ($section->section > 0) {
+ $class .= ' vv-hidden';
+ }
+ $output .= html_writer::tag('ul', $sectionoutput, array('class' => $class));
+
+ return $output;
+ }
+
+ /**
+ * Renders HTML to display one course module for display within a section.
+ *
+ * This function calls:
+ * {@link core_course_renderer::course_section_cm()}
+ *
+ * @param stdClass $course
+ * @param completion_info $completioninfo
+ * @param cm_info $mod
+ * @param int|null $sectionreturn
+ * @param array $displayoptions
+ * @return String
+ */
+ public function course_section_cm_list_item($course, &$completioninfo, cm_info $mod, $sectionreturn, $displayoptions = array()) {
+ $output = '';
+
+ if ($mod->modname == 'label') {
+ if (!$mod->uservisible) {
+ return;
+ }
+
+ $labelname = $mod->name;
+ $labelnum = ' ';
+ if (preg_match('/^(\w{1,5})\.(.*)$/', trim($mod->name), $match)) {
+ $labelnum = $match[1];
+ $labelname = trim($match[2]);
+ }
+ // Formato de versiones anteriores
+ if (preg_match('/^\[(\w+)\]( .*)$/', trim($mod->name), $match)) {
+ $labelnum = $match[1];
+ $labelname = $match[2];
+ }
+
+ $icons = html_writer::tag('span', '', array('class' => 'vv-icon-arrow'));
+ $number = html_writer::tag('span', $labelnum, array('class' => 'vv-subsectionnum'));
+ $name = format_string($labelname);
+
+ $modicons = '';
+ if ($this->page->user_is_editing()) {
+ $modicons .= $this->get_cm_edit_actions($mod, $mod->indent, $sectionreturn);
+ $modicons .= $mod->afterediticons;
+ }
+ if (!empty($modicons)) {
+ $icons .= html_writer::span($modicons, 'actions');
+ }
+
+ return html_writer::tag('h4', $icons . $number . $name, array('class' => 'vv-subsectionname'));
+ }
+
+ if ($modulehtml = $this->course_section_cm($course, $completioninfo, $mod, $sectionreturn, $displayoptions)) {
+ $modclasses = 'vv-activity ' . $mod->modname . ' modtype_' . $mod->modname . ' ' . $mod->extraclasses;
+ $output .= html_writer::tag('li', $modulehtml, array('class' => $modclasses, 'id' => 'module-' . $mod->id));
+ }
+ return $output;
+ }
+
+ /**
+ * Renders HTML to display one course module in a course section
+ *
+ * This includes link, content, availability, completion info and additional information
+ * that module type wants to display (i.e. number of unread forum posts)
+ *
+ * This function calls:
+ * {@link core_course_renderer::course_section_cm_name()}
+ * {@link cm_info::get_after_link()}
+ * {@link core_course_renderer::course_section_cm_text()}
+ * {@link core_course_renderer::course_section_cm_availability()}
+ * {@link core_course_renderer::course_section_cm_completion()}
+ * {@link course_get_cm_edit_actions()}
+ * {@link core_course_renderer::course_section_cm_edit_actions()}
+ *
+ * @param stdClass $course
+ * @param completion_info $completioninfo
+ * @param cm_info $mod
+ * @param int|null $sectionreturn
+ * @param array $displayoptions
+ * @return string
+ */
+ public function course_section_cm($course, &$completioninfo, cm_info $mod, $sectionreturn, $displayoptions = array()) {
+ $output = '';
+ // We return empty string (because course module will not be displayed at all)
+ // if:
+ // 1) The activity is not visible to users
+ // and
+ // 2) The 'availableinfo' is empty, i.e. the activity was
+ // hidden in a way that leaves no info, such as using the
+ // eye icon.
+ if (!$mod->uservisible && empty($mod->availableinfo)) {
+ return $output;
+ }
+
+ $output .= html_writer::start_tag('div');
+
+ // Start a wrapper for the actual content to keep the indentation consistent
+ $output .= html_writer::start_tag('div');
+
+ $modicons = '';
+ if ($this->page->user_is_editing()) {
+ $modicons .= $this->get_cm_edit_actions($mod, $mod->indent, $sectionreturn);
+ $modicons .= $mod->afterediticons;
+ }
+
+ $modicons .= $this->course_section_cm_completion($course, $completioninfo, $mod, $displayoptions);
+
+ if (!empty($modicons)) {
+ $output .= html_writer::span($modicons, 'actions');
+ }
+
+ // Display the link to the module (or do nothing if module has no url)
+ $cmname = $this->course_section_cm_name($mod, $displayoptions);
+
+ if (!empty($cmname)) {
+ // Start the div for the activity title, excluding the edit icons.
+ $output .= html_writer::start_tag('div', array('class' => 'activityinstance'));
+ $output .= $cmname;
+
+ // Module can put text after the link (e.g. forum unread)
+ $output .= $mod->afterlink;
+
+ // Closing the tag which contains everything but edit icons. Content part of the module should not be part of this.
+ $output .= html_writer::end_tag('div'); // .activityinstance
+ }
+
+ $output .= $this->course_section_cm_text($mod, $displayoptions);
+
+ // show availability info (if module is not available)
+ $output .= $this->course_section_cm_availability($mod, $displayoptions);
+
+ $output .= html_writer::end_tag('div');
+ return $output;
+ }
+
+ /**
+ * Returns the list of all editing actions that current user can perform on the module
+ *
+ * @param cm_info $mod The module to produce editing buttons for
+ * @param int $indent The current indenting (default -1 means no move left-right actions)
+ * @param int $sr The section to link back to (used for creating the links)
+ * @return string Output
+ */
+ public function get_cm_edit_actions(cm_info $mod, $indent=-1, $sr=null) {
+ global $COURSE, $SITE;
+
+ static $str;
+
+ $output = '';
+
+ $coursecontext = context_course::instance($mod->course);
+ $modcontext = context_module::instance($mod->id);
+
+ $editcaps = array('moodle/course:manageactivities', 'moodle/course:activityvisibility');
+
+ // No permission to edit anything.
+ if (!has_any_capability($editcaps, $modcontext)) {
+ return array();
+ }
+
+ $hasmanageactivities = has_capability('moodle/course:manageactivities', $modcontext);
+
+ if (!isset($str)) {
+ $str = get_strings(array('delete', 'move', 'editsettings', 'hide', 'show'), 'moodle');
+ }
+
+ $baseurl = new moodle_url('/course/mod.php', array('sesskey' => sesskey()));
+
+ if ($sr !== null) {
+ $baseurl->param('sr', $sr);
+ }
+
+ // Move
+ if ($hasmanageactivities) {
+ if (!preg_match('/^\d+_(label|section|document|question|link)_\d+/', $mod->idnumber)) {
+ $output .= $this->output->action_link(
+ new moodle_url($baseurl, array('copy' => $mod->id)), '', null, array(),
+ new pix_icon('t/move', $str->move, 'moodle', array('class' => 'iconsmall', 'title' => $str->move))
+ );
+ }
+ }
+
+ // Update.
+ if ($hasmanageactivities) {
+ $output .= $this->output->action_link(
+ new moodle_url($baseurl, array('update' => $mod->id)), '', null, array(),
+ new pix_icon('t/edit', $str->editsettings, 'moodle', array('class' => 'iconsmall', 'title' => $str->editsettings))
+ );
+ }
+
+ // Hide/Show.
+ if (has_capability('moodle/course:activityvisibility', $modcontext)) {
+ if ($mod->visible) {
+ $output .= $this->output->action_link(
+ new moodle_url($baseurl, array('hide' => $mod->id)), '', null, array(),
+ new pix_icon('t/hide', $str->hide, 'moodle', array('class' => 'iconsmall', 'title' => $str->hide))
+ );
+ } else {
+ $output .= $this->output->action_link(
+ new moodle_url($baseurl, array('show' => $mod->id)), '', null, array(),
+ new pix_icon('t/show', $str->show, 'moodle', array('class' => 'iconsmall', 'title' => $str->show))
+ );
+ }
+ }
+
+ // Delete.
+ if ($hasmanageactivities) {
+ $output .= $this->output->action_link(
+ new moodle_url($baseurl, array('delete' => $mod->id)), '', null, array(),
+ new pix_icon('t/delete', $str->delete, 'moodle', array('class' => 'iconsmall', 'title' => $str->delete))
+ );
+ }
+
+ return $output;
+ }
+
+ /**
+ * Renders html to display a name with the link to the course module on a course page
+ *
+ * If module is unavailable for user but still needs to be displayed
+ * in the list, just the name is returned without a link
+ *
+ * Note, that for course modules that never have separate pages (i.e. labels)
+ * this function return an empty string
+ *
+ * @param cm_info $mod
+ * @param array $displayoptions
+ * @return string
+ */
+ public function course_section_cm_name(cm_info $mod, $displayoptions = array()) {
+ global $CFG;
+ $output = '';
+ if (!$mod->uservisible && empty($mod->availableinfo)) {
+ // nothing to be displayed to the user
+ return $output;
+ }
+ if (!$mod->url) {
+ return $output;
+ }
+
+ // Accessibility: for files get description via icon, this is very ugly hack!
+ $instancename = $mod->get_formatted_name();
+ $altname = $mod->modfullname;
+ // Avoid unnecessary duplication: if e.g. a forum name already
+ // includes the word forum (or Forum, etc) then it is unhelpful
+ // to include that in the accessible description that is added.
+ if (false !== strpos(core_text::strtolower($instancename),
+ core_text::strtolower($altname))) {
+ $altname = '';
+ }
+ // File type after name, for alphabetic lists (screen reader).
+ if ($altname) {
+ $altname = get_accesshide(' '.$altname);
+ }
+
+ // For items which are hidden but available to current user
+ // ($mod->uservisible), we show those as dimmed only if the user has
+ // viewhiddenactivities, so that teachers see 'items which might not
+ // be available to some students' dimmed but students do not see 'item
+ // which is actually available to current student' dimmed.
+ $linkclasses = 'vv-activitylink';
+ $accesstext = '';
+ $textclasses = '';
+ if ($mod->uservisible) {
+ $conditionalhidden = $this->is_cm_conditionally_hidden($mod);
+ $accessiblebutdim = (!$mod->visible || $conditionalhidden) &&
+ has_capability('moodle/course:viewhiddenactivities', $mod->context);
+ if ($accessiblebutdim) {
+ $linkclasses .= ' dimmed';
+ $textclasses .= ' dimmed_text';
+ if ($conditionalhidden) {
+ $linkclasses .= ' conditionalhidden';
+ $textclasses .= ' conditionalhidden';
+ }
+ // Show accessibility note only if user can access the module himself.
+ $accesstext = get_accesshide(get_string('hiddenfromstudents').':'. $mod->modfullname);
+ }
+ } else {
+ $linkclasses .= ' dimmed';
+ $textclasses .= ' dimmed_text';
+ }
+
+ // Get on-click attribute value if specified and decode the onclick - it
+ // has already been encoded for display (puke).
+ $onclick = htmlspecialchars_decode($mod->onclick, ENT_QUOTES);
+
+ $groupinglabel = '';
+ if (!empty($mod->groupingid) && has_capability('moodle/course:managegroups', context_course::instance($mod->course))) {
+ $groupings = groups_get_all_groupings($mod->course);
+ $groupinglabel = html_writer::tag('span', '('.format_string($groupings[$mod->groupingid]->name).')',
+ array('class' => 'groupinglabel '.$textclasses));
+ }
+
+ // Display link itself.
+ if (preg_match('/unit|section/', $mod->idnumber)) {
+ $icon = html_writer::tag('div', '', array('class' => 'vv-icon-book'));
+ } else if (preg_match('/document/', $mod->idnumber)) {
+ $icon = html_writer::tag('div', '', array('class' => 'vv-icon-document'));
+ } else if (preg_match('/question/', $mod->idnumber)) {
+ $icon = html_writer::tag('div', '', array('class' => 'vv-icon-activity'));
+ } else if (preg_match('/link/', $mod->idnumber)) {
+ $icon = html_writer::tag('div', '', array('class' => 'vv-icon-link'));
+ } else {
+ $attributes = array(
+ 'src' => $mod->get_icon_url(),
+ 'class' => 'iconlarge activityicon',
+ 'alt' => ' ',
+ 'role' => 'presentation',
+ );
+ $icon = html_writer::empty_tag('img', $attributes);
+ }
+
+ $activitylink = $icon . $accesstext .
+ html_writer::tag('span', $instancename . $altname, array('class' => 'instancename'));
+ if ($mod->uservisible) {
+ $output .= html_writer::link($mod->url, $activitylink, array('class' => $linkclasses, 'onclick' => $onclick)) .
+ $groupinglabel;
+ } else {
+ // We may be displaying this just in order to show information
+ // about visibility, without the actual link ($mod->uservisible)
+ $output .= html_writer::tag('div', $activitylink, array('class' => $textclasses)) .
+ $groupinglabel;
+ }
+ return $output;
+ }
+}
diff --git a/html/moodle2/course/format/vv/styles.css b/html/moodle2/course/format/vv/styles.css
new file mode 100644
index 0000000000..62a6f5508f
--- /dev/null
+++ b/html/moodle2/course/format/vv/styles.css
@@ -0,0 +1,315 @@
+.vv-hidden {
+ display: none;
+}
+
+.vv-title {
+ padding: 0px 0px 0px 15px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -ms-border-radius: 5px;
+ -o-border-radius: 5px;
+ border-radius: 5px;
+ background-image: url([[pix:format_vv|edubook]]);
+ background-repeat: no-repeat;
+ background-size: 57px;
+ background-position: right center;
+ background-color: gray;
+ font-size: 22px;
+ color: #ffffff;
+ font-weight: 400;
+ letter-spacing: 0.025em;
+ line-height: 57px;
+ margin: 0;
+}
+
+.vv-mates .vv-title {
+ background-color: #055FA8;
+}
+
+.vv-lengua .vv-title {
+ background-color: #BC0A0A;
+}
+
+.vv-naturales .vv-title {
+ background-color: #EF7625;
+}
+
+.vv-sociales .vv-title {
+ background-color: #039403;
+}
+
+.vv-topics {
+ font-family: 'helvetica', sans-serif;
+ font-weight: 400;
+ font-size: 16px;
+ margin-left: 0;
+ margin-top: 16px;
+ margin-right: 0;
+}
+
+.vv-topics li {
+ list-style: none;
+}
+
+h3.vv-sectionname {
+ text-align: left;
+ font-size: 18px;
+ line-height: 22px;
+ color: #000;
+ font-weight: 400;
+ border-bottom: 1px solid #CCC;
+ padding: 15px 0px 15px 15px;
+ margin: 0;
+ cursor: pointer;
+}
+
+li.vv-section.hidden h3.vv-sectionname {
+ opacity: 0.5;
+}
+
+.vv-icon-section {
+ float: left;
+ width: 30px;
+ height: 30px;
+ margin-right: 15px;
+ background-repeat: no-repeat;
+ background-position: 0px 0px;
+}
+
+.vv-mates .vv-icon-section {
+ background-image: url([[pix:format_vv|icon-apartat-B]]);
+}
+
+.vv-lengua .vv-icon-section {
+ background-image: url([[pix:format_vv|icon-apartat-R]]);
+}
+
+.vv-naturales .vv-icon-section {
+ background-image: url([[pix:format_vv|icon-apartat-O]]);
+}
+
+.vv-sociales .vv-icon-section {
+ background-image: url([[pix:format_vv|icon-apartat-G]]);
+}
+
+.vv-icon-arrow {
+ float: right;
+ width: 11px;
+ height: 22px;
+ background-image: url([[pix:format_vv|arrow-ver]]);
+ background-repeat: no-repeat;
+ background-position: center;
+ margin-left: 10px;
+}
+
+.vv-opened .vv-icon-arrow {
+ background-image: url([[pix:format_vv|arrow-hor]]);
+}
+
+ul.vv-section {
+ counter-reset: subsection;
+ padding: 0;
+ margin: 0;
+}
+
+li.vv-section.hidden {
+ display: block;
+ visibility: visible;
+}
+
+li.vv-subsection {
+ border-bottom: 1px solid #CCC;
+ padding: 0;
+ color: #666;
+ color: #666;
+}
+
+h4.vv-subsectionname {
+ text-align: left;
+ font-size: 16px;
+ font-weight: 400;
+ padding: 15px 0 15px 60px;
+ margin: 0;
+ cursor: pointer;
+}
+
+h4.vv-subsectionname > div.no-overflow {
+ margin-right: 20px;
+}
+
+h4.vv-subsectionname div.no-overflow > p:last-child {
+ margin-bottom: 0;
+}
+
+.vv-subsectionnum {
+ float: left;
+ padding: 2px 6px;
+ min-width: 10px;
+ color: #FFF;
+ border-radius: 3px;
+ margin-right: 15px;
+ background-color: gray;
+ text-align: center;
+}
+
+.vv-mates .vv-subsectionnum {
+ background-color: #055FA8;
+}
+
+.vv-lengua .vv-subsectionnum {
+ background-color: #BC0A0A;
+}
+
+.vv-naturales .vv-subsectionnum {
+ background-color: #EF7625;
+}
+
+.vv-sociales .vv-subsectionnum {
+ background-color: #039403;
+}
+
+ul.vv-subsection {
+ padding: 0;
+ margin: 0;
+ border-top: 1px solid #CCC;
+ margin-bottom: -1px;
+}
+
+li.vv-activity {
+ padding: 15px 0 15px 90px;
+ border-bottom: 1px solid #CCC;
+}
+
+a.vv-activitylink,
+a.vv-activitylink:hover {
+ color: #666;
+ text-decoration: none;
+}
+
+.img-text a.vv-activitylink:hover span {
+ text-decoration: none;
+}
+
+li.vv-activity .contentafterlink {
+ clear: both;
+ margin-top: 15px;
+}
+
+.vv-contentafterlink p {
+ margin: 0;
+}
+
+.vv-topics .autocompletion,
+.vv-topics form.togglecompletion {
+ float: right;
+}
+
+.vv-topics .commands,
+.vv-topics .actions {
+ float: right;
+}
+
+.vv-topics .commands img.icon,
+.vv-topics .actions img.iconsmall {
+ vertical-align: middle;
+ margin: 0 3px;
+ padding: 0;
+}
+
+.vv-topics .commands a {
+ margin-left: 5px;
+}
+
+.vv-topics .activityicon {
+ float: left;
+ width: 16px;
+ height: 16px;
+ margin-top: 2px;
+ margin-left: 10px;
+ margin-right: 19px;
+}
+
+.vv-topics .activityicon.iconlarge {
+ width: 24px;
+ height: 24px;
+ margin-top: -2px;
+ margin-left: 6px;
+ margin-right: 15px;
+}
+
+.vv-icon-activity,
+.vv-icon-book,
+.vv-icon-document,
+.vv-icon-link {
+ float: left;
+ width: 35px;
+ height: 30px;
+ margin-top: -8px;
+ margin-right: 10px;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+
+.vv-mates .vv-icon-activity {
+ background-image: url([[pix:format_vv|icon-activitat-B]]);
+}
+
+.vv-lengua .vv-icon-activity {
+ background-image: url([[pix:format_vv|icon-activitat-R]]);
+}
+
+.vv-naturales .vv-icon-activity {
+ background-image: url([[pix:format_vv|icon-activitat-O]]);
+}
+
+.vv-sociales .vv-icon-activity {
+ background-image: url([[pix:format_vv|icon-activitat-G]]);
+}
+
+.vv-mates .vv-icon-book {
+ background-image: url([[pix:format_vv|icon-resum-B]]);
+}
+
+.vv-lengua .vv-icon-book {
+ background-image: url([[pix:format_vv|icon-resum-R]]);
+}
+
+.vv-naturales .vv-icon-book {
+ background-image: url([[pix:format_vv|icon-resum-O]]);
+}
+
+.vv-sociales .vv-icon-book {
+ background-image: url([[pix:format_vv|icon-resum-G]]);
+}
+
+.vv-mates .vv-icon-document {
+ background-image: url([[pix:format_vv|icon-document-B]]);
+}
+
+.vv-lengua .vv-icon-document {
+ background-image: url([[pix:format_vv|icon-document-R]]);
+}
+
+.vv-naturales .vv-icon-document {
+ background-image: url([[pix:format_vv|icon-document-O]]);
+}
+
+.vv-sociales .vv-icon-document {
+ background-image: url([[pix:format_vv|icon-document-G]]);
+}
+
+.vv-mates .vv-icon-link {
+ background-image: url([[pix:format_vv|icon-link-B]]);
+}
+
+.vv-lengua .vv-icon-link {
+ background-image: url([[pix:format_vv|icon-link-R]]);
+}
+
+.vv-naturales .vv-icon-link {
+ background-image: url([[pix:format_vv|icon-link-O]]);
+}
+
+.vv-sociales .vv-icon-link {
+ background-image: url([[pix:format_vv|icon-link-G]]);
+}
diff --git a/html/moodle2/course/format/vv/version.php b/html/moodle2/course/format/vv/version.php
new file mode 100644
index 0000000000..a44cedefb4
--- /dev/null
+++ b/html/moodle2/course/format/vv/version.php
@@ -0,0 +1,21 @@
+.
+
+defined('MOODLE_INTERNAL') || die();
+
+$plugin->version = 2016091500;
+$plugin->requires = 2014111000;
+$plugin->component = 'format_vv';
diff --git a/html/moodle2/filter/wiris/README.md b/html/moodle2/filter/wiris/README.md
index 8ee022fcaa..81500bbb2a 100644
--- a/html/moodle2/filter/wiris/README.md
+++ b/html/moodle2/filter/wiris/README.md
@@ -1,5 +1,6 @@
WIRIS plugin for Moodle
==========
+[![Build Status](https://travis-ci.org/wiris/moodle-atto_wiris.svg?branch=master)](https://travis-ci.org/wiris/moodle-atto_wiris)
Add a fully WYSIWYG editor for scientific expressions ([WIRIS EDITOR](http://www.wiris.com/editor)) and, optionally, an advanced calculator tool ([WIRIS CAS](http://www.wiris.com/cas)). Enabled editing to STEM related topics (Science, Technology, Engineering and Mathematics).
diff --git a/html/moodle2/filter/wiris/VERSION b/html/moodle2/filter/wiris/VERSION
index 39ae93370c..f18925ab6a 100644
--- a/html/moodle2/filter/wiris/VERSION
+++ b/html/moodle2/filter/wiris/VERSION
@@ -1 +1 @@
-4.1.1.1361
\ No newline at end of file
+4.2.0.1364
\ No newline at end of file
diff --git a/html/moodle2/filter/wiris/filter.php b/html/moodle2/filter/wiris/filter.php
index 93a14a1087..d0ab6fa9ef 100644
--- a/html/moodle2/filter/wiris/filter.php
+++ b/html/moodle2/filter/wiris/filter.php
@@ -108,7 +108,7 @@ public function filter($text, array $options = array()) {
}
$prop['refererquery'] = $query;
-
+ $prop['lang'] = current_language();
$prop['savemode'] = 'safeXml'; // ...safeXml filtering.
$text = $textservice->filter($text, $prop);
$prop['savemode'] = 'xml'; // ...xml filtering.
diff --git a/html/moodle2/filter/wiris/filtersettings.php b/html/moodle2/filter/wiris/filtersettings.php
index 26aa115219..d5ade48371 100644
--- a/html/moodle2/filter/wiris/filtersettings.php
+++ b/html/moodle2/filter/wiris/filtersettings.php
@@ -36,11 +36,10 @@
$editorplugininstalled = filter_wiris_pluginwrapper::get_wiris_plugin();
if (!empty($editorplugininstalled)) {
- // Editor and CAS checkbox.
+ // Editor checkbox.
$output = '';
$wirisplugin->begin();
$waseditorenabled = $wirisplugin->was_editor_enabled();
- $wascasenabled = $wirisplugin->was_cas_enabled();
$waschemeditorenabled = $wirisplugin->was_chem_editor_enabled();
$conf = $wirisplugin->get_instance()->getConfiguration();
$wirisplugin->end();
@@ -74,11 +73,6 @@
get_string('wirischemeditor', 'filter_wiris'), '', '0'));
}
- if ($wascasenabled) {
- $settings->add(new admin_setting_configcheckbox('filter_wiris_cas_enable',
- get_string('wiriscas', 'filter_wiris'), '', '0'));
- }
-
} else {
if (!get_config('filter_wiris', 'filter_standalone')) {
$output = '
No és pot crear la base de dades.
La base de dades especificada no existeix i l\'usuari que heu proporcionat no té permís per a crear-la.
+$string['cannotcreatedboninstall'] = 'No es pot crear la base de dades.
La base de dades especificada no existeix i l\'usuari que heu proporcionat no té permís per a crear-la.
L\'administrador del lloc hauria de verificar la configuració de la base de dades.
'; $string['cannotcreategroup'] = 'S\'ha produït un error en crear la categoria'; $string['cannotcreatelangbase'] = 'S\'ha produït un error. No s\'ha creat el directori base d\'idiomes.'; diff --git a/html/moodle2/langpacks/ca/form.php b/html/moodle2/langpacks/ca/form.php index 3c4a24652a..d9f0f363c9 100644 --- a/html/moodle2/langpacks/ca/form.php +++ b/html/moodle2/langpacks/ca/form.php @@ -67,6 +67,6 @@ $string['somefieldsrequired'] = 'Aquest formulari conté els camps obligatoris {$a}.'; $string['time'] = 'Temps'; $string['timeunit'] = 'Unitat de temps'; -$string['timing'] = 'Cronometratge'; +$string['timing'] = 'Temporització'; $string['unmaskpassword'] = 'Desemmascara'; $string['year'] = 'Any'; diff --git a/html/moodle2/langpacks/ca/geogebra.php b/html/moodle2/langpacks/ca/geogebra.php index 6e1bd20c78..545efb7f70 100644 --- a/html/moodle2/langpacks/ca/geogebra.php +++ b/html/moodle2/langpacks/ca/geogebra.php @@ -122,6 +122,7 @@ $string['showToolBarHelp'] = 'Mostra l\'ajuda de la barra d\'eines'; $string['status'] = 'Estat'; $string['submitandfinish'] = 'Entrega i acaba'; +$string['timing'] = 'Temporització'; $string['total'] = 'Total'; $string['unfinished'] = 'No finalitzat'; $string['ungraded'] = 'Sense qualificar'; diff --git a/html/moodle2/langpacks/ca/grades.php b/html/moodle2/langpacks/ca/grades.php index d4e20112ca..73b2e9ef05 100644 --- a/html/moodle2/langpacks/ca/grades.php +++ b/html/moodle2/langpacks/ca/grades.php @@ -111,7 +111,7 @@ $string['availableidnumbers'] = 'Números ID disponibles'; $string['average'] = 'Mitjana'; $string['averagesdecimalpoints'] = 'Decimals en les mitjanes de columnes'; -$string['averagesdecimalpoints_help'] = 'Especifica el nombre de decimals que es visualitzaran en la mitjana de cada columna. Si seleccioneu \'Hereta\' s\'utilitzarà el tipus de visualització de cada columna.
'; +$string['averagesdecimalpoints_help'] = 'Especifica el nombre de decimals que es visualitzaran en la mitjana de cada columna. Si seleccioneu «Hereta» s\'utilitzarà el tipus de visualització de cada columna.
'; $string['averagesdisplaytype'] = 'Tipus de visualització de les mitjanes de columnes'; $string['averagesdisplaytype_help'] = 'Aquest paràmetre determina si la mitjana es mostra com a valor real, percentatge o lletra. Si seleccioneu «Hereta» s\'utilitzarà el que estigui establert a la categoria o element de qualificació.'; $string['backupwithoutgradebook'] = 'La còpia de seguretat no conté la configuració del butlletí de qualificacions'; @@ -446,7 +446,7 @@ $string['letterreal'] = 'Lletra (real)'; $string['letters'] = 'Lletres'; $string['linkedactivity'] = 'Activitat vinculada'; -$string['linkedactivity_help'] = 'Especifica una activitat opcional vinculada a aquest element de competència. S\'utilitza per mesurar el rendiment de l\'estudiantat sobre la base de criteris no avaluats per la qualificació de l\'activitat.
'; +$string['linkedactivity_help'] = 'Especifica una activitat opcional vinculada a aquest element de competència. S\'utilitza per mesurar el rendiment de l\'estudiant sobre la base de criteris no avaluats per la qualificació de l\'activitat.
'; $string['linktoactivity'] = 'Enllaç a l\'activitat {$a->name}'; $string['lock'] = 'Bloca'; $string['locked'] = 'Blocat'; @@ -626,7 +626,7 @@ $string['rangesdecimalpoints'] = 'Decimals en les gammes'; $string['rangesdecimalpoints_help'] = 'Especifica el nombre de decimals que es mostren en cada element de la gamma. Aquest nombre es pot canviar després per a cada element de qualificació.
'; $string['rangesdisplaytype'] = 'Tipus de visualització de les gammes'; -$string['rangesdisplaytype_help'] = 'Especifica com visualitzar les gammes. Si seleccioneu Hereta, s\'utilitzarà el tipus de visualització de cada columna.
'; +$string['rangesdisplaytype_help'] = 'Especifica com es visualitzen les gammes. Si seleccioneu Hereta, s\'utilitzarà el tipus de visualització de cada columna.
'; $string['rank'] = 'Posició'; $string['rawpct'] = '% brut'; $string['real'] = 'Real'; @@ -703,8 +703,7 @@ * Mostra tots els elements ocults. Els noms dels elements de qualificació ocults es mostren, però les qualificacions resten ocultes. * Mostra només els elements «oculta fins». Els elements de qualificació amb una data «oculta fins» s\'oculten completament fins aquesta data. Després d\'aquesta data es mostrarà l\'element complet. * No mostris cap element ocult. Els elements de qualificació ocults s\'oculten completament.'; -$string['showhiddenuntilonly'] = 'Mostra només els elements "oculta -fins"'; +$string['showhiddenuntilonly'] = 'Mostra només els elements «oculta fins»'; $string['showingaggregatesonly'] = 'S\'estan mostrant només els agregats'; $string['showingfullmode'] = 'S\'està mostrant la vista completa'; $string['showinggradesonly'] = 'S\'estan mostrant només les qualificacions'; diff --git a/html/moodle2/langpacks/ca/hub.php b/html/moodle2/langpacks/ca/hub.php index 917087a75f..fbe214dd53 100644 --- a/html/moodle2/langpacks/ca/hub.php +++ b/html/moodle2/langpacks/ca/hub.php @@ -105,7 +105,7 @@ $string['forceunregister'] = 'Sí, suprimeix les dades del registre'; $string['forceunregisterconfirmation'] = 'El vostre lloc no pot arribar a {$a}. El concentrador deu haver caigut temporalment. A menys que estigueu segurs de voler continuar amb la supressió del registre a nivell local, si us plau cancel·leu-ho i torneu a intentar-ho més tard.'; $string['geolocation'] = 'Geolocalització'; -$string['geolocation_help'] = 'En un futur poden proporcionar-vos cerca basada en la geolocalització. Si voleu especificar la localització del vostre curs utilitzeu un valor de latitud/longitud aquí (ex: -31.947884,115.871285). Una forma de trobar això és utilitzar Google Maps.'; +$string['geolocation_help'] = 'En un futur poden proporcionar-vos cerques basades en la geolocalització. Si voleu especificar la localització del vostre curs, utilitzeu un valor de latitud/longitud aquí (p. ex.: -31.947884,115.871285). Una forma de trobar això és utilitzar Google Maps.'; $string['hub'] = 'Concentrador'; $string['imageurl'] = 'URL de la imatge'; $string['imageurl_help'] = 'Aquesta imatge es mostrarà al concentrador. Aquesta imatge ha d\'estar disponible al concentrador en qualsevol moment. La imatge hauria de tindre una mida màxima de {$a->width} X {$a->height}'; @@ -202,7 +202,7 @@ $string['siteemail'] = 'Adreça de correu electrònic'; $string['siteemail_help'] = 'Us cal proporcionar un correu electrònic a l\'administrador del concentrador perquè contacti amb vós. Això no s\'utilitzarà per a cap altre propòsit. És recomanable introduir un correu que reflecteixi la vostra posició (ex.: adminlloc@exemple.com ) i no directament un de personal.'; $string['sitegeolocation'] = 'Geolocalització'; -$string['sitegeolocation_help'] = 'En un futur podem proporcionar cerca basada en la geolocalització als concentradors. Si voleu especificar la localització del vostre lloc utilitzeu la latitud / longitud aquí (ex: -31.947884,115.871285). Una manera de trobar-la és utilitzar Google Maps.'; +$string['sitegeolocation_help'] = 'En un futur podem proporcionar cerques basades en la geolocalització als concentradors. Si voleu especificar la localització del vostre lloc, utilitzeu la latitud/longitud aquí (p. ex.: -31.947884,115.871285). Una manera de trobar-la és utilitzar Google Maps.'; $string['sitelang'] = 'Idioma'; $string['sitelang_help'] = 'L\'idioma del vostre lloc pot mostrar-se al llistat de llocs.'; $string['sitename'] = 'Nom'; diff --git a/html/moodle2/langpacks/ca/media.php b/html/moodle2/langpacks/ca/media.php index 3a1f4be00b..d6c7b4ebc5 100644 --- a/html/moodle2/langpacks/ca/media.php +++ b/html/moodle2/langpacks/ca/media.php @@ -28,10 +28,9 @@ $string['flashanimation'] = 'Animació Flash'; $string['flashanimation_desc'] = 'Fitxers amb extensió *.swf. Per raons de seguretat aquest filtre s\'utilitza només en textos de confiança.'; $string['flashvideo'] = 'Vídeo Flash'; -$string['flashvideo_desc'] = 'Fitxers amb extensió *.flv i *.f4v. Reprodueix clips de vídeo utilitzant Flowplayer, Es requereix el connector de Flash i javascript. Fa servir HTML 5 com alternativa de video si s\'han especificat diverses fonts.'; +$string['flashvideo_desc'] = 'Fitxers amb l\'extensió *.flv i *.f4v. Reprodueix clips de vídeo utilitzant Flowplayer. Es requereix el connector de Flash i JavaScript.'; $string['html5audio'] = 'HTML 5 audio'; -$string['html5audio_desc'] = 'Fitxers d\'audio amb extensió *.ogg, *.aac i altres. És només compatible amb les últimes versions dels navegadors, malauradament no existeix un format que sigui compatible amb tots els navegadors. -Una solució és especificar alternatives separades per # (per exemple: http://example.org/audio.aac#http://example.org/audio.aac#http://example.org/audio.mp3#), el reproductor QuickTime és utilitzat com a alternativa pels navegadors més antics, una alternativa pot ser qualsevol tipus d\'audio.'; +$string['html5audio_desc'] = 'Fitxers d\'àudio amb l\'extensió *.ogg, *.aac i *.mp3. S\'empren sobretot per a dispositius mòbils. (La compatibilitat del format depèn del navegador.)'; $string['html5video'] = 'HTML 5 vídeo'; $string['html5video_desc'] = 'Fitxers de vídeo amb extensió *.webm, *.m4v, *.ogv, *.mp4 i altres. És només compatible amb les últimes versions dels navegadors, malauradament no existeix un format que sigui compatible amb tots els navegadors. Una solució és especificar alternatives separades per # (per exemple: http://example.org/video.m4v#http://example.org/video.aac#http://example.org/video.ogv#d=640x480), el reproductor QuickTime és utilitzat com a alternativa pels navegadors més antics.'; diff --git a/html/moodle2/langpacks/ca/moodle.php b/html/moodle2/langpacks/ca/moodle.php index 16a40bf154..092f56bf4f 100644 --- a/html/moodle2/langpacks/ca/moodle.php +++ b/html/moodle2/langpacks/ca/moodle.php @@ -1369,19 +1369,19 @@ $string['numattempts'] = '{$a} intents d\'inici de sessió fallits'; $string['numberofcourses'] = 'Nombre de cursos'; $string['numberweeks'] = 'Nombre de temes/setmanes'; -$string['numday'] = 'dia {$a}'; +$string['numday'] = '{$a} dia'; $string['numdays'] = '{$a} dies'; $string['numhours'] = '{$a} hores'; $string['numletters'] = '{$a} cartes'; $string['numminutes'] = '{$a} minuts'; -$string['nummonth'] = 'mes {$a}'; +$string['nummonth'] = '{$a} mes'; $string['nummonths'] = '{$a} mesos'; $string['numseconds'] = '{$a} segons'; $string['numviews'] = '{$a} visualitzacions'; -$string['numweek'] = 'setmana {$a}'; +$string['numweek'] = '{$a} setmana'; $string['numweeks'] = '{$a} setmanes'; $string['numwords'] = '{$a} paraules'; -$string['numyear'] = 'any {$a}'; +$string['numyear'] = '{$a} any'; $string['numyears'] = '{$a} anys'; $string['ok'] = 'OK'; $string['oldpassword'] = 'Contrasenya actual'; diff --git a/html/moodle2/langpacks/ca/quiz.php b/html/moodle2/langpacks/ca/quiz.php index 9b22b6f9e1..285b7c48e9 100644 --- a/html/moodle2/langpacks/ca/quiz.php +++ b/html/moodle2/langpacks/ca/quiz.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); -$string['accessnoticesheader'] = 'Podeu previsualitzar aquest qüestionari, però no podrieu contestar-lo perquè:'; +$string['accessnoticesheader'] = 'Podeu previsualitzar aquest qüestionari, però si fos un intent real no podríeu contestar-lo perquè:'; $string['action'] = 'Acció'; $string['activityoverview'] = 'Teniu qüestionaris per respondre'; $string['adaptive'] = 'Mode adaptatiu'; diff --git a/html/moodle2/langpacks/ca/search.php b/html/moodle2/langpacks/ca/search.php index d43ab9140d..1d8603f33b 100644 --- a/html/moodle2/langpacks/ca/search.php +++ b/html/moodle2/langpacks/ca/search.php @@ -55,6 +55,7 @@ $string['enteryoursearchquery'] = 'Introduïu la vostra cerca'; $string['errors'] = 'Errors'; $string['filesinindexdirectory'] = 'Fitxers en el directori índex'; +$string['filterheader'] = 'Filtre'; $string['globalsearch'] = 'Cerca global'; $string['globalsearchdisabled'] = 'No s\'ha habilitat la cerca global'; $string['invalidindexerror'] = 'El directori índex és buit o no conté un índex vàlid.'; @@ -62,13 +63,17 @@ $string['next'] = 'Següent'; $string['noindexmessage'] = 'Administradors: sembla que no existeix l\'índex de cerca. Si us plau'; $string['normalsearch'] = 'Cerca normal'; +$string['notitle'] = 'Sense títol'; $string['openedon'] = 'obert'; +$string['optimize'] = 'Optimitza'; $string['resultsreturnedfor'] = 'resultats per a'; $string['runindexer'] = 'Executa l\'indexador (real)'; $string['runindexertest'] = 'Executa la prova d\'indexació'; $string['score'] = 'Puntuació'; $string['search'] = 'Cerca'; +$string['searcharea'] = 'Àrea de cerca'; $string['searching'] = 'S\'està cercant en...'; +$string['search:mycourse'] = 'Els meus cursos'; $string['searchnotpermitted'] = 'No teniu permís per fer una cerca'; $string['seconds'] = 'segons'; $string['solutions'] = 'Solucions'; @@ -79,6 +84,7 @@ $string['title'] = 'Títol'; $string['tofetchtheseresults'] = 'obtenir aquests resultats'; $string['totalsize'] = 'Mida total'; +$string['totime'] = 'Modificat abans'; $string['type'] = 'Tipus'; $string['uncompleteindexingerror'] = 'La indexació no s\'ha completat amb èxit. Reinicieu-la.'; $string['versiontoolow'] = 'La cerca global requereix PHP 5.0.0 o superior'; diff --git a/html/moodle2/langpacks/ca/workshopform_numerrors.php b/html/moodle2/langpacks/ca/workshopform_numerrors.php index 70ad76fd95..d2c37babe6 100644 --- a/html/moodle2/langpacks/ca/workshopform_numerrors.php +++ b/html/moodle2/langpacks/ca/workshopform_numerrors.php @@ -41,5 +41,5 @@ $string['grademapping'] = 'Taula de mapatge de notes'; $string['maperror'] = 'El número ponderat d\'errors és menor o igual a'; $string['mapgrade'] = 'Puntuació de la tramesa'; -$string['percents'] = '{$a} %'; +$string['percents'] = '{$a}%'; $string['pluginname'] = 'Nombre d\'errors'; diff --git a/html/moodle2/langpacks/de/badges.php b/html/moodle2/langpacks/de/badges.php index 04af48c72e..84af5971bb 100644 --- a/html/moodle2/langpacks/de/badges.php +++ b/html/moodle2/langpacks/de/badges.php @@ -79,15 +79,34 @@ Die einzige URL, die für die Verifizierung benötigt wird, ist [website]/badges/assertion.php. Wenn Sie Ihre Firewall so konfigurieren, dass der Zugriff auf dieses Skript erlaubt ist, dann funktioniert die Verifizierung von Auszeichnungen.'; $string['backpackbadges'] = 'Sie haben {$a->totalbadges} Auszeichnung(en), die aus {$a->totalcollections} Sammlung(en) angezeigt werden. Backpack konfigurieren.'; +$string['backpackcannotsendverification'] = 'Eine Bestätigungsmitteilung konnte nicht gesendet werden.'; $string['backpackconnection'] = 'Verbindung zum Backpack'; +$string['backpackconnectioncancelattempt'] = 'Verwenden Sie zum Verbinden eine andere E-Mail-Adresse.'; +$string['backpackconnectionconnect'] = 'Zum Backpack verbinden'; $string['backpackconnection_help'] = 'Auf dieser Seite können Sie Verbindungen zu externen Backpack-Diensten konfigurieren. Eine Verbindung zu einem externen Backpack-Dienst ermöglicht es, externe Auszeichnungen in Moodle anzuzeigen und in Moodle erworbene Auszeichnungen in das externe Backpack zu exportieren. Derzeit wird nur der Backpack-Dienst Mozilla OpenBadges Backpack unterstützt. Sie müssen sich erst bei einem externen Backpack-Dienst anmelden, bevor sie die zugehörigen Verbindung in Moodle konfigurieren können.'; +$string['backpackconnectionresendemail'] = 'Bestätigungsmitteilung erneut senden'; +$string['backpackconnectionunexpectedresult'] = 'Problem bei der Backpack-Verbindung. Versuchen Sie es noch einmal.Um die Aktivitäten, die in die Leiste aufgenommen werden sollen, manuell auszuwählen, stellen Sie sicher, dass die Option "eingefügte Aktivitäten" auf "ausgewählte Aktivitäten" gesetzt ist.
Es können nur Aktivitäten mit aktiviertem Aktivitätsabschluss eingefügt werden.
Halten Sie die STRG-Taste gedrückt, um mehrere Aktivitäten auszuwählen.
'; $string['lastonline'] = 'Letzte im Kurs'; -$string['mouse_over_prompt'] = 'Fahren Sie für Mehr Infos mit der Maus über den Balken oder klicken einzelne Blöcke an.'; +$string['mouse_over_prompt'] = 'Fahren Sie für mehr Infos mit der Maus über den Balken oder klicken einzelne Blöcke an.'; $string['no_activities_config_message'] = 'Es gibt keine Aktivitäten oder Ressourcen mit Aktivitätsabschluss? Aktivieren Sie den Aktivitätsabschluss für Aktivitäten und Ressourcen, konfigurieren Sie anschließend diesen Block.'; $string['no_activities_message'] = 'Es werden keine Aktivitäten oder Ressourcen beobachtet? Stellen Sie dies in den Einstellungen ein.'; $string['no_blocks'] = 'Es ist kein Bearbeitungsstatus-Block für Ihre Kurse aktiviert.'; diff --git a/html/moodle2/langpacks/de/enrol_imsenterprise.php b/html/moodle2/langpacks/de/enrol_imsenterprise.php index 405e13c668..df74dea1a5 100644 --- a/html/moodle2/langpacks/de/enrol_imsenterprise.php +++ b/html/moodle2/langpacks/de/enrol_imsenterprise.php @@ -32,15 +32,15 @@ $string['coursesettings'] = 'Kurseinstellungen'; $string['createnewcategories'] = 'Neue (verborgene) Kurskategorien anlegen, wenn nicht in Moodle gefunden'; $string['createnewcategories_desc'] = 'Wenn dasLos botones tienen el siguiente formato: ##somebutton##
En la plantilla actual sólo pueden usarse las marcas que están en la lista de "Marcas disponibles".
'; $string['availabletodate'] = 'Disponible hasta'; +$string['availabletodatevalidation'] = 'La fecha de disponibilidad de fin no puede ser previa a la fecha de disponibilidad de comienzo.'; $string['blank'] = 'En blanco'; $string['buttons'] = 'Acciones'; $string['bynameondate'] = 'por {$a->name} - {$a->date}'; @@ -127,6 +128,7 @@ $string['defaultfielddelimiter'] = '(el valor por defecto es la coma)'; $string['defaultfieldenclosure'] = '(el valor por defecto es ninguno)'; $string['defaultsortfield'] = 'Campo de ordenación por defecto'; +$string['delcheck'] = 'Checkbox de borrado masivo'; $string['delete'] = 'Eliminar'; $string['deleteallentries'] = 'Eliminar todas las entradas'; $string['deletecomment'] = '¿Está seguro de que desea eliminar este comentario?'; @@ -363,6 +365,7 @@ $string['savesuccess'] = 'Guardado con éxito. Su ajuste previo estará ahora disponible en todo el sitio.'; $string['savetemplate'] = 'Guardar plantilla'; $string['search'] = 'Buscar'; +$string['search:activity'] = 'Base de datos - información de actividad'; $string['selectedrequired'] = 'Se requieren todos los seleccionados'; $string['showall'] = 'Mostrar todas las entradas'; $string['single'] = 'Ver uno por uno'; diff --git a/html/moodle2/langpacks/es/enrol_database.php b/html/moodle2/langpacks/es/enrol_database.php index 3e2c912475..4c29d0f45f 100644 --- a/html/moodle2/langpacks/es/enrol_database.php +++ b/html/moodle2/langpacks/es/enrol_database.php @@ -25,6 +25,7 @@ defined('MOODLE_INTERNAL') || die(); +$string['database:config'] = 'Configurar instancias de matriculación en la base de datos'; $string['database:unenrol'] = 'Dar de baja usuarios suspendidos'; $string['dbencoding'] = 'Codificación de base de datos'; $string['dbhost'] = 'Host de la base de datos'; diff --git a/html/moodle2/langpacks/es/enrol_flatfile.php b/html/moodle2/langpacks/es/enrol_flatfile.php index 5f50e7355d..2e3672e583 100644 --- a/html/moodle2/langpacks/es/enrol_flatfile.php +++ b/html/moodle2/langpacks/es/enrol_flatfile.php @@ -31,6 +31,7 @@ $string['filelockedmail'] = 'El fichero de texto empleado en matriculaciones basadas en archivo ({$a}) no puede ser eliminado por el proceso de \'cron\'. Esto generalmente significa que los permisos son erróneos. Por favor, corrija los permisos para que Moodle puede eliminar el archivo, de lo contrario, podría ser procesado en varias ocasiones.'; $string['filelockedmailsubject'] = 'Error importante: Archivo de matriculación'; $string['flatfile:manage'] = 'Gestionar manualmente la matriculación de usuario'; +$string['flatfilesync'] = 'Sincronización de fichero plano de matrículas'; $string['flatfile:unenrol'] = 'Dar de baja usuarios del curso manualmente'; $string['location'] = 'Ubicación del archivo'; $string['location_desc'] = 'Especifique la ruta completa al archivo de matriculaciones. El archivo se borra automáticamente después del proceso.'; diff --git a/html/moodle2/langpacks/es/enrol_imsenterprise.php b/html/moodle2/langpacks/es/enrol_imsenterprise.php index 2df32f691b..ea2c341349 100644 --- a/html/moodle2/langpacks/es/enrol_imsenterprise.php +++ b/html/moodle2/langpacks/es/enrol_imsenterprise.php @@ -55,6 +55,8 @@ $string['fixcaseusernames'] = 'Cambie los nombres de usuario a minúsculas'; $string['ignore'] = 'Ignorar'; $string['importimsfile'] = 'Importar archivo IMS Enterprise'; +$string['imsenterprise:config'] = 'Configuración de instancias de matriculación de IMS Enterprise'; +$string['imsenterprisecrontask'] = 'Procesamiento de fichero de matriculación'; $string['imsrolesdescription'] = 'La especificación IMS Enterprise incluye 8 distintos tipos de rol. Por favor, seleccione cómo quiere que se le asignen en Moodle, incluyendo si alguno debe ser omitido.'; $string['location'] = 'Ubicación del archivo'; $string['logtolocation'] = 'Ubicación del archivo \'log\' de salida (déjelo en blanco si no hay registro)'; diff --git a/html/moodle2/langpacks/es/enrol_mnet.php b/html/moodle2/langpacks/es/enrol_mnet.php index c0d45e4ee2..9f14638d86 100644 --- a/html/moodle2/langpacks/es/enrol_mnet.php +++ b/html/moodle2/langpacks/es/enrol_mnet.php @@ -28,6 +28,7 @@ $string['error_multiplehost'] = 'Algunos ejemplo de la extensión de matriculación MNet ya existen en este equipo. Sólo está permitida una instancia por servidor y/o una instancia para \'Todos los servidores\'.'; $string['instancename'] = 'Nombre del método de matriculación'; $string['instancename_help'] = 'Puede cambiar opcionalmente el nombre de esta instancia del método de matriculación MNet. Si deja este campo vacío se usará el nombre de la instancia por defecto, que contiene el nombre del servidor remoto y el rol asignado para sus usuarios.'; +$string['mnet:config'] = 'Configurar instancias de matriculación de MNet'; $string['mnet_enrol_description'] = 'Publique este servicio para permitir a los administradores de {$a} matricular a sus estudiantes en los cursos que usted ha creado en su servidor.Cuando acabe de cambiar su imagen es posible que no vea el cambio; si eso sucede
actualice la página (oprimiendo F5 o el botón actualizar).';
$string['noallocation'] = 'No asignación';
+$string['nogroup'] = 'Sin grupo';
$string['nogrouping'] = 'No agrupar';
$string['nogroups'] = 'Aún no se han formado grupos en este curso';
$string['nogroupsassigned'] = 'No hay grupos asignados';
@@ -192,6 +196,7 @@
$string['nosmallgroups'] = 'Evitar el último grupo pequeño';
$string['notingroup'] = 'Ignorar usuarios en grupos';
$string['notingrouping'] = '[Fuera de un agrupamiento]';
+$string['notingrouplist'] = '[En ningún grupo]';
$string['nousersinrole'] = 'No existen usuarios disponibles en el rol seleccionado';
$string['number'] = 'Número de grupos o miembros por grupo';
$string['numgroups'] = 'Número de grupos';
diff --git a/html/moodle2/langpacks/es/hvp.php b/html/moodle2/langpacks/es/hvp.php
new file mode 100644
index 0000000000..08c16af50f
--- /dev/null
+++ b/html/moodle2/langpacks/es/hvp.php
@@ -0,0 +1,34 @@
+.
+
+/**
+ * Strings for component 'hvp', language 'es', branch 'MOODLE_31_STABLE'
+ *
+ * @package hvp
+ * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$string['user'] = 'Usuario';
+$string['welcomegettingstarted'] = 'Para empezar con H5P y Moodle échale un vistazo a nuestro moodle_tutorial}>tutorial y revisa el example_content}>contenido de ejemplo en H5P.org para que te sirva de guía.
¡Para su comodidad ya se han instalado los contenidos más populares!';
+$string['welcomeheader'] = '¡Bienvenido al mundo de H5P!';
+$string['whyupdatepart1'] = 'Puedes leer sobre por qué es importante actualizar y los beneficios de hacerlo en la página Porqué actualizar H5P';
+$string['whyupdatepart2'] = 'La página también lista los diferentes cambios, donde puedes leer sobre las nuevas características introducidas y los problemas que se han solucionado.';
+$string['year'] = 'Año';
+$string['years'] = 'Año(s)';
diff --git a/html/moodle2/langpacks/es/imscp.php b/html/moodle2/langpacks/es/imscp.php
index b88c9d2845..391d4cd298 100644
--- a/html/moodle2/langpacks/es/imscp.php
+++ b/html/moodle2/langpacks/es/imscp.php
@@ -41,4 +41,5 @@
$string['page-mod-imscp-x'] = 'Cualquier página del módulo Paquete de contenidos IMS';
$string['pluginadministration'] = 'Administración IMSCP';
$string['pluginname'] = 'Paquete de contenidos IMS';
+$string['search:activity'] = 'Paquete de contenido IMS - información del recurso';
$string['toc'] = 'TOC';
diff --git a/html/moodle2/langpacks/es/lesson.php b/html/moodle2/langpacks/es/lesson.php
index 19feca2132..869c1e29b3 100644
--- a/html/moodle2/langpacks/es/lesson.php
+++ b/html/moodle2/langpacks/es/lesson.php
@@ -125,6 +125,7 @@
$string['configmediaclose'] = 'Muestra un botón de cierre en el marco de la ventana emergente generada por un archivo multimedia vinculado';
$string['configmediaheight'] = 'Establece la altura de la ventana emergente para mostrar un archivo multimedia enlazado';
$string['configmediawidth'] = 'Establece el ancho de la ventana emergente para mostrar un archivo multimedia enlazado.';
+$string['configpassword_desc'] = 'Si se requiere una contraseña para acceder a la lección.';
$string['configslideshowbgcolor'] = 'Color de fondo para la presentación de diapositivas si está habilitado';
$string['configslideshowheight'] = 'Establece la altura de la presentación de diapositivas si está habilitado';
$string['configslideshowwidth'] = 'Establece el ancho de la presentación de diapositivas si está habilitado';
@@ -506,6 +507,7 @@
$string['score'] = 'Puntuación';
$string['score_help'] = 'La puntuación solo se utiliza cuando está habilitada la puntuación personalizada. Se puede conceder un valor de puntos numéricos a cada respuesta (positivo o negativo).';
$string['scores'] = 'Puntuaciones';
+$string['search:activity'] = 'Lección - información de actividad';
$string['secondpluswrong'] = 'No. ¿Desea probar de nuevo?';
$string['selectaqtype'] = 'Seleccione un tipo de pregunta';
$string['shortanswer'] = 'Respuesta corta';
@@ -549,6 +551,7 @@
$string['timespentminutes'] = 'Tiempo empleado (minutos)';
$string['timetaken'] = 'Tiempo empleado';
$string['topscorestitle'] = '{$a} puntuaciones más altas.';
+$string['totalpagesviewedheader'] = 'Número de páginas vistas';
$string['true'] = 'Verdadero';
$string['truefalse'] = 'Verdadero/Falso';
$string['unabledtosavefile'] = 'El archivo que ha subido no se ha podido guardar';
diff --git a/html/moodle2/langpacks/es/local_mobile.php b/html/moodle2/langpacks/es/local_mobile.php
index c1522b5d85..75b3d0710f 100644
--- a/html/moodle2/langpacks/es/local_mobile.php
+++ b/html/moodle2/langpacks/es/local_mobile.php
@@ -25,10 +25,17 @@
defined('MOODLE_INTERNAL') || die();
+$string['allowpermissions'] = 'conceder permisos al rol de Usuario Autenticado';
+$string['allowpermissionsdescription'] = 'Editar el rol Usuario Autenticado y permitir la capacidad moodle/webservice:createtoken';
$string['cannotcreatetoken'] = 'La generación automática de token no está disponible para los administradores del sitio (deben crear una manualmente en el sitio)';
$string['checkpluginconfiguration'] = 'Comprobar configuración del plugin';
+$string['clickheretolaunchtheapp'] = 'Por favor, haz clic aquí si la aplicación no se abre automáticamente';
+$string['customlangstrings'] = 'Cadenas de lenguaje personalizadas';
+$string['custommenuitems'] = 'Elementos de menú personalizados';
+$string['disabledfeatures'] = 'Características desactivadas';
$string['enableadditionalservice'] = 'Habilitar el servicio de características adicionales Moodle Mobile';
$string['enableadditionalservicedescription'] = 'Este servicio debe estar habilitado.';
+$string['forcelogout'] = 'Forzar el cierre de sesión';
$string['local_mobiledescription'] = 'Extensión que amplía las características del servicio móvil';
$string['local_mobilesettings'] = 'Ajustes';
$string['local_mobiletypeoflogin'] = 'Elija el tipo de inicio de sesión';
@@ -37,5 +44,8 @@
$string['loginintheapp'] = 'A través de la app';
$string['logininthebrowser'] = 'A través de una ventana del navegador (para los conectores SSO)';
$string['loginintheinappbrowser'] = 'Mediante un navegador empotrado (para plugins SSO)';
+$string['mainmenu'] = 'Menú principal';
+$string['mobilefeatures'] = 'Características en el móvil';
$string['pluginname'] = 'Características adicionales de Moodle Mobile';
$string['pluginnotenabledorconfigured'] = 'La extensión local de Moodle Mobile debe estar habilitada y configurda a fin de poder ejecutar la aplicación';
+$string['remoteaddons'] = 'Extensiones remotas';
diff --git a/html/moodle2/langpacks/es/logstore_database.php b/html/moodle2/langpacks/es/logstore_database.php
index 71ad5d46a5..603e590218 100644
--- a/html/moodle2/langpacks/es/logstore_database.php
+++ b/html/moodle2/langpacks/es/logstore_database.php
@@ -32,6 +32,7 @@
$string['databasepersist'] = 'Conexiones persistentes a la base de datos';
$string['databaseschema'] = 'Esquema de la base datos';
$string['databasesettings'] = 'Configuración de la base de datos';
+$string['databasesettings_help'] = 'Detalles de conexión para el log externo de la base de datos: {$a}';
$string['databasetable'] = 'Tabla de base de datos';
$string['filters'] = 'Filtrar registros';
$string['filters_help'] = 'Habilitar filtros que excluyan el registro de algunas acciones.';
diff --git a/html/moodle2/langpacks/es/logstore_legacy.php b/html/moodle2/langpacks/es/logstore_legacy.php
index d6a671de09..4faba4a07c 100644
--- a/html/moodle2/langpacks/es/logstore_legacy.php
+++ b/html/moodle2/langpacks/es/logstore_legacy.php
@@ -26,3 +26,5 @@
defined('MOODLE_INTERNAL') || die();
$string['pluginname'] = 'Log heredado';
+$string['pluginname_desc'] = 'Un plugin de log que guarde las entradas del log en la tabla de log heredada.';
+$string['taskcleanup'] = 'Limpieza de la tabla heredada de log';
diff --git a/html/moodle2/langpacks/es/lti.php b/html/moodle2/langpacks/es/lti.php
index cf31cf15f6..4d7fd52e34 100644
--- a/html/moodle2/langpacks/es/lti.php
+++ b/html/moodle2/langpacks/es/lti.php
@@ -40,6 +40,7 @@
Tenga en cuenta que este ajuste puede estar invalidado en la configuración de la herramienta.';
$string['action'] = 'Acción';
$string['activate'] = 'Activar';
+$string['activatetoadddescription'] = 'Necesitarás activar esta herramienta antes de que puedas añadir una descripción.';
$string['active'] = 'Activar';
$string['activity'] = 'Actividad';
$string['addnewapp'] = 'Habilitar aplicación externa';
@@ -80,8 +81,10 @@
$string['configtypes'] = 'Habilitar aplicaciones LTI';
$string['configured'] = 'Configurado';
$string['confirmtoolactivation'] = 'Esta seguro que desea activar la siguiente herramienta?';
+$string['courseactivitiesorresources'] = 'Actividades o recursos del curso';
$string['courseid'] = 'Número ID del Curso';
$string['courseinformation'] = 'Información del curso';
+$string['courselink'] = 'Ir al curso';
$string['coursemisconf'] = 'El curso está mal configurado';
$string['course_tool_types'] = 'Tipos de herramientas del curso';
$string['createdon'] = 'Creado el';
@@ -126,6 +129,7 @@
$string['donotaccept'] = 'No acepte';
$string['donotallow'] = 'No permita que';
$string['duplicateregurl'] = 'Esta URL de registro ya está en uso';
+$string['editdescription'] = 'Clic aquí para dar una descripción a la herramienta';
$string['edittype'] = 'Editar la configuración de la herramienta externa';
$string['embed'] = 'Incrustar';
$string['embed_no_blocks'] = 'Incrustar, sin bloques';
@@ -155,6 +159,7 @@
* **Borrar** - Elimina el tipo de herramienta del curso seleccionado.';
$string['external_tool_types'] = 'Tipos de herramientas externas';
$string['failedtoconnect'] = 'Moodle fue incapaz de comunicarse con el sistema "{$a}"';
+$string['failedtocreatetooltype'] = 'Error al crear la nueva herramienta. Por favor comprueba la URL y prueba de nuevo.';
$string['filter_basiclti_configlink'] = 'Configure sus sitios preferidos y sus contraseñas';
$string['filter_basiclti_password'] = 'La contraseña es obligatoria';
$string['filterconfig'] = 'Administración LTI';
@@ -192,6 +197,7 @@
$string['launch_url_help'] = 'La URL de inicio indica la dirección web de la Herramienta Externa y puede contener información adicional. Si no está seguro que ruta introducir, por favor consulte al proveedor de la misma para más información.
Si ha seleccionado un tipo de herramienta específico, puede no ser necesario especificar una URL de inicio. Si el enlace se utiliza sólo para poner en marcha el sistema del proveedor y no para ir a un recurso específico, es probable que esto sea así.';
+$string['leaveblank'] = 'Déjalo en blanco si no lo necesitas';
$string['lti'] = 'LTI';
$string['lti:addcoursetool'] = 'Calificar actividades LTI';
$string['lti:addinstance'] = 'Añadir una nueva actividad LTI';
@@ -222,6 +228,7 @@
**Pendiente** Estos proveedores no han sido configurados por el administrador. Los docentes podrán usar herramientas de ese proveedor si disponen de una clave de usuario y clave compartida o si no se requieren.
**Rechazado** Estos proveedores están marcados como no disponibles en el sitio Moodle. Los docentes podrán usar herramientas de ese proveedor si disponen de una clave de usuario y clave compartida o si no se requieren.';
+$string['manage_external_tools'] = 'Administrar herramientas';
$string['manage_tool_proxies'] = 'Administrar registros de la herramienta externa';
$string['manage_tools'] = 'Administrar tipos de herramienta externa';
$string['miscellaneous'] = '';
@@ -249,23 +256,49 @@
$string['no_lti_configured'] = 'No existen herramientas externas activas configuradas.';
$string['no_lti_pending'] = 'No existen herramientas externas pendientes.';
$string['no_lti_rejected'] = 'No existen herramientas externas rechazadas.';
+$string['noltis'] = 'No hay instancias de herramientas externas';
+$string['no_lti_tools'] = 'No hay herramientas externas configuradas.';
+$string['noprofileservice'] = 'Servicio del perfil no encontrado';
$string['noservers'] = 'No se han encontrado servidores';
+$string['no_tp_accepted'] = 'No hay registros aceptados de herramientas externas.';
+$string['no_tp_cancelled'] = 'No hay registros cancelados de herramientas externas.';
+$string['no_tp_pending'] = 'No hay registros pendientes de herramientas externas.';
+$string['no_tp_rejected'] = 'No hay registros rechazados de herramientas externas.';
$string['noviewusers'] = 'No se encontraron usuarios con permiso para utilizar esta herramienta';
$string['optionalsettings'] = 'Ajustes opcionales';
+$string['organization'] = 'Detalles de la organización';
+$string['organizationdescr'] = 'Descripción de la organización';
+$string['organizationid'] = 'ID de organización';
+$string['organizationurl'] = 'URL de la organización';
+$string['organizationurl_help'] = 'La URL base de esta instancia de Moodle.
+
+Si se deja este campo vacío, un valor por defecto será usado basado en la configuración de este sitio.';
$string['pagesize'] = 'Entregas mostradas por página';
+$string['parameter'] = 'Parámetros de la herramienta';
$string['pending'] = 'Pendiente';
+$string['pluginadministration'] = 'Administración de herramientas externas';
$string['pluginname'] = 'LTI';
$string['preferheight'] = 'Altura recomendada';
$string['preferwidth'] = 'Ancho recomendado';
$string['press_to_submit'] = 'Pulsar para comenzar esta actividad';
$string['privacy'] = 'Privacidad';
$string['quickgrade'] = 'Permitir calificación rápida';
+$string['redirect'] = 'Serás redirigido en unos segundos. Si no eres redirigido, presiona el botón.';
$string['register'] = 'Registro';
+$string['registertype'] = 'Configurar una nueva herramienta externa de registro';
+$string['registrationname'] = 'Nombre del proveedor de la herramienta';
+$string['registrationname_help'] = 'Inserta el nombre del proveedor de la herramienta que está siendo registrada.';
+$string['registration_options'] = 'Opciones de registro';
+$string['registrationurl'] = 'URL de registro';
+$string['reject'] = 'Rechazar';
$string['rejected'] = 'Rechazado';
$string['resource'] = 'Recurso';
$string['resourcekey'] = 'Clave de cliente';
$string['resourcekey_admin'] = 'Clave de cliente';
$string['resourceurl'] = 'URL del recurso';
+$string['return_to_course'] = 'Clic aquí para volver al curso.';
+$string['saveallfeedback'] = 'Guardar toda mi retroalimentación';
+$string['search:activity'] = 'Herramienta externa - información de actividad';
$string['send'] = 'Enviar';
$string['services'] = 'Servicios';
$string['setupoptions'] = 'Opciones de configuración';
@@ -273,23 +306,47 @@
$string['share_email_admin'] = 'Compartir el e-mail del usuario con la herramienta';
$string['share_name'] = 'Compartir el nombre del usuario con la herramienta';
$string['share_name_admin'] = 'Compartir el nombre del usuario con la herramienta';
+$string['share_roster'] = 'Permitir acceder a la herramienta a la lista de este curso';
+$string['share_roster_admin'] = 'La herramienta puede acceder a la lista del curso';
+$string['show_in_course_lti1'] = 'Configuración del uso de la herramienta';
+$string['show_in_course_lti2'] = 'Configuración del uso de la herramienta';
+$string['show_in_course_preconfigured'] = 'Mostrar como una herramienta preconfigurada cuando se añade una herramienta externa';
$string['size'] = 'Parámetros de tamaño';
$string['submission'] = 'Entrega';
$string['submissions'] = 'Envíos';
$string['submissionsfor'] = 'Entregas para {$a}';
+$string['subplugintype_ltiresource'] = 'Recurso del servicio LTI';
+$string['subplugintype_ltiresource_plural'] = 'Recursos del servicio LTI';
$string['subplugintype_ltiservice'] = 'Servicio LTI';
$string['subplugintype_ltiservice_plural'] = 'Servicios LTI';
$string['subplugintype_ltisource'] = 'Fuente LTI';
$string['subplugintype_ltisource_plural'] = 'Fuentes LTI';
+$string['successfullycreatedtooltype'] = 'Se ha creado una nueva herramienta con éxito!';
+$string['toggle_debug_data'] = 'Activar información de desarrollo';
$string['tool_config_not_found'] = 'No se encuentra la configuración de herramienta para este URL';
+$string['tooldescription'] = 'Descripción de la herramienta';
+$string['toolisbeingused'] = 'Esta herramienta ha sido usada {$a} veces';
+$string['toolisnotbeingused'] = 'Esta herramienta aún no ha sido usada';
$string['toolproxy'] = 'Registros de herramienta externa';
$string['toolproxyregistration'] = 'Registro de herramienta externa';
$string['toolregistration'] = 'Registro de herramienta externa';
$string['tool_settings'] = 'Ajustes de la herramienta';
$string['toolsetup'] = 'Registro de herramienta externa';
+$string['tooltypeadded'] = 'Se ha añadido la herramienta preconfigurada';
+$string['tooltypedeleted'] = 'Se ha borrado la herramienta preconfigurada';
+$string['tooltypenotdeleted'] = 'No se ha podido borrar la herramienta preconfigurada';
+$string['tooltypes'] = 'Herramientas';
+$string['tooltypeupdated'] = 'Se ha actualizado la herramienta preoconfigurada';
+$string['toolurlplaceholder'] = 'URL de la herramienta...';
$string['typename'] = 'Nombre de la herramienta';
$string['types'] = 'Tipos';
+$string['unabletocreatetooltype'] = 'No se ha podido crear la herramienta';
+$string['unabletofindtooltype'] = 'No se ha podido encontrar la herramienta {$a->id}';
+$string['unknownstate'] = 'Estado desconocido';
$string['update'] = 'Actualización';
+$string['useraccountinformation'] = 'Información de la cuenta del usuario';
+$string['userpersonalinformation'] = 'Información personal del usuario';
+$string['using_tool_cartridge'] = 'Usando herramienta cartridge';
$string['using_tool_configuration'] = 'Usar configuración de herramienta:';
$string['validurl'] = 'Una URL válida debe empezar con http(s)://';
$string['viewsubmissions'] = 'Ver entregas y pantalla de calificaciones';
diff --git a/html/moodle2/langpacks/es/message_airnotifier.php b/html/moodle2/langpacks/es/message_airnotifier.php
new file mode 100644
index 0000000000..8123fa1e3a
--- /dev/null
+++ b/html/moodle2/langpacks/es/message_airnotifier.php
@@ -0,0 +1,31 @@
+.
+
+/**
+ * Strings for component 'message_airnotifier', language 'es', branch 'MOODLE_31_STABLE'
+ *
+ * @package message_airnotifier
+ * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$string['airnotifier:managedevice'] = 'Administrar dispositivos';
+$string['requestaccesskey'] = 'Solicitar clave de acceso';
+$string['showhide'] = 'Activar/Desactivar el servicio';
+$string['unknowndevice'] = 'Dispositivo desconocido';
diff --git a/html/moodle2/langpacks/es/message_email.php b/html/moodle2/langpacks/es/message_email.php
index 11a2776216..9d826c3bcc 100644
--- a/html/moodle2/langpacks/es/message_email.php
+++ b/html/moodle2/langpacks/es/message_email.php
@@ -32,17 +32,20 @@
$string['configmailnewline'] = 'Caracteres de línea nueva usados en los mensajes de correo electrónico. CRLF es necesario de acuerdo RFC 822bis; algunos servidores realizan una conversión automática desde LF a CRLF, en tanto que otros realizan una conversión incorrecta de CRLF a CRCRLF y, finalmente, otros rechazarn los correos con LF vacío (qmail, por ejemplo). Intente modificar este ajuste si tiene problemas con correos sin entregar o con nuevas líneas dobles.';
$string['confignoreplyaddress'] = 'A veces los emails son enviados por el usuario (e.g., mensajes a un foro). La dirección email especificada aquí se usará como dirección "De" en aquellos casos en que los receptores no puedan replicar directamente al usuario (e.g., cuando un usuario elige mantener oculta su dirección).';
$string['configsitemailcharset'] = 'Todos los emails generados por su sitio se enviarán en el juego de caracteres que aquí se especifique. En cualquier caso, cada usuario individual podrá ajustar esta opción si está habilitado el siguiente ajuste.';
+$string['configsmtpauthtype'] = 'Esto activa el tipo de autenticación para usar en un servidor smtp.';
$string['configsmtphosts'] = 'Escriba el nombre completo de uno o más servidores SMTP locales que Moodle usará para enviar correo (e.g., \'mail.a.com\' o \'mail.a.com;mail.b.com\'). Si lo deja en blanco, Moodle usará el método PHP por defecto para enviar correo.';
$string['configsmtpmaxbulk'] = 'Número máximo de mensajes enviados por sesión SMTP. La agrupación de mensajes puede agilizar el envío de emails. Valores inferiores a 2 fuerzan la creación de una nueva sesión SMTP para cada email.';
$string['configsmtpsecure'] = 'Si el servidor SMTP requiere conexión segura, especifique el tipo correcto de protocolo.';
$string['configsmtpuser'] = 'Si antes ha especificado un servidor SMTP, y el servidor requiere identificación, escriba aquí el nombre de usuario y la contraseña.';
$string['email'] = 'Enviar notificaciones email a';
+$string['emailonlyfromnoreplyaddress'] = '¿Enviar siempre el email desde la dirección de no-responder?';
$string['ifemailleftempty'] = 'Dejar vacío para enviar avisos a {$a}';
$string['mailnewline'] = 'Caracteres de línea nueva en correo electrónico';
$string['none'] = 'Ninguno';
$string['noreplyaddress'] = 'Dirección \'no-reply\'';
$string['pluginname'] = 'Email';
$string['sitemailcharset'] = 'Conjunto de caracteres';
+$string['smtpauthtype'] = 'Tipo de autenticación SMTP';
$string['smtphosts'] = 'Servidores SMTP';
$string['smtpmaxbulk'] = 'Límite de sesión SMTP';
$string['smtppass'] = 'Contraseña SMTP';
diff --git a/html/moodle2/langpacks/es/moodle.php b/html/moodle2/langpacks/es/moodle.php
index 8fa3787f2b..f88d5a15af 100644
--- a/html/moodle2/langpacks/es/moodle.php
+++ b/html/moodle2/langpacks/es/moodle.php
@@ -25,72 +25,72 @@
defined('MOODLE_INTERNAL') || die();
-$string['abouttobeinstalled'] = 'a punto de ser instalado';
+$string['abouttobeinstalled'] = 'a ser instalados';
$string['action'] = 'Acción';
-$string['actionchoice'] = '¿Qué quiere hacer con el archivo \'{$a}\'?';
+$string['actionchoice'] = '¿Qué desea hacer con el archivo \'{$a}\'?';
$string['actions'] = 'Acciones';
$string['active'] = 'Activo';
$string['activeusers'] = 'Usuarios activos';
$string['activities'] = 'Actividades';
-$string['activities_help'] = 'Las actividades (tales como foros, cuestionarios y wikis) posibilitan agregar contenidos interactivos al curso';
+$string['activities_help'] = 'Actividades como foros, exámenes y wikis habilitan el contenido interactivo a ser agregado al curso.';
$string['activity'] = 'Actividad';
$string['activityclipboard'] = 'Moviendo esta actividad: {$a}';
-$string['activityiscurrentlyhidden'] = 'Lo sentimos, esta actividad está oculta';
+$string['activityiscurrentlyhidden'] = 'Lo sentimos, esta actividad está actualmente oculta';
$string['activitymodule'] = 'Módulo de Actividad';
-$string['activitymodules'] = 'Módulos de actividad';
-$string['activityreport'] = 'Informe de actividades';
-$string['activityreports'] = 'Informes de actividad';
-$string['activityselect'] = 'Seleccionar esta actividad para moverla';
+$string['activitymodules'] = 'Módulos de Actividad';
+$string['activityreport'] = 'Reporte de Actividad';
+$string['activityreports'] = 'Reportes de Actividad';
+$string['activityselect'] = 'Seleccione esta actividad para moverse a otro lugar';
$string['activitysince'] = 'Actividad desde {$a}';
$string['activitytypetitle'] = '{$a->activity} - {$a->type}';
$string['activityweighted'] = 'Actividad por usuario';
$string['add'] = 'Agregar';
-$string['addactivity'] = 'Agrega una actividad...';
+$string['addactivity'] = 'Agregar una actividad ...';
$string['addactivitytosection'] = 'Añade una actividad a la sección \'{$a}\'';
-$string['addadmin'] = 'Agrega un administrador';
-$string['addblock'] = 'Agrega un bloque';
-$string['addcomment'] = 'Agrega un comentario...';
-$string['addcountertousername'] = 'Crea un usuario agregando un número al nombre de usuario';
-$string['addcreator'] = 'Agrega un creador de curso';
-$string['adddots'] = 'Agrega...';
+$string['addadmin'] = 'Agregar administrador';
+$string['addblock'] = 'Agregar un bloque';
+$string['addcomment'] = 'Agregar un comentario ...';
+$string['addcountertousername'] = 'Crea el usuario al agregar número al nombre de usuario';
+$string['addcreator'] = 'Agregar creador de curso';
+$string['adddots'] = 'Agregar ...';
$string['added'] = 'Agregado {$a}';
-$string['addedrecip'] = 'Agregado nuevo receptor {$a}';
-$string['addedrecips'] = 'Agregados nuevos receptores {$a}';
+$string['addedrecip'] = 'Nuevo {$a} recipiente agregado';
+$string['addedrecips'] = 'Agregados {$a} nuevos recipientes';
$string['addedtogroup'] = 'Agregado al grupo "{$a}"';
$string['addedtogroupnot'] = 'No agregado al grupo "{$a}"';
$string['addedtogroupnotenrolled'] = 'No agregado al grupo "{$a}" porque no está matriculado en el curso';
-$string['addfilehere'] = 'Añada archivo(s) aquí';
+$string['addfilehere'] = 'Agregar archivos aquí';
$string['addinganew'] = 'Agregando un nuevo {$a}';
$string['addinganewto'] = 'Agregando un nuevo {$a->what} a {$a->to}';
-$string['addingdatatoexisting'] = 'Agregando información';
+$string['addingdatatoexisting'] = 'Agregandos datos a los datos existentes';
$string['additionalnames'] = 'Nombres adicionales';
-$string['addlinkhere'] = 'Añada el enlace aquí';
-$string['addnewcategory'] = 'Agrega otra categoría';
-$string['addnewcourse'] = 'Agrega otro curso';
-$string['addnewuser'] = 'Agregar un usuario';
-$string['addnousersrecip'] = 'Agrega nuevos destinatarios a la lista {$a}';
-$string['addpagehere'] = 'Añade texto aquí';
-$string['addresource'] = 'Agrega un recurso...';
-$string['addresourceoractivity'] = 'Añade una actividad o un recurso';
-$string['addresourcetosection'] = 'Añade un recurso a la sección \'{$a}\'';
+$string['addlinkhere'] = 'Agregar enlace aquí';
+$string['addnewcategory'] = 'Crear nueva categoría';
+$string['addnewcourse'] = 'Crear un nuevo curso';
+$string['addnewuser'] = 'Crear un nuevo usuario';
+$string['addnousersrecip'] = 'Agregue usuarios que no han accedido a este {$a} a lista de recipientes';
+$string['addpagehere'] = 'Añada texto aquí';
+$string['addresource'] = 'Agregue un recurso ...';
+$string['addresourceoractivity'] = 'Agregue una actividad o recurso';
+$string['addresourcetosection'] = 'Agregue un recurso a la sección \'{$a}\'';
$string['address'] = 'Dirección';
-$string['addressedto'] = 'Hasta';
-$string['addstudent'] = 'Agrega un estudiante';
-$string['addsubcategory'] = 'Agrega una subcategoría';
-$string['addteacher'] = 'Agrega un profesor';
-$string['admin'] = 'Admin';
-$string['adminhelpaddnewuser'] = 'Crear manualmente una nueva cuenta de usuario';
-$string['adminhelpassignadmins'] = 'Los administradores pueden hacer cualquier cosa en cualquier parte del sitio';
-$string['adminhelpassigncreators'] = 'Los creadores pueden crear nuevos cursos';
-$string['adminhelpassignsiteroles'] = 'Aplicar roles definidos de sitio a usuarios específicos';
-$string['adminhelpassignstudents'] = 'Ir a un curso y agregar estudiantes desde el menú Administración';
-$string['adminhelpauthentication'] = 'Puede utilizar cuentas internas o bases de datos externas';
-$string['adminhelpbackup'] = 'Configurar las copias de seguridad automáticas';
-$string['adminhelpconfiguration'] = 'Configurar la apariencia y el funcionamiento general del sitio';
-$string['adminhelpconfigvariables'] = 'Configurar variables que inciden en la operación general del sitio';
-$string['adminhelpcourses'] = 'Definir cursos y categorías y asignarles personas';
-$string['adminhelpeditorsettings'] = 'Definir ajustes básicos del editor HTML';
-$string['adminhelpedituser'] = 'Navegar por la lista de usuarios y editar cualquiera de ellos';
+$string['addressedto'] = 'A';
+$string['addstudent'] = 'Agregar estudiante';
+$string['addsubcategory'] = 'Agregar categoría';
+$string['addteacher'] = 'Agregar profesor';
+$string['admin'] = 'Administrador';
+$string['adminhelpaddnewuser'] = 'Para crear manualmente una nueva cuenta de usuario';
+$string['adminhelpassignadmins'] = 'Los administradores puede hacer lo que sea e ir a cualquier lugar del sitio';
+$string['adminhelpassigncreators'] = 'Los creadores de cursos pueden crear nuevos cursos';
+$string['adminhelpassignsiteroles'] = 'Aplicar roles de sitio definidos a usuarios específicos';
+$string['adminhelpassignstudents'] = 'Entra al curso y agrega estudiantes desde el menú administrativo del curso';
+$string['adminhelpauthentication'] = 'Puede usar cuentas de usuarios internas o cuentas de usuarios alojadas en bases de datos externas';
+$string['adminhelpbackup'] = 'Configure respaldos automáticos y programe la tarea de respaldo';
+$string['adminhelpconfiguration'] = 'Configure cómo el sitio se ve y trabaja';
+$string['adminhelpconfigvariables'] = 'Configure variables que afectan la operación general del sitio';
+$string['adminhelpcourses'] = 'Defina cursos y categorías y asigne personas a ellos, edite los cursos pendientes';
+$string['adminhelpeditorsettings'] = 'Defina configuraciones básicas para el editor HTML';
+$string['adminhelpedituser'] = 'Examine la lista de cuentas de usuarios y edite alguno de ellos';
$string['adminhelpenvironment'] = 'Compruebe si su servidor se ajusta a los requerimientos de instalación actuales y futuros.';
$string['adminhelpfailurelogs'] = 'Revisar registros de accesos fallidos';
$string['adminhelplanguage'] = 'Revisar y editar el presente idioma';
diff --git a/html/moodle2/langpacks/es/plugin.php b/html/moodle2/langpacks/es/plugin.php
index 4830b1200f..ba1b0d306f 100644
--- a/html/moodle2/langpacks/es/plugin.php
+++ b/html/moodle2/langpacks/es/plugin.php
@@ -104,6 +104,8 @@
$string['status_uptodate'] = 'Instalado';
$string['supportedmoodleversions'] = 'Versiones de Moodle soportadas';
$string['systemname'] = 'Identificador';
+$string['type_antivirus'] = 'Extensión de Antivirus';
+$string['type_antivirus_plural'] = 'Extensiones de antivirus';
$string['type_auth'] = 'Método de identificación';
$string['type_auth_plural'] = 'Extensiones de identificación';
$string['type_availability'] = 'Restricciones disponibles';
@@ -118,6 +120,8 @@
$string['type_calendartype_plural'] = 'Tipos de calendario';
$string['type_coursereport'] = 'Informe de curso';
$string['type_coursereport_plural'] = 'Informes del curso';
+$string['type_dataformat'] = 'Formato de datos';
+$string['type_dataformat_plural'] = 'Formatos de datos';
$string['type_editor'] = 'Editor';
$string['type_editor_plural'] = 'Editores';
$string['type_enrol'] = 'Método de matriculación';
@@ -158,6 +162,8 @@
$string['type_report_plural'] = 'Informes';
$string['type_repository'] = 'Repositorio';
$string['type_repository_plural'] = 'Repositorios';
+$string['type_search'] = 'Motor de búsqueda';
+$string['type_search_plural'] = 'Motores de búsqueda';
$string['type_theme'] = 'Tema';
$string['type_theme_plural'] = 'Temas';
$string['type_tool'] = 'Herramienta de Administración';
diff --git a/html/moodle2/langpacks/es/portfolio_boxnet.php b/html/moodle2/langpacks/es/portfolio_boxnet.php
index 813de14afe..5d5b66d702 100644
--- a/html/moodle2/langpacks/es/portfolio_boxnet.php
+++ b/html/moodle2/langpacks/es/portfolio_boxnet.php
@@ -25,10 +25,14 @@
defined('MOODLE_INTERNAL') || die();
+$string['clientid'] = 'ID del cliente';
+$string['clientsecret'] = 'Clave secreta del cliente';
$string['existingfolder'] = 'Carpeta existente para incluir archivo(s)';
$string['folderclash'] = 'La carpeta que intenta crear ya existe';
$string['foldercreatefailed'] = 'No se pudo crear la carpeta de destino en box.net';
$string['folderlistfailed'] = 'No se ha podido recuperar una lista de carpetas de box.net';
+$string['missinghttps'] = 'Se requiere HTTPS';
+$string['missingoauthkeys'] = 'ID del cliente y clave secreta no encontradas';
$string['newfolder'] = 'Nueva carpeta para guardar archivos';
$string['noauthtoken'] = 'No se ha podido recuperar una ficha de autenticación para usar en esta sesión';
$string['notarget'] = 'Debe especificar una carpeta existente o una carpeta nueva a la que subir el archivo';
diff --git a/html/moodle2/langpacks/es/portfolio_googledocs.php b/html/moodle2/langpacks/es/portfolio_googledocs.php
index 4d21746948..0c76f38a78 100644
--- a/html/moodle2/langpacks/es/portfolio_googledocs.php
+++ b/html/moodle2/langpacks/es/portfolio_googledocs.php
@@ -25,7 +25,10 @@
defined('MOODLE_INTERNAL') || die();
+$string['clientid'] = 'ID del cliente';
+$string['nooauthcredentials'] = 'Se requieren las credenciales de OAuth.';
$string['nosessiontoken'] = 'No existe ficha de sesión que impida exportar a google.';
$string['oauthinfo'] = '
Para utilizar este plugin, debe registrar su sitio en Google, como se describe en la documentación Google OAuth 2.0 setup.
Como parte del proceso de registro, tendrá que introducir la siguiente URL como "Authorized Redirect URIs \':
{$a->callbackurl}
Una vez registrado, se le proporcionará un ID de cliente y el secreto que se puede utilizar para configurar los plugins de Google Drive y Picasa.'; $string['pluginname'] = 'Google Drive'; +$string['secret'] = 'Secreta'; $string['sendfailed'] = 'No se ha podido transferir el archivo {$a} a google'; diff --git a/html/moodle2/langpacks/es/portfolio_picasa.php b/html/moodle2/langpacks/es/portfolio_picasa.php index 211251f973..0e0fdc2643 100644 --- a/html/moodle2/langpacks/es/portfolio_picasa.php +++ b/html/moodle2/langpacks/es/portfolio_picasa.php @@ -25,7 +25,9 @@ defined('MOODLE_INTERNAL') || die(); +$string['clientid'] = 'ID del cliente'; $string['noauthtoken'] = 'No se ha recibido de google una ficha de autenticación. Por favor, asegúrese de que está permitiendo que moodle acceda a su cuenta en google'; +$string['nooauthcredentials'] = 'Se requieren las credenciales de OAuth.'; $string['oauthinfo'] = 'Para utilizar este plugin, debe registrar su sitio en Google, como se describe en la documentación Google OAuth 2.0 setup.
Como parte del proceso de registro, tendrá que introducir la siguiente URL como "Authorized Redirect URIs \':
{$a->callbackurl}
Una vez registrado, se le proporcionará un ID de cliente y el secreto que se puede utilizar para configurar los plugins de Google Drive y Picasa. '; $string['pluginname'] = 'Picasa'; $string['sendfailed'] = 'No se ha podido transferir el archivo {$a} a Picasa'; diff --git a/html/moodle2/langpacks/es/qbehaviour_deferredcbm.php b/html/moodle2/langpacks/es/qbehaviour_deferredcbm.php index bb44e25865..8fd83b6856 100644 --- a/html/moodle2/langpacks/es/qbehaviour_deferredcbm.php +++ b/html/moodle2/langpacks/es/qbehaviour_deferredcbm.php @@ -42,3 +42,4 @@ $string['judgementsummary'] = 'Respuestas: {$a->responses}. Precisión: {$a->fraction}. (Rango óptimo {$a->idealrangelow} a {$a->idealrangehigh}). Usted estuvo {$a->judgement} usando éste nivel de certeza.'; $string['noquestions'] = 'No hay respuestas'; $string['pluginname'] = 'Retroalimentación diferida con CBM'; +$string['weightx'] = 'Peso {$a}'; diff --git a/html/moodle2/langpacks/es/qformat_blackboard_six.php b/html/moodle2/langpacks/es/qformat_blackboard_six.php index ec3b0f2779..f00955a48d 100644 --- a/html/moodle2/langpacks/es/qformat_blackboard_six.php +++ b/html/moodle2/langpacks/es/qformat_blackboard_six.php @@ -25,5 +25,10 @@ defined('MOODLE_INTERNAL') || die(); +$string['defaultname'] = 'Pregunta importada {$a}'; +$string['errormanifest'] = 'Error mientras se parseaba el documento manifest de IMS.'; +$string['imagenotfound'] = 'La imagen con la ruta {$a} no se ha encontrado en la importación.'; +$string['importedcategory'] = 'Categoría importada {$a}'; +$string['importnotext'] = 'Pregunta no encontrada en el archivo XML'; $string['pluginname'] = 'Blackboard V6+'; $string['pluginname_help'] = 'El formato Blackboard V6+ permite importar via fichero zip las preguntas guardadas en el formato de exportación Blackboard. El soporte para Blackboard versiones 6 y 7 es limitado.'; diff --git a/html/moodle2/langpacks/es/qtype_calculated.php b/html/moodle2/langpacks/es/qtype_calculated.php index be4ac08518..a21e9bb9b3 100644 --- a/html/moodle2/langpacks/es/qtype_calculated.php +++ b/html/moodle2/langpacks/es/qtype_calculated.php @@ -32,6 +32,7 @@ $string['answerformula'] = 'Fórmula para respuesta {$a}'; $string['answerhdr'] = 'Respuesta'; $string['answerstoleranceparam'] = 'Parámetros de tolerancia en las respuestas'; +$string['answerwithtolerance'] = '{$a->answer} (±{$a->tolerance} {$a->tolerancetype})'; $string['anyvalue'] = 'Cualquier valor'; $string['atleastoneanswer'] = 'Necesita proporcionar al menos una respuesta.'; $string['atleastonerealdataset'] = 'Debe haber por lo menos un conjunto de datos reales en el enunciado de la pregunta'; @@ -51,6 +52,7 @@ $string['decimals'] = 'Con {$a}'; $string['deleteitem'] = 'Eliminar ítem'; $string['deletelastitem'] = 'Eliminar último ítem'; +$string['distributionoption'] = 'Seleccionar opción de distribución'; $string['editdatasets'] = 'Editar el conjunto de datos de os comodines'; $string['editdatasets_help'] = 'Los valores comodín se pueden crear mediante la introducción de un número en cada campo "comodín" y clic en el botón añadir. Para generar automáticamente 10 o más valores, seleccione el número de valores necesarios antes de hacer clic en el botón añadir. Una "distribución uniforme" significa que cualquier valor entre los límites establecidos tiene la misma probabilidad de que se genere; una "distribución log-uniforme" significa que los valores situados hacia el límite inferior tienen más probabilidad.'; $string['existingcategory1'] = 'usará un conjunto de datos compartidos ya existente'; @@ -72,6 +74,7 @@ $string['itemtoadd'] = 'Item para agregar'; $string['keptcategory1'] = 'usará el mismo conjunto de datos compartidos que antes'; $string['keptlocal1'] = 'usará el mismo conjunto de datos privado que antes'; +$string['lengthoption'] = 'Seleccionar la opción de longitud'; $string['loguniform'] = 'Log-uniforme'; $string['makecopynextpage'] = 'Página siguiente (nueva pregunta)'; $string['mandatoryhdr'] = 'Hay comodines obligatorios en las respuestas'; @@ -83,7 +86,11 @@ $string['missingquestiontext'] = 'No se encuentra el enunciado de la pregunta'; $string['mustenteraformulaorstar'] = 'Debe introducir una fórmual o un asterisco \'*\''; $string['newcategory1'] = 'usará un nuevo conjunto de datos compartido'; +$string['newcategory2'] = 'Un archivo de un nuevo conjunto de archivos que sólo será utilizado por otras preguntas en esta categoría.'; +$string['newcategory3'] = 'Un enlace de un nuevo conjunto de enlaces que sólo será utilizado por otras preguntas en esta categoría.'; $string['newlocal1'] = 'usará un nuevo conjunto de datos privado'; +$string['newlocal2'] = 'Un archivo de un nuevo conjunto de archivos que sólo serán utilizados por esta pregunta'; +$string['newlocal3'] = 'Un enlace de un nuevo conjunto de enlaces que sólo serán utilizados por esta pregunta'; $string['newsetwildcardvalues'] = 'nueva(s) serie(s) de valores para el comodín'; $string['nextitemtoadd'] = 'Siguiente \'Item a agregar\''; $string['nextpage'] = 'Siguiente Página'; diff --git a/html/moodle2/langpacks/es/qtype_ddimageortext.php b/html/moodle2/langpacks/es/qtype_ddimageortext.php index dcec17605e..76e3773a6e 100644 --- a/html/moodle2/langpacks/es/qtype_ddimageortext.php +++ b/html/moodle2/langpacks/es/qtype_ddimageortext.php @@ -27,6 +27,7 @@ $string['answer'] = 'Respuesta'; $string['bgimage'] = 'Imagen de fondo'; +$string['blank'] = 'vacío'; $string['correctansweris'] = 'La respuesta correcta es: {$a}'; $string['draggableimage'] = 'Imagen arrastrable'; $string['draggableitem'] = 'Elemento arrastrable'; @@ -34,6 +35,11 @@ $string['draggableitems'] = 'Elementos arrastrables'; $string['draggableitemtype'] = 'Tipo'; $string['draggableword'] = 'Texto arrastrable'; +$string['dropbackground'] = 'Imagen de fondo para arrastrar los marcadores dentro de este'; +$string['dropzone'] = 'Dejar caer la zona {$a}'; +$string['dropzoneheader'] = 'Dejar caer las zonas'; +$string['formerror_disallowedtags'] = 'Lo sentimos, las etiquetas HTML no están permitidas en el texto arrastrable.'; +$string['formerror_nofile'] = 'Necesita subir o seleccionar un archivo para usarlo aquí.'; $string['formerror_notintxleft'] = 'La coordenada x debe ser un entero'; $string['formerror_notintytop'] = 'La coordenada y debe ser un entero'; $string['infinite'] = 'Ilimitado'; @@ -44,6 +50,9 @@ $string['previewareaheader'] = 'Vista Previa'; $string['previewareamessage'] = 'Seleccione una imagen de fondo, especifique los elementos que se pueden arrastrar y defina las zonas de colocación sobre las que deben ser arrastrados.'; $string['refresh'] = 'Refrescar vista previa'; +$string['summarisechoice'] = '{$a->no}. {$a->text}'; $string['summarisechoiceno'] = 'Elemento {$a}'; +$string['summariseplace'] = '{$a->no}. {$a->text}'; +$string['summariseplaceno'] = 'Dejar caer la zona {$a}'; $string['xleft'] = 'Izquierda'; $string['ytop'] = 'Arriba'; diff --git a/html/moodle2/langpacks/es/qtype_ddmarker.php b/html/moodle2/langpacks/es/qtype_ddmarker.php index ee08da6765..555babb3b0 100644 --- a/html/moodle2/langpacks/es/qtype_ddmarker.php +++ b/html/moodle2/langpacks/es/qtype_ddmarker.php @@ -25,7 +25,38 @@ defined('MOODLE_INTERNAL') || die(); +$string['alttext'] = 'Texto alternativo'; +$string['answer'] = 'Respuesta'; +$string['bgimage'] = 'Imagen de fondo'; +$string['coords'] = 'Coordenadas'; +$string['correctansweris'] = 'La respuesta correcta es: {$a}'; +$string['draggableimage'] = 'Imagen arrastrable'; +$string['draggableitem'] = 'Elemento arrastrable'; +$string['draggableitemheader'] = 'Elemento arrastrable {$a}'; +$string['draggableitemtype'] = 'Tipo'; +$string['draggableword'] = 'Texto arrastrable'; +$string['dropbackground'] = 'Imagen de fondo para arrastrar marcadores dentro de este'; +$string['dropzone'] = 'Dejar caer la zona {$a}'; +$string['dropzoneheader'] = 'Dejar caer las zonas'; +$string['dropzones'] = 'Dejar caer las zonas'; $string['formerror_nobgimage'] = 'Debe seleccionar una imagen para ser utilizada como fondo para la zona de arrastrar y soltar.'; +$string['infinite'] = 'Infinito'; +$string['marker'] = 'Marcador'; +$string['marker_n'] = 'Marcador {no}'; +$string['markers'] = 'Marcadores'; +$string['noofdrags'] = 'Número'; $string['pluginname'] = 'Arrastrar y soltar marcadores'; $string['pluginnameadding'] = 'Añadiendo arrastrar y soltar marcadores'; $string['pluginnameediting'] = 'Editando arrastrar y soltar marcadores'; +$string['previewareaheader'] = 'Previsualizar'; +$string['refresh'] = 'Refrescar previsualización'; +$string['shape'] = 'Forma'; +$string['shape_circle'] = 'Círculo'; +$string['shape_circle_lowercase'] = 'círculo'; +$string['shape_polygon'] = 'Polígono'; +$string['shape_polygon_lowercase'] = 'polígono'; +$string['shape_rectangle'] = 'Rectángulo'; +$string['shape_rectangle_lowercase'] = 'rectángulo'; +$string['summariseplace'] = '{$a->no}. {$a->text}'; +$string['summariseplaceno'] = 'Dejar caer la zona {$a}'; +$string['ytop'] = 'Arriba'; diff --git a/html/moodle2/langpacks/es/qtype_ddwtos.php b/html/moodle2/langpacks/es/qtype_ddwtos.php index 6f14c39316..f68b96083e 100644 --- a/html/moodle2/langpacks/es/qtype_ddwtos.php +++ b/html/moodle2/langpacks/es/qtype_ddwtos.php @@ -27,7 +27,9 @@ $string['addmorechoiceblanks'] = 'Espacios en blanco para {no} más opciones'; $string['answer'] = 'Respuesta'; +$string['blank'] = 'vacío'; $string['correctansweris'] = 'La respuesta correcta es: {$a}'; +$string['infinite'] = 'Ilimitado'; $string['pleaseputananswerineachbox'] = 'Por favor, ponga una respuesta en cada caja.'; $string['pluginname'] = 'Arrastrar y soltar sobre texto'; $string['pluginnameadding'] = 'Añadiendo arrastrar y soltar sobre texto'; diff --git a/html/moodle2/langpacks/es/question.php b/html/moodle2/langpacks/es/question.php index 8e11f40ea3..f83a49d747 100644 --- a/html/moodle2/langpacks/es/question.php +++ b/html/moodle2/langpacks/es/question.php @@ -413,6 +413,7 @@ $string['submit'] = 'Enviar'; $string['submitandfinish'] = 'Enviar y terminar'; $string['submitted'] = 'Enviar: {$a}'; +$string['tagarea_question'] = 'Preguntas'; $string['technicalinfo'] = 'Información técnica'; $string['technicalinfo_help'] = 'Esta información técnica probablemente solo le sea útil a los desarrolladores que trabajan en nuevos tipos de preguntas. Tambén podría serle útil a quienes tratan de diagnosticar problemas con las preguntas.'; $string['technicalinfomaxfraction'] = 'Fracción máxima: {$a}'; diff --git a/html/moodle2/langpacks/es/quiz.php b/html/moodle2/langpacks/es/quiz.php index 64e51a2832..7d764fc6ab 100644 --- a/html/moodle2/langpacks/es/quiz.php +++ b/html/moodle2/langpacks/es/quiz.php @@ -330,11 +330,14 @@ $string['eventattemptreviewed'] = 'Intento del cuestionario revisado'; $string['eventattemptsummaryviewed'] = 'Resumen del intento de cuestionario visualizado'; $string['eventattemptviewed'] = 'Intento de cuestionario visualizado'; +$string['eventeditpageviewed'] = 'Página de edición del cuestionario visitada'; $string['eventoverridecreated'] = 'Anular cuestionario creado'; +$string['eventquestionmanuallygraded'] = 'Pregunta calificada manualmente'; $string['eventquizattemptabandoned'] = 'Intento abandonado'; $string['eventquizattemptstarted'] = 'Ha comenzado el intento'; $string['eventquizattemptsubmitted'] = 'Intento enviado'; $string['eventquizattempttimelimitexceeded'] = 'Limite de intentos excedido'; +$string['eventreportviewed'] = 'Informe de cuestionario visto'; $string['everynquestions'] = 'Cada {$a} preguntas'; $string['everyquestion'] = 'Cada pregunta'; $string['everythingon'] = 'Todo activado'; @@ -409,6 +412,7 @@La calificación final es la obtenida en el intento más reciente.';
$string['gradesdeleted'] = 'Eliminadas calificaciones del cuestionario';
$string['gradesofar'] = '{$a->method}: {$a->mygrade} / {$a->quizgrade}.';
+$string['gradetopassmustbeset'] = 'La nota para aprobar no puede ser cero, este cuestionario tiene como método establecido una calificación para aprobar. Por favor establezca un número que no sea cero.';
$string['gradingdetails'] = 'Puntos para este envío:
{$a->raw}/{$a->max}.';
$string['gradingdetailsadjustment'] = 'Con las penalizaciones previas da como resultado
@@ -467,6 +471,7 @@
$string['loadingquestionsfailed'] = 'Fallo en la carga de preguntas: {$a}';
$string['makecopy'] = 'Guardar como nueva pregunta';
$string['managetypes'] = 'Gestionar tipos de preguntas y servidores';
+$string['manualgradequestion'] = 'Pregunta calificada manualmente {$a->question} en {$a->quiz} por {$a->user}';
$string['manualgrading'] = 'Calificación';
$string['mark'] = 'Enviar';
$string['markall'] = 'Enviar página';
@@ -476,6 +481,7 @@
$string['matchanswer'] = 'Respuesta emparejada';
$string['matchanswerno'] = 'Respuesta emparejada {$a}';
$string['max'] = 'Máx';
+$string['maxmark'] = 'Nota máxima';
$string['messageprovider:attempt_overdue'] = 'Advertencia cuando su intento de resolver el cuestionario se retrase';
$string['messageprovider:confirmation'] = 'Confirmación de su envío del cuestionario';
$string['messageprovider:submission'] = 'Notificación del envío de cuestionarios';
@@ -653,6 +659,7 @@
$string['questionbehaviour'] = 'Comportamiento de las preguntas';
$string['questioncats'] = 'Categorías de pregunta';
$string['questiondeleted'] = 'Esta pregunta ha sido eliminada. Por favor, contacte con su profesor';
+$string['questiondependencyadd'] = 'Sin restricción cuando la pregunta {$a->thisq} se pueda intentar - Clic aquí para cambiarlo';
$string['questiondependencyfree'] = 'Sin restricciones para esta pregunta';
$string['questiondependencyremove'] = 'No se pueden realizar intentos en la pregunta {$a->thisq} hasta que se haya completado la pregunta {$a->previousq} anterior • Haga clic para cambiar';
$string['questiondependsonprevious'] = 'No se pueden realizar intentos en esta pregunta hasta que se haya completado la pregunta anterior.';
@@ -792,6 +799,7 @@
$string['reviewnever'] = 'No permitir revisión';
$string['reviewofattempt'] = 'Revisión del intento {$a}';
$string['reviewofpreview'] = 'Revisión de la vista previa';
+$string['reviewofquestion'] = 'Revisión de la pregunta {$a->question} en {$a->quiz} por {$a->user}';
$string['reviewopen'] = 'Más tarde, mientras el cuestionario está aún abierto';
$string['reviewoptions'] = 'Los estudiantes pueden revisar';
$string['reviewoptionsheading'] = 'Revisar opciones';
@@ -826,6 +834,7 @@
$string['savingnewmaximumgrade'] = 'Guardando la nueva calificación máxima';
$string['score'] = 'Puntuación bruta';
$string['scores'] = 'Puntuaciones -';
+$string['search:activity'] = 'Examen - información de actividad';
$string['sectionheadingedit'] = 'Editar cabecera \'{$a}\'';
$string['sectionheadingremove'] = 'Borrar cabecera \'{$a}\'';
$string['seequestions'] = '(Vea las preguntas)';
diff --git a/html/moodle2/langpacks/es/quiz_statistics.php b/html/moodle2/langpacks/es/quiz_statistics.php
index a69201b4a8..9f51fdd1c0 100644
--- a/html/moodle2/langpacks/es/quiz_statistics.php
+++ b/html/moodle2/langpacks/es/quiz_statistics.php
@@ -41,7 +41,9 @@
$string['backtoquizreport'] = 'Volver a la página principal del informe de estadísticas.';
$string['calculatefrom'] = 'Calcular estadísticas de';
$string['cic'] = 'Coeficiente de consistentia interna (para {$a})';
+$string['completestatsfilename'] = 'completestats';
$string['count'] = 'Número';
+$string['counttryno'] = 'Recuento de intentos {$a}';
$string['coursename'] = 'Nombre del curso';
$string['detailedanalysis'] = 'Análisis más detallado de las respuestas a esta pregunta';
$string['discrimination_index'] = 'Índice de Discriminación';
@@ -68,7 +70,9 @@
$string['lastattempts'] = 'últimos intentos';
$string['lastattemptsavg'] = 'Calificación media de los últimos intentos';
$string['lastcalculated'] = 'Último cálculo realizado hace {$a->lastcalculated}. Se han realizado {$a->count} desde entonces.';
+$string['maximumfacility'] = 'Facilidad máxima';
$string['median'] = 'Calificación media (de {$a})';
+$string['minimumfacility'] = 'Facilidad mínima';
$string['modelresponse'] = 'Respuesta modelo';
$string['nameforvariant'] = 'Variante {$a->variant} de {$a->name}';
$string['negcovar'] = 'Covarianza negativa de la calificación con la calificación de los intentos totales';
@@ -82,6 +86,7 @@
$string['questionname'] = 'Nombre de la pregunta';
$string['questionnumber'] = 'Q#';
$string['questionstatistics'] = 'Estadísticas de la pregunta';
+$string['questionstatsfilename'] = 'questionstats';
$string['questiontype'] = 'Tipo de pregunta';
$string['quizinformation'] = 'Información sobre el cuestionario';
$string['quizname'] = 'Nombre del cuestionario';
diff --git a/html/moodle2/langpacks/es/report_backups.php b/html/moodle2/langpacks/es/report_backups.php
index 4fe6d6d3d6..4314206ce2 100644
--- a/html/moodle2/langpacks/es/report_backups.php
+++ b/html/moodle2/langpacks/es/report_backups.php
@@ -25,4 +25,9 @@
defined('MOODLE_INTERNAL') || die();
+$string['backupofcourselogs'] = 'Copias de seguridad del log {$a}';
+$string['logsofbackupexecutedon'] = 'Logs de la copia de seguridad ejecutado {$a}';
+$string['nobackupsfound'] = 'No se ha encontrado copias de seguridad.';
$string['pluginname'] = 'Informe de copias de seguridad';
+$string['strftimetime'] = '%I:%M:%S %p';
+$string['viewlogs'] = 'Ver logs';
diff --git a/html/moodle2/langpacks/es/report_eventlist.php b/html/moodle2/langpacks/es/report_eventlist.php
new file mode 100644
index 0000000000..e0c5cb58ff
--- /dev/null
+++ b/html/moodle2/langpacks/es/report_eventlist.php
@@ -0,0 +1,61 @@
+.
+
+/**
+ * Strings for component 'report_eventlist', language 'es', branch 'MOODLE_31_STABLE'
+ *
+ * @package report_eventlist
+ * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$string['abstractclass'] = 'Clase abstracta';
+$string['action'] = 'Acción';
+$string['affectedtable'] = 'Tabla afectada';
+$string['all'] = 'Todo';
+$string['clear'] = 'Limpio';
+$string['component'] = 'Componente';
+$string['create'] = 'crear';
+$string['crud'] = 'Tipo de consulta a la base de datos';
+$string['delete'] = 'borrar';
+$string['details'] = 'Detalles';
+$string['dname'] = 'Nombre';
+$string['edulevel'] = 'Nivel de educación';
+$string['errorinvaliddirectory'] = 'El directorio de eventos no existe o es inválido';
+$string['errorinvalidevent'] = 'El evento proporcionado no es un evento válido';
+$string['eventcode'] = 'Código del evento';
+$string['eventexplanation'] = 'Descripción del evento';
+$string['eventname'] = 'Nombre del evento';
+$string['filter'] = 'Filtro';
+$string['legacyevent'] = 'Evento heredado';
+$string['name'] = 'Nombre';
+$string['objecttable'] = 'Tabla de objeto';
+$string['other'] = 'Otro';
+$string['othereventparameters'] = 'Otros parámetros de eventos';
+$string['otherinformation'] = 'Otra información:';
+$string['parentevent'] = 'Evento padre';
+$string['participating'] = 'Participando';
+$string['pluginname'] = 'Listado de eventos';
+$string['read'] = 'leer';
+$string['relatedobservers'] = 'Extensiones observando este evento';
+$string['since'] = 'Desde';
+$string['teaching'] = 'Enseñando';
+$string['typedeclaration'] = 'Otros parámetros del evento';
+$string['update'] = 'actualizar';
+$string['yes'] = 'sí';
diff --git a/html/moodle2/langpacks/es/report_outline.php b/html/moodle2/langpacks/es/report_outline.php
index 79e9d98fea..b57179154c 100644
--- a/html/moodle2/langpacks/es/report_outline.php
+++ b/html/moodle2/langpacks/es/report_outline.php
@@ -25,7 +25,9 @@
defined('MOODLE_INTERNAL') || die();
+$string['eventactivityreportviewed'] = 'Informe de actividad visto';
$string['neverseen'] = 'Nunca visto';
+$string['numviews'] = '{$a->numviews} por {$a->distinctusers} usuarios';
$string['outline:view'] = 'Ver informe de actividad del curso';
$string['page-report-outline-index'] = '';
$string['pluginname'] = 'Actividad del curso';
diff --git a/html/moodle2/langpacks/es/report_participation.php b/html/moodle2/langpacks/es/report_participation.php
index 4fcd397d90..f8b72a62ee 100644
--- a/html/moodle2/langpacks/es/report_participation.php
+++ b/html/moodle2/langpacks/es/report_participation.php
@@ -25,6 +25,7 @@
defined('MOODLE_INTERNAL') || die();
+$string['eventreportviewed'] = 'Informe de participación visto';
$string['page-report-participation-index'] = 'Informe de participación en el curso';
$string['page-report-participation-x'] = 'Informe de participación en el curso';
$string['participation:view'] = 'Ver informe de participación en el curso';
diff --git a/html/moodle2/langpacks/es/report_questioninstances.php b/html/moodle2/langpacks/es/report_questioninstances.php
index 95cdfded0a..c8f8c0b497 100644
--- a/html/moodle2/langpacks/es/report_questioninstances.php
+++ b/html/moodle2/langpacks/es/report_questioninstances.php
@@ -26,6 +26,7 @@
defined('MOODLE_INTERNAL') || die();
$string['editquestionshere'] = 'Editar preguntas en este contexto';
+$string['eventreportviewed'] = 'Informe visto';
$string['getreport'] = 'Obtener el informe';
$string['hiddenquestions'] = 'Ocultos';
$string['intro'] = 'Este informe presenta todos los contextos en el sitema donde hay preguntas de un tipo concreto.';
diff --git a/html/moodle2/langpacks/es/report_security.php b/html/moodle2/langpacks/es/report_security.php
index 6703bfd307..d92b89ec8f 100644
--- a/html/moodle2/langpacks/es/report_security.php
+++ b/html/moodle2/langpacks/es/report_security.php
@@ -111,6 +111,9 @@
$string['check_unsecuredataroot_name'] = 'Directorio dataroot inseguro';
$string['check_unsecuredataroot_ok'] = 'El directorio de datos (normalmente /moodledata) no debe ser accesible desde la web';
$string['check_unsecuredataroot_warning'] = '!Su directorio dataroot {$a}
¡ está en el lugar equivocado y puede estar expuesto a la web!';
+$string['check_webcron_name'] = 'Cron web';
+$string['check_webcron_ok'] = 'Los usuarios anónimos no pueden acceder al cron.';
+$string['check_webcron_warning'] = 'Los usuarios anónimos pueden acceder al cron.';
$string['configuration'] = 'Configuración';
$string['description'] = 'Descripción';
$string['details'] = 'Detalles';
diff --git a/html/moodle2/langpacks/es/report_stats.php b/html/moodle2/langpacks/es/report_stats.php
index 542369a092..e839cea7af 100644
--- a/html/moodle2/langpacks/es/report_stats.php
+++ b/html/moodle2/langpacks/es/report_stats.php
@@ -25,6 +25,9 @@
defined('MOODLE_INTERNAL') || die();
+$string['eventreportviewed'] = 'Informe de estadísticas visto';
+$string['eventuserreportviewed'] = 'Informe de estadísticas de usuarios visto';
+$string['nocapability'] = 'No se puede acceder al informe de estadísticas del usuario';
$string['page-report-stats-index'] = 'Informe de estadísticas del curso';
$string['page-report-stats-user'] = 'Informe de estadísticas del usuario';
$string['page-report-stats-x'] = 'Cualquier informe de estadísticas';
diff --git a/html/moodle2/langpacks/es/report_usersessions.php b/html/moodle2/langpacks/es/report_usersessions.php
index 980835ebd1..3119baca0d 100644
--- a/html/moodle2/langpacks/es/report_usersessions.php
+++ b/html/moodle2/langpacks/es/report_usersessions.php
@@ -27,5 +27,6 @@
$string['mysessions'] = 'Mis sesiones activas';
$string['navigationlink'] = 'Sesiones del navegador';
+$string['pluginname'] = 'Informe de sesiones del usuario';
$string['thissession'] = 'Sesión actual';
$string['usersessions:manageownsessions'] = 'Gestionar mis sesiones del navegador';
diff --git a/html/moodle2/langpacks/es/repository_areafiles.php b/html/moodle2/langpacks/es/repository_areafiles.php
index 8d4e776be8..fae6d68f99 100644
--- a/html/moodle2/langpacks/es/repository_areafiles.php
+++ b/html/moodle2/langpacks/es/repository_areafiles.php
@@ -28,3 +28,4 @@
$string['areafiles:view'] = 'Ver repositorio Archivos incrustados';
$string['configplugin'] = 'Configuración del repositorio Archivos incrustados';
$string['pluginname'] = 'Archivos incrustados';
+$string['pluginname_help'] = 'Ficheros adjuntos en el editor de texto actual';
diff --git a/html/moodle2/langpacks/es/repository_boxnet.php b/html/moodle2/langpacks/es/repository_boxnet.php
index 1109b80605..0c76588df8 100644
--- a/html/moodle2/langpacks/es/repository_boxnet.php
+++ b/html/moodle2/langpacks/es/repository_boxnet.php
@@ -27,6 +27,8 @@
$string['apikey'] = 'Clave de API';
$string['boxnet:view'] = 'Mostrar el repositorio Box.net';
+$string['clientid'] = 'ID del cliente';
+$string['clientsecret'] = 'Clave secreta del cliente';
$string['configplugin'] = 'Configuración de Box.net';
$string['information'] = 'Obtener una clave de API desde la página de desarrolladores Box.net a> para su sitio Moodle.';
$string['invalidpassword'] = 'Contraseña incorrecta';
diff --git a/html/moodle2/langpacks/es/resource.php b/html/moodle2/langpacks/es/resource.php
index 6109523c37..4fe6223cca 100644
--- a/html/moodle2/langpacks/es/resource.php
+++ b/html/moodle2/langpacks/es/resource.php
@@ -90,7 +90,10 @@
$string['printintroexplain'] = '¿Mostrar la descripción del recurso debajo del contenido? Algunos tipos de visualización pueden no mostrar la descripción incluso aunque esté activada esa opción.';
$string['resource:addinstance'] = 'Añadir un nuevo recurso';
$string['resourcecontent'] = 'Archivos y subcarpetas';
+$string['resourcedetails_sizedate'] = '{$a->size} {$a->date}';
$string['resourcedetails_sizetype'] = '{$a->size} {$a->type}';
+$string['resourcedetails_sizetypedate'] = '{$a->size} {$a->type} {$a->date}';
+$string['resourcedetails_typedate'] = '{$a->type} {$a->date}';
$string['resource:exportresource'] = 'Exportar recurso';
$string['resource:view'] = 'Ver recurso';
$string['search:activity'] = 'Archivo';
@@ -107,3 +110,4 @@
Si hay varios archivos en el recurso, se muestra el tipo del archivo inicial.
Si el tipo de archivo es desconocido para el sistema, no se muestra.';
+$string['uploadeddate'] = 'Subido {$a}';
diff --git a/html/moodle2/langpacks/es/scorm.php b/html/moodle2/langpacks/es/scorm.php
index 51d5032350..8e5bb9c87e 100644
--- a/html/moodle2/langpacks/es/scorm.php
+++ b/html/moodle2/langpacks/es/scorm.php
@@ -213,6 +213,7 @@
$string['lastattemptlockdesc'] = 'Esta preferencia fija el valor por defecto para el bloqueo después de ajustar el intento final';
$string['lastattemptlock_help'] = 'Si se activa, al estudiante se le impide el lanzamiento del reproductor SCORM después de haber utilizado todos los intentos que tenía asignados.';
$string['location'] = 'Mostrar la barra de ubicación';
+$string['masteryoverridedesc'] = 'Esta preferencia establece el valor por defecto de la nota mínima para aprobar sobrescribiendo el valor establecido.';
$string['max'] = 'Calificación máxima';
$string['maximumattempts'] = 'Número de intentos';
$string['maximumattemptsdesc'] = 'Esta preferencia fija el valor por defecto sobre el número máximo de intentos en una actividad';
@@ -352,6 +353,7 @@
$string['scorm:viewreport'] = 'Ver informes';
$string['scorm:viewscores'] = 'Ver puntuaciones';
$string['scrollbars'] = 'Permitir desplazamiento de la ventana';
+$string['search:activity'] = 'Paquete SCORM - información de actividad';
$string['selectall'] = 'Seleccionar todo';
$string['selectnone'] = 'Deseleccionar todo';
$string['show'] = 'Mostrar';
@@ -381,6 +383,7 @@
$string['trackcorrectcount'] = 'Conteo correcto';
$string['trackcorrectcount_help'] = 'Número de resultados correctos para la pregunta';
$string['trackid'] = 'ID';
+$string['trackid_help'] = 'Este es el identificador establecido por tu paquete SCORM para esta pregunta,';
$string['trackingloose'] = 'ATENCIÓN: ¡Los datos de rastreo de este paquete se perderán!';
$string['tracklatency'] = 'Latencia';
$string['tracklatency_help'] = 'Tiempo transucrrido entre el momento en que la se puso a disposición del alumno la interacción para respoder y el momento de la primera respuesta';
@@ -399,6 +402,7 @@
$string['tracktime'] = 'Hora';
$string['tracktime_help'] = 'Hora en la que se inició el intento';
$string['tracktype'] = 'Tipo';
+$string['tracktype_help'] = 'El tipo de pregunta, por ejemplo "selección" o "respuesta corta".';
$string['trackweight'] = 'Peso';
$string['trackweight_help'] = 'Peso asigando al elemento';
$string['type'] = 'Tipo';
@@ -410,6 +414,7 @@
$string['unziperror'] = 'Ha ocurrido un error durante la descompresión del paquete';
$string['updatefreq'] = 'Actualizar frecuencia automáticamente';
$string['updatefreqdesc'] = 'Esta preferencia fija el valor por defecto sobre la frecuencia de actualización automática de una actividad';
+$string['updatefreq_error'] = 'La frecuencia de auto-actualización únicamente puede ser establecida si el paquete está hospedado externamente';
$string['updatefreq_help'] = 'Esto permite descargar y actualizar automáticamente el paquete externo';
$string['validateascorm'] = 'Validar un paquete SCORM';
$string['validation'] = 'Resultado de la validación';
diff --git a/html/moodle2/langpacks/es/survey.php b/html/moodle2/langpacks/es/survey.php
index 27324db79b..a4087d7835 100644
--- a/html/moodle2/langpacks/es/survey.php
+++ b/html/moodle2/langpacks/es/survey.php
@@ -200,6 +200,10 @@
$string['downloadresults'] = 'Descargar resultados';
$string['downloadtext'] = 'Descargar como texto';
$string['editingasurvey'] = 'Editando encuesta';
+$string['errorunabletosavenotes'] = 'Ha ocurrido un error mientras se guardaban tus notas.';
+$string['eventreportdownloaded'] = 'Informe de encuesta descargado';
+$string['eventreportviewed'] = 'Informe de encuesta visto';
+$string['eventresponsesubmitted'] = 'Respuesta a la encuesta enviada';
$string['guestsnotallowed'] = 'Los invitados no pueden participar en las encuestas';
$string['howlong'] = '¿Cuánto tiempo le llevó completar esta encuesta?';
$string['howlongoptions'] = 'menos de 1 min., 1-2 min., 2-3 min., 3-4 min., 4-5 min., 5-10 min., más de 10 minutos.';
@@ -237,11 +241,13 @@
$string['scaleagree5'] = 'en total desacuerdo, un poco en desacuerdo, ni de acuerdo ni en desacuerdo, un poco de acuerdo, totalmente de acuerdo';
$string['scales'] = 'Escalas';
$string['scaletimes5'] = 'Casi nunca, Rara vez, Alguna vez, A menudo, Casi siempre';
+$string['search:activity'] = 'Encuesta - información de actividad';
$string['seemoredetail'] = 'Haga clic aquí para ver más detalles';
$string['selectedquestions'] = 'Preguntas seleccionadas de una escala, todos los estudiantes';
$string['summary'] = 'Resumen';
$string['survey:addinstance'] = 'Añadir una nueva encuesta';
$string['surveycompleted'] = 'Usted ha completado esta encuesta. La gráfica inferior le muestra sus resultados comparados con el promedio de la clase.';
+$string['surveycompletednograph'] = 'Has completado esta encuesta.';
$string['survey:download'] = 'Descargar respuestas';
$string['surveygraph'] = 'Gráfico de la encuesta';
$string['surveyname'] = 'Nombre de la encuesta';
diff --git a/html/moodle2/langpacks/es/theme_more.php b/html/moodle2/langpacks/es/theme_more.php
index e5caaf726a..94aefafaca 100644
--- a/html/moodle2/langpacks/es/theme_more.php
+++ b/html/moodle2/langpacks/es/theme_more.php
@@ -68,5 +68,6 @@
$string['region-side-pre'] = 'Izquierda';
$string['secondarybackground'] = 'Color secundario de fondo de página';
$string['secondarybackground_desc'] = 'El color de fondo de cualquier contenido secundario, tal como los bloques.';
+$string['smalllogo'] = 'Logo pequeño';
$string['textcolor'] = 'Color del texto';
$string['textcolor_desc'] = 'Color del texto';
diff --git a/html/moodle2/langpacks/es/tool_capability.php b/html/moodle2/langpacks/es/tool_capability.php
index e916c3f382..a3a55b7466 100644
--- a/html/moodle2/langpacks/es/tool_capability.php
+++ b/html/moodle2/langpacks/es/tool_capability.php
@@ -29,6 +29,7 @@
$string['capabilityreport'] = 'Visión general de la capacidad';
$string['changeoverrides'] = 'Cambiar anulaciones en este contexto';
$string['changeroles'] = 'Cambiar definiciones de rol';
+$string['eventreportviewed'] = 'Informe visto';
$string['forroles'] = 'Para los roles {$a}';
$string['getreport'] = 'Obtener el informe';
$string['intro'] = 'Este informe muestra para cada permiso concreto qué acción se permite realizar a cada rol (o grupo de roles), y dónde se ha sobreescrito el permiso.';
diff --git a/html/moodle2/langpacks/es/tool_cohortroles.php b/html/moodle2/langpacks/es/tool_cohortroles.php
new file mode 100644
index 0000000000..bec593d123
--- /dev/null
+++ b/html/moodle2/langpacks/es/tool_cohortroles.php
@@ -0,0 +1,29 @@
+.
+
+/**
+ * Strings for component 'tool_cohortroles', language 'es', branch 'MOODLE_31_STABLE'
+ *
+ * @package tool_cohortroles
+ * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$string['assign'] = 'Tarea';
+$string['selectrole'] = 'Seleccionar rol';
diff --git a/html/moodle2/langpacks/es/tool_filetypes.php b/html/moodle2/langpacks/es/tool_filetypes.php
index 4710cd919c..d075aa6723 100644
--- a/html/moodle2/langpacks/es/tool_filetypes.php
+++ b/html/moodle2/langpacks/es/tool_filetypes.php
@@ -27,6 +27,10 @@
$string['corestring'] = 'Cadena de idioma alternativa';
$string['corestring_help'] = 'Esta configuración puede ser utilizada para seleccionar una cadena de idioma diferente desde el fichero idioma principal mimetypes.php. Generalmente debe ser dejado en blanco. Para tipos personalizados, utilice el campo descripción.';
+$string['deletea'] = 'Borrar {$a}';
+$string['description'] = 'Descripción personalizada';
+$string['descriptiontype'] = 'Tipo de descripción';
+$string['descriptiontype_custom'] = 'Descripción personalizada especificada en este formulario';
$string['descriptiontype_default'] = 'Por defecto (tipo MIME o la cadena de idioma correspondiente si está disponible)';
$string['descriptiontype_help'] = 'Existen tres formas posibles de indicar una descripción.
@@ -34,12 +38,22 @@
* Puedes especificar una descripción personalizada en este formulario.
* Puedes especificar el nombre de una cadena de idioma en mimetypes.php para ser utilizada en vez del tipo MIME.';
$string['descriptiontype_lang'] = 'Cadena de idioma alternativa (desde mimetypes.php)';
+$string['displaydescription'] = 'Descripción';
+$string['editfiletypes'] = 'Editar un tipo de fichero existente';
+$string['emptylist'] = 'No hay tipos de ficheros definidos';
+$string['error_extension'] = 'La extensión del fichero {$a} ya existe o es inválida. Las extensiones de ficheros deben ser únicas y no deben contener caracteres especiales.';
$string['error_notfound'] = 'El tipo de fichero con extensión {$a} no puede ser hallado.';
$string['extension'] = 'Extensión';
+$string['extension_help'] = 'Nombre de la extensión del fichero sin el punto, e.g. ‘mobi’';
+$string['groups'] = 'Tipos de grupos';
+$string['icon'] = 'Archivo de icono';
$string['mimetype'] = 'tipo MIME';
$string['pluginname'] = 'Tipos de fichero';
+$string['revert'] = 'Restaurar {$a} a los ajustes por defecto de Moodle';
+$string['revert_confirmation'] = '¿Está seguro de que quiere restaurar .{$a} a los ajustes por defecto de Moodle, descartando sus cambios?';
$string['revertfiletype'] = 'Restaura un tipo de fichero';
$string['source'] = 'Tipo';
+$string['source_custom'] = 'Personalizado';
$string['source_deleted'] = 'Borrado';
$string['source_modified'] = 'Modificado';
$string['source_standard'] = 'Estándar';
diff --git a/html/moodle2/langpacks/es/tool_generator.php b/html/moodle2/langpacks/es/tool_generator.php
index 81c61dbf1b..189a3ddfa7 100644
--- a/html/moodle2/langpacks/es/tool_generator.php
+++ b/html/moodle2/langpacks/es/tool_generator.php
@@ -26,5 +26,44 @@
defined('MOODLE_INTERNAL') || die();
$string['bigfile'] = 'Fichero grande {$a}';
+$string['coursesize_0'] = 'XS (~10KB; creado en ~1 segundo)';
+$string['coursesize_1'] = 'S (~10MB; creado en ~30 segundos)';
+$string['coursewithoutusers'] = 'El curso seleccionado no tiene usuarios';
+$string['createcourse'] = 'Crear curso';
+$string['creating'] = 'Creando curso';
+$string['done'] = 'hecho ({$a}s)';
+$string['downloadusersfile'] = 'Descargar fichero de usuarios';
$string['error_noforumdiscussions'] = 'El curso seleccionado no contiene foros de discusión';
+$string['error_noforuminstances'] = 'El curso seleccionado no contiene instancias de foros';
+$string['error_noforumreplies'] = 'El curso seleccionado no contiene respuestas al foro';
+$string['error_nonexistingcourse'] = 'El curso especificado no existe';
+$string['error_nopageinstances'] = 'El curso seleccionado no contiene instancias de página';
+$string['error_notdebugging'] = 'No disponible en este servidor porque la depuración no está configurada a DESARROLLADOR';
+$string['fullname'] = 'Curso de test: {$a->size}';
+$string['notenoughusers'] = 'El curso seleccionado no tiene suficientes usuarios';
$string['pluginname'] = 'Generador de cursos aleatorio';
+$string['progress_checkaccounts'] = 'Comprobando cuentas de usuario ({$a})';
+$string['progress_coursecompleted'] = 'Curso completado ({$a}s)';
+$string['progress_createaccounts'] = 'Creando cuenta de usuarios ({$a->from} - {$a->to})';
+$string['progress_createassignments'] = 'Creando tareas ({$a})';
+$string['progress_createbigfiles'] = 'Creando ficheros grandes ({$a})';
+$string['progress_createcourse'] = 'Creando curso {$a}';
+$string['progress_createforum'] = 'Creando foro ({$a} posts)';
+$string['progress_createpages'] = 'Creando páginas ({$a})';
+$string['progress_createsmallfiles'] = 'Creando archivos pequeños ({$a})';
+$string['progress_enrol'] = 'Matriculando usuarios en el curso ({$a})';
+$string['progress_sitecompleted'] = 'Sitio completado ({$a}s)';
+$string['shortsize_0'] = 'XS';
+$string['shortsize_1'] = 'S';
+$string['shortsize_2'] = 'M';
+$string['shortsize_3'] = 'L';
+$string['shortsize_4'] = 'L';
+$string['shortsize_5'] = 'XXL';
+$string['sitesize_0'] = 'XS (~10MB; 3 cursos, creados en ~30 segundos)';
+$string['sitesize_1'] = 'S (~50MB; 8 cursos, creados en ~2 minutos)';
+$string['sitesize_2'] = 'M (~200MB; 73 cursos, creados en ~10 minutos)';
+$string['sitesize_3'] = 'L (~1\'5GB; 277 cursos, creados en ~1\'5 horas)';
+$string['sitesize_4'] = 'XL (~10GB; 1065 cursos, creados en ~5 horas)';
+$string['sitesize_5'] = 'XXL (~20GB; 4177 cursos, creados en ~10 horas)';
+$string['size'] = 'Tamaño del curso';
+$string['smallfiles'] = 'Ficheros pequeños';
diff --git a/html/moodle2/langpacks/es/tool_replace.php b/html/moodle2/langpacks/es/tool_replace.php
index f726fc74dd..51e40929b3 100644
--- a/html/moodle2/langpacks/es/tool_replace.php
+++ b/html/moodle2/langpacks/es/tool_replace.php
@@ -25,5 +25,13 @@
defined('MOODLE_INTERNAL') || die();
+$string['disclaimer'] = 'Entiendo los riesgos de esta operación';
+$string['doit'] = '¡Sí, hazlo!';
+$string['invalidcharacter'] = 'Se encontraron caracteres no válidos en el texto de búsqueda o reemplazo.';
$string['notifyfinished'] = '...finalizado';
+$string['notifyrebuilding'] = 'Reconstruyendo la caché del curso...';
+$string['notimplemented'] = 'Lo sentimos, esta característica no está implementada en el controlador de tu base de datos.';
+$string['pageheader'] = 'Buscar y reemplazar texto en toda la base de datos';
$string['pluginname'] = 'Búsqueda y sustitución en Base de Datos';
+$string['replacewith'] = 'Reemplazar con esta cadena de texto';
+$string['searchwholedb'] = 'Buscar en toda la base de datos';
diff --git a/html/moodle2/langpacks/es/tool_spamcleaner.php b/html/moodle2/langpacks/es/tool_spamcleaner.php
index d3dfc95ad4..5c431b7531 100644
--- a/html/moodle2/langpacks/es/tool_spamcleaner.php
+++ b/html/moodle2/langpacks/es/tool_spamcleaner.php
@@ -37,6 +37,7 @@
$string['spameg'] = 'e.g., casino, porno, xxx';
$string['spamfromblog'] = 'Del mensaje del blog:';
$string['spaminvalidresult'] = 'Resultado desconocido pero no válido';
+$string['spamkeyword'] = 'Palabra clave';
$string['spamoperation'] = 'Operación';
$string['spamresult'] = 'Resultado de la búsqueda de perfiles del usuario que contienen:';
$string['spamsearch'] = 'Buscar por estas palabras clave';
diff --git a/html/moodle2/langpacks/es/tool_task.php b/html/moodle2/langpacks/es/tool_task.php
new file mode 100644
index 0000000000..992f888ad5
--- /dev/null
+++ b/html/moodle2/langpacks/es/tool_task.php
@@ -0,0 +1,47 @@
+.
+
+/**
+ * Strings for component 'tool_task', language 'es', branch 'MOODLE_31_STABLE'
+ *
+ * @package tool_task
+ * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com}
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+defined('MOODLE_INTERNAL') || die();
+
+$string['asap'] = 'Tan pronto como sea posible';
+$string['blocking'] = 'Bloqueando';
+$string['component'] = 'Componente';
+$string['corecomponent'] = 'Núcleo';
+$string['default'] = 'Por defecto';
+$string['disabled'] = 'Deshabilitado';
+$string['edittaskschedule'] = 'Editar tarea programada: {$a}';
+$string['faildelay'] = 'Retardo del fallo';
+$string['lastruntime'] = 'Último arranque';
+$string['nextruntime'] = 'Siguiente arranque';
+$string['plugindisabled'] = 'Plugin deshabilitado';
+$string['pluginname'] = 'Configuración de la tarea programada';
+$string['resettasktodefaults'] = 'Restablecer la configuración de la tarea programada a por defecto';
+$string['scheduledtasks'] = 'Tareas programadas';
+$string['taskdisabled'] = 'Tareas deshabilitadas';
+$string['taskscheduleday'] = 'Día';
+$string['taskscheduledayofweek'] = 'Día de la semana';
+$string['taskschedulehour'] = 'Hora';
+$string['taskscheduleminute'] = 'Minuto';
+$string['taskschedulemonth'] = 'Mes';
diff --git a/html/moodle2/langpacks/es/tool_uploaduser.php b/html/moodle2/langpacks/es/tool_uploaduser.php
index 1c592e3810..475e9cbf9b 100644
--- a/html/moodle2/langpacks/es/tool_uploaduser.php
+++ b/html/moodle2/langpacks/es/tool_uploaduser.php
@@ -28,16 +28,19 @@
$string['allowdeletes'] = 'Permitir eliminar';
$string['allowrenames'] = 'Permitir renombrar';
$string['allowsuspends'] = 'Permitir suspensión y activación de cuentas';
+$string['assignedsysrole'] = 'Sistema asignado en el sistema {$a}';
$string['csvdelimiter'] = 'Delimitador CSV';
$string['defaultvalues'] = 'Valores por defecto';
$string['deleteerrors'] = 'Eliminar errores';
$string['encoding'] = 'Codificación';
+$string['errormnetadd'] = 'No se puede añadir usuarios externos';
$string['errors'] = 'Errores';
$string['nochanges'] = 'Sin cambios';
$string['pluginname'] = 'Subida de usuario';
$string['renameerrors'] = 'Errores de renombrado';
$string['requiredtemplate'] = 'Exigido. Puede utilizar sintaxis de plantilla aquí (%l = lastname, %f = firstname, %u = username). Consulte la ayuda para ver detalles y ejemplos.';
$string['rowpreviewnum'] = 'Previsualizar filas';
+$string['unassignedsysrole'] = 'Quitado rol en el sistema {$a}';
$string['uploadpicture_baduserfield'] = 'El atributo de usuario especificado no es válido. Por favor, inténtelo de nuevo.';
$string['uploadpicture_cannotmovezip'] = 'No se puede mover el archivo zip a un directorio temporal.';
$string['uploadpicture_cannotprocessdir'] = 'No se pueden procesar ficheros descomprimidos.';
@@ -61,6 +64,7 @@
* Los nombres de campo necesarios son username, password, firstname, lastname, email';
$string['uploaduserspreview'] = 'Previsualizar subida de usuarios';
$string['uploadusersresult'] = 'Resultados de subida de usuarios';
+$string['uploaduser:uploaduserpictures'] = 'Subir foto del usuario';
$string['useraccountupdated'] = 'Usuario actualizado';
$string['useraccountuptodate'] = 'Usuario hasta hoy';
$string['userdeleted'] = 'Usuario eliminado';
diff --git a/html/moodle2/langpacks/es/tool_xmldb.php b/html/moodle2/langpacks/es/tool_xmldb.php
index 7fa9e8018c..0bf5f8612b 100644
--- a/html/moodle2/langpacks/es/tool_xmldb.php
+++ b/html/moodle2/langpacks/es/tool_xmldb.php
@@ -40,6 +40,8 @@
$string['check_foreign_keys'] = 'Buscar violaciones de la clave externa';
$string['checkindexes'] = 'Comprobar índices';
$string['check_indexes'] = 'Buscar índices BD ausentes';
+$string['checkoraclesemantics'] = 'Comprobar la semántica';
+$string['check_oracle_semantics'] = 'Buscar longitud de semántica incorrecta';
$string['completelogbelow'] = '(ver abajo el registro completo de la búsqueda)';
$string['confirmcheckbigints'] = 'Esta funcionalidad buscará potential wrong integer fields en su servidor Moodle, generando (¡pero no ejecutando!) automáticamente las acciones SQL necesarias para tener todos los enteros de su base de datos adecuadamente definidos.
Una vez generados, puede copiarlas y ejecutarlas con seguridad en su interfaz SQL preferida (no olvide hacer una copia de seguridad de sus datos antes de hacerlo).
Se recomienda ejecutar la última (+) versión de Moodle disponible (1.8, 1.9, 2.x ...) antes de llevar a cabo la búsqueda de enteros erróneos.
Esta funcionalidad no ejecuta ninguna acción contra la BD (únicamente la lee), de modo que puede ser realizada con seguridad en cualquier momento.';
@@ -70,7 +72,10 @@
$string['down'] = 'Abajo';
$string['duplicate'] = 'Duplicar';
$string['duplicatefieldname'] = 'Ya existe otro campo con ese nombre';
+$string['duplicatefieldsused'] = 'Duplicar campos usados';
+$string['duplicateindexname'] = 'Duplicar nombre del índice';
$string['duplicatekeyname'] = 'Ya existe otra clave con ese nombre';
+$string['duplicatetablename'] = 'Existe otra tabla con ese nombre';
$string['edit'] = 'Edición';
$string['edit_field'] = 'Editar campo';
$string['edit_field_save'] = 'Guardar campo';
@@ -88,7 +93,9 @@
$string['fieldnameempty'] = 'Nombre del campo vacío';
$string['fields'] = 'Campos';
$string['fieldsnotintable'] = 'El campo no existe en la tabla';
+$string['fieldsusedinindex'] = 'Este campo es usado como índice';
$string['fieldsusedinkey'] = 'Este campo se usa como clave.';
+$string['filemodifiedoutfromeditor'] = 'Atención: El archivo se ha modificado localmente usando el editor de XMLDB. Guardar sobrescribirá los cambios locales.';
$string['filenotwriteable'] = 'Archivo no escribible';
$string['fkviolationdetails'] = 'La clave externa {$a->keyname} en la tabla {$a->tablename} es violada por {$a->numviolations} de un total de {$a->numrows} filas.';
$string['float2numbernote'] = 'Aviso: A pesar de que los campos "float" tienen apoyo 100% de XMLDB, se recomienda migrar a "número" de campos en su lugar.';
@@ -98,10 +105,15 @@
$string['generate_documentation'] = 'Documentación';
$string['gotolastused'] = 'Ir al último archivo usado';
$string['incorrectfieldname'] = 'Nombre incorrecto';
+$string['incorrectindexname'] = 'Nombre de índice incorrecto';
+$string['incorrectkeyname'] = 'Nombre incorrecto de clave';
+$string['incorrecttablename'] = 'Nombre incorrecto de tabla';
$string['index'] = 'Índice';
$string['indexes'] = 'Índices';
+$string['indexnameempty'] = 'El nombre del índice está vacío';
$string['integerincorrectlength'] = 'Longitud incorrecta del campo integer';
$string['key'] = 'Clave';
+$string['keynameempty'] = 'El nombre de la clave no puede estar vacío';
$string['keys'] = 'Claves';
$string['listreservedwords'] = 'Lista de palabras reservadas
(se utiliza para mantener XMLDB_reserved_words actualizado)';
$string['load'] = 'Cargar';
@@ -172,6 +184,7 @@
$string['wrongints'] = 'Se han encontrado enteros erróneos';
$string['wronglengthforenum'] = 'Longitud incorrecta del campo enum';
$string['wrongnumberofreffields'] = 'Número incorrecto de campos de referencia';
+$string['wrongoraclesemantics'] = 'Se ha encontrado semántica incorrecta de Oracle BYTE';
$string['wrongreservedwords'] = 'Palabras reservadas en uso
(note que los nombres de la tabla no son importantes si se usa $CFG->prefix)';
$string['yesmissingindexesfound'] = 'En su BD se han encontrado algunos índices ausentes. Aquí puede ver los detalles, así como los comandos SQL a ejecutar con su interfaz SQL favorita para crearlos.
Una vez que lo haya hecho, es muy recomendable que ejecute de nuevo esta utilidad para comprobar que no se encuentran más índices ausentes.';
$string['yeswrongdefaultsfound'] = 'En su base de datos se han encontrado algunos valores por defecto inconsistentes. Aquí se presentan los detalles y las acciones SQL que deben ejecutarse en su interfaz SQL favorita para crearlos (no olvide hacer una copia de seguridad de sus datos).
Una vez realizado, se recomienda ejecutar de nuevo esta utilidad para comprobar que no se encuentran más valores por defecto inconsistentes.';
diff --git a/html/moodle2/langpacks/es/workshopform_accumulative.php b/html/moodle2/langpacks/es/workshopform_accumulative.php
index d53271ff36..5b92a8fb43 100644
--- a/html/moodle2/langpacks/es/workshopform_accumulative.php
+++ b/html/moodle2/langpacks/es/workshopform_accumulative.php
@@ -29,8 +29,10 @@
$string['addmoredimensions'] = 'Espacios en blanco para {$a} aspectos más';
$string['correct'] = 'Correcto';
$string['dimensioncomment'] = 'Comentario';
+$string['dimensioncommentfor'] = 'Comentario para {$a}';
$string['dimensiondescription'] = 'Descripción';
$string['dimensiongrade'] = 'Calificación';
+$string['dimensiongradefor'] = 'Calificación para {$a}';
$string['dimensionmaxgrade'] = 'Mejor calificación posible / Escala a utilizar';
$string['dimensionnumber'] = 'Aspecto {$a}';
$string['dimensionweight'] = 'Ponderación';
diff --git a/html/moodle2/langpacks/es/workshopform_comments.php b/html/moodle2/langpacks/es/workshopform_comments.php
index 3e25ed7fcd..94f19a439f 100644
--- a/html/moodle2/langpacks/es/workshopform_comments.php
+++ b/html/moodle2/langpacks/es/workshopform_comments.php
@@ -27,6 +27,7 @@
$string['addmoredimensions'] = 'Espacios en blanco para {$a} aspectos más';
$string['dimensioncomment'] = 'Comentario';
+$string['dimensioncommentfor'] = 'Comentario para {$a}';
$string['dimensiondescription'] = 'Descripción';
$string['dimensionnumber'] = 'Aspecto {$a}';
$string['pluginname'] = 'Comentarios';
diff --git a/html/moodle2/langpacks/es/workshopform_numerrors.php b/html/moodle2/langpacks/es/workshopform_numerrors.php
index 2c6509e775..72de417a18 100644
--- a/html/moodle2/langpacks/es/workshopform_numerrors.php
+++ b/html/moodle2/langpacks/es/workshopform_numerrors.php
@@ -29,6 +29,7 @@
$string['configgrade0'] = 'Palabra por defecto que describe la evaluación negativa de una afirmación.';
$string['configgrade1'] = 'Palabra por defecto que describe la evaluación positiva de una afirmación.';
$string['dimensioncomment'] = 'Comentario';
+$string['dimensioncommentfor'] = 'Comentario para {$a}';
$string['dimensiondescription'] = 'Descripción';
$string['dimensiongrade'] = 'Calificación';
$string['dimensionnumber'] = 'Afirmación {$a}';
diff --git a/html/moodle2/langpacks/eu/admin.php b/html/moodle2/langpacks/eu/admin.php
index 07cedd713c..5b8c095dc3 100644
--- a/html/moodle2/langpacks/eu/admin.php
+++ b/html/moodle2/langpacks/eu/admin.php
@@ -29,7 +29,8 @@
$string['accounts'] = 'Kontuak';
$string['addcategory'] = 'Gehitu kategoria';
$string['additionalhtml'] = 'HTML osagarria';
-$string['additionalhtmlfooter'] = 'GORPUTZA itxi baino lehen';
+$string['additionalhtml_desc'] = 'Ezarpen hauek nahi dituzun orri guztietan HTML kodea zehazteko modua emango dizute. Orriaren HEAD etiketaren barruan gehituko den HTMLa ezarri ahal duzu, BODY etiketa zabaldutakoan edo BODY etiketa itxitakoan.
Hau egiteak orri bakoitzean goiburu edo orripeko pertsonalizatuak gehitzeko modua eskaintzen dizu, edo, aukeratutako itxura gorabehera, Google Analytics bezalako zerbitzuetarako euskarria gehitzeko oso modu errazean.';
+$string['additionalhtmlfooter'] = 'BODY itxi baino lehen';
$string['additionalhtmlfooter_desc'] = 'Edukia orri bakoitzean gehituko da BODY etiketa itxi baino lehen.';
$string['additionalhtmlhead'] = 'Goiburuaren barruan';
$string['additionalhtmlhead_desc'] = 'Edukia orri bakoitzean gehituko da HEAD etiketaren amaieran.';
@@ -92,12 +93,15 @@
$string['cachejs'] = 'Javascript-en cachea';
$string['cachejs_help'] = 'Cache-an gordetzeak eta Javascript bihurtzeak orria kargatzea izugarri hobetzen dute. Hau gomendagarria da lanean ari diren guneentzat. Garatzaileek ezarpen hau desgaitu nahiko dute, ziurrenik.';
$string['cacherequest'] = 'Eskatu cachea';
+$string['cacherequesthelp'] = 'Erabiltzaile-cache espezifikoa, eskaria osatzen denean iraungitzen dena. Biltegiratze estatikoa erabiltzen ari garenean eremuak ordezkatzeko diseinatua.';
$string['cachesession'] = 'Saio-cachea';
+$string['cachesessionhelp'] = 'Erabiltzaile-cache espezifikoa, erabiltzailearen saioa amaitzen denean iraungitzen dena. Saioaren gainkarga arintzeko diseinatua.';
$string['cachesettings'] = 'Cachearen ezarpenak';
$string['caching'] = 'Cachean gordetzea';
$string['calendarexportsalt'] = 'Egutegia esportatzeko eraldaketa';
$string['calendarsettings'] = 'Egutegia';
$string['calendartype'] = 'Egutegi-mota';
+$string['calendartype_desc'] = 'Aukera ezazu berezko egutegi-mota bat gune osorako. Ezarpen honek salbuespenak izan ditzake ikastaroaren ezarpenen bidez edo erabiltzaileek beren profiletan zehaztutakoaren bidez.';
$string['calendar_weekend'] = 'Asteburuko egunak';
$string['cannotdeletemodfilter'] = 'Ezin duzu \'{$a->filter}\' desinstalatu \'{$a->module}\' moduluaren zati bat baita.';
$string['cannotuninstall'] = '{$a} ezin da desinstalatu.';
@@ -181,6 +185,7 @@
$string['configeditordictionary'] = 'Balore hau erabiliko da zuzentzaile ortografikoak erabiltzaileen hizkuntzako hiztegia ez baldin badu.';
$string['configeditorfontlist'] = 'Editoreari ateratzen zaion menuaren zerrendan agertuko diren letra-motak aukeratu.';
$string['configemailchangeconfirmation'] = 'Erabiltzaileek profiletan posta elektronikoaren helbidea aldatzen dutenean, beharrezko da baieztatzea.';
+$string['configenableblogs'] = 'Ezarpen honek guneko erabiltzaile guztiei bloga izateko modua ematen die.';
$string['configenablecalendarexport'] = 'Gaitu egutegiak esportatzea eta harpidetzea.';
$string['configenablecomments'] = 'Iruzkinak gaitu';
$string['configenablecourserequests'] = 'Edozein erabiltzailek ikastaro bat sortzeko eska dezala ahalbidetzen du.';
@@ -233,6 +238,7 @@
$string['configmaxconsecutiveidentchars'] = 'Pasahitzak ezin ditu jarrian zenbaki honek adierazten duen kopurua baino karaktere berdin gehiago izan. Erabili 0 hau ekiditeko.';
$string['configmaxeditingtime'] = 'Aukera honek zehazten du erabiltzaileen epea foroetara bidalitako mezuak editatzeko, egunkariaren feed-backa, etab. Normalean 30 minutu epe egokia izaten da.';
$string['configmaxevents'] = 'Aurreikusitako ekitaldiak';
+$string['configmaxusersperpage'] = 'Guneko hasiera-orrian erabiltzaile-hautatzailean erakutsiko den gehieneko erabiltzaile-kopura ikastaroetan, kohorteetan, web-zerbitzuetan eta abarrean.';
$string['configmessaging'] = 'Guneko erabiltzaileen arteko mezularitza-sistema indarrean jarri nahi al duzu?';
$string['configmessagingdeletereadnotificationsdelay'] = 'Irakurritako jakinarazpenak ezaba daitezke espazioa aurrezteko. Irakurri ondoren, zenbat denbora pasatu behar da ezabatzeko?';
$string['configmessaginghidereadnotifications'] = 'Mezuen historia ikusten ari zarenean, ezkutatu irakurritako jakinarazpenak, foroetako ekarpenak, adibidez.';
@@ -552,6 +558,7 @@
$string['log'] = 'Agerraldiak';
$string['logguests'] = 'Gonbidatuen sarbidearen erregistroa';
$string['loginhttps'] = 'Erabili HTTPS saioa hasteko';
+$string['loginpasswordautocomplete_help'] = 'Gaituz gero, erabiltzaileek ezin izango dute pasahitza beren nabigatzailean gorde.';
$string['loglifetime'] = 'Mantendu erregistroak tarte honetan:';
$string['longtimewarning'] = 'Mesedez, kontuan hartu prozesu hau oso luzea izan daitekeela.';
$string['maintenancemode'] = 'Mantenu-moduan';
@@ -856,12 +863,13 @@
$string['taskcheckforupdates'] = 'Egiaztatu eguneraketak';
$string['taskcontextcleanup'] = 'Garbitu testuinguruak';
$string['taskcreatecontexts'] = 'Sortu falta diren testuinguruak';
+$string['taskdeleteincompleteusers'] = 'Ezabatu osatu gabeko erabiltzaieak';
$string['taskdeleteunconfirmedusers'] = 'Ezabatu kontua egiaztatu gabeko erabiltzaileak';
$string['taskregistrationcron'] = 'Gunearen erregistroa';
$string['themedesignermode'] = 'Itxurak diseinatzeko modua';
$string['themelist'] = 'Itxuren zerrenda';
$string['themenoselected'] = 'Ez da itxura aukeratu';
-$string['themeresetcaches'] = 'Itxuren cache-ak garbitu';
+$string['themeresetcaches'] = 'Garbitu itxuren cache-ak';
$string['themeselect'] = 'Aldatu itxura';
$string['themeselector'] = 'Itxura-hautatzailea';
$string['themesettings'] = 'Itxuraren ezarpenak';
@@ -872,7 +880,7 @@
$string['timezone'] = 'Berezko ordutegi-eremua';
$string['timezoneforced'] = 'Aukera hau gunearen administratzaileak behartu egin du';
$string['timezoneinvalid'] = 'Ordutegi-eremu baliogabea "{$a}"';
-$string['timezoneisforcedto'] = 'Erabiltzaile guztiak erabiltzera behartu';
+$string['timezoneisforcedto'] = 'Behartu erabiltzaile guztiak erabiltzera';
$string['timezonenotforced'] = 'Erabiltzaileek ordutegi-eremua aukera dezakete';
$string['timezonephpdefault'] = 'Berezko PHP ordutegi-eremua ({$a})';
$string['timezoneserver'] = 'Zerbitzariaren ordutegi-eremua ({$a}) ({$a})';
@@ -883,6 +891,7 @@
$string['unbookmarkthispage'] = 'Desmarkatu orri hau';
$string['unicoderequired'] = 'Datu guztiak Unicode (UTF-8)-n gorde behar dituzu. Instalazio berriak berez Unicode karaktere-multzoa duten datu-baseetan exekutatu beharko lirateke. Eguneraketa bat egiten ari bazara, UTF-8rako migrazio-prozesua egin beharko zenuke (begiratu horretarako Kudeaketa-orria)';
$string['uninstallplugin'] = 'Desinstalatu';
+$string['unsettheme'] = 'Kendu itxura';
$string['unsupported'] = 'Onartu gabea';
$string['unsupportedphpversion7'] = 'Ez da PHP 7 bertsioa onartzen.';
$string['unsupportedphpversion71'] = 'Ez da PHP 7 bertsioa onartzen.';
diff --git a/html/moodle2/langpacks/eu/atto_charmap.php b/html/moodle2/langpacks/eu/atto_charmap.php
index 157d015f32..51a7d3d42d 100644
--- a/html/moodle2/langpacks/eu/atto_charmap.php
+++ b/html/moodle2/langpacks/eu/atto_charmap.php
@@ -43,11 +43,18 @@
$string['ampersand'] = '& et ikurra';
$string['angle'] = 'angelua';
$string['approximatelyequalto'] = 'gutxi gora behera honen berdina';
+$string['aringabove'] = 'a - goi uztaia';
+$string['aringabove_caps'] = 'A - goi uztaia';
$string['asteriskoperator'] = 'asteriskoa eragiketarako';
$string['atilde'] = 'a - tildeduna';
$string['atilde_caps'] = 'A - tildeduna';
+$string['backwarddifference'] = 'atzekoz aurrerako ezberdintasuna';
$string['beta'] = 'beta';
$string['beta_caps'] = 'Beta';
+$string['blackclubsuit'] = 'hirusta beltza';
+$string['blackdiamondsuit'] = 'diamante beltza';
+$string['blackheartsuit'] = 'bihotz beltza';
+$string['blackspadesuit'] = 'pika beltza';
$string['brokenbar'] = 'barra bertikala';
$string['bullet'] = 'Buleta';
$string['carriagereturn'] = 'orga-itzulera';
@@ -72,6 +79,7 @@
$string['divisionsign'] = 'zatiketa ikurra';
$string['dotoperator'] = 'puntu operatzailea';
$string['doubledagger'] = 'ezpata bikoitza';
+$string['doublelow9quotationmark'] = 'behe-kakotx bikoitzak';
$string['downwardsarrow'] = 'beherako gezia';
$string['downwardsdoublearrow'] = 'beherako gezi bikoitza';
$string['eacute'] = 'e - agudoa';
@@ -123,6 +131,7 @@
$string['infinity'] = 'infinitoa';
$string['insertcharacter'] = 'Txertatu karakterea';
$string['integral'] = 'integrala';
+$string['interrobang'] = 'galde-harridura';
$string['intersection'] = 'intersekzioa';
$string['invertedexclamationmark'] = 'goitik beherako harridura marka';
$string['iota'] = 'iota';
@@ -132,9 +141,10 @@
$string['lambda'] = 'lambda';
$string['lambda_caps'] = 'Lambda';
$string['leftceiling'] = 'Ezkerreko sabaia';
+$string['leftdoublequotationmark'] = 'ezker-kakotx bikoitza';
$string['leftfloor'] = 'Ezkerreko zorua';
-$string['leftpointinganglebracket'] = 'punta ezkerretarako parentesia';
-$string['leftpointingguillemet'] = 'punta ezkerretarako parentesi bikoitza';
+$string['leftpointinganglebracket'] = 'puntadun ezkerretarako parentesia';
+$string['leftpointingguillemet'] = 'ezkerretarako puntadun parentesi bikoitza';
$string['leftrightarrow'] = 'ezker-eskuin gezia';
$string['leftrightdoublearrow'] = 'ezker- eskuin gezi bikoitza';
$string['leftsinglequotationmark'] = 'ezkerreko kakotxa arrunta';
@@ -210,7 +220,11 @@
$string['rho'] = 'rho';
$string['rho_caps'] = 'Rho';
$string['rightceiling'] = 'Eskuineko sabaia';
+$string['rightdoublequotationmark'] = 'eskuin-kakotx bikoitza';
$string['rightfloor'] = 'Eskuineko zorua';
+$string['rightpointinganglebracket'] = 'puntadun eskuinetarako parentesia';
+$string['rightpointingguillemet'] = 'ezkerretarako puntadun parentesi bikoitza';
+$string['rightsinglequotationmark'] = 'ezker kakotxa';
$string['righttoleftmark'] = 'eskuinetik ezkerretara marka';
$string['rightwardsarrow'] = 'eskuinerako gezia';
$string['rightwardsdoublearrow'] = 'eskuinerako gezi bikoitza';
@@ -222,6 +236,9 @@
$string['sigma'] = 'sigma';
$string['sigma_caps'] = 'Sigma';
$string['similarto'] = 'honen antzekoa';
+$string['singleleftpointinganglequotationmark'] = 'ezker puntadun-kakotxa';
+$string['singlelow9quotationmark'] = 'behe-kakotxa';
+$string['singlerightpointinganglequotationmark'] = 'eskuin puntadun-kakotxa';
$string['smalltilde'] = 'tilde txikia';
$string['softhyphen'] = 'silabak banatzeko gidoia';
$string['squareroot'] = 'erro karratua';
diff --git a/html/moodle2/langpacks/eu/atto_table.php b/html/moodle2/langpacks/eu/atto_table.php
index 0242a7f311..d1795472f2 100644
--- a/html/moodle2/langpacks/eu/atto_table.php
+++ b/html/moodle2/langpacks/eu/atto_table.php
@@ -27,7 +27,10 @@
$string['addcolumnafter'] = 'Txertatu zutabea ondoren';
$string['addrowafter'] = 'Txertatu errenkada ondoren';
+$string['all'] = 'Gelaxka bakoitzaren inguruan';
$string['allowbackgroundcolour'] = 'Baimendu atzeko planoaren kolorea';
+$string['allowborder'] = 'Baimendu ertzen estiloak';
+$string['allowborder_desc'] = 'Gaituz gero, taulen eta gelaxken ertzen estiloa pertsonalizatu daiteke.';
$string['allowwidth'] = 'Baimendu zabalera';
$string['appearance'] = 'Itxura';
$string['backgroundcolour'] = 'Atzeko planoaren kolorea';
@@ -37,10 +40,13 @@
$string['borderstyles'] = 'Ertzen estiloa';
$string['both'] = 'Biak';
$string['caption'] = 'Epigrafea';
+$string['captionposition'] = 'Epigrafeen kokapena';
$string['columns'] = 'Zutabeak';
$string['createtable'] = 'Sortu taula';
+$string['dashed'] = 'Marratxoekin';
$string['deletecolumn'] = 'Ezabatu zutabea';
$string['deleterow'] = 'Ezabatu errenkada';
+$string['dotted'] = 'Puntutxoekin';
$string['edittable'] = 'Editatu taula';
$string['headers'] = 'Gaitu izenburuak zehaztea';
$string['movecolumnleft'] = 'Mugitu zutabea ezkerrera';
@@ -51,8 +57,12 @@
$string['none'] = 'Bat ere ez';
$string['numberofcolumns'] = 'Zutabe-kopurua';
$string['numberofrows'] = 'Errenkada-kopurua';
+$string['outer'] = 'Taularen inguruan';
$string['pluginname'] = 'Taula';
$string['rows'] = 'Errenkadak';
$string['settings'] = 'Taularen ezarpenak';
+$string['solid'] = 'Solidoa';
+$string['themedefault'] = 'Berezko itxura';
$string['transparent'] = 'Gardena';
$string['updatetable'] = 'Eguneratu taula';
+$string['width'] = 'Taularen zabalera (ehunekoetan)';
diff --git a/html/moodle2/langpacks/eu/auth.php b/html/moodle2/langpacks/eu/auth.php
index 3414b88e53..d090f97f8d 100644
--- a/html/moodle2/langpacks/eu/auth.php
+++ b/html/moodle2/langpacks/eu/auth.php
@@ -35,7 +35,7 @@
$string['auth_changepasswordurl_expl'] = 'Beren {$a} pasahitza galdu duten erabiltzaileak zein URL helbidera bidaliko dituzun zehaztu. Pasahitz aldaketa orri estandar erabili orrian Ez aukeratu.';
$string['auth_changingemailaddress'] = 'E-posta helbidea {$a->oldemail}-tik {$a->newemail}-ra aldatzeko eskaera egin duzu. Segurtasunagatik, e-posta mezua ari gara bidaltzen helbide berrira benetan zurea dela ziurtatzeko. Mezu honetan bidali dizugun URL-a ireki bezain pronto eguneratuko da e-posta helbidea.';
$string['auth_common_settings'] = 'Ezarpen komunak';
-$string['auth_data_mapping'] = 'Datuen mapa';
+$string['auth_data_mapping'] = 'Datuen lotura';
$string['authenticationoptions'] = 'Autentifikazio-aukerak';
$string['auth_fieldlock'] = 'Balorea bloketau';
$string['auth_fieldlock_expl'] = '
Balorea blokeatu: Ezarriz gero, Moodle-ko erabiltzaile eta kudeatzaileek ezingo dute eremua zuzenean editatu. Aukeratu hau hautatu datu horiek kanpoko autentifikazio-sisteman badituzu.
'; diff --git a/html/moodle2/langpacks/eu/auth_cas.php b/html/moodle2/langpacks/eu/auth_cas.php index c3c83b7864..dfdedf1d62 100644 --- a/html/moodle2/langpacks/eu/auth_cas.php +++ b/html/moodle2/langpacks/eu/auth_cas.php @@ -41,6 +41,7 @@ $string['auth_cas_changepasswordurl'] = 'Pasahitza aldatzeko URLa'; $string['auth_cas_create_user'] = 'Aktibatu hau Moodle-ren datu-basean CASen bidez onartutako erabiltzaileak erantsi nahi badituzu. Bestela, Moodle-ren datu-basean honez gero dauden erabiltzaileek soilik izango dute sarbidea.'; $string['auth_cas_create_user_key'] = 'Sortu erabiltzailea'; +$string['auth_cas_curl_ssl_version'] = 'Erabil beharreko SSL bertsioa (2 edo 3). Berez PHP bera saiatuko da hautematen, batzuetan eskuz zehaztu behar den arren.'; $string['auth_cas_curl_ssl_version_default'] = 'Berezkoa'; $string['auth_cas_curl_ssl_version_key'] = 'cURL SSL bertsioa'; $string['auth_cas_curl_ssl_version_SSLv2'] = 'SSLv2'; @@ -59,6 +60,8 @@ $string['auth_cas_logincas'] = 'Konexio seguruaren sarbidea'; $string['auth_cas_logoutcas'] = 'Aukeratu \'bai\' CASetik irten nahi baduzu Moodle-n saioa amaitutakoan'; $string['auth_cas_logoutcas_key'] = 'CASen saioa amaitzeko aukera'; +$string['auth_cas_logout_return_url'] = 'Eman CAS erabiltzaileak saioa amaitzean bideratzeko erabiliko den URLa.Eremu hauek aukerazkoak dira. Moodle erabiltzaile eremu batzuk hemen zehaztutako LDAP eremuetako informazioz betetzea aukeratu dezakezu.
Zurian uzten badituzu, ez da ezer transferituko LDAP-tik eta Moodlek lehenetsitako balioak erabiliko dira ordez.
Edozein kasutan, erabiltzaileak eremu guzti hauek editatzeko gaitasuna izango du behin saioa hasita.
'; -$string['auth_ldap_graceattr_desc'] = 'Aukerazkoa: Sarrera librearen atributua indargabetzen du'; -$string['auth_ldap_gracelogin_key'] = 'Sarrera librearen atributua'; -$string['auth_ldap_gracelogins_desc'] = 'LDAP sarrera askeko euskarria indartu. Pasahitza iraungitakoan, erabiltzailea sarbide askeko kontua zerora iritsi arte sar daiteke. Aukera hau aktibatuz gero sarbide askeko mezua erakutsiko da, pasahitza kadukatu bada.'; -$string['auth_ldap_gracelogins_key'] = 'Sarrera libreak'; +$string['auth_ldap_graceattr_desc'] = 'Aukerazkoa: Graziazko sarreren atributua indargabetzen du'; +$string['auth_ldap_gracelogin_key'] = 'Graziazko sarreren atributua'; +$string['auth_ldap_gracelogins_desc'] = 'Gaitu LDAP graziazko sarreren euskarria. Pasahitza iraungitakoan, erabiltzailea graziazko sarreren kontua zerora iritsi arte sar daiteke. Aukera hau aktibatuz gero graziazko sarreren mezua erakutsiko da, pasahitza iraungitu bada.'; +$string['auth_ldap_gracelogins_key'] = 'Graziazko sarrerak'; $string['auth_ldap_groupecreators'] = 'Taldeak sortzeko baimena duten kideak dauden talde edo testuinguru-zerrenda. Taldeak \',\'-z banatu. Adibidez, honelako zerbait: \'cn=irakasleak,ou=administrazioa,o=nireerakundea\''; $string['auth_ldap_groupecreators_key'] = 'Talde sortzaileak'; $string['auth_ldap_host_url'] = 'LDAP ostatua URL bidez zehaztu, adibidez \'ldap://ldap.zerbitzaria.com/\' edo \'ldaps://ldap.zerbitzaria.com/\'. Banatu zerbitzariak \';\' erabiliz hutsegiteen aurkako babesa gehitzeko.'; @@ -82,13 +82,15 @@ $string['auth_ldap_search_sub'] = 'Bilatu erabiltzaileak azpitestuinguruetan.'; $string['auth_ldap_search_sub_key'] = 'Bilatu azpitestuinguruetan'; $string['auth_ldap_server_settings'] = 'LDAP zerbitzariaren ezarpenak'; +$string['auth_ldap_suspended_attribute'] = 'Aukerakoa: Atributu hau zehazten bada lokalki sortutako erabiltzaile-kontuak gaitzeko edo eteteko erabiliko da.'; +$string['auth_ldap_suspended_attribute_key'] = 'Etenda atributua'; $string['auth_ldap_unsupportedusertype'] = 'auth: ldap user_create()-k ez du onartzen aukeratutako erabiltzaile-mota: {$a}'; -$string['auth_ldap_update_userinfo'] = 'Erabiltzaile informazioa (izena, abizena, helbidea..) LDAP-tik Moodle-ra eguneratu. /auth/ldap/attr_mappings.php fitxategian begira ezazu mapa informazioa'; +$string['auth_ldap_update_userinfo'] = 'Eguneratu erabiltzaile informazioa (izena, abizena, helbidea..) LDAP-tik Moodle-ra. Zehaztu "Datuen lotura" ezarpenak behar duzun moduan.'; $string['auth_ldap_user_attribute'] = 'Erbiltzaileak izendatzeko edo bilatzeko atributua. \'cn\' izan ohi da.'; $string['auth_ldap_user_attribute_key'] = 'Erabiltzailearen atributuak'; $string['auth_ldap_user_exists'] = 'LDAP erabiltze-izen hau lehendik ere badago'; -$string['auth_ldap_user_settings'] = 'Erabiltzailearen bilaketaren ezarpenak'; -$string['auth_ldap_user_type'] = 'Erabiltzaileak LDAPen nola gordeko diren aukeratu. Ezarpen honek sarbidearen kaduzitateak, sarbide askeek eta erabiltzaileen sorrerak nola funtzionatuko duten zehazten du.'; +$string['auth_ldap_user_settings'] = 'Erabiltzaileen bilaketaren ezarpenak'; +$string['auth_ldap_user_type'] = 'Aukeratu erabiltzaileak LDAPen nola gordeko diren. Ezarpen honek sarbidearen iraungitzea, graziazko sarrerak eta erabiltzaileen sorrerak ere nola funtzionatuko duten zehazten du.'; $string['auth_ldap_user_type_key'] = 'Erabiltzaile-mota'; $string['auth_ldap_usertypeundefined'] = 'config.user_type ez dago definituta edo ldap_expirationtime2unix funtzioak ez du onartzen aukeratutako mota!'; $string['auth_ldap_usertypeundefined2'] = 'config.user_type ez dago definituta edo ldap_unixi2expirationtime funtzioak ez du onartzen aukeratutako mota!'; @@ -98,7 +100,13 @@ $string['auth_ntlmsso_enabled'] = 'Bai ezarri Single Sign On NTLM domeinuan saiatzeko. Oharra: bestelako ezarpen behar du web zerbitzarian funtzionatzeko, begiratu http://docs.moodle.org/en/NTLM_authentication'; $string['auth_ntlmsso_enabled_key'] = 'Gaitu'; $string['auth_ntlmsso_ie_fastpath'] = 'Ezarri NTLM SSO sarbide azkarra gaitzeko (hainbat pausu aurreratzen ditu erabiltzailearen nabigatzailea MS Internet Explorer bada).'; +$string['auth_ntlmsso_ie_fastpath_attempt'] = 'Saiatu NTLM nabigatzaile guztiekin'; $string['auth_ntlmsso_ie_fastpath_key'] = 'MS IE bide azkarra?'; +$string['auth_ntlmsso_ie_fastpath_yesattempt'] = 'Bai, saiatu NTLM nabigatzaile guztiekin'; +$string['auth_ntlmsso_ie_fastpath_yesform'] = 'Bai, beste nabigatzile guztiek saioa hasteko formulario estandarra erabiltzen dute.'; +$string['auth_ntlmsso_maybeinvalidformat'] = 'Ezin izan da erabiltzailea atera REMOTE_USER goiburutik. Konfiguratutako formatua egokia da?'; +$string['auth_ntlmsso_missing_username'] = 'Gutxienez %username% eremua zehaztu behar duzu urruneko erabiltzaile formatuan.'; +$string['auth_ntlmsso_remoteuserformat'] = '\'Autentifikazio-mota\' eremuan \'NTLM\' aukera baduzu, urruneko erabiltzaile-formatua zehaztu dezakezu hemen. Hutsik utziz gero, berezko DOMEINUA\\erabiltzailea formatua erabiliko da. Aukerazko %domain% hitz-gakoa erabili dezakezu domeinua no agertzen den zehazteko, eta derrigorrezko %username% hitz-gakoa erabiltzaiea non agertzen den zehazteko.Menu honek datuak aldez aurretik dagoen datu-base batetik hartzeko aukera ematen dizu. Datua eremu batean mantentzeko, eremu berriarekin lotu behar duzu, eta bertan agertuko da datua. Zuri ere utzi ahal da eremu bat, diff --git a/html/moodle2/langpacks/eu/enrol_category.php b/html/moodle2/langpacks/eu/enrol_category.php index aaa05001ab..b5cd216b3e 100644 --- a/html/moodle2/langpacks/eu/enrol_category.php +++ b/html/moodle2/langpacks/eu/enrol_category.php @@ -25,5 +25,7 @@ defined('MOODLE_INTERNAL') || die(); +$string['category:config'] = 'Konfiguratu kategoria-matrikulazio instantziak'; $string['category:synchronised'] = 'Rol-esleipen sinkronizatuak ikastaro-matrikulaziorako'; $string['pluginname'] = 'Kategoria-matrikulazioak'; +$string['pluginname_desc'] = 'Kategoria-matrikulazioko gehigarria ikastaro-kategorietan rol esleipenak egitea ahalbidetzen duen konponbidea zaharkitua da. Honen ordez kohorte bidezko sinkronizazioa erabiltzea gomendatzen da.'; diff --git a/html/moodle2/langpacks/eu/enrol_cohort.php b/html/moodle2/langpacks/eu/enrol_cohort.php index a34a9e7e77..cf8a071a3e 100644 --- a/html/moodle2/langpacks/eu/enrol_cohort.php +++ b/html/moodle2/langpacks/eu/enrol_cohort.php @@ -30,6 +30,7 @@ $string['cohort:config'] = 'Kohorteen instantziak konfiguratu'; $string['cohort:unenrol'] = 'Desmatrikulatu kontua etenda duten erabiltzaileak'; $string['creategroup'] = 'Sortu beste talde bat'; +$string['defaultgroupnametext'] = '{$a->name} kohortea {$a->increment}'; $string['instanceexists'] = 'Kohortea dagoeneko sinkronizatu da aukeratutako rolarekin'; $string['pluginname'] = 'Sinkronizatu kohortea'; $string['pluginname_desc'] = 'Kohorteak matrikulatzeko pluginak kohorte jakin bateko partaideak ikastaroko partaideekin sinkronizatzen ditu.'; diff --git a/html/moodle2/langpacks/eu/enrol_database.php b/html/moodle2/langpacks/eu/enrol_database.php index 79c0b0fd57..b7d21af9fc 100644 --- a/html/moodle2/langpacks/eu/enrol_database.php +++ b/html/moodle2/langpacks/eu/enrol_database.php @@ -25,36 +25,54 @@ defined('MOODLE_INTERNAL') || die(); +$string['database:config'] = 'Konfiguratu datu-base bidezko matrikulazio instantziak'; $string['database:unenrol'] = 'Desmatrikulatu kontua etenda duten erabiltzaileak'; $string['dbencoding'] = 'Datu-basearen kodifikazioa'; $string['dbhost'] = 'Datu-basearen ostalaria'; $string['dbhost_desc'] = 'Idatzi datu-basearen zerbitzariaren IPa edo izena. Erabili sistemako DSN sarrera bat ODBC erabiliz gero.'; $string['dbname'] = 'Datu-basearen izena'; +$string['dbname_desc'] = 'Utzi hutsik datu-base ostalarian DSN izena erabiliz gero.'; $string['dbpass'] = 'Datu-basearen pasahitza'; $string['dbsetupsql'] = 'Datu-basea konfiguratzeko komandoa'; +$string['dbsetupsql_desc'] = 'Datu-basearen konfigurazio berezirako SQL komandoa, maiz komunikazio kodifikazioa konfiguratzeko erabilia - MySQL eta PostgreSQLrako adibidea: SET NAMES \'utf8\''; +$string['dbsybasequoting'] = 'Erabili sybase kakotxak (quotes)'; +$string['dbsybasequoting_desc'] = 'Sybase motako kakotx sinpleen ihesbdea - beharezkoa Oracle, MS SQL eta beste datu-base batzuetan. Ez erabil MySQL-rentzat!'; $string['dbtype'] = 'Datu-basearen kontrolatzailea'; +$string['dbtype_desc'] = 'ADOdb datu-basearen kontrolatzailearen izena, kanpoko datu-baseko motore-mota.'; $string['dbuser'] = 'Datu-basearen erabiltzailea'; $string['debugdb'] = 'Araztu ADOdb'; +$string['debugdb_desc'] = 'Araztu ADOdb konexioa kanpoko datu-basera - erabili orri hutsa jasotzen baduzu saioa hastean. Ez erabili lanean ari diren guneetan!'; $string['defaultcategory'] = 'Ikastaro berrien berezko kategoria'; +$string['defaultcategory_desc'] = 'Berezko kategoria automatikoi sortutako ikastaroentzako. Kategoria IDa zehazten edo aurkitzen ez denean erabiliko da.'; $string['defaultrole'] = 'Berezko rola'; +$string['defaultrole_desc'] = 'Berez esleituko den rola, kanpoko datu-basean rolik zehazten ez denean.'; $string['ignorehiddencourses'] = 'Baztertu ezkutuko ikastaroak'; +$string['ignorehiddencourses_desc'] = 'Gaituz gero erabiltzaileak ez dira ikastaroetan matrikulatuko ikastaroak ikasleentzako ezkutuan badaude.'; $string['localcategoryfield'] = 'Lokaleko kategoriaren eremua'; $string['localcoursefield'] = 'Lokaleko ikastaroaren eremua'; $string['localrolefield'] = 'Lokaleko rolaren eremua'; $string['localuserfield'] = 'Lokaleko erabiltzailearen eremua'; $string['newcoursecategory'] = 'Ikastaro-kategoria berriaren eremua'; -$string['newcoursefullname'] = 'Ikastaro berriaren izen luzerako eremua'; -$string['newcourseidnumber'] = 'Ikastaro berriaren ID zenbakirako eremua'; -$string['newcourseshortname'] = 'Ikastaro berriaren izen laburrerako eremua'; +$string['newcoursefullname'] = 'Ikastaro berriaren izen luzeraren eremua'; +$string['newcourseidnumber'] = 'Ikastaro berriaren ID zenbakiaren eremua'; +$string['newcourseshortname'] = 'Ikastaro berriaren izen laburraren eremua'; $string['newcoursetable'] = 'Urrutiko ikastaro berrien taula'; +$string['newcoursetable_desc'] = 'Zehaztu automatikoki sortu beharreko ikastaroen zerrenda duen taularen izena. Hutsik utziz gero ez da ikastarorik sortuko.'; $string['pluginname'] = 'Kanpoko datu-basea'; +$string['pluginname_desc'] = 'Kanpoko datu-base bat erabili dezakezu (ia edozein motatakoa) zure matrikulazioak kudeatzeko. Suposatu egiten da zure kanpoko datu-baseak gutxienez ikastaroaren IDa duen eremua eta erabiltzailearen IDa duen eremua dituela. Eremu hauek datu-base lokaleko ikastaro eta erabiltzaileen tauletan zuk aukeratutako eremuekin konparatuko dira.'; $string['remotecoursefield'] = 'Urrutiko ikastaroen eremua'; $string['remotecoursefield_desc'] = 'Ikastaroen taulan sarrerak parekatzeko erabiltzen den eremuaren izena urrutiko taulan.'; $string['remoteenroltable'] = 'Urrutiko erabiltzaileen matrikulaziorako taula'; +$string['remoteenroltable_desc'] = 'Zehaztu erabiltzaileen matrikulazioen zerrenda duen taularen izena. Hutsik utziz gero ez da matrikulaziorik sinkronizatuko.'; +$string['remoteotheruserfield'] = 'Urrutiko Beste Erabiltzailea eremua'; +$string['remoteotheruserfield_desc'] = '"Beste Erabiltzaileak" rol esleipena markatzeko urruneko taulan erabiliko den eremuaren izena.'; $string['remoterolefield'] = 'Urrutiko rolaren eremua'; $string['remoterolefield_desc'] = 'Rolen taulan sarrerak parekatzeko erabiltzen den eremuaren izena urrutiko taulan.'; $string['remoteuserfield'] = 'Urrutiko erabiltzailearen eremua'; $string['remoteuserfield_desc'] = 'Erabiltzaileen taulan sarrerak parekatzeko erabiltzen den eremuaren izena urrutiko taulan.'; $string['settingsheaderdb'] = 'Kanpoko datu-basearen konexioa'; +$string['settingsheaderlocal'] = 'Eremu lokalen lotura'; $string['settingsheadernewcourses'] = 'Ikastaro berrien sorkuntza'; +$string['settingsheaderremote'] = 'Urruneko rolen sinkronizazioa'; $string['templatecourse'] = 'Ikastaro berrien txantiloia'; +$string['templatecourse_desc'] = 'Aukerakoa: automatikoki sortutako ikastaroek ezarpenak ikastaro-txantiloi batetik kopiatu ditzakete. Idatzi hemen ikastaro-txantiloiaren izen laburra.'; diff --git a/html/moodle2/langpacks/eu/enrol_flatfile.php b/html/moodle2/langpacks/eu/enrol_flatfile.php index 201e3fdb6c..697b6a9598 100644 --- a/html/moodle2/langpacks/eu/enrol_flatfile.php +++ b/html/moodle2/langpacks/eu/enrol_flatfile.php @@ -25,10 +25,41 @@ defined('MOODLE_INTERNAL') || die(); +$string['encoding'] = 'Fitxategien kodifikazioa'; $string['expiredaction_help'] = 'Aukeratu matrikulazioa iraungitzean exekutatuko den ekintza. Mesedez kontuan izan hainbat erabiltzaile-datu eta ezarpen ezabatuak izango direla ikastarotik desmatrikulatzean.'; $string['filelockedmail'] = 'Cron prozesuak ezin du ezabatu matrikulazioak egiteko ({$a}) fitxategian oinarriturik erabiltzen ari zaren testu-fitxategia. Normalean honen zergatia zure baimenak desegokiak izatean datza. Baimenak ezar itzazu Moodle-k fitxategia ezabatu ahal izateko, mesedez. Bestela, prozesua errepikatu egingo da.'; $string['filelockedmailsubject'] = 'Errore larria: Matrikulazio-fitxategia'; $string['flatfile:manage'] = 'Kudeatu erabiltzaileen matrikulazioak eskuz'; +$string['flatfilesync'] = 'Testu-soileko fitxategi bidezko sinkronizazioa'; $string['flatfile:unenrol'] = 'Desmatrikulatu erabiltzaileak ikastarotik eskuz'; $string['location'] = 'Fitxategiaren kokapena'; -$string['pluginname'] = 'Flat fitxategia (CSV)'; +$string['location_desc'] = 'Zehaztu matrikulazio-fitxategiaren helbide osoa. Fitxategi hau automatikoki ezabatzen da prozesatu ondoren.'; +$string['mapping'] = 'Testu-soileko fitxategiko rolen lotura'; +$string['messageprovider:flatfile_enrolment'] = 'Testu-soileko fitxategiko matrikulazio-meuzak.'; +$string['notifyadmin'] = 'Jakinarazi kudeatzaileari'; +$string['notifyenrolled'] = 'Jakinarazi matrikulatutako erabiltzaileei'; +$string['notifyenroller'] = 'Jakinarazi matrikulazioen arduradunari'; +$string['pluginname'] = 'Testu-soileko fitxategia (CSV)'; +$string['pluginname_desc'] = 'Metodo honek zehazten duzun helbideko formatu bereziko testu-fitxategiak modu errepikakorrean egiaztatu eta prozesatuko ditu. +Fitxategia errenkada bakoitzean komaz banatutako 4 edo 6 eremu dituela suposatuko da: + + operation, role, user idnumber, course idnumber [, starttime [, endtime]] + +eremuok balio hauek izan ditzakete: + +* operation - add | del +* role - student | teacher | teacheredit +* user idnumber - erabiltzaile taulako ID zenbakia +* course idnumber - ierabiltzaile taulako ID zenbakia +* starttime - hasiera data (Unix-eko epoch-etik igarotako segunduak) - aukeakoa +* endtime - bukaera data (Unix-eko epoch-etik igarotako segunduak) - aukeakoa + +Honen moduko zerbait izan daiteke: +
+add, student, 5, CF101 +add, teacher, 6, CF101 +add, teacheredit, 7, CF101 +del, student, 8, CF101 +del, student, 17, CF101 +add, student, 21, CF101, 1091115000, 1091215000 +'; diff --git a/html/moodle2/langpacks/eu/enrol_ldap.php b/html/moodle2/langpacks/eu/enrol_ldap.php index 8d409072ba..ba86676e1d 100644 --- a/html/moodle2/langpacks/eu/enrol_ldap.php +++ b/html/moodle2/langpacks/eu/enrol_ldap.php @@ -27,21 +27,29 @@ $string['assignrole'] = '\'{$a->role_shortname}\' rola esleitzen \'{$a->user_username}\' erabiltzaileari \'{$a->course_shortname}\' ikastaroan (id {$a->course_id})'; $string['assignrolefailed'] = 'Kale egin du \'{$a->role_shortname}\' rola esleitzean \'{$a->user_username}\' erabiltzaileari \'{$a->course_shortname}\' ikastaroan (id {$a->course_id})'; -$string['autocreate'] = '
Era automatikoan sor daitezke ikastaroak oraindik ere Moodlen existitzen ez den ikastaro batean matrikulazioak badaude.
Ikastaro sorrera automatikoa erabiltzen baduzu, gomendagarria da baimen hauek rol garrantzitsuenei ezgaitzea: moodle/course:changeidnumber, moodle/course:changeshortname, moodle/course:changefullname eta moodle/course:changesummary. Horrela, goian aipatutako lau ikastaro eremuak aldatzea debekatuko da (ID number, shortname, fullname eta summary).
'; +$string['autocreate'] = 'Ikastaroak era automatikoan sor daitezke oraindik ere Moodle-n existitzen ez den ikastaro batean matrikulazioak badaude.
Ikastaro sorrera automatikoa erabiltzen baduzu, gomendagarria da baimen hauek rol garrantzitsuenei ezgaitzea: moodle/course:changeidnumber, moodle/course:changeshortname, moodle/course:changefullname eta moodle/course:changesummary. Horrela, goian aipatutako lau ikastaro eremuak aldatzea debekatuko da (ID zenbakia, izen laburra, izen osoa eta laburpena).
'; $string['autocreate_key'] = 'Sortu automatikoki'; -$string['autocreation_settings'] = 'Ikastaroak era automatikoak sortzeko zehaztasunak'; -$string['bind_dn'] = 'Erabiltzaileak bilatzeko \'bin-user\' erabili nahi baduzu, zehaztu hemen. Horrelako zerbait \'cn=ldapuser,ou=public,o=org\''; -$string['bind_pw'] = '\'Bind-user\'rentzako pasahitza'; +$string['autocreation_settings'] = 'Ikastaroak era automatikoan sortzeko zehaztasunak'; +$string['autoupdate_settings'] = 'Ikastaroak era automatikoan eguneratzeko zehaztasunak'; +$string['bind_dn'] = 'Erabiltzaileak bilatzeko \'bind-user\' bat erabili nahi baduzu, zehaztu hemen. Horrelako zerbait \'cn=ldapuser,ou=public,o=org\''; +$string['bind_dn_key'] = '\'Bind-user\'aren izen gorena (distinguished name)'; +$string['bind_pw'] = '\'Bind-user\'aren pasahitza'; $string['bind_pw_key'] = 'Pasahitza'; $string['bind_settings'] = 'Bind ezarpenak'; +$string['cannotcreatecourse'] = 'Ezin izan da ikastaroa sortu: LDAP erregistroan beharrezko datuak falta dira!'; +$string['cannotupdatecourse'] = 'Ezin izan da ikastaroa eguneratu: LDAP erregistroan beharrezko datuak falta dira! Ikastaroaren ID zenbakia: \'{$a->idnumber}\''; +$string['cannotupdatecourse_duplicateshortname'] = 'Ezin izan da ikastaroa eguneratu: Bikoiztutako izen laburra. Albo batera utzi da \'{$a->idnumber}\' ID zenbakia duen ikastaroa...'; $string['category'] = 'Era automatikoan sortutako ikastaroetarako kategoria'; $string['category_key'] = 'Kategoria'; $string['contexts'] = 'LDAP kontestuak'; +$string['couldnotfinduser'] = 'Ezin izan da \'{$a}\' erabiltzailea aurkitu, alde batera utzi da'; $string['course_fullname'] = 'Aukerakoa: LDAP eremua zeinetatik lortuko den izen osoa.'; $string['course_fullname_key'] = 'Izen osoa'; $string['course_fullname_updateonsync_key'] = 'Egunearatu izen osoa'; $string['course_idnumber'] = 'Identikatzaile bakarraren mapa LADPn, ohikoena cn edo uid. Balorea blokeatzea gomendatzen da ikastaroa sortzeko era automatikoa erabiltzen ari bada.'; $string['course_idnumber_key'] = 'ID zenbakia'; +$string['coursenotexistskip'] = '\'{$a}\' ikastaroa ez da existitzen eta sorrera automatikoa desgaituta dago, alde batera utzi da'; +$string['course_search_sub'] = 'Bilatu taldetako partaidetza azpitestuinguruetan'; $string['course_search_sub_key'] = 'Bilatu azpitestuinguruak'; $string['course_settings'] = 'Ikastaroan matrikulatzeko ezarpenak'; $string['course_shortname'] = 'Aukerakoa: LDAP eremua zeinetatik lortuko den izen laburra.'; @@ -50,39 +58,72 @@ $string['course_summary'] = 'Aukerakoa: LDAP eremua zeinetatik lortuko den laburpena.'; $string['course_summary_key'] = 'Laburpena'; $string['course_summary_updateonsync_key'] = 'Eguneratu laburpena'; +$string['courseupdated'] = '\'{$a->idnumber}\' ID zenbakia duen ikastaroa ondo eguneratu da.'; +$string['courseupdateskipped'] = '\'{$a->idnumber}\' ID zenbakia duen ikastaroak ez du eguneratzerik behar. Alde batera utzi da...'; +$string['createcourseextid'] = 'SORTU existitzen ez den \'{$a->courseextid}\' ikastaroan matrikulatutako erabiltzailea'; +$string['createnotcourseextid'] = 'Erabiltzailea existitzen ez den \'{$a->courseextid}\' ikastaroan matrikulatuta dago'; $string['creatingcourse'] = '\'{$a}\' ikastaroa sortzen...'; +$string['duplicateshortname'] = 'Errorea ikastaroa sortzean. Bikoiztutako izen laburra. Alde batera utzi da \'{$a->idnumber}\' ID zenbakia duen iakstaroa...'; $string['editlock'] = 'Balorea blokeatu'; +$string['emptyenrolment'] = 'Hutsik \'{$a->course_shortname}\' ikastaroaren \'{$a->role_shortname}\' rolaren matrikulazioa'; $string['enrolname'] = 'LDAP'; $string['enroluser'] = 'Matrikulatu \'{$a->user_username}\' erabiltzailea \'{$a->course_shortname}\' ikastaroan (id {$a->course_id})'; -$string['extremovedsuspend'] = 'Desgaitutako matrikulazioa \'{$a->user_username}\' erabiltzailearentzat \'{$a->course_shortname}\' ikastaroan (id {$a->course_id})'; +$string['enroluserenable'] = '\'{$a->user_username}\' erabiltzailea \'{$a->course_shortname}\' (id {$a->course_id}) ikastaroan matrikulatu da.'; +$string['explodegroupusertypenotsupported'] = 'ldap_explode_group()-ek ez du erabiltzaile-mota hau onartzen: {$a}'; +$string['extcourseidinvalid'] = 'Ikastaroaren kanpoko IDa ez da baliozkoa!'; +$string['extremovedsuspend'] = 'Matrikulazioa desgaitu da \'{$a->user_username}\' erabiltzailearentzat \'{$a->course_shortname}\' ikastaroan (id {$a->course_id})'; +$string['extremovedsuspendnoroles'] = 'Matrikulazioa desgaitu da eta rolak ezabatu zaizkio \'{$a->user_username}\' erabiltzailearentzat \'{$a->course_shortname}\' ikastaroan (id {$a->course_id})'; $string['extremovedunenrol'] = 'Desmatrikulatu \'{$a->user_username}\' erabiltzailea \'{$a->course_shortname}\' ikastarotik (id {$a->course_id})'; $string['failed'] = 'Kale egin du!'; $string['general_options'] = 'Aukera orokorrak'; +$string['group_memberofattribute'] = 'Erabiltzailea zein taldeko kide den zehazten duen atributuaren izena (ad. memberOf, groupMembership, etab.)'; +$string['group_memberofattribute_key'] = '\'Member of\' atributua'; $string['host_url'] = 'Zehaztu LDAP hosta URL formatuan, adib. \'ldap://ldap.myorg.com/\' edo \'ldaps://ldap.myorg.com/\''; $string['host_url_key'] = 'Ostalariaren URLa'; +$string['idnumber_attribute'] = 'Taldetako partaidetzak izen gorenak baditu (distinguished names), zehaztu LDAP autentifikazio ezarpenetako erabiltzailearen \'ID zenbakia\' eremuarekin lotutako atributu berdina.'; $string['idnumber_attribute_key'] = 'Atributuaren ID zenbakia'; +$string['ldap_encoding'] = 'Zehaztu LDAP zerbitzariak erabiltzen duen kodifikazioa. Ziuraski utf-8, MS AD v2-k berez cp1252, cp1250 eta antzeko kodifikazioak erabiltzen ditu.'; $string['ldap_encoding_key'] = 'LDAP kodifikazioa'; $string['ldap:manage'] = 'Kudeatu LDAP matrikulaziorako instantziak'; $string['memberattribute'] = 'LDAP kide-ezaugarria'; +$string['memberattribute_isdn'] = 'Taldetako partaidetzak izen gorenak baditu (distinguished names), hemen zehaztu beharko duzu. Hala izanez gero, atal honetako beste ezarpenak ere konfiguratu beharko dituzu.'; +$string['memberattribute_isdn_key'] = '\'Member\' atributuak \'dn\' erabiltzen du'; $string['nested_groups'] = 'Habiaratutako taldeak (adib. taldeen taldeak) matrikulaziorako?'; $string['nested_groups_key'] = 'Habiaratutako taldeak'; $string['nested_groups_settings'] = 'Habiaratutako taldeen ezarpenak'; +$string['nosuchrole'] = 'Hurrengo rola ez da existitzen: \'{$a}\''; $string['objectclass'] = 'Ikastaroak bilatzeko erabilitako objectClass. Ohikoena \'posixGroup\'.'; $string['objectclass_key'] = 'Objektu-mota'; $string['ok'] = 'ONDO!'; +$string['opt_deref'] = 'Taldetako partaidetzak izen gorenak baditu (distinguished names), zehaztu bilaketetan alias-ak nola kudeatuko diren. Aukeratu hurengo balioetako bat: \'Ez\' (LDAP_DEREF_NEVER) edo \'Bai\' (LDAP_DEREF_ALWAYS)'; +$string['opt_deref_key'] = 'Erreferentziazko ezizenak'; +$string['phpldap_noextension'] = 'Dirudienez PHPko LDAP modulua ez dago instalatuta. Mesedez ziurtatu instalatuta eta gaituta dagoela matrikulazio gehigarri hau erabili nahi baduzu'; $string['pluginname'] = 'LDAP matrikulak'; -$string['pluginname_desc'] = 'LDAP zerbitzaria erabil dezakezu matrikulazioak kontrolatzeko. Suposatu egiten da zure LDAP arbolak ikastaroetarako taldeak dituztela eta hauetako talde edo ikastaro bakoitzak ikasleei erreferentzia egiten dieten matrikulazio-sarrerak dituztela.
Suposatu egiten da ikastaroak talde bezala daudela definituta LDAPn, talde bakoitzak erabiltzailearen identifikazio bakarra duten hainbat matrikulazio-eremu dituelarik (member edo memberUid).
LDAP matrikulazioa erabiltzeko, erabiltzaileek balio duen \'idnumber\'eremua izan behardute. LDAP taldeek \'idnumber\' hori izan behar dute erabiltzaile-eremuetan erabiltzailea ikastaro batean matrikulatu ahal izateko. Ondo funtzionatuko du dagoeneko LDAP Autentifikazioa erabiltzen baduzu.
Matrikulazioak eguneratu egingo dira erabiltzailea idenfikatzen denean. Kontsulta ezazu enrol/ldap/enrol_ldap_sync.php.
+$string['pluginname_desc'] = 'LDAP zerbitzaria erabil dezakezu matrikulazioak kontrolatzeko. Suposatu egiten da zure LDAP arbolak ikastaroetarako taldeak dituela eta hauetako talde edo ikastaro bakoitzak ikasleei erreferentzia egiten dieten matrikulazio-sarrerak dituztela.
Suposatu egiten da ikastaroak talde bezala daudela definituta LDAPen, talde bakoitzak erabiltzailea identifikazio bakarra duten hainbat matrikulazio-eremu dituelarik (member edo memberUid).
LDAP matrikulazioa erabiltzeko, erabiltzaileek balio duen ID zenbakia eremua izan behardute. LDAP taldeek \'idnumber\' hori izan behar dute erabiltzaile-eremuetan erabiltzailea ikastaro batean matrikulatu ahal izateko. Ondo funtzionatuko du dagoeneko LDAP Autentifikazioa erabiltzen baduzu.
Matrikulazioak eguneratu egingo dira erabiltzailea idenfikatzen denean. Kontsulta ezazu enrol/ldap/enrol_ldap_sync.php.
Plugin hau LDAPn talde berriak agertzen direnean ikastaro berriak era automatikoan sortzeko ere zehaztu ahal da.
'; $string['pluginnotenabled'] = 'Plugina ez dago gaituta!'; -$string['roles'] = 'Rolen mapa'; +$string['role_mapping'] = 'LDAP bidez esleitu nahi duzun rol bakoitzeko, zehaztu beharko duzu non dagoen kokatuta rol horren ikastaroetako taldeetako testuinguruen zerrenda. Banadu testuinguruak \';\' karakterea erabilz.
Zure LDAP zerbitzariak taldeetako kideak gordetzeko erabiltzen duen atributua ere zehaztu beharko duzu. Normalean \'member\' edo \'memberUid\'
'; +$string['role_mapping_attribute'] = 'LDAP \'member\' atributua {$a}-(r)entzat'; +$string['role_mapping_context'] = 'LDAP testuinguruak {$a}-(r)entzat'; +$string['role_mapping_key'] = 'Lotu rolak LDAPetik'; +$string['roles'] = 'Rolen lotura'; $string['server_settings'] = 'LDAP zerbitzariaren ezarpenak'; +$string['synccourserole'] = '== \'{$a->idnumber}\' ikastaroaren \'{$a->role_shortname}\' rola sinkronizatzen'; $string['template'] = 'Aukerakoa: era automatikoan sortutako ikastaroak ikastaro-txantiloi batetik kopia ditzakete beren zehaztasunak.'; $string['template_key'] = 'Itxura'; +$string['unassignrole'] = '\'{$a->user_username}\' erabiltzaileari \'{$a->role_shortname}\' rola kentzen \'{$a->course_shortname}\' ikastarotik (id {$a->course_id})'; +$string['unassignrolefailed'] = 'Errorea \'{$a->user_username}\' erabiltzaileari \'{$a->role_shortname}\' rola kentzean \'{$a->course_shortname}\' ikastarotik (id {$a->course_id})'; +$string['unassignroleid'] = '\'{$a->user_id}\' erabiltzaileari \'{$a->role_id}\' IDko rola kentzen'; $string['updatelocal'] = 'Datu lokalak eguneratu'; +$string['user_attribute'] = 'Taldetako partaidetzak izen gorenak baditu (distinguished names), zehaztu erabiltzaileak izendatzeko/bilatzeko erabiliko den atributua. Autentifikaziorako LDAP erabiltzen baduzu, balio hau LDAPeko autentifikazio ezarpenetako \'ID zenbakia\' eremuan lotutakoaren berdina izan beharko luke.'; $string['user_attribute_key'] = 'Atributuaren ID zenbakia'; +$string['user_contexts'] = 'Taldetako partaidetzak izen gorenak baditu (distinguished names), zehaztu erabiltzaileak dauden testuinguruen zerrenda. Banandu testuinguru ezberdinak \';\' karakterea erabilita. Adibidez: \'ou=users,o=org; ou=others,o=org\''; $string['user_contexts_key'] = 'Testuinguruak'; +$string['user_search_sub'] = 'Taldetako partaidetzak izen gorenak baditu (distinguished names), zehaztu azpitestuinguruetan ere erabiltzaileak bilatuko ote diren.'; $string['user_search_sub_key'] = 'Bilatu azpitestuinguruak'; +$string['user_settings'] = 'Erabiltzaileen bilaketaren ezarpenak'; +$string['user_type'] = 'Taldeetako partaidetzak izen gorenak baditu (distinguished names), zehaztu LDAPean erabiltzaileak gordetzen diren modua'; $string['user_type_key'] = 'Erabiltzaile-mota'; $string['version'] = 'Zerbitzariak erabiltzen duen LDAP protokoloaren bertsioa'; $string['version_key'] = 'Bertsioa'; diff --git a/html/moodle2/langpacks/eu/enrol_mnet.php b/html/moodle2/langpacks/eu/enrol_mnet.php index c572c60130..6f71e415f8 100644 --- a/html/moodle2/langpacks/eu/enrol_mnet.php +++ b/html/moodle2/langpacks/eu/enrol_mnet.php @@ -29,6 +29,7 @@ $string['mnet_enrol_description'] = 'Publika ezazu zerbitzu hau {$a}-ko kudeatzaileei zuk zure zerbitzarian sortu dituzun ikastaroetan matrikulatzen uzteko.Ezin da datu-basea sortu.
+
Zehaztutako datu-basea ez da existitzen eta adierazitako erabiltzaileak ez du baimenik datu-basea sortzeko.
+
Guneko kudeatzaileak datu-basearen konfigurazioa egiaztatu behar du.
'; $string['cannotcreategroup'] = 'Errorea taldea sortzean'; $string['cannotcreatelangbase'] = 'Errorea: ezin izan da oinarrizko hizkuntza-direktorioa sortu'; $string['cannotcreatelangdir'] = 'Ezin da hizkuntza-direktorioa sortu'; @@ -71,7 +75,7 @@ $string['cannotdownloadcomponents'] = 'Ezin dira osagaiak jaitsi'; $string['cannotdownloadlanguageupdatelist'] = 'Ezin da download.moodle.org-tik eguneratzeko hizkuntza-zerrenda jaitsi'; $string['cannotdownloadzipfile'] = 'Ezin da ZIP fitxategia jaitsi'; -$string['cannoteditcomment'] = 'Iruzkin hau ez da zuk editatzekoa!'; +$string['cannoteditcomment'] = 'Iruzkin hau ez da zurea eta ezin duzu editatu!'; $string['cannoteditcommentexpired'] = 'Ezin duzu hau editatu. Denbora amaitu egin da!'; $string['cannoteditpostorblog'] = 'Ezin duzu mezurik bidali edo bloga editatu'; $string['cannoteditsiteform'] = 'Ezin duzu guneko ikastaroa editatu formulario hau erabilita'; @@ -90,6 +94,7 @@ $string['cannotfindlang'] = 'Ezin da "{$a}" hizkuntza-paketea aurkitu!'; $string['cannotfindteacher'] = 'Ezin da irakaslea aurkitu'; $string['cannotfinduser'] = 'Ezin da "{$a}" erabiltzaile-izena aurkitu'; +$string['cannotgeoplugin'] = 'Ezin da geoPlugin-en zerbitzarira konektatu (http://www.geoplugin.com). Mesedez, egiaztatu proxy-ren ezarpenak, edo hobeto, instala ezazu MaxMind GeoLite City-ren datu-fitxategia.'; $string['cannotgetblock'] = 'Ezin da blokerik berreskuratu datu-basetik'; $string['cannotgetcats'] = 'Ezin da lortu kategoria-erregistrorik'; $string['cannotgetdata'] = 'Ezin da daturik lortu'; @@ -107,6 +112,7 @@ $string['cannotmigratedatacomments'] = 'Ezin dira iruzkinak migratu datuen modulutik'; $string['cannotmodulename'] = 'Ezin dira datuen moduluaren iruzkunak migratu'; $string['cannotmovecategory'] = 'Ezin da kategoria mugitu'; +$string['cannotmovecourses'] = 'Ezin dira ikastaroak daudeneko kategoriatik beste batera mugitu.'; $string['cannotmoverolewithid'] = 'Ezin da {$a} ID-a duen rola mugitu'; $string['cannotopencsv'] = 'Ezin da CSV fitxategia zabaldu'; $string['cannotopenfile'] = 'Ezin da fitxategia zabaldu ({$a})'; diff --git a/html/moodle2/langpacks/eu/feedback.php b/html/moodle2/langpacks/eu/feedback.php index c59fe187b4..6feac0a597 100644 --- a/html/moodle2/langpacks/eu/feedback.php +++ b/html/moodle2/langpacks/eu/feedback.php @@ -59,6 +59,7 @@ $string['completed_feedbacks'] = 'Bidalitako erantzunak'; $string['complete_the_form'] = 'Erantzun galderei...'; $string['completionsubmit'] = 'Ikusi osatutzat feedbacka bidaltzen bada'; +$string['configallowfullanonymous'] = '\'Bai\' aukeratuz gero, erabiltzaileek inkesta osatu ahal izango dute hasiera-orrian, saioa hasi gabe ere.'; $string['confirmdeleteentry'] = 'Ziur al zaude sarrera hau ezabatu nahi duzula?'; $string['confirmdeleteitem'] = 'Ziur al zaude elementu hau ezabatu nahi duzula?'; $string['confirmdeletetemplate'] = 'Ziur al zaude txantiloi hau ezabatu nahi duzula?'; diff --git a/html/moodle2/langpacks/eu/filter_mathjaxloader.php b/html/moodle2/langpacks/eu/filter_mathjaxloader.php index 740690e7b4..20d100fdfe 100644 --- a/html/moodle2/langpacks/eu/filter_mathjaxloader.php +++ b/html/moodle2/langpacks/eu/filter_mathjaxloader.php @@ -25,8 +25,22 @@ defined('MOODLE_INTERNAL') || die(); +$string['additionaldelimiters'] = 'Ekuazioen bereizle gehigarriak'; +$string['additionaldelimiters_help'] = 'MathJax iragazkiak karaktere bereizleen arteko testua ekuazio gisa erakusten ditu. + +Onartutako karaktere bereizleak hemen gehi daitezke (AsciiMath-ek adibidez ` erabiltzen du). Bereizleak karaketere anitzekoak izan daitezke, eta bereizle anitzak koma bidez bana daitezke.'; $string['filtername'] = 'MathJax'; $string['httpsurl'] = 'HTTPS MathJax URL'; $string['httpurl'] = 'HTTPS MathJax URL'; $string['localinstall'] = 'MathJax-en instalazio lokala'; +$string['localinstall_help'] = 'MathJax-en berezko konfigurazioak MathJax-en CDN bertsioa erabiltzen du, baina MathJax lokalki instala daitezke behar izanez gero. + +Hau erabilgarria izan daiteke banda-zabalera aurrezteko edota proxy lokalen murrizketak saihesteko. + +MathJax-en instalazio lokala erabiltzeko, lehenik eta behin MathJax liburutegi osoa jaitsi http://www.mathjax.org/ helbidetik. Ondoren instala ezazu web-zerbitzari batean. Eta bukatzeko MathJax iragazkiaren httpurl edota httpsurl ezarpenetan MathJax.js lokalaren URLak konfigura itzazu.'; $string['mathjaxsettings'] = 'MathJax-en ezarpenak'; +$string['mathjaxsettings_desc'] = 'MathJax-en berezko konfigurazioa egokia izan beharko litzateke erabiltzaile gehienentzat, baina MathJax oso konfiguragarria da eta hemen MathJax estandarraren edozein konfigurazio aukera gehi daitezke.'; +$string['texfiltercompatibility'] = 'TeX iragazkiaren bateragarritasuna'; +$string['texfiltercompatibility_help'] = 'MathJax iragazkia TeX idazketaren iragazkiaren ordezko gisa erabil daiteke. + +TeX idazketak onartzen dituen bereizle guztiak onartzeko MathJax ekuazio guztiak testuarekin batera erakusteko konfiguratuko da.'; diff --git a/html/moodle2/langpacks/eu/filter_tex.php b/html/moodle2/langpacks/eu/filter_tex.php index 08cc090c64..8ff74a1c23 100644 --- a/html/moodle2/langpacks/eu/filter_tex.php +++ b/html/moodle2/langpacks/eu/filter_tex.php @@ -35,4 +35,5 @@ $string['pathdvisvgm'] = 'dvisvgm bitarrerako bidea'; $string['pathlatex'] = 'latex bitarrerako bidea'; $string['pathmimetex'] = 'mimetex bitarrarako bidea'; +$string['pathmimetexdesc'] = 'Moodle-k bere mimetex bitarra erabiliko du baliozkoa den beste helbide bat zehazten ez bada.'; $string['source'] = 'TeX iturburua'; diff --git a/html/moodle2/langpacks/eu/filter_urltolink.php b/html/moodle2/langpacks/eu/filter_urltolink.php index ac90e80134..a6144df36a 100644 --- a/html/moodle2/langpacks/eu/filter_urltolink.php +++ b/html/moodle2/langpacks/eu/filter_urltolink.php @@ -26,6 +26,7 @@ defined('MOODLE_INTERNAL') || die(); $string['embedimages'] = 'Enbotatutako irudiak'; +$string['embedimages_desc'] = 'Irudien URLak irudiekin ordezkatu aukeratutako testu formatuan.'; $string['filtername'] = 'URLak esteka eta irudi bihurtu'; $string['settingformats'] = 'Aplikatu formatuei'; $string['settingformats_desc'] = 'Iragazkia bakarrik aplikatuko da jatorrizko testua aukeratutako formatuetako batean txertatu bada.'; diff --git a/html/moodle2/langpacks/eu/gradeimport_xml.php b/html/moodle2/langpacks/eu/gradeimport_xml.php index 447b364d79..b26c3eb2ea 100644 --- a/html/moodle2/langpacks/eu/gradeimport_xml.php +++ b/html/moodle2/langpacks/eu/gradeimport_xml.php @@ -26,11 +26,11 @@ defined('MOODLE_INTERNAL') || die(); $string['errbadxmlformat'] = 'Errorea: okerreko XML formatua'; -$string['errduplicategradeidnumber'] = 'Errorea: ikastaroan \'{$a}\' id zenbakia duten bi kalifikazio-elementu daude. Ezinezkoa da hori.'; -$string['errduplicateidnumber'] = 'Errorea: id zenbakia bikoiztuta'; -$string['errincorrectgradeidnumber'] = 'Errorea: inportatutako fitxategiko \'{$a}\' id zenbakia ez dago inongo kalifikazio-elementutan.'; -$string['errincorrectidnumber'] = 'Errorea: okerreko id zenbakia'; -$string['errincorrectuseridnumber'] = 'Errorea: inportatutako fitxategiko \'{$a}\' id zenbakia ez dago inongo erabiltzailetan.'; +$string['errduplicategradeidnumber'] = 'Errorea: ikastaroan \'{$a}\' ID zenbakia duten bi kalifikazio-elementu daude. Ezinezkoa da hori.'; +$string['errduplicateidnumber'] = 'Errorea: ID zenbakia bikoiztuta'; +$string['errincorrectgradeidnumber'] = 'Errorea: inportatutako fitxategiko \'{$a}\' ID zenbakia ez dago inongo kalifikazio-elementutan.'; +$string['errincorrectidnumber'] = 'Errorea: okerreko ID zenbakia'; +$string['errincorrectuseridnumber'] = 'Errorea: inportatutako fitxategiko \'{$a}\' ID zenbakia ez dago inongo erabiltzailetan.'; $string['error'] = 'Erroreak gertatzen ari dira'; $string['errorduringimport'] = 'Errorea gertatu da inportatzean: {$a}'; $string['fileurl'] = 'Urritiko fitxategiaren URL-a'; diff --git a/html/moodle2/langpacks/eu/grades.php b/html/moodle2/langpacks/eu/grades.php index 9f6bd67d6f..eb1b1ac2b8 100644 --- a/html/moodle2/langpacks/eu/grades.php +++ b/html/moodle2/langpacks/eu/grades.php @@ -36,7 +36,7 @@ $string['addoutcome'] = 'Gehitu ikas-emaitza'; $string['addoutcomeitem'] = 'Gehitu ikas-emaitza elementua'; $string['addscale'] = 'Gehitu eskala'; -$string['adjustedweight'] = 'Pisu doitua'; +$string['adjustedweight'] = 'Pisua doitu da'; $string['aggregateextracreditmean'] = 'Kalifikazioen batez bestekoa (aparteko kredituekin)'; $string['aggregatemax'] = 'Kalifikazio altuena'; $string['aggregatemean'] = 'Kalifikazioen batez bestekoa'; @@ -51,30 +51,22 @@ $string['aggregateoutcomes'] = 'Ikas-emaitzak agregazioan sartu'; $string['aggregateoutcomes_help'] = 'Gaituta, ikas-emaitzak agregazioan sartzen dira. Honen ondorioz, kategoriako guztirakoa espero ez zena izan daiteke.'; $string['aggregatesonly'] = 'Aldatu agregatutakoetara bakarrik'; +$string['aggregatesubcatsupgradedgrades'] = 'Oharra: "Agregazioan azpikategoriak sartu" agregazio-metodoaren ezarpena ezabatu da eguneraketa egitearekin batera. Aurretik "Agregazioan azpikategoriak sartu" ikastaro honetan erabiltzen zenez, gomendagarria da aldaketa honek kalifikazio-liburuan izandako eragina aztertzea.'; $string['aggregatesum'] = 'Naturala'; $string['aggregateweightedmean'] = 'Kalifikazioen batez besteko ponderatua'; $string['aggregateweightedmean2'] = 'Kalifikazioen batez besteko ponderatu sinplea'; $string['aggregation'] = 'Agregazioa'; $string['aggregationcoef'] = 'Agregazio-koefizientea'; $string['aggregationcoefextra'] = 'Aparteko kreditua'; -$string['aggregationcoefextra_help'] = 'Agregazioa \'Naturala\' edo \'Batez besteko ponderatu sinplea\' bada eta aparteko kredituen laukitxoa markatuta badago, kalifikazio-elementuaren gehienezko kalifikazioa ez zaio batuko kategoriaren gehienezko kalifikazioari. Ondorioz, ezin izango da gehienezko kalifikazioa lortu kategorian ez badu elementu guztietan gehienezko kalifikazioa lortzen. +$string['aggregationcoefextra_help'] = 'Agregazioa \'naturala\' edo \'batez besteko ponderatu sinplea\' bada eta aparteko kredituen laukitxoa markatuta badago, kalifikazio-elementuaren gehienezko kalifikazioa ez zaio batuko kategoriaren gehienezko kalifikazioari. Ondorioz, posiblea izango da kategorian gehienezko kalifikazioa lortzea kalifikazio-elementu guztietan gehienezko kalifikazioa lortu gabe. Guneko kudeatzaileak gehienezko kalifikaziotik gorako kalifikazioak gaitu baditu gehienezko kalifikaziotik gorako kalifikazioak ere egon daitezke. -Agregazioa \'Kalifikazioen batez bestekoa (aparteko kredituekin)\' bada eta aparteko kredituak zerotik gorako balorea ezarrita badu, aparteko kreditu horrekin biderkatuko da kalifikazioa, media kalkulatu ondorengo guztirakoari gehitu aurretik.'; +Agregazioa kalifikazioen \'batez bestekoa (aparteko kredituekin)\' bada eta aparteko kredituak zerotik gorako balorea ezarrita badu, aparteko kreditu horrekin biderkatuko da kalifikazioa, media kalkulatu ondorengo guztirakoari gehitu aurretik.'; $string['aggregationcoefextra_link'] = 'kalifikazioa/agregazioa'; $string['aggregationcoefextrasum'] = 'Aparteko kreditua'; $string['aggregationcoefextrasumabbr'] = '+'; $string['aggregationcoefextrasum_help'] = 'Aparteko kredituen laukitxoa markatuta badago, kalifikazio-elementuaren gehienezko kalifikazioa ez zaio batuko kategoriaren gehienezko kalifikazioari, eta beraz ezin izango da lortu gehienezko kalifikazioa (edo gehienezko kalifikaziotik gora, guneko kudeatzaileak gaitu badu) kategorian ez badu gehienezko kalifikazioa elementu guztietan.'; $string['aggregationcoefextraweight'] = 'Aparteko kredituen pisua'; -$string['aggregationcoefextraweight_help'] = '0tik gorako balore batek kalifikazio-elementu honen kalifikazioa Aparteko kreditu gisa erabiliko du agregazioan zehar. Zenbaki horrekin biderkatuko da kalifikazioaren balorea kalifikazio guztien batuketari gaineratu aurretik, baina elementua ez da kontuan hartiko zatiketan. Adibidez:
- -Media bakoitzaren atzean parentesi artean media kalkulatzeko erabili den kalifikazio-kopurua erakutsi ala ez, adibidez 45 (34).
'; $string['showonlyactiveenrol'] = 'Erakutsi bakarrik matrikula aktiboak'; +$string['showonlyactiveenrol_help'] = 'Ezarpen honek zehazten du kalifikazio-txostenean matrikulatutako erabiltzaile aktiboak soilik erakutsiko diren edo ez. Gaituz gero, kontua etenda duten erabiltzaileak ez dira kalifikazio-liburuan erakutsiko.'; $string['showpercentage'] = 'Erakutsi portzentajea'; $string['showpercentage_help'] = 'Erakutsi ehunekoaren balorea kalifikazio-elementu bakoitzerako?'; $string['showquickfeedback'] = 'Erakutsi feedback azkarra'; +$string['showquickfeedback_help'] = 'Gaitzu gero, edizioa aktibatuta dagoenean, kalifikazio bakoitzarekin batera feedback-aren testurako puntutxoak dituen laukia agertuko da, kalifikazio anitzen feedback-ak batera editatzeko aukera emanda. Aldaketak gorde eta nabarmentzen dira eguneratu botoian klik egitean. + +Kontuan izan feedback-a kalifikazio txostenean editatzen direnean baliogabetuta egotearen etiketa jarriko zaio, eta horrek esan nahi du ondoren ezingo dela lotutako jardueratik aldatu.'; $string['showrange'] = 'Erakutsi ibilarteak'; $string['showrange_help'] = 'Ibilarteen zutabea erakutsi?'; $string['showranges'] = 'Ibiltarteak erakutsi'; @@ -633,7 +720,7 @@ $string['showuserimage_help'] = 'Kalfikatzailearen txostenean izenaren ondoren erabiltzailearen profilaren irudia erakutsi ala ez'; $string['showverbose'] = 'Erakutsi {$a->category} {$a->itemmodule} {$a->itemname}'; $string['showweight'] = 'Erakutsi ponderazioak'; -$string['showweight_help'] = 'Kalifikazio pisuaren zutabea erakutsi?'; +$string['showweight_help'] = 'Kalifikazio-pisuaren zutabea erakutsi?'; $string['simpleview'] = 'Ikuspegi sinplea'; $string['singleview'] = 'Ikuspegi sinplea ondokoarentzat: {$a}'; $string['sitewide'] = 'Gune osoa'; @@ -648,9 +735,11 @@ $string['student'] = 'Ikaslea'; $string['studentsperpage'] = 'Ikasleak orriko'; $string['studentsperpage_help'] = 'Orriko erakutsi beharreko ikasle-kopurua kalifikatzailearen txostenean'; +$string['studentsperpagereduced'] = 'Orri bakoitzeko ikasle kopurua {$a->originalstudentsperpage}-tik {$a->studentsperpage}-ra murriztu da. Pentsatu ezazu PHP-ren max_input_vars ezarpena {$a->maxinputvars}-tik gora ezartzea.'; $string['subcategory'] = 'Ohiko kategoria'; $string['submissions'] = 'Bidalketak'; $string['submittedon'] = 'Bidalita: {$a}'; +$string['sumofgradesupgradedgrades'] = 'Oharra: "Kalifikazioen batura" agregazio-metodoa "Naturala" izatera pasa da eguneraketa egitearekin batera. Aurretik ikastaro honetan "Kalifikazioen batura" erabiltzen zenez, kalifikazio-liburuan aldaketa honen eragina berrikustea gomendatzen da.'; $string['switchtofullview'] = 'Aldatu ikuspegi osora'; $string['switchtosimpleview'] = 'Aldatu ikuspegi sinplera'; $string['tabs'] = 'Tabuladoreak'; @@ -667,11 +756,15 @@ $string['typevalue'] = 'Balorea'; $string['uncategorised'] = 'Kategorizatu gabea'; $string['unchangedgrade'] = 'Kalifikazioa ez da aldatu'; +$string['unenrolledusersinimport'] = 'Inportazio honek une honetan ikastaroan matrikulatua ez dauden hurrengo ikasle hauen kalifikazioak barne zituen: {$a}'; $string['unlimitedgrades'] = 'Mugarik gabeko kalifikazioak'; +$string['unlimitedgrades_help'] = 'Berez, kalifikazioak kalifikazio-elementuaren gutxieneko eta gehienezko balioek mugatzen dituzte. Ezarpen hau gaituz gero, muga hori kentzen da, eta kalifikazio-liburuan %100etik gorako kalifikazioak sartzea ahalbidetzen du.'; $string['unlock'] = 'Desblokeatu'; $string['unlockverbose'] = 'Desblokeatu {$a->category} {$a->itemmodule} {$a->itemname}'; $string['unused'] = 'Erabili gabea'; $string['updatedgradesonly'] = 'Kalifikazio berriak edo eguneratutakoak baino ez esportatu'; +$string['upgradedgradeshidemessage'] = 'Baztertu jakinarazpena'; +$string['upgradedminmaxrevertmessage'] = 'Desegin aldaketak'; $string['uploadgrades'] = 'Kalifikazioak igo'; $string['useadvanced'] = 'Funtzio aurreratuak erabili'; $string['usedcourses'] = 'Erabilitako ikastaroak'; @@ -680,26 +773,35 @@ $string['usenoscale'] = 'Ez erabili eskala'; $string['usepercent'] = 'Portzentajea erabili'; $string['user'] = 'Erabiltzailea'; +$string['userenrolmentsuspended'] = 'Erabiltzaile-matrikulazioa eten da.'; $string['userfields_show'] = 'Erakutsi erabiltzailearen eremuak'; +$string['userfields_show_help'] = 'Erakutsi e-posta helbidearen moduko erabiltzaile eremu gehigarriak kalifikazio-txostenean. Erakutsiko diren eremu zehatzak gune mailako showuseridentity ezarpenak kontrolatzen du.'; $string['usergrade'] = 'Erabiltzailea {$a->fullname} ({$a->useridnumber}) elementu honetan {$a->gradeidnumber}'; $string['userid'] = 'Erabiltzailearen IDa'; $string['useridnumberwarning'] = 'ID zenbakia ez duten erabiltzaileak baztertuta daude esportaziotik. Era beran, ezin dira inportatu'; +$string['usermappingerror'] = 'Errorea erabiltzaile-loturan: Ez da aurkitu {$a->field} eremuan "{$a->value}" balioa duen erabiltzailerik.'; $string['usermappingerrorcurrentgroup'] = 'Erabiltzailea ez da talde honetako partaidea.'; +$string['usermappingerrorusernotfound'] = 'Errorea erabiltzaile-loturan: Ez da erabiltzailea aurkitu.'; $string['userpreferences'] = 'Erabiltzailearen hobespenak'; $string['useweighted'] = 'Erabili ponderatua'; -$string['verbosescales'] = 'Ahozko eskalak'; +$string['verbosescales'] = 'Hitzen bidezko eskalak'; +$string['verbosescales_help'] = 'Hitzen bidezko eskalek zenbakien ordez hitzak erabiltzen dituzte. \'Bai\' aukeratu zenbakizko eta hitzen bidezko inportatzera bazoaz. \'Ez\' aukeratu zenbakizko eskalak soilik inportatzera bazoaz.'; $string['viewbygroup'] = 'Taldea'; $string['viewgrades'] = 'Ikusi kalifikazioak'; $string['weight'] = 'Pisua'; -$string['weightcourse'] = 'Ponderatu gabeko kalifikazioak erabili ikastarorako'; +$string['weightcourse'] = 'Ponderatutako kalifikazioak erabili ikastarorako'; $string['weightedascending'] = 'Neurtutako portzentajearen arabera gorantz sailkatu'; $string['weighteddescending'] = 'Neurtutako portzentajearen arabera beherantz sailkatu'; -$string['weightedpct'] = '% neurtua'; -$string['weightedpctcontribution'] = 'ekarpen % neurtua'; +$string['weightedpct'] = '% ponderatua'; +$string['weightedpctcontribution'] = 'ekarpenaren pisuaren %a'; +$string['weight_help'] = 'Ikastaroko kategoria batean elementuen balio erlatiboa zehazteko erabiltzen den balioa.'; $string['weightofa'] = '{$a}-ren pisua'; $string['weightorextracredit'] = 'Pisua edo aparteko kreditua'; +$string['weightoverride'] = 'pisua doitzea'; +$string['weightoverride_help'] = 'Desmarkatu aukera hau kalifikazio-elementu baten pisua automatikoki kalkulatutako baliora berrabiarazteko. Aukera hau markatuta pisua automatiko doitzea saihestuko duzu.'; $string['weights'] = 'Pisuak'; -$string['weightsedit'] = 'Editatu pisua eta aparteko kreditua'; +$string['weightsadjusted'] = 'Zure pisuak guztira 100 izateko egokitu dira.'; +$string['weightsedit'] = 'Editatu pisuak eta aparteko kredituak'; $string['weightuc'] = 'Kalkulatutako pisua'; $string['writinggradebookinfo'] = 'Kalifikazio-liburuaren ezarpenak idazten'; $string['xml'] = 'XML'; diff --git a/html/moodle2/langpacks/eu/gradingform_rubric.php b/html/moodle2/langpacks/eu/gradingform_rubric.php index c1faebe361..67060108b9 100644 --- a/html/moodle2/langpacks/eu/gradingform_rubric.php +++ b/html/moodle2/langpacks/eu/gradingform_rubric.php @@ -61,7 +61,7 @@ $string['regradeoption1'] = 'Markatu berriz kalifikatzeko'; $string['restoredfromdraft'] = 'OHARRA: pertsona hau kalifikatzeko azken saiakera ez da ondo gorde, beraz, zirriborro-kalifikazioak berreskuratu dira. Aldaketa hauek bertan behera utzi nahi badituzu, erabili azpiko \'Utzi\' botoia.'; $string['rubric'] = 'Errubrika'; -$string['rubricmapping'] = 'Puntuazioetatik kalifikazioetara mapaketa egiteko arauak'; +$string['rubricmapping'] = 'Puntuazioetatik kalifikazioetara lotura egiteko arauak'; $string['rubricmappingexplained'] = 'Errubrika honentzako gutxieneko untuazioa {$a->minscore} puntu da, eta moduluan erabilgarria den gutxieneko kalifikaziora bihurtuko da (eskalarik erabiltzen ez bada, zero izango da). Gehieneko puntuazioa {$a->maxscore} puntu da, eta gehieneko kalifikaziora bihurtuko da.Errepikapenen erabilera
- -Ikasleei ikasgaia errepikatzeko edo berriz hartzeko aukera ematen zaienean, irakasleak ikaslearen azken kalifikazioa zein den erabaki ahal izango du aukera honekin, kalifikazio-orrian, adibidez. Media, lehenengoa edo ikasgaian egindako saiakera eta errepikapen guztien artean lortutako kalifikazio onena izan daiteke.
- -Edozein unetan alda dezakezu aukera hau.
'; +$string['groupsnone'] = 'Ez dago talderik ikastaro honetan'; +$string['handlingofretakes'] = 'Saiakera errepikatuen erabilera'; +$string['handlingofretakes_help'] = 'Ikasgaia berriz egitea baimenduz gero, ezarpen honek zehazten du ikasgaiaren kalifikazioa saiakera guztien arteko media ala altuena izango den.'; $string['havenotgradedyet'] = 'Oraindik ez kalifikatua.'; $string['here'] = 'hemen'; $string['highscore'] = 'Puntuazio altua'; @@ -224,11 +231,13 @@ $string['importcount'] = '{$a} galderak inportatzen'; $string['importquestions'] = 'Inportatu galderak'; $string['importquestions_help'] = 'Funtzio honek testu-fitxategietatik hainbat formatutako galderak inportatzeko aukera ematen du.'; +$string['inactiveoverridehelp'] = '* Ikaslea ez dago talde egokian edo ez du rol egokirik ikasgaia ikusi edo egiteko'; $string['insertedpage'] = 'Txertatutako orria'; $string['invalidfile'] = 'Fitxategi baliogabea'; $string['invalidid'] = 'Ez da modulu edo ikasgaiaren ID gainditu ikastaroan'; $string['invalidlessonid'] = 'Ikasgaiaren IDa ez da zuzena'; -$string['invalidpageid'] = 'Orriaren IDak ez du balio'; +$string['invalidoverrideid'] = 'Salbuespenaren ID baliogabea'; +$string['invalidpageid'] = 'Orriaren ID baliogabea'; $string['jump'] = 'Jauzia'; $string['jumps'] = 'Jauziak'; $string['jumps_help'] = 'Erantzun (galderetarako) edo deskribapen (eduki-orrietarako) bakoitzak dagokion jauzia du. Jauzia erlatiboa izan daiteke, horri hau edo hurrengo orria, adibidez, edo erabatekoa, ikasgaiko orrietako bat zehaztuta.'; @@ -241,10 +250,10 @@ $string['lessonclosed'] = 'Ikasgai hau {$a} egunean itxi zen.'; $string['lessoncloses'] = 'Ikasgaia ixten da'; $string['lessoncloseson'] = 'Ikasgaia data honetan itxiko da: {$a}'; -$string['lesson:edit'] = 'Ikasgaia-jarduera editatu'; +$string['lesson:edit'] = 'Editatu ikasgaia'; $string['lessonformating'] = 'Ikasgaia formateatzen'; $string['lesson:grade'] = 'Kalifikatu ikasgaiaren entsegu motako galderak'; -$string['lesson:manage'] = 'Ikasgaia-jarduera kudeatu'; +$string['lesson:manage'] = 'Kudeatu ikasgaia'; $string['lesson:manageoverrides'] = 'Kudeatu Ikasgairako salbuespenak'; $string['lessonmenu'] = 'Ikasgaiaren menua'; $string['lessonname'] = 'Ikasgaia: {$a}'; @@ -279,7 +288,7 @@ $string['messageprovider:graded_essay'] = 'Ikasgaiaren entsegu motako galdera ebaluatu izanaren jakinarazpena'; $string['minimumnumberofquestions'] = 'Gutxienezko galdera-kopurua'; $string['minimumnumberofquestions_help'] = 'Ezarpen honek zehazten du jardueraren kalifikazioa kalkulatzeko erabiliko den gutxieneko galdera-kopurua.'; -$string['missingname'] = 'Mesedez, idatzi ezizena'; +$string['missingname'] = 'Mesedez, idatzi goitizena'; $string['modattempts'] = 'Baimendu ikaslearen berrikuspena'; $string['modattempts_help'] = 'Gaituz gero, ikasleek ikasgaian zehar nagiba dezakete eta berriz hasierara itzuli.'; $string['modattemptsnoteacher'] = 'Ikaslearen berrikuspena soilik ikasleen eskura dago.'; @@ -295,8 +304,8 @@ * Bereizitako birpasorako ariketak egiteko, birpasorako galdera-multzo ezberdinekin, aurreko galderei erantzundakoaren araberakoak.'; $string['modulenameplural'] = 'Ikasgaiak'; $string['move'] = 'Mugitu orria'; -$string['movedpage'] = 'Mugitutatako orria'; -$string['movepagehere'] = 'Orria hona mugitu'; +$string['movedpage'] = 'Orria mugitu da'; +$string['movepagehere'] = 'Mugitu orria hona'; $string['movepagenamed'] = 'Mugitu orria: {$a}'; $string['moving'] = 'Orria mugitzen: {$a}'; $string['multianswer'] = 'Erantzun anitza'; @@ -310,6 +319,7 @@ $string['noanswer'] = 'Galdera batek edo gehiagok ez du erantzunik. Mesedez, joan atzera eta osatu.'; $string['noattemptrecordsfound'] = 'Ez da saiakeren erregistrorik aurkitu. Kalifikaziorik gabe'; $string['nobranchtablefound'] = 'Ez da eduki-orririk aurkitu'; +$string['noclose'] = 'Ez dago itxiera-datarik'; $string['nocommentyet'] = 'Iruzkinik ez oraindik.'; $string['nocoursemods'] = 'Ez da jarduerarik aurkitu'; $string['nocredit'] = 'Ez duzu krediturik'; @@ -317,12 +327,15 @@ $string['noessayquestionsfound'] = 'Ikasgai honetan ez da entsegu-galderarik aurkitu.'; $string['nohighscores'] = 'Ez dago gehinezko puntuaziorik'; $string['nolessonattempts'] = 'Ez da ikasgai hau praktikatzeko saiakerarik egin.'; +$string['nolessonattemptsgroup'] = '{$a} taldeko partaideek ez dute saiakerarik egin ikasgai honetan.'; $string['none'] = 'Bat ere ez'; $string['nooneansweredcorrectly'] = 'Inork ez du ondo erantzun.'; $string['nooneansweredthisquestion'] = 'Inork ez du galdera hau erantzun.'; -$string['noonecheckedthis'] = 'Inork ez du hau konprobatu.'; +$string['noonecheckedthis'] = 'Inork ez du hau egiaztatu.'; $string['nooneenteredthis'] = 'Inork ez du hau sartu.'; -$string['noonehasanswered'] = 'Inork ez du entsegu-galderarik oraingoz erantzun.'; +$string['noonehasanswered'] = 'Inork ez dio entsegu-galderari oraingoz erantzun.'; +$string['noonehasansweredgroup'] = 'Hemengo Inork ({$a}) ez dio entsegu-galderari oraingoz erantzun.'; +$string['noopen'] = 'Ez dago zabaltzeko datarik'; $string['noretake'] = 'Ezin duzu ikasgai hau berriz hasi.'; $string['normal'] = 'Normala - jarraitu ikasgaiaren ibilbidea'; $string['notcompleted'] = 'Ez osatua'; @@ -331,6 +344,7 @@ $string['nothighscore'] = 'Ez da finkatu {$a} puntuazio altuenen zerrenda.'; $string['notitle'] = 'Izenbururik gabe'; $string['numberofcorrectanswers'] = 'Erantzun zuzenen kopurua: {$a}'; +$string['numberofcorrectanswersheader'] = 'Erantzun zuzenen kopurua'; $string['numberofcorrectmatches'] = 'Ondo osatutako bikoteen kopurua: {$a}'; $string['numberofpagestoshow'] = 'Erakutsi beharreko orriak'; $string['numberofpagestoshow_help'] = 'Erakutsi beharreko orri-kopurua (Txartelak) Balore hau Txartel erako ikasgaietan bakarrik (Flash Card) @@ -340,6 +354,7 @@ Orri/Txartel kopuru hori erakutsita ikasgaiaren amaiera etorriko da eta ikasleak lortutako kalifikazioa erakutsiko da. Emandako balorea ikasgaiaren orri-kopurua baino altuagoa bada, orri guztiak erakutsiko dira.'; $string['numberofpagesviewed'] = 'Erantzundako galdera-kopurua: {$a}'; +$string['numberofpagesviewedheader'] = 'Erantzundako galdera-kopura'; $string['numberofpagesviewednotice'] = 'Erantzundako galdera-kopurua: {$a->nquestions}; (Gutxienez, {$a->minquestions} erantzun beharko zenituzke).'; $string['numerical'] = 'Zenbakizkoa'; $string['ongoing'] = 'Erakutsi metatutako puntuazioa'; @@ -367,6 +382,7 @@ $string['page-mod-lesson-edit'] = 'Editatu ikasgaiaren orria'; $string['page-mod-lesson-view'] = 'Ikusi edo aurreikusi ikasgaiaren orria'; $string['page-mod-lesson-x'] = 'Ikasgaiaren edozein orri'; +$string['pageresponses'] = 'Orriaren erantzunak'; $string['pages'] = 'Orriak'; $string['pagetitle'] = 'Orriaren izenburua'; $string['password'] = 'Pasahitza'; @@ -450,12 +466,15 @@ $string['thatsthewronganswer'] = 'Hauxe da erantzun okerra'; $string['thefollowingpagesjumptothispage'] = 'Orri hauek honetarako jauzia dute'; $string['thispage'] = 'Orri hau'; +$string['timeisup'] = 'Denbora amaitu da'; $string['timelimit'] = 'Denbora-muga'; +$string['timelimitwarning'] = '{$a} duzu ikasgai amaitzeko'; $string['timeremaining'] = 'Geratzen den denbora'; -$string['timespenterror'] = 'Ikasgai honi gutxienez {$a} minutu dedikatu'; -$string['timespentminutes'] = 'Dedikatutako denbora (minututan)'; +$string['timespenterror'] = 'Eman gutxienez {$a} minutu Ikasgai honi'; +$string['timespentminutes'] = 'Emandako denbora (minututan)'; $string['timetaken'] = 'Erabilitako denbora'; $string['topscorestitle'] = '{$a} puntuazio altuenak'; +$string['totalpagesviewedheader'] = 'Ikusitako orri-kopurua'; $string['true'] = 'Egia'; $string['truefalse'] = 'Egia/gezurra'; $string['unabledtosavefile'] = 'Igotako fitxategia ezin izan da gorde'; @@ -470,10 +489,11 @@ $string['usepassword_help'] = 'Gaituta, ikasgaia eskuratzeko pasahitza eskatuko da.'; $string['useroverrides'] = 'Erabiltzaile-salbuespenak'; $string['useroverridesdeleted'] = 'Erabiltzaile-salbuespenak ezabatu dira'; +$string['usersnone'] = 'Ikasleek ez dute ikasgai honetarako sarbiderik'; $string['viewgrades'] = 'Ikusi kalifikazioak'; -$string['viewhighscores'] = 'Puntuazio altuenen zerrenda ikusi.'; +$string['viewhighscores'] = 'Ikusi puntuazio altuenen zerrenda'; $string['viewreports'] = '{$a->attempts} saiakera {$a->student} (e)k osatuta'; -$string['viewreports2'] = 'Osatutako {$a} saiakera ikusi'; +$string['viewreports2'] = 'Ikusi osatutako {$a} saiakera'; $string['warning'] = 'Kontuz'; $string['welldone'] = 'Ederki!'; $string['whatdofirst'] = 'Nondik hasi nahi duzu?'; diff --git a/html/moodle2/langpacks/eu/lti.php b/html/moodle2/langpacks/eu/lti.php index 410f88b980..54273535d1 100644 --- a/html/moodle2/langpacks/eu/lti.php +++ b/html/moodle2/langpacks/eu/lti.php @@ -182,6 +182,7 @@ $string['privacy'] = 'Pribatutasuna'; $string['quickgrade'] = 'Baimendu kalifikazio azkarra'; $string['register'] = 'Erregistratu'; +$string['registrationname'] = 'Tresna-hornitzailearen izena'; $string['registration_options'] = 'Erregistrorako aukerak'; $string['registrationurl'] = 'Erregistrorako URLa'; $string['reject'] = 'Ez onartu'; @@ -215,6 +216,7 @@ $string['subplugintype_ltisource_plural'] = 'LTIren iturburuak'; $string['successfullycreatedtooltype'] = 'Ondo sortu da tresna!'; $string['tooldescription'] = 'Tresnaren deskribapena'; +$string['toolisbeingused'] = 'Tresna {$a} aldiz erabili da'; $string['toolisnotbeingused'] = 'Tresn hau ez da oraindik erabili'; $string['toolproxy'] = 'Kanpoko tresnen erregistroak'; $string['toolproxyregistration'] = 'Kanpoko tresnen erregistroa'; diff --git a/html/moodle2/langpacks/eu/mnet.php b/html/moodle2/langpacks/eu/mnet.php index 7a918f64c0..efbc1c522d 100644 --- a/html/moodle2/langpacks/eu/mnet.php +++ b/html/moodle2/langpacks/eu/mnet.php @@ -177,6 +177,7 @@ $string['showremote'] = 'Erakutsi urrutiko erabiltzaileak'; $string['ssl_acl_allow'] = 'SSO ACL: Baimendu \'{$a->user}\' erabiltzailea hemendik: \'{$a->host}\''; $string['ssl_acl_deny'] = 'SSO ACL: Ukatu \'{$a->user}\' erabiltzailea hemendik: \'{$a->host}\''; +$string['sslverification'] = 'SSL egiaztapena'; $string['ssoaccesscontrol'] = 'SSO sarbide-kontrola'; $string['strict'] = 'Zorrotza'; $string['subscribe'] = 'Harpidetu'; @@ -193,6 +194,7 @@ $string['unknown'] = 'Ezezaguna'; $string['unknownerror'] = 'Errore ezezaguna gertatu da negoziazioan zehar.'; $string['usercannotchangepassword'] = 'Ezin duzu pasahitza hemen aldatu urrutiko erabiltzailea baitzara.'; +$string['usersareonline'] = 'Abisua: zerbitzari honetako {$a} erabiltzaile une honetan zure gunean daude.'; $string['verifysignature-error'] = 'Kale egin du sinadura egiaztatzean. Errorea gertatu da.'; $string['verifysignature-invalid'] = 'Kale egin du sinadura egiaztatzean. Badirudi ez duzula zeuk sinatu.'; $string['version'] = 'Bertsioa'; diff --git a/html/moodle2/langpacks/eu/moodle.php b/html/moodle2/langpacks/eu/moodle.php index 0c422d4f09..5b463216ab 100644 --- a/html/moodle2/langpacks/eu/moodle.php +++ b/html/moodle2/langpacks/eu/moodle.php @@ -330,7 +330,7 @@ $string['coursecreators'] = 'Ikastaro-sortzailea'; $string['coursecreatorsdescription'] = 'Ikastaro sortzaileek ikastaro berriak sor ditzakete.'; $string['coursedeleted'] = '{$a} ikastaroa ezabatuta'; -$string['coursedetails'] = 'Ikastaroaren xehetasunak'; +$string['coursedetails'] = 'Ikastaro-xehetasunak'; $string['coursedisplay'] = 'Ikastaroaren diseinua'; $string['coursedisplay_help'] = 'Aukera honek ezartzen du ikastaro osoa orri bakarrean erakusten den ala hainbat orritan banatzen den.'; $string['coursedisplay_multi'] = 'Erakutsi atal bat orriko'; @@ -1553,7 +1553,7 @@ $string['revert'] = 'Lehengora itzuli'; $string['role'] = 'Rola'; $string['roleassignments'] = 'Rol-esleipenak'; -$string['rolemappings'] = 'Rolen mapak'; +$string['rolemappings'] = 'Rolen loturak'; $string['rolerenaming'] = 'Rolei izena aldatu'; $string['rolerenaming_help'] = 'Ikastaroan erabiltzen diren rolei izena aldatzeko aukera emango dizu ezarpen honek. Adibidez, "Irakaslea"ri "Laguntzailea" edo "Tutorea" ipini nahi izango diozu. Erakusten den izena aldatzen da bakarrik, azpiko rol-baimenei ez die eragingo. diff --git a/html/moodle2/langpacks/eu/plugin.php b/html/moodle2/langpacks/eu/plugin.php index af4e832dfd..5d68dfd3a1 100644 --- a/html/moodle2/langpacks/eu/plugin.php +++ b/html/moodle2/langpacks/eu/plugin.php @@ -60,6 +60,7 @@ $string['overviewupdatable'] = 'Eskura dauden eguneraketak'; $string['packagesdownloading'] = '{$a} jaisten'; $string['plugincheckall'] = 'Plugin guztiak'; +$string['plugincheckattention'] = 'Pluginek zure arreta eskatzen dute'; $string['plugindisable'] = 'Desgaitu'; $string['plugindisabled'] = 'Desgaituta'; $string['pluginenable'] = 'Gaitu'; @@ -147,14 +148,17 @@ $string['type_webservice'] = 'Web-zerbitzuen protokoloa'; $string['type_webservice_plural'] = 'Web-zerbitzuen protokoloak'; $string['uninstall'] = 'Desinstalatu'; +$string['uninstallextraconfirmenrol'] = '{$a->enrolments} erabiltzaile matrikulatuta daude'; $string['uninstalling'] = '{$a->name} desinstalatzen'; $string['updateavailable'] = 'Bada bertsio berri bat eskura {$a}!'; $string['updateavailable_moreinfo'] = 'Informazio gehiago...'; $string['updateavailable_release'] = 'Bertsioa: {$a}'; $string['validationmsg_componentmatch'] = 'Osagaiaren izen osoa'; +$string['validationmsglevel_debug'] = 'Araztu'; $string['validationmsglevel_error'] = 'Errorea'; $string['validationmsglevel_info'] = 'Ados'; $string['validationmsglevel_warning'] = 'Oharra'; +$string['validationmsg_missinglangenfile'] = 'Ez da ingelesaren hizkuntza-fitxategia aurkitu'; $string['validationmsg_missingversionphp'] = 'version.php fitxategia ez da aurkitu'; $string['validationmsg_pluginversion'] = 'Pluginaren bertsioa'; $string['validationmsg_requiresmoodle'] = 'Behar den Moodle bertsioa'; diff --git a/html/moodle2/langpacks/eu/qtype_ddwtos.php b/html/moodle2/langpacks/eu/qtype_ddwtos.php index fc7c2d0809..e0baa62d11 100644 --- a/html/moodle2/langpacks/eu/qtype_ddwtos.php +++ b/html/moodle2/langpacks/eu/qtype_ddwtos.php @@ -30,6 +30,7 @@ $string['blank'] = 'hutsik'; $string['correctansweris'] = 'Erantzun zuzena ondokoa da: {$a}'; $string['infinite'] = 'Mugarik gabea'; +$string['pleaseputananswerineachbox'] = 'Mesedez, eman erantzuna lauki bakoitzean'; $string['pluginname'] = 'Hartu eta eraman testura'; $string['pluginnameadding'] = 'Hartu eta eraman testura motako galdera gehitzen'; $string['pluginnameediting'] = 'Hartu eta eraman testura motako galdera editatzen'; diff --git a/html/moodle2/langpacks/eu/qtype_essay.php b/html/moodle2/langpacks/eu/qtype_essay.php index 4213c04ed2..c0bbb1b706 100644 --- a/html/moodle2/langpacks/eu/qtype_essay.php +++ b/html/moodle2/langpacks/eu/qtype_essay.php @@ -45,7 +45,7 @@ $string['pluginnameediting'] = 'Entsegu motako galdera editatzen '; $string['pluginname_help'] = 'Galderari erantzuteko (irudi bat izan dezakeena) ikasleak paragrafo bat edo bi dituen testua idatzi behar du. Galdera hauei ez zaie kalifikazioa ezarriko irakasleak berrikusi eta eskuz kalifikatu arte.'; $string['pluginnamesummary'] = 'Pare bat esaldi edo paragrafoko erantzuna ematen uzten du. Hauek eskuz kalifikatu behar dira.'; -$string['responsefieldlines'] = 'Erantzuteko koadroaren tamaina'; +$string['responsefieldlines'] = 'Erantzuteko laukiaren tamaina'; $string['responseformat'] = 'Ebazpenaren formatua'; $string['responseisrequired'] = 'Beharrezkoa da ikasleak testua idaztea'; $string['responsenotrequired'] = 'Testu-sarrera aukerakoa da'; diff --git a/html/moodle2/langpacks/eu/quiz_grading.php b/html/moodle2/langpacks/eu/quiz_grading.php index 02f559e43a..067722e01e 100644 --- a/html/moodle2/langpacks/eu/quiz_grading.php +++ b/html/moodle2/langpacks/eu/quiz_grading.php @@ -60,7 +60,7 @@ $string['gradingreport'] = 'Eskuzko kalifikazioaren txostena'; $string['gradingungraded'] = 'Kalifikatu gabeko {$a} saiakera'; $string['gradinguser'] = 'Saiakerak honentzat: {$a}'; -$string['grading:viewidnumber'] = 'Ikusi ikasleen id zenbakiak kalifikatu birtean'; +$string['grading:viewidnumber'] = 'Ikusi ikasleen ID zenbakiak kalifikatu birtean'; $string['grading:viewstudentnames'] = 'Ikusi ikasleen izenak kalifikatu bitartean'; $string['hideautomaticallygraded'] = 'Ezkutatu automatikoki kalifikatutako galderak'; $string['inprogress'] = 'Ari da'; diff --git a/html/moodle2/langpacks/eu/report_security.php b/html/moodle2/langpacks/eu/report_security.php index 6cd0b98345..4a855a01e8 100644 --- a/html/moodle2/langpacks/eu/report_security.php +++ b/html/moodle2/langpacks/eu/report_security.php @@ -37,6 +37,8 @@ $string['check_defaultuserrole_ok'] = 'Autentifikatutako erabiltzaile-rolaren definizioa ONDO dago.'; $string['check_displayerrors_name'] = 'PHP erroreak erakustea'; $string['check_displayerrors_ok'] = 'PHP erroreak erakustea desgaituta.'; +$string['check_emailchangeconfirmation_error'] = 'Erabiltzaileek edozein posta-helbide sar dezakete.'; +$string['check_emailchangeconfirmation_info'] = 'Erabiltzaileek baimendutako domeinuetako posta-helbideak sar ditzakete.'; $string['check_emailchangeconfirmation_name'] = 'E-posta aldaketaren baieztatzea'; $string['check_emailchangeconfirmation_ok'] = 'E-postaren aldaketaren baieztatzea erabiltzaile-profilean'; $string['check_embed_error'] = 'Nahi beste objektu enbotatu ahal izatea gaituta - hau oso arriskutsua izan daiteke zerbitzari gehienentzat'; @@ -60,6 +62,7 @@ $string['check_mediafilterswf_ok'] = 'Flash media iragazkia ez dago gaituta.'; $string['check_noauth_name'] = 'Autentifikatu gabe'; $string['check_noauth_ok'] = '"Autentifikatu gabe" plugina desgaituta dago.'; +$string['check_openprofiles_error'] = 'Edozeinek ikus ditzake erabiltzaileen profilak saioa hasi gabe ere.'; $string['check_openprofiles_name'] = 'Zabaldu erabiltzaileen profilak'; $string['check_openprofiles_ok'] = 'Erabiltzaileen profilak ikusi ahal izateko, beharrezkoa da saioa hastea.'; $string['check_passwordpolicy_error'] = 'Pasahitzen politika ez da ezarri.'; diff --git a/html/moodle2/langpacks/eu/repository.php b/html/moodle2/langpacks/eu/repository.php index 1fa42e5723..ac98641851 100644 --- a/html/moodle2/langpacks/eu/repository.php +++ b/html/moodle2/langpacks/eu/repository.php @@ -114,6 +114,7 @@ $string['filenotnull'] = 'Fitxategi bat aukeratu behar duzu igotzeko.'; $string['filepicker'] = 'Fitxategi-hautatzailea'; $string['filesaved'] = 'Fitxategia gorde egin da'; +$string['filesizenull'] = 'Ezin da fitxategiaren tamaina zehaztu'; $string['folderexists'] = 'Karpetaren izena dagoeneko erabilita dago. Mesedez, erabili beste izen bat'; $string['foldernotfound'] = 'Ez da karpeta aurkitu'; $string['getfile'] = 'Aukeratu fitxategi hau'; diff --git a/html/moodle2/langpacks/eu/role.php b/html/moodle2/langpacks/eu/role.php index 261b910100..ff3b98b3f0 100644 --- a/html/moodle2/langpacks/eu/role.php +++ b/html/moodle2/langpacks/eu/role.php @@ -376,6 +376,7 @@ $string['site:approvecourse'] = 'Ikastaroak sortzeko baimena eman'; $string['site:backup'] = 'Ikastaroen segurtasun-kopiak egin'; $string['site:config'] = 'Gunearen konfigurazioa aldatu'; +$string['site:deleteanymessage'] = 'Guneko edozein mezu ezabatu'; $string['site:doanything'] = 'Edozertarako baimena'; $string['site:doclinks'] = 'Gunetik kanpoko dokumentuetarako estekak erakutsi'; $string['site:forcelanguage'] = 'Baliogabetu ikastaroko hizkuntza'; diff --git a/html/moodle2/langpacks/eu/search.php b/html/moodle2/langpacks/eu/search.php index 4a94fb1a13..2d2a99d40e 100644 --- a/html/moodle2/langpacks/eu/search.php +++ b/html/moodle2/langpacks/eu/search.php @@ -70,11 +70,13 @@ $string['normalsearch'] = 'Bilaketa normala'; $string['notitle'] = 'Izenbururik ez'; $string['openedon'] = 'irekia noiz:'; +$string['optimize'] = 'Optimizatu'; $string['resultsreturnedfor'] = 'lortutako emaitzak honetarako:'; $string['runindexer'] = 'Abiarazi indexatzailea (erreala)'; $string['runindexertest'] = 'Abiarazi indexatzailaren proba'; $string['score'] = 'Puntuazioa'; $string['search'] = 'Bilatu'; +$string['searcharea'] = 'Bilaketa-eremua'; $string['searching'] = 'Bilatzen hemen:'; $string['search:mycourse'] = 'Nire ikastaroak'; $string['searchnotpermitted'] = 'Ez duzu bilaketa egiteko baimenik'; diff --git a/html/moodle2/langpacks/eu/tag.php b/html/moodle2/langpacks/eu/tag.php index ad01357816..98dceed366 100644 --- a/html/moodle2/langpacks/eu/tag.php +++ b/html/moodle2/langpacks/eu/tag.php @@ -63,6 +63,7 @@ $string['eventtagremoved'] = 'Etiketa ezabatu da elementutik'; $string['eventtagunflagged'] = 'Etiketa ez-markatua'; $string['eventtagupdated'] = 'Etiketa eguneratu da'; +$string['exclusivemode'] = 'Erakutsi bakarrik hemen etiketatutakoak: {$a->tagarea}'; $string['flag'] = 'Markatu'; $string['flagasinappropriate'] = 'Ezegoki markatu'; $string['flagged'] = 'Etiketa markatu da'; @@ -111,6 +112,7 @@ $string['selecttag'] = 'Aukeratu {$a} etiketa'; $string['settypedefault'] = 'Ezabatu etiketa estandarretatik'; $string['settypeofficial'] = 'Egin ofizial'; +$string['showingfirsttags'] = 'Etiketa ospetsuenak {$a} erakusten'; $string['standardforce'] = 'Behartu'; $string['standardhide'] = 'Ez iradoki'; $string['standardsuggest'] = 'Iradoki'; diff --git a/html/moodle2/langpacks/eu/tool_generator.php b/html/moodle2/langpacks/eu/tool_generator.php index f8480a61ae..ce37aa7f89 100644 --- a/html/moodle2/langpacks/eu/tool_generator.php +++ b/html/moodle2/langpacks/eu/tool_generator.php @@ -36,6 +36,7 @@ $string['createcourse'] = 'Sortu ikastaroa'; $string['creating'] = 'Ikastaroa sotzen'; $string['done'] = '({$a}) eginda'; +$string['downloadusersfile'] = 'Deskargatu erabiltzaile-fitxategia'; $string['error_noforumreplies'] = 'Aukeratutako ikastaroak ez du foro-erantzunik'; $string['error_nonexistingcourse'] = 'Zehaztutako ikastaroa ez da existitzen.'; $string['maketestcourse'] = 'Sortu probetarako ikastaroa'; @@ -63,3 +64,4 @@ $string['sitesize_5'] = 'XXL (~20GB; 4177 ikastaro, ~10 ordutan sortuak)'; $string['size'] = 'Ikastaroaren tamaina'; $string['smallfiles'] = 'Fitxategi txikiak'; +$string['updateuserspassword'] = 'Eguneratu ikastaroko erabiltzaileen pasahitza'; diff --git a/html/moodle2/langpacks/eu/tool_lp.php b/html/moodle2/langpacks/eu/tool_lp.php index a3f2839e8f..b969db4ee0 100644 --- a/html/moodle2/langpacks/eu/tool_lp.php +++ b/html/moodle2/langpacks/eu/tool_lp.php @@ -64,6 +64,7 @@ $string['configurecoursecompetencysettings'] = 'Konfiguratu ikastaroko gaitasunak'; $string['configurescale'] = 'Konfiguratu eskalak'; $string['coursecompetencies'] = 'Ikastaroko gaitasunak'; +$string['coursecompetencyratingsarepushedtouserplans'] = 'Ikastaro honetan gaitasunen kalifikazioek ikasketa-planak berehala eguneratzen dituzte.'; $string['coursesusingthiscompetency'] = 'Gaitasun honetara estekatutako ikastaroak'; $string['createlearningplans'] = 'Sortu ikasketa-planak'; $string['createplans'] = 'Sortu ikasketa-planak'; @@ -110,6 +111,7 @@ $string['managecompetenciesandframeworks'] = 'Kudeatu gaitasunak eta markoak'; $string['modcompetencies'] = 'Ikastaroko gaitasunak'; $string['modcompetencies_help'] = 'Jarduera honi estekatutako ikastaroko gaitasunak'; +$string['movecompetencyframework'] = 'Mugitu gaitasun-markoa'; $string['myplans'] = 'Nire ikasketa-planak'; $string['nfiles'] = '{$a} fitxategi'; $string['noactivities'] = 'Ez dago jarduerarik'; diff --git a/html/moodle2/langpacks/eu/webservice.php b/html/moodle2/langpacks/eu/webservice.php index 525f91fb7b..dd08f9b34d 100644 --- a/html/moodle2/langpacks/eu/webservice.php +++ b/html/moodle2/langpacks/eu/webservice.php @@ -122,11 +122,13 @@ $string['selectspecificuserdescription'] = 'Web-zerbitzuetako erabiltzailea baimendutako erabiltzaile gisa gehitu behar duzu.'; $string['service'] = 'Zerbitzua'; $string['servicename'] = 'Zerbitzuaren izena'; +$string['servicenotavailable'] = 'Web-zerbitzua ez dago eskuragarri (ez da existitzen edo agian desgaituta dago)'; $string['servicesbuiltin'] = 'Barne dauden zerbitzuak'; $string['servicescustom'] = 'Pertsonalizatu zerbitzuak'; $string['serviceusers'] = 'Baimendutako erabiltzaileak '; $string['serviceusersettings'] = 'Erabiltzailearen ezarpenak'; $string['serviceusersmatching'] = 'Bat datozen baimendun erabiltzaileak'; +$string['serviceuserssettings'] = 'Aldatu ezarpenak baimendutako erabiltzaileei'; $string['step'] = 'Urratsa'; $string['supplyinfo'] = 'Xehetasun gehiago'; $string['testclient'] = 'Web-zerbitzuetarako proba-bezeroa'; diff --git a/html/moodle2/langpacks/eu/workshop.php b/html/moodle2/langpacks/eu/workshop.php index 04f78c3448..9db26502c0 100644 --- a/html/moodle2/langpacks/eu/workshop.php +++ b/html/moodle2/langpacks/eu/workshop.php @@ -107,7 +107,7 @@ $string['editingsubmission'] = 'Bidalketa editatzen'; $string['editsubmission'] = 'Bidalketa editatu'; $string['err_multiplesubmissions'] = 'Formulario hau bete bitartean bidalketaren beste bertsio bat gorde da. Erabiltzaile bakoitzak bidalketa bakarra egin dezake.'; -$string['err_removegrademappings'] = 'Ezin dira ezabatu erabili gabeko kalifikazio-mapeoak'; +$string['err_removegrademappings'] = 'Ezin dira ezabatu erabili gabeko kalifikazio-loturak'; $string['err_unknownfileextension'] = 'Fitxategi-luzapen ezezaguna: {$a}'; $string['err_wrongfileextension'] = 'Fitxategi batzuk ({$a->wrongfiles}) ezin dira igo. Soilik {$a->whitelist} fitxategi-luzapenak onartzen dira.'; $string['evaluategradeswait'] = 'Mesedez, itxaron ebaluazioak ebaluatu eta kalifikazioak kalkulatu arte'; diff --git a/html/moodle2/langpacks/eu/workshopform_numerrors.php b/html/moodle2/langpacks/eu/workshopform_numerrors.php index ef47fffd28..0ddc90805b 100644 --- a/html/moodle2/langpacks/eu/workshopform_numerrors.php +++ b/html/moodle2/langpacks/eu/workshopform_numerrors.php @@ -38,7 +38,7 @@ $string['grade0default'] = 'Ez'; $string['grade1'] = 'Arrakasta izendatzeko hitza'; $string['grade1default'] = 'Bai'; -$string['grademapping'] = 'Kalifikazioaren eskema-taula'; +$string['grademapping'] = 'Kalifikazioen lotura-taula'; $string['maperror'] = 'Garrantzia duten errore kopurua berdina edo txikiagoa da'; $string['mapgrade'] = 'Bidalketaren kalifikazioa'; $string['percents'] = '% {$a}'; diff --git a/html/moodle2/langpacks/fr/admin.php b/html/moodle2/langpacks/fr/admin.php index d4f42d9a90..6dfb68613a 100644 --- a/html/moodle2/langpacks/fr/admin.php +++ b/html/moodle2/langpacks/fr/admin.php @@ -645,9 +645,10 @@ {$a->link} -Ce lien devrait être affiché sous la forme d\'un lien en bleu que vous pouvez cliquer directement. Si cela ne fonctionne pas, copiez l\'adresse et collez-la dans le champ de l\'URL en haut de la fenêtre de votre navigateur. +Dans la plupart des logiciels de courriel, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. -Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du serveur {$a->admin}.'; +Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site, +{$a->admin}'; $string['lockoutemailsubject'] = 'Votre compte sur {$a} a été bloqué'; $string['lockouterrorunlock'] = 'Information de déblocage du compte non valide.'; $string['lockoutthreshold'] = 'Limite pour blocage de compte'; diff --git a/html/moodle2/langpacks/fr/auth_db.php b/html/moodle2/langpacks/fr/auth_db.php index c6c88d1ce3..636a94219e 100644 --- a/html/moodle2/langpacks/fr/auth_db.php +++ b/html/moodle2/langpacks/fr/auth_db.php @@ -45,7 +45,7 @@ $string['auth_dbinsertuserduplicate'] = 'Erreur lors de l\'insertion de l\'utilisateur {$a->username}. Cet utilisateur a déjà été créé via le plugin « {$a->auth} ».'; $string['auth_dbinsertusererror'] = 'Erreur lors de l\'insertion de l\'utilisateur {$a}'; $string['auth_dbname'] = 'Nom de la base de données. À ne pas renseigner si vous utiliser un DSN ODBC.'; -$string['auth_dbname_key'] = 'Nom BDD'; +$string['auth_dbname_key'] = 'Nom de la base de données'; $string['auth_dbpass'] = 'Mot de passe pour ce compte'; $string['auth_dbpass_key'] = 'Mot de passe'; $string['auth_dbpasstype'] = '
Indiquez le type de hachage utilisé pour le champ mot de passe. L\'algorithme MD5 est utile pour une utilisation conjointe avec d\'autres applications Web telles que PostNuke.
Utilisez « Interne » si vous voulez que la base de données externe gère les noms d\'utilisateur et les adresses de courriel, mais que Moodle gère les mots de passe. Dans ce cas, la base de données externe doit comprendre un champ contenant une adresse de courriel, et vous devez lancer régulièrement les scripts admin/cron.php et auth/db/auth_db_sync_users.php. Moodle enverra alors par courriel un mot de passe temporaire aux nouveaux utilisateurs.
'; @@ -65,7 +65,7 @@ $string['auth_dbtype_key'] = 'Base de données'; $string['auth_dbupdatinguser'] = 'Modification de l\'utilisateur {$a->name} id {$a->id}'; $string['auth_dbuser'] = 'Compte avec accès en lecture à la base de données'; -$string['auth_dbuser_key'] = 'Utilisateur BDD'; +$string['auth_dbuser_key'] = 'Utilisateur de la base de données'; $string['auth_dbusernotexist'] = 'Impossible de modifier l\'utilisateur {$a}, qui n\'existe pas'; $string['auth_dbuserstoadd'] = 'Enregistrements utilisateurs à ajouter : {$a}'; $string['auth_dbuserstoremove'] = 'Enregistrements utilisateurs à supprimer : {$a}'; diff --git a/html/moodle2/langpacks/fr/auth_mnet.php b/html/moodle2/langpacks/fr/auth_mnet.php index 66859b3b0d..8b874a6095 100644 --- a/html/moodle2/langpacks/fr/auth_mnet.php +++ b/html/moodle2/langpacks/fr/auth_mnet.php @@ -32,7 +32,7 @@ $string['auth_mnet_rpc_negotiation_timeout'] = 'Délai en secondes pour l\'authentification par transport XMLRPC.'; $string['auto_add_remote_users'] = 'Ajouter automatiquement les utilisateurs distants'; $string['pluginname'] = 'Authentification MNet'; -$string['rpc_negotiation_timeout'] = 'Délai de négociation RPC échu'; +$string['rpc_negotiation_timeout'] = 'Délai d\'échéance de négociation RPC'; $string['sso_idp_description'] = 'La publication de ce service permet à vos utilisateurs d\'utiliser le site {$a} sans devoir s\'y reconnecter.Un message vous a été envoyé à l\'adresse de courriel {$a}.
Il contient les instructions pour terminer votre enregistrement.
Si vous rencontrez des difficultés, veuillez contacter l\'administrateur du site.
'; @@ -641,9 +641,10 @@ {$a->link} -Dans la plupart des logiciels de messagerie, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. +Dans la plupart des logiciels de courriel, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. -Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site, {$a->admin}'; +Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site, +{$a->admin}'; $string['emailpasswordchangeinfodisabled'] = 'Bonjour {$a->firstname}, Quelqu\'un (probablement vous) a demandé un nouveau mot de passe pour votre compte sur « {$a->sitename} ». @@ -663,9 +664,10 @@ {$a->link} -Dans la plupart des logiciels de messagerie, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. +Dans la plupart des logiciels de courriel, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. -Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site, {$a->admin}'; +Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site, +{$a->admin}'; $string['emailpasswordconfirmationsubject'] = '{$a} : confirmation du changement de mot de passe'; $string['emailpasswordconfirmmaybesent'] = 'Si vous avez fourni un nom d\'utilisateur ou une adresse de courriel corrects, un message vous a été envoyé par courriel.
Ce message contient de simples instructions pour confirmer et terminer cette procédure de modification de mot de passe. Si vous n\'arrivez toujours pas à vous connecter, veuillez contacter l\'administrateur du site.
'; $string['emailpasswordconfirmnoemail'] = 'Le compte utilisateur indiqué n\'a pas d\'adresse de courriel.
@@ -1184,7 +1186,7 @@ $string['newpassword'] = 'Nouveau mot de passe'; $string['newpasswordfromlost'] = 'Attention ! Votre Mot de passe actuel vous a été envoyé dans le deuxième des deux courriels envoyés durant le processus de récupération de mot de passe. Veuillez vous assurer que vous avez bien reçu votre mot de passe de remplacement avant de continuer sur cette page.'; $string['newpassword_help'] = 'Saisissez un nouveau mot de passe ou laissez vide pour conserver le mot de passe actuel.'; -$string['newpasswordtext'] = 'Bonjour {$a->firstname}, +$string['newpasswordtext'] = 'Bonjour, Le mot de passe de votre compte sur « {$a->sitename} » a été remplacé par un nouveau mot de passe temporaire. @@ -1196,7 +1198,7 @@ Merci de visiter cette page afin de changer de mot de passe : {$a->link} -Dans la plupart des logiciels de messagerie, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. +Dans la plupart des logiciels de courriel, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site {$a->sitename}, {$a->signoff}'; @@ -1213,7 +1215,7 @@ Un nouveau compte a été créé pour vous sur le site « {$a->sitename} » et un mot de passe temporaire vous a été délivré. -Les informations nécessaires à votre connexion sont maintenant : +Les informations nécessaires à votre connexion sont maintenant : nom d\'utilisateur : {$a->username} mot de passe : {$a->newpassword} @@ -1222,7 +1224,7 @@ Pour commencer à travailler sur « {$a->sitename} », veuillez vous connecter en cliquant sur le lien ci-dessous. {$a->link} -Dans la plupart des logiciels de messagerie, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. +Dans la plupart des logiciels de courriel, cette adresse devrait apparaître comme un lien de couleur bleue qu\'il vous suffit de cliquer. Si cela ne fonctionne pas, copiez ce lien et collez-le dans la barre d\'adresse de votre navigateur web. Si vous avez besoin d\'aide, veuillez contacter l\'administrateur du site {$a->sitename}, {$a->signoff}'; diff --git a/html/moodle2/langpacks/it/admin.php b/html/moodle2/langpacks/it/admin.php index 63a7bdcebb..e3d9b14b4e 100644 --- a/html/moodle2/langpacks/it/admin.php +++ b/html/moodle2/langpacks/it/admin.php @@ -796,7 +796,7 @@ $string['pathtodot_help'] = 'Percorso assoluto per l\'eseguibile dot, del tipo /usr/bin/dot. Per generare grafici a partire dai file DOT, è necessario installare l\'eseguibile dot e configurare il percorso. Da notare che per il momento dot è usato solamente per le funzioni di profilazione presenti in Moodle (Sviluppo->Profilazione)'; $string['pathtodu'] = 'Percorso per du'; $string['pathtogs'] = 'Percorso per ghostscript'; -$string['pathtogs_help'] = 'Generalmente su installazioni Linux è possibile usare \'/usr/bin/gs. Su Windows probabilmente è possibile usare \'c:gsbingswin32c.exe\'. Accertarsi che non ci siano spazi nel percorso, nel caso copiare i file \'gswin32c.exe\' e \'gsdll32.dll\' in una cartella il cui percorso è privo di spazi.'; +$string['pathtogs_help'] = 'Generalmente su installazioni Linux è possibile usare \'/usr/bin/gs. Su Windows probabilmente è possibile usare \'\'c:\\gs\\bin\\gswin32c.exe\'. Accertarsi che non ci siano spazi nel percorso, nel caso copiare i file \'gswin32c.exe\' e \'gsdll32.dll\' in una cartella il cui percorso è privo di spazi.'; $string['pathtopgdump'] = 'Percorso per pg_dump'; $string['pathtopgdumpdesc'] = 'E\' nescessario solo se hai più di un pg_dump sul sistema (per esempio hai più versioni di postgresql installate)'; $string['pathtopgdumpinvalid'] = 'Percorso non valido per pg_dump - percorso errato o non eseguibile'; diff --git a/html/moodle2/langpacks/it/hvp.php b/html/moodle2/langpacks/it/hvp.php new file mode 100644 index 0000000000..f1cd32b8aa --- /dev/null +++ b/html/moodle2/langpacks/it/hvp.php @@ -0,0 +1,216 @@ +. + +/** + * Strings for component 'hvp', language 'it', branch 'MOODLE_31_STABLE' + * + * @package hvp + * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +$string['action'] = 'Azione'; +$string['addedandupdatelibraries'] = '{$a->%new} nuove librerie H5P e {$a->%old} librerie aggiornate.'; +$string['addednewlibraries'] = '{$a->%new} nuove librerie H5P aggiunte.'; +$string['addlibraries'] = 'Aggiungi librerie'; +$string['ajaxfailed'] = 'Caricamento di dati fallito.'; +$string['attribution'] = 'Attribuzione 4.0'; +$string['attributionnc'] = 'Attribuzione-Non Commerciale 4.0'; +$string['attributionncnd'] = 'Attribuzione-Non Commerciale-Non opere derivate 4.0'; +$string['attributionncsa'] = 'Attribuzione-Non Commerciale-Condividi allo stesso modo 4.0'; +$string['attributionnd'] = 'Attribuzione-Non Opere Derivate 4.0'; +$string['attributionsa'] = 'Attribuzione-Condividi allo stesso modo 4.0'; +$string['author'] = 'Autore'; +$string['availableversion'] = 'Aggiornamento disponibile'; +$string['cancellabel'] = 'Annulla'; +$string['close'] = 'Chiudi'; +$string['confirmdialogbody'] = 'Per favore confermare che desideri procedere. Questa azione non è reversibile.'; +$string['confirmdialogheader'] = 'Conferma azione'; +$string['confirmlabel'] = 'Conferma'; +$string['contentchanged'] = 'Questo contenuto è stato modificato dall\'ultima volta che l\'hai utilizzato.'; +$string['contentstatefrequency'] = 'Frequenza di salvataggio dello stato del contenuto'; +$string['contentstatefrequency_help'] = 'Indicare in secondi, quanto spesso desideri che l\'utente possa effettuare il salvataggio automatico del suo progresso. Aumenta il numero di secondi se hai problemi con molte richieste ajax'; +$string['copyright'] = 'Diritti di utilizzo'; +$string['copyrightinfo'] = 'Informazioni sul Copyright'; +$string['copyrightstring'] = 'Copyright'; +$string['copyrighttitle'] = 'Visualizza informazioni sul copyright per questo contenuto.'; +$string['couldnotcopy'] = 'Impossibile copiare il file.'; +$string['couldnotsave'] = 'Impossibile salvare il file.'; +$string['create'] = 'Crea'; +$string['currentpage'] = 'Pagina $current di $total'; +$string['currentversion'] = 'Stai eseguendo'; +$string['disablefileextensioncheck'] = 'Disabilita il controllo dell\'estensione dei file'; +$string['disablefileextensioncheckwarning'] = 'Attenzione! Disabilitando il controllo dell\'estensione dei file si potrebbe verificare problemi dato che viene consentito il caricamento di file php. Questo potrebbe consentire a persone ostili di eseguire codice malevole nel tuo sito. Per favore verifica attentamente ciò che stai caricando.'; +$string['disablefullscreen'] = 'Disabilita schermo intero'; +$string['displayoptions'] = 'Visualizza opzioni'; +$string['download'] = 'Scarica'; +$string['downloadandupdate'] = 'Scarica e Aggiorna'; +$string['downloadtitle'] = 'Scarica questo contenuto come file H5P.'; +$string['editor'] = 'Editor'; +$string['embed'] = 'Incorpora'; +$string['embedtitle'] = 'Visualizza il codice incorporato per questo contenuto.'; +$string['empty'] = 'Nessun risultato disponibile'; +$string['enableabout'] = 'Pulsante informazioni su H5P'; +$string['enablecopyright'] = 'Pulsante Copyright'; +$string['enabledownload'] = 'Pulsante download'; +$string['enableembed'] = 'Pulsante per incorporare'; +$string['enableframe'] = 'Mostra action bar e frame'; +$string['enablejavascript'] = 'Per favore abilita JavaScript.'; +$string['enablesavecontentstate'] = 'Salva lo stato del contenuto'; +$string['enablesavecontentstate_help'] = 'Salva automaticamente lo stato attuale del contenuto interattivo per ogni utente. Questo permette all\'utente di ritornare al punto in cui ha interrotto la navigazione.'; +$string['externalcommunication'] = 'Comunicazione esterna'; +$string['externalcommunication_help'] = 'Aiuta lo sviluppo di H5P contribuendo con l\'invio di dati anonimi sull\'uso di H5P. Disabilitando questa opzione, impedirai al tuo sito di ricevere gli aggiornamenti più recenti di H5P.Per sapere di più su quali dati sono inviati, vai su h5p.org.'; +$string['filenotimage'] = 'Il file non è un\'immagine.'; +$string['filetypenotallowed'] = 'Tipo di file non consentito.'; +$string['finished'] = 'Completato'; +$string['fullscreen'] = 'Abilita schermo intero'; +$string['gpl'] = 'General Public License v3'; +$string['h5pfile'] = 'File H5P'; +$string['h5ptitle'] = 'Vai su H5P.org per dare un\'occhiata a ulteriori contenuti.'; +$string['hideadvanced'] = 'Nascondi avanzate'; +$string['hvp:addinstance'] = 'Aggiungere una nuova attività H5P'; +$string['hvp:getcachedassets'] = 'Ottieni le risorse dei contenuti h5p memorizzate in cache'; +$string['hvp:getcontent'] = 'Ottieni/visualizza il contenuto del file H5P nel corso'; +$string['hvp:restrictlibraries'] = 'Limita l\'uso di una libreria H5P'; +$string['hvp:savecontentuserdata'] = 'Salva i dati dell\'utente del contenuto H5P'; +$string['hvp:saveresults'] = 'Salva il risultato del contenuto H5P'; +$string['hvp:updatelibraries'] = 'Aggiorna la versione di una libreria H5P'; +$string['hvp:updatesavailable'] = 'Ricevi notifiche degli aggiornamenti disponibili di H5P'; +$string['hvp:userestrictedlibraries'] = 'Utilizza le librerie H5P soggette a restrizioni'; +$string['hvp:viewresults'] = 'Visualizza il risultato del contenuto H5P'; +$string['installedlibraries'] = 'Librerie installate'; +$string['intro'] = 'Introduzione'; +$string['invalidaudioformat'] = 'Formato file audio non valido. Usare mp3 o wav.'; +$string['invalidcontentfolder'] = 'Contenuto della cartella non valido'; +$string['invalidfieldtype'] = 'Tipo di campo non valido.'; +$string['invalidfile'] = '"{$a->%filename}" file non consentito. Sono consentiti solamente file con le seguenti estensioni: {$a->%files-allowed}.'; +$string['invalidimageformat'] = 'Formato del file immagine non valido. Usare jpg, png o gif.'; +$string['invalidlibrary'] = 'Libreria non valida'; +$string['invalidlibraryname'] = 'Nome della libreria non valida: {$a->%name}'; +$string['invalidlibraryoption'] = 'Opzione illegale {$a->%option} in {$a->%library}'; +$string['invalidlibraryproperty'] = 'Impossibile leggere la proprietà {$a->%property} in {$a->%library}'; +$string['invalidmainjson'] = 'Manca un file principale h5p.json valido'; +$string['invalidparameters'] = 'Parametro non valido'; +$string['invalidsemanticsjson'] = 'Un file semantics.json non valido è stato incluso nella libreria {$a->%name}'; +$string['invalidsemanticstype'] = 'Errore interno H5P: tipo di contenuto sconosciuto "{$a->@type}" in semantics. Contenuto in eliminazione!'; +$string['invalidstring'] = 'La stringa inserita non è valida secondo l\'espressione regolare in semantics. (valore: "{$a->%value}", espressione regolare: "{$a->%regexp}")'; +$string['invalidvideoformat'] = 'Formato file video non valido. Usare mp4 o webm.'; +$string['javascriptloading'] = 'Caricamento di JavaScript...'; +$string['libraries'] = 'Librerie H5P'; +$string['librarylistactions'] = 'Azioni'; +$string['librarylistinstancedependencies'] = 'Dipendenze dell\'istanza'; +$string['librarylistinstances'] = 'Istanza'; +$string['librarylistlibrarydependencies'] = 'Dipendenze della libreria'; +$string['librarylistrestricted'] = 'Limitata'; +$string['librarylisttitle'] = 'Titolo'; +$string['license'] = 'Licenza'; +$string['loadingdata'] = 'Dati in caricamento.'; +$string['lookforupdates'] = 'Cerca aggiornamenti di H5P'; +$string['maxscore'] = 'Punteggio massimo'; +$string['messageprovider:updates'] = 'Notifica di aggiornamenti disponibili per H5P'; +$string['missingcontentfolder'] = 'Manca una cartella valida di contenuto'; +$string['missingcontentuserdata'] = 'Errore: impossibile trovare dati dell\'utente'; +$string['missingcoreversion'] = 'Il sistema non ha potuto installare il componente {$a->%component} pacchetto perché richiedere una versione più aggiornata del plugin H5P. Il sito attualmente sta utilizzando la versione {$a->%current}, mentre la versione richiesta è {$a->%required} o superiore. Dovresti aggiornare e riprovare nuovamente.'; +$string['missingdependency'] = 'Manca la dipendenza {$a->@dep} richiesta da {$a->@lib}.'; +$string['missingh5purl'] = 'Manca l\'URL per il file H5P'; +$string['missinglibrary'] = 'Manca la libreria obbligatoria {$a->@library}'; +$string['missinglibraryfile'] = 'Manca il file "{$a->%file}" dalla libreria: "{$a->%name}"'; +$string['missinglibraryjson'] = 'Impossibile trovare il file library.json in un formato json valido per la libreria {$a->%name}'; +$string['missinglibraryproperty'] = 'La proprietà obbligatoria {$a->%property} manca da {$a->%library}'; +$string['missingparameters'] = 'Parametri mancanti'; +$string['modulename'] = 'Contenuto Interattivo'; +$string['modulename_help'] = 'L\'attività H5P consente di creare contenuto interattivo come Video interattivi, +insiemi di domande, domande di tipo Drag and Drop, domande a scelta multipla, Presentazioni e molto altro. + +Oltre ad essere uno strumento per la creazione di contenuto, +H5P consente di riutilizzare e condividere contenuto +grazie alla possibilità di importare ed esportare files in formato H5P. + +Le interazioni con l\'utente e le valutazioni sono tracciate utilizzando xAPI +e sono rese disponibili nel Registro Valutatore di Moodle. + +E\' possibile aggiungere contenuto H5P effettuando l\'upload di un file .h5p. +E\' possibile creare e scaricare file .h5p su h5p.org'; +$string['modulename_link'] = 'https://h5p.org/moodle-more-help'; +$string['modulenameplural'] = 'Contenuto interattivo'; +$string['nextpage'] = 'Pagina successiva'; +$string['nocontent'] = 'Non è stato possibile analizzare il file content.json'; +$string['nocopyright'] = 'Nessuna informazione sul copyright disponibile per questo contenuto.'; +$string['noextension'] = 'Il file caricato non è un pacchetto HTML5 valido (il file non ha l\'estensione .h5p)'; +$string['noh5ps'] = 'Nessun contenuto interattivo disponibile in questo corso.'; +$string['nojson'] = 'Il file h5p.json principale non è valido'; +$string['noparameters'] = 'Nessun parametro'; +$string['noparse'] = 'Non è stato possibile analizzare il file h5p.json principale'; +$string['nopermissiontorestrict'] = 'Non hai i privilegi per limitare le librerie.'; +$string['nopermissiontosavecontentuserdata'] = 'Non hai i privilegi per salvare i dati dell\'utente del contenuto H5P.'; +$string['nopermissiontosaveresult'] = 'Non hai i privilegi per salvare i risultati di questo contenuto.'; +$string['nopermissiontoupgrade'] = 'Non hai i privilegi per eseguire l\'aggiornamento delle librerie.'; +$string['nopermissiontoviewresult'] = 'Non hai i privilegi per visualizzare i risultati di questo contenuto.'; +$string['nosuchlibrary'] = 'Libreria non esistente'; +$string['notapplicable'] = 'N/D'; +$string['nounzip'] = 'Il file caricato non è un pacchetto HTML5 valido (non è stato possibile scompattarlo)'; +$string['noziparchive'] = 'La tua versione di PHP non supporta ZipArchive.'; +$string['onlyupdate'] = 'Aggiorna solo le librerie esistenti'; +$string['options'] = 'Opzioni'; +$string['pd'] = 'Pubblico Dominio'; +$string['pluginadministration'] = 'H5P'; +$string['pluginname'] = 'H5P'; +$string['previouspage'] = 'Pagina precedente'; +$string['removeoldlogentries'] = 'Rimuovi vecchi log di H5P'; +$string['removetmpfiles'] = 'Rimuovi vecchi file temporanei di H5P'; +$string['resizescript'] = 'Includi questo script nel tuo sito se desideri il ridimensionamento dinamico del contenuto incorporato:'; +$string['score'] = 'Punteggio'; +$string['search'] = 'Cerca'; +$string['settings'] = 'Impostazioni H5P'; +$string['showadvanced'] = 'Mostra avanzate'; +$string['size'] = 'Dimensione'; +$string['source'] = 'Fonte'; +$string['startingover'] = 'Ricomincia da capo.'; +$string['thumbnail'] = 'Anteprima'; +$string['title'] = 'Titolo'; +$string['unabletocreatedir'] = 'Impossibile creare la directory.'; +$string['unabletodownloadh5p'] = 'Impossibile scaricare il file H5P'; +$string['unabletogetfieldtype'] = 'Impossibile ottenere il tipo di campo.'; +$string['updatedlibraries'] = '{$a->%old} librerie H5P aggiornate.'; +$string['updatelibraries'] = 'Aggiorna tutte le Librerie'; +$string['updatesavailable'] = 'Ci sono aggiornamenti disponibili per i tuoi tipi di contenuto H5P.'; +$string['updatesavailablemsgpt1'] = 'Ci sono aggiornamenti disponibili per i tipi di contenuto H5P che hai installato nel tuo Moodle.'; +$string['updatesavailablemsgpt3'] = 'L\'ultimo aggiornamento è stato pubblicato il: {$a}'; +$string['updatesavailabletitle'] = 'Nuovi aggiornamenti H5P disponibili'; +$string['upgrade'] = 'Aggiorna H5P'; +$string['upgradebuttonlabel'] = 'Aggiorna'; +$string['upgradedone'] = 'Hai correttamente aggiornato {$a} istanza(e) di contenuto.'; +$string['upgradeerrorcontent'] = 'Impossibile aggiornare il contenuto %id:'; +$string['upgradeerrordata'] = 'Impossibile caricare i dati per la libreria %lib.'; +$string['upgradeheading'] = 'Aggiorna {$a} contenuto'; +$string['upgradeinprogress'] = 'Aggiornamento alla versione %ver...'; +$string['upgrademessage'] = 'Stai per effettuare l\'aggiornamento di {$a} istanza/e di contenuto. Prego selezionare la versione dell\'aggiornamento.'; +$string['upgradenoavailableupgrades'] = 'Non ci sono aggiornamenti per questa libreria.'; +$string['upgradenothingtodo'] = 'Non ci sono istanze di contenuto da aggiornare.'; +$string['upgradereturn'] = 'Ritorna'; +$string['upload'] = 'Carica'; +$string['uploadlibraries'] = 'Carica librerie'; +$string['usebuttonbelow'] = 'Puoi utilizzare il pulsante qui sotto per scaricare automaticamente e aggiornare tutti i tuoi tipi di contenuto.'; +$string['user'] = 'Utente'; +$string['welcomecommunity'] = 'Ci auguriamo che H5P ti piaccia e di coinvolgerti nella nostra comunità attraverso i nostri forums}>forum e chat gitter}>H5P su Gitter'; +$string['welcomecontactus'] = 'Non esitare a contattarci per inviarci un tuo feedback. Prendiamo molto seriamente i feedback e ci dedichiamo a migliorare H5P ogni giorno!'; +$string['welcomegettingstarted'] = 'Prima di iniziare con H5P e Moodle dai un\'occhiata al nostro moodle_tutorial}>tutorial e ai nostri example_content}>esempi di contenuto suH5P.org per trovare l\'ispirazione.あなたの {$a} のメールアドレス宛にメールが送信されました。
メールには登録を確認するための簡単な説明が記載されています。
@@ -638,7 +636,7 @@ $string['emailnotallowed'] = 'これらのドメインのメールアドレスは許可されていません ({$a})'; $string['emailnotfound'] = 'データベース内にメールアドレスが見つかりませんでした。'; $string['emailonlyallowed'] = 'このメールアドレスは許可されている次のドメインに入っていません ({$a})'; -$string['emailpasswordchangeinfo'] = 'こんにちは {$a->firstname} さん +$string['emailpasswordchangeinfo'] = '{$a->firstname} さん 誰か (恐らくあなた) が、「 {$a->sitename} 」 のアカウントで新しいパスワードを請求しました。 @@ -646,11 +644,9 @@ {$a->link} -ほとんどのメールプログラムでは上記部分はクリックできるよう青色にリンク表示されています。 - -動作しない場合はコピー&ペーストを使ってウェブブラウザ上部のアドレス欄にこのアドレスを入力してください。 +ほとんどのメールプログラムではあなたがクリックできる青いリンクとして表示されているはずです。クリックできない場合、あなたのウェブブラウザウィンドウのアドレス欄にアドレスをコピー&ペーストしてください。 -お分かりにならない場合はサイト管理者 {$a->admin} にご連絡ください。'; +分からない場合、サイト管理者 ( {$a->admin}) にご連絡ください。'; $string['emailpasswordchangeinfodisabled'] = 'こんにちは {$a->firstname} さん 誰か (恐らくあなた) が、「 {$a->sitename} 」 のアカウントで新しいパスワードを請求しました。 @@ -662,19 +658,17 @@ 残念ですが、このサイトではパスワードをリセットすることができません。サイト管理者 {$a->admin} にご連絡ください。'; $string['emailpasswordchangeinfosubject'] = '{$a}: パスワード変更情報'; -$string['emailpasswordconfirmation'] = 'こんにちは {$a->firstname} さん +$string['emailpasswordconfirmation'] = '{$a->firstname} さん -誰か (恐らくあなた) が、「 {$a->sitename} 」 のアカウントで新しいパスワードを請求しました。 +誰か (恐らくあなた) が「 {$a->sitename} 」 のアカウントで新しいパスワードを請求しました。 新しいパスワード請求を確認して、新たなパスワードをメールであなた宛に送信するために下記のページをご覧ください: {$a->link} -ほとんどのメールプログラムでは、上記部分はクリックできるよう青色にリンク表示されています。 - -動作しない場合は、コピー&ペーストを使ってウェブブラウザ上部のアドレス欄に、このアドレスを入力してください。 +ほとんどのメールプログラムではあなたがクリックできる青いリンクとして表示されているはずです。クリックできない場合、あなたのウェブブラウザウィンドウのアドレス欄にアドレスをコピー&ペーストしてください。 -お分かりにならない場合は、サイト管理者 {$a->admin} にご連絡ください。'; +分からない場合、サイト管理者 ( {$a->admin}) にご連絡ください。'; $string['emailpasswordconfirmationsubject'] = '{$a}: パスワード変更確認'; $string['emailpasswordconfirmmaybesent'] = '正しいユーザ名またはメールアドレスを入力した場合、あなたにメールが送信されています。
送信されたメールには、パスワードの変更を確認および完了するため、簡単な説明が記載されています。パスワード変更作業が難しい場合、サイト管理者にご連絡ください。
'; @@ -1047,7 +1041,7 @@ $string['maincoursepage'] = 'メインコースページ'; $string['makeafolder'] = 'フォルダを作成する'; $string['makeeditable'] = '「 {$a} 」をサーバ上 (例 apache) で編集可能にした場合、あなたはこのファイルを直接このページで編集することができます。'; -$string['makethismyhome'] = 'このページをマイデフォルトホームページにする'; +$string['makethismyhome'] = 'このページを私のデフォルトホームページにする'; $string['manageblocks'] = 'ブロック'; $string['managecategorythis'] = 'このカテゴリを管理する'; $string['managecourses'] = 'コースを管理する'; @@ -1198,11 +1192,11 @@ $string['newpassword'] = '新しいパスワード'; $string['newpasswordfromlost'] = '注意: 喪失パスワードリカバリ処理の一環として送信される2通のメールの2番目に、あなたの現在のパスワードが送信されます。この画面を続ける前に、あなたの新しいパスワードが記載されたメールを受信したことを確認してください。'; $string['newpassword_help'] = '新しいパスワードを入力、または現在のパスワードを使用する場合は空白にしてください。'; -$string['newpasswordtext'] = 'こんにちは {$a->firstname} さん +$string['newpasswordtext'] = '{$a->firstname} さん 「 {$a->sitename} 」のパスワードリセットおよび仮パスワードの作成が完了しました。 -あなたのログイン情報は下記のとおりです。 +あなたのログイン情報は以下のとおりです。 ユーザ名: username: {$a->username} パスワード: password: {$a->newpassword} @@ -1210,7 +1204,7 @@ {$a->link} -ほとんどのメールプログラムでは、上記部分はクリックできるよう青色にリンク表示されています。動作しない場合は、コピー&ペーストを使ってウェブブラウザ上部のアドレス欄に、このアドレスを入力してください。 +ほとんどのメールプログラムではあなたがクリックできる青いリンクとして表示されているはずです。クリックできない場合、あなたのウェブブラウザウィンドウのアドレス欄にアドレスをコピー&ペーストしてください。 「 {$a->sitename} 」の管理者よりご挨拶でした。 {$a->signoff}'; @@ -1223,18 +1217,18 @@ $string['newsitemsnumber_help'] = 'この設定ではコースページの最新ニュースブロックに何件の最新項目を表示するか設定します。ゼロを設定した場合、最新ニュースブロックは表示されません。'; $string['newuser'] = '新しいユーザ'; $string['newusernewpasswordsubj'] = '新しいユーザアカウント'; -$string['newusernewpasswordtext'] = 'こんにちは {$a->firstname} さん +$string['newusernewpasswordtext'] = '{$a->firstname} さん -あなたの新しいアカウントが「 {$a->sitename} 」に作成され、新しい一時的なパスワードが発行されました。 +あなたの新しいアカウントが「 {$a->sitename} 」に作成されて新しい一時パスワードが発行されました。 -あなたの現在のログイン情報は下記のとおりです: +あなたの現在のログイン情報は以下のとおりです: ユーザ名: {$a->username} パスワード: {$a->newpassword} (最初にログインしたときにパスワードを変更してください) {$a->sitename} で作業を始めるには {$a->link} にログインしてください。 -ほとんどのメールプログラムでは、上記部分はクリックできるよう青色にリンク表示されています。動作しない場合は、コピー&ペーストを使ってウェブブラウザ上部のアドレス欄に、このアドレスを入力してください。 +ほとんどのメールプログラムではあなたがクリックできる青いリンクとして表示されているはずです。クリックできない場合、あなたのウェブブラウザウィンドウのアドレス欄にアドレスをコピー&ペーストしてください。 「 {$a->sitename} 」の管理者よりご挨拶でした。 {$a->signoff}'; @@ -1272,7 +1266,7 @@ $string['norecentactivity'] = '最近の活動はありません。'; $string['noreplybouncemessage'] = 'あなたはno-replyメールアドレスに返信しました。フォーラムの投稿に返信したい場合、メール返信する代わりにフォーラム {$a} で返信を投稿してください。 -あなたのメール本文は下記のとおりです:'; +あなたのメール本文は以下のとおりです:'; $string['noreplybouncesubject'] = '{$a} -宛先不明メール'; $string['noreplyname'] = 'このメールアドレス宛に返信しないでください'; $string['noresetrecord'] = 'リセットリクエストのレコードがありません。新しいパスワードリセットリクエストを実行してください。'; diff --git a/html/moodle2/langpacks/ja/portfolio.php b/html/moodle2/langpacks/ja/portfolio.php index 7edb736dab..bc50160ced 100644 --- a/html/moodle2/langpacks/ja/portfolio.php +++ b/html/moodle2/langpacks/ja/portfolio.php @@ -93,7 +93,7 @@ 設定が正しくないため、いくつかのポートフォリオプラグインが自動的に無効にされました。これは現在のところ、ユーザがこれらのポートフォリオにコンテンツをエクスポートできないことを意味します。 -無効にされたポートフォリオインスタンスのリストは下記のとおりです: +無効にされたポートフォリオインスタンスのリストは以下のとおりです: {$a->textlist} diff --git a/html/moodle2/langpacks/ja/qbehaviour_deferredcbm.php b/html/moodle2/langpacks/ja/qbehaviour_deferredcbm.php index aa56bd7bd9..6132d17964 100644 --- a/html/moodle2/langpacks/ja/qbehaviour_deferredcbm.php +++ b/html/moodle2/langpacks/ja/qbehaviour_deferredcbm.php @@ -43,7 +43,7 @@ $string['certainty-1'] = '分かりません'; $string['certainty2'] = 'C=2 (中間: >67%)'; $string['certainty3'] = 'C=3 (かなり確か: >80%)'; -$string['certainty_help'] = '確信度ベースの評定の場合、あなたの答えがどのくらい信頼できるか指定する必要があります。利用可能なレベルは下記のとおりです: +$string['certainty_help'] = '確信度ベースの評定の場合、あなたの答えがどのくらい信頼できるか指定する必要があります。利用可能なレベルは以下のとおりです: 確信度レベル | C=1 (不確か) | C=2 (中間) | C=3 (かなり確か) ------------------- | ------------ | --------- | ---------------- diff --git a/html/moodle2/langpacks/ja/quiz.php b/html/moodle2/langpacks/ja/quiz.php index ac7589bfbc..d60cf71d0d 100644 --- a/html/moodle2/langpacks/ja/quiz.php +++ b/html/moodle2/langpacks/ja/quiz.php @@ -271,7 +271,7 @@ $string['editcatquestions'] = 'カテゴリ問題を編集する'; $string['editingquestion'] = '問題の編集'; $string['editingquiz'] = '小テストの編集'; -$string['editingquiz_help'] = '小テスト作成におけるメインコンセプトは下記のとおりです: +$string['editingquiz_help'] = '小テスト作成におけるメインコンセプトは以下のとおりです: * 小テストは1ページまたはそれ以上のページに問題を含みます。 * 問題バンクにはすべての問題がカテゴリにより整理されて保存されます。 diff --git a/html/moodle2/langpacks/ja/repository_skydrive.php b/html/moodle2/langpacks/ja/repository_skydrive.php index 01e7eb3816..4c9e1e6a05 100644 --- a/html/moodle2/langpacks/ja/repository_skydrive.php +++ b/html/moodle2/langpacks/ja/repository_skydrive.php @@ -28,9 +28,9 @@ $string['cachedef_foldername'] = 'フォルダ名キャッシュ'; $string['clientid'] = 'クライアントID'; $string['configplugin'] = 'Microsoft OneDriveを設定する'; -$string['oauthinfo'] = 'このプラグインを使用するためには、あなたのサイトをMicrosoftに登録する必要があります。
+$string['oauthinfo'] = 'このプラグインを使用するためには、あなたのサイトをMicrosoftに登録する必要があります。
-登録処理の一環として、あなたは「リダイレクトドメイン」として、次のURLを入力する必要があります:
+登録処理の一環として、あなたは「リダイレクトドメイン」として次のURLを入力する必要があります:
{$a->callbackurl}
diff --git a/html/moodle2/langpacks/ja/tool_messageinbound.php b/html/moodle2/langpacks/ja/tool_messageinbound.php index 21b798c7d8..e77d4795e8 100644 --- a/html/moodle2/langpacks/ja/tool_messageinbound.php +++ b/html/moodle2/langpacks/ja/tool_messageinbound.php @@ -73,11 +73,11 @@ $string['messageinboundmailboxconfiguration_desc'] = 'ユーザがメッセージを送信する場合、「address+data@example.com」 のようなフォーマットで生成されたアドレスに送ります。信頼できるアドレスをMoodleから生成するには通常あなたが「@」記号の前に使用するアドレス、および「@」記号の後に使用するドメインを分けて指定してください。例えば例のメールボックス名は「address」、そしてメールドメインは「example.com」となります。この目的のためにあなたは専用のメールアカウントを使用すべきです。'; $string['messageprocessingerror'] = 'あなたは最近Moodleに件名「 {$a->subject} 」のメールを送信しましたが、残念なことに、処理されませんでした。 -エラー詳細は下記のとおりです。 +エラー詳細は以下のとおりです。 {$a->error}'; -$string['messageprocessingerrorhtml'] = 'あなたは最近Moodleに件名「 {$a->subject} 」のメールを送信しましたが、残念なことに、処理されませんでした。
-エラー詳細は下記のとおりです。
+$string['messageprocessingerrorhtml'] = 'あなたは最近Moodleに件名「 {$a->subject} 」のメールを送信しましたが、残念なことに処理されませんでした。
+エラー詳細は以下のとおりです。
{$a->error}
'; $string['messageprocessingfailed'] = 'あなたが送信した件名「 {$a->subject} 」のメールを処理できませんでした。エラーメッセージは次のとおりです: {$a->message}'; $string['messageprocessingfailedunknown'] = 'あなたが送信した件名「 {$a->subject} 」のメールを処理できませんでした。詳細情報に関して、あなたのシステム管理者にご連絡ください。'; diff --git a/html/moodle2/langpacks/ja/tool_uploadcourse.php b/html/moodle2/langpacks/ja/tool_uploadcourse.php index ef19711f4c..904762a184 100644 --- a/html/moodle2/langpacks/ja/tool_uploadcourse.php +++ b/html/moodle2/langpacks/ja/tool_uploadcourse.php @@ -120,7 +120,7 @@ $string['updatewithdataonly'] = 'CSVデータのみで更新する'; $string['updatewithdataordefaults'] = 'CSVデータおよびデフォルトで更新する'; $string['uploadcourses'] = 'コースをアップロードする'; -$string['uploadcourses_help'] = 'コースはテキストファイル経由でアップロードすることができます。ファイルのフォーマットは下記のとおりです: +$string['uploadcourses_help'] = 'コースはテキストファイル経由でアップロードすることができます。ファイルのフォーマットは以下のとおりです: * ファイルのそれぞれの行に1レコードを含みます。 * それぞれのレコードはカンマ (または他のデリミタ) で区切られた一連のデータです。 diff --git a/html/moodle2/langpacks/ja/tool_xmldb.php b/html/moodle2/langpacks/ja/tool_xmldb.php index 62518a2ba1..cbec998fec 100644 --- a/html/moodle2/langpacks/ja/tool_xmldb.php +++ b/html/moodle2/langpacks/ja/tool_xmldb.php @@ -57,9 +57,9 @@ 矛盾したデフォルト値の調査を実行する前、あなたのMoodleリリースを最新のもの (+バージョン) にバージョンアップすることを強くお勧めします。 この機能はDBに対していかなる処理も実行しません (読むだけです)。そのため、いつでも安全に実行することが可能です。'; -$string['confirmcheckforeignkeys'] = 'この機能はinstall.xml定義で定義された外部キーに関して潜在的な違反を調査します (現在、Moodleはデータベースに制約された外部キーを生成しないため、無効なデータが存在する可能性があります)。 +$string['confirmcheckforeignkeys'] = 'この機能はinstall.xml定義で定義された外部キーの潜在的な違反を調査します (現在、Moodleはデータベースに制約された外部キーを生成しないため、無効なデータが存在する可能性があります)。 -不明なインデックス調査を実行する前、あなたのMoodleリリースを最新のもの (+バージョン) にバージョンアップすることを強くお勧めします。 +外部キーの潜在的な違反調査を実行する前にあなたのMoodleリリースを最新 (+バージョン) にすることを強くお勧めします。 この機能はDBに対していかなる処理も実行しません (読むだけです)。そのため、いつでも安全に実行することが可能です。'; $string['confirmcheckindexes'] = 'この機能は、あなたのMoodleサーバで潜在的に不明なインデックスを調査し、すべてを最新の状態にするためのSQL文を自動的に生成します (実行ではありません!)。 diff --git a/html/moodle2/langpacks/nl/admin.php b/html/moodle2/langpacks/nl/admin.php index 8b5dbaa7d9..c0f2f77e54 100644 --- a/html/moodle2/langpacks/nl/admin.php +++ b/html/moodle2/langpacks/nl/admin.php @@ -693,7 +693,7 @@ $string['maxeditingtime'] = 'Maximale tijd om berichten te bewerken'; $string['maxtimelimit'] = 'Maximum tijdslimiet'; $string['maxtimelimit_desc'] = 'Geef hier een waarde in seconden om de PHP uitvoertijd die Moodle toestaat zonder dat er iets getoond wordt op het scherm. 0 betekent dat de standaardbeperkingen gebruikt worden. Als je een front-endserver hebt met zijn eigen tijdslimiet, zet deze waarde dan lager, zodat je PHP-fouten in de logs krijgt. Niet van toepassing op CLI-scripts.'; -$string['maxusersperpage'] = 'Maximaal aantal gebruikers per pagian'; +$string['maxusersperpage'] = 'Maximaal aantal gebruikers per pagina'; $string['mbstringrecommended'] = 'Als je site andere talen dan die uit de Latin1 tekenset gebruikt, dan is het installeren van de optionele MBSTRING library ten zeerste aangeraden om de performantie van de site te verhogen.'; $string['mediapluginavi'] = 'Gebruik .avi-filter'; $string['mediapluginflv'] = 'Gebruik .flv-filter'; @@ -749,7 +749,7 @@ $string['navexpandmycourses'] = 'Toon mijn cursussen uitgeklapt op mijn startpagina'; $string['navexpandmycourses_desc'] = 'Indien ingeschakeld, worden de cursussen uitgeklapt getoond in het navigatieblok op je startpagina.'; $string['navigationupgrade'] = 'Deze upgrade introduceert twee nieuwe navigatieblokken die volgende blokken zal vervangen: Beheer, cursussen, activiteiten en deelnemers. Als je op deze blokken speciale rechten had toegepast, dan moet je controleren of alles wel werkt zoals je wil.'; -$string['navshowallcourses'] = 'Toon alle curssusen'; +$string['navshowallcourses'] = 'Toon alle cursussen'; $string['navshowcategories'] = 'Toon cursuscategorieën'; $string['navshowfrontpagemods'] = 'Toon startpagina-activiteiten in de navigatie'; $string['navshowfrontpagemods_help'] = 'Indien ingeschakeld worden activiteiten op de startpagina getoond in de navigatie onder site pagina\'s'; diff --git a/html/moodle2/langpacks/nl/hvp.php b/html/moodle2/langpacks/nl/hvp.php new file mode 100644 index 0000000000..c393cd4ddb --- /dev/null +++ b/html/moodle2/langpacks/nl/hvp.php @@ -0,0 +1,245 @@ +. + +/** + * Strings for component 'hvp', language 'nl', branch 'MOODLE_31_STABLE' + * + * @package hvp + * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +$string['action'] = 'Handeling'; +$string['addedandupdatelibraries'] = '{$a->%new} nieuwe H5P bibliotheken toegevoegd en {$a->%old} bijgewerkt.'; +$string['addednewlibraries'] = '{$a->%new} nieuwe H5P bibliotheken toegevoegd.'; +$string['addlibraries'] = 'Bibliotheken toevoegen'; +$string['ajaxfailed'] = 'Gegevens laden mislukt.'; +$string['attribution'] = 'Naamsvermelding 4.0'; +$string['attributionnc'] = 'Naamsvermelding-NietCommercieel 4.0'; +$string['attributionncnd'] = 'Naamsvermelding-NietCommercieel-GeenAfgeleideWerken 4.0'; +$string['attributionncsa'] = 'Naamsvermelding-NietCommercieel-GelijkDelen 4.0'; +$string['attributionnd'] = 'Naamsvermelding-GeenAfgeleideWerken 4.0'; +$string['attributionsa'] = 'Naamsvermelding-GelijkDelen 4.0'; +$string['author'] = 'Auteur'; +$string['availableversion'] = 'Beschikbare update'; +$string['cancellabel'] = 'Annuleren'; +$string['close'] = 'Sluiten'; +$string['confirmdialogbody'] = 'Bevestig dat je wilt doorgaan. Deze actie kan niet worden teruggedraaid.'; +$string['confirmdialogheader'] = 'Handeling bevestigen'; +$string['confirmlabel'] = 'Bevestigen'; +$string['contentchanged'] = 'Deze inhoud is gewijzigd sinds de laatste keer dat je hem hebt gebruikt.'; +$string['contentstatefrequency'] = 'Frequentie van opslaan van de inhoud'; +$string['contentstatefrequency_help'] = 'In seconden, hoe vaak je wilt dat de gebruiker zijn werk automatisch opslaat. Verhoog deze waarde als er problemen zijn met Ajax-verzoeken.'; +$string['copyright'] = 'Rechten van gebruik'; +$string['copyrightinfo'] = 'Copyrightinformatie'; +$string['copyrightstring'] = 'Copyright'; +$string['copyrighttitle'] = 'Bekijk de copyrightinformatie voor deze content.'; +$string['couldnotcopy'] = 'Kan bestand niet kopiëren.'; +$string['couldnotsave'] = 'Kan bestand niet opslaan.'; +$string['create'] = 'Maak'; +$string['currentpage'] = 'Pagina $current van $total'; +$string['currentversion'] = 'Huidige versie'; +$string['disablefileextensioncheck'] = 'Bestandsextensie controleren uitschakelen'; +$string['disablefileextensioncheckwarning'] = 'Waarschuwing! Het uitschakelen van het controleren bestandsextensies kan gevolgen hebben voor de beveiliging omdat hierdoor php bestanden kunnen worden geüploaded. Dat kan ervoor zorgen dat hackers kwaadaardige code kunnen uitvoeren op je site. Zorg ervoor dat je weet wat je uploadt.'; +$string['disablefullscreen'] = 'Volledig scherm uitschakelen'; +$string['displayoptionalwaysshow'] = 'Altijd tonen'; +$string['displayoptionauthoroff'] = 'Gecontroleerd door auteur, standaard uitgeschakeld'; +$string['displayoptionauthoron'] = 'Gecontroleerd door auteur, standaard ingeschakeld'; +$string['displayoptionnevershow'] = 'Nooit tonen'; +$string['displayoptionpermissions'] = 'Alleen tonen wanneer de gebruiker permissie heeft H5P te exporteren'; +$string['displayoptions'] = 'Weergaveopties'; +$string['download'] = 'Downloaden'; +$string['downloadandupdate'] = 'Downloaden & Updaten'; +$string['downloadtitle'] = 'Deze inhoud downloaden als H5P bestand.'; +$string['editor'] = 'Editor'; +$string['embed'] = 'Inbedden'; +$string['embedtitle'] = 'Bekijk de inbedcode voor deze inhoud.'; +$string['empty'] = 'Geen resultaten beschikbaar'; +$string['enableabout'] = 'Over H5P knop'; +$string['enablecopyright'] = 'Copyright knop'; +$string['enabledlrscontenttypes'] = 'LRS afhankelijke inhoudstypes inschakelen'; +$string['enabledlrscontenttypes_help'] = 'Dit maakt het mogelijk inhoudstypes te gebruiken die voor correcte werking afhankelijk zijn van een Learning Record Store, zoals het inhoudstype Vragenlijst.'; +$string['enabledownload'] = 'Download-knop'; +$string['enableembed'] = 'Inbedden-knop'; +$string['enableframe'] = 'Toon activiteitenbalk en frame'; +$string['enablejavascript'] = 'JavaScript moet ingeschakeld zijn.'; +$string['enablesavecontentstate'] = 'Inhoudstoestand opslaan'; +$string['enablesavecontentstate_help'] = 'Automatisch de huidige toestand van interactieve inhoud opslaan voor iedere gebruiker. Dit betekent dat de gebruiker kan verdergaan waar hij was.'; +$string['externalcommunication'] = 'Externe communicatie'; +$string['externalcommunication_help'] = 'Draag bij aan de ontwikkeling van H5P door anonieme gebruiksgegevens aan te leveren. Dit uitschakelen zorgt ervoor dat je site de nieuwste H5P updates niet meer ophaalt. Lees hier welke gegevens verzameld worden op h5p.org.'; +$string['filenotimage'] = 'Bestand is geen afbeelding'; +$string['filetypenotallowed'] = 'Bestand is niet toegestaan'; +$string['finished'] = 'Klaar'; +$string['fullscreen'] = 'Volledig scherm'; +$string['gpl'] = 'General Public License v3'; +$string['h5pfile'] = 'H5P bestand'; +$string['h5ptitle'] = 'Ga naar H5P.org om nog meer coole inhoud te ontdekken.'; +$string['hideadvanced'] = 'Geavanceerd verbergen'; +$string['hvp:addinstance'] = 'Een nieuwe H5P activiteit toevoegen'; +$string['hvp:getcachedassets'] = 'Gecachet H5P inhoud ophalen'; +$string['hvp:getcontent'] = 'Inhoud van H5P bestand in cursus ophalen/bekijken'; +$string['hvp:getexport'] = 'Exportbestand van H5P in cursus ophalen'; +$string['hvp:restrictlibraries'] = 'Een H5P bibliotheek beperken'; +$string['hvp:savecontentuserdata'] = 'H5P inhoud gebruikersgegevens opslaan'; +$string['hvp:saveresults'] = 'Resultaat opslaan voor H5P inhoud'; +$string['hvp:updatelibraries'] = 'De versie van een H5P bibliotheek updaten'; +$string['hvp:updatesavailable'] = 'Bericht ontvangen wanneer er H5P updates beschikbaar zijn'; +$string['hvp:userestrictedlibraries'] = 'Gebruik beperkte H5P bibliotheken'; +$string['hvp:viewresults'] = 'Resultaat bekijken voor H5P inhoud'; +$string['installedlibraries'] = 'Geïnstalleerde bibliotheken'; +$string['intro'] = 'Introductie'; +$string['invalidaudioformat'] = 'Ongeldig audiobestandsformat. Gebruik mp3 of wav.'; +$string['invalidcontentfolder'] = 'Ongeldige inhoudsmap'; +$string['invalidfieldtype'] = 'Ongeldig veldtype'; +$string['invalidfile'] = 'Bestand "{a->%filename}" is niet toegestaan. Alleen bestanden met de volgende extensies zijn toegestaan: {$a-%files-allowed}.'; +$string['invalidimageformat'] = 'Ongeldig afbeeldingsbestandsformat. Gebruik jpg, png of gif.'; +$string['invalidlanguagefile'] = 'Ongeldig taalbestand {$a->%file} in library {$a->%library}'; +$string['invalidlanguagefile2'] = 'Ongeldig taalbestand {$a->%languageFile} is toegevoegd aan de library {$a->%name}'; +$string['invalidlibrary'] = 'De H5P bibliotheek {$a->library} gebruikt in de content is ongeldig'; +$string['invalidlibrarydata'] = 'Ongeldige data voor {$a->%property} in {$a-%library}'; +$string['invalidlibrarydataboolean'] = 'Ongeldige data voor {$a->%property} in {$a-%library}. Boolean werd verwacht.'; +$string['invalidlibraryname'] = 'Ongeldige bibliotheeknaam: {$a->%name}'; +$string['invalidlibraryoption'] = 'Ongeldige optie {$a-%option} in {$a->%library}'; +$string['invalidlibraryproperty'] = 'Kan eigenschap {$a->%property} in {$a->%library} niet lezen'; +$string['invalidmainjson'] = 'Een geldig h5p.json hoofdbestand ontbreekt'; +$string['invalidmultiselectoption'] = 'Ongeldige geselecteerde optie in multi-select.'; +$string['invalidparameters'] = 'Ongeldige parameters'; +$string['invalidselectoption'] = 'Ongeldige gekozen optie in select.'; +$string['invalidsemanticsjson'] = 'Ongeldig semantics.json bestand is opgenomen in de library {$a->%name}'; +$string['invalidsemanticstype'] = 'Interne H5P fout: onbekend inhoudstype "{$a->@type}" in semantics. Verwijder inhoud!'; +$string['invalidstring'] = 'Geleverde string is niet geldig volgens regexp in semantics. (waarde: "{$a->%value}", regexp: \\"{$a->%regexp}"\\)'; +$string['invalidtoken'] = 'Ongeldig beveiligingstoken.'; +$string['invalidvideoformat'] = 'Ongeldig videobestandsformat. Gebruik mp4 of webm.'; +$string['javascriptloading'] = 'Wachten op JavaScript...'; +$string['libraries'] = 'H5P bibliotheken'; +$string['librarydirectoryerror'] = 'De naam van de bibliothekenmap moet overeenkomen met machineName of machineName-majorVersion.minorVersion (uit library.json). (Directory: {$a->%directoryName}, machineName: {$a->%machineName}, majorVersion: {$a->%majorVersion}, minorVersion: {$a->%minorVersion})'; +$string['librarylistactions'] = 'Handelingen'; +$string['librarylistinstancedependencies'] = 'Afhankelijkheden van instantie'; +$string['librarylistinstances'] = 'Instanties'; +$string['librarylistlibrarydependencies'] = 'Afhankelijkheden van bibliotheek'; +$string['librarylistrestricted'] = 'Beperkt'; +$string['librarylisttitle'] = 'Titel'; +$string['license'] = 'Licentie'; +$string['loadingdata'] = 'Gegevens laden.'; +$string['lookforupdates'] = 'Zoek H5P updates'; +$string['maximumgrade'] = 'Maximaal cijfer'; +$string['maximumgradeerror'] = 'Voor een geldige positief heel getal in als maximale punten voor deze activiteit'; +$string['maxscore'] = 'Maximum score'; +$string['messageprovider:updates'] = 'Melding van beschikbare H5P updates'; +$string['missingcontentfolder'] = 'Een geldige inhoudsmap ontbreekt'; +$string['missingcontentuserdata'] = 'Fout: Kan geen inhoudsgebruikersdata vinden'; +$string['missingcoreversion'] = 'Het systeem kon het onderdeel {$a->%component} van het pakket niet installeren. Er is een nieuwere versie van de H5P plugin vereist. Deze site draait momenteel versie {$a-%current}, terwijl de vereiste versie {$a->%required} of hoger is. Gelieve te upgraden en probeer het daarna opnieuw.'; +$string['missingdependency'] = 'Ontbrekende afhankelijkheid {$a->@dep} vereist door {$a->@lib}.'; +$string['missingh5purl'] = 'Ontbrekende URL voor H5P bestand'; +$string['missinglibrary'] = 'Ontbrekende vereiste bibliotheek {$a->@library}'; +$string['missinglibraryfile'] = 'Het bestand "{$a->%file}" ontbreekt in bibliotheek: "{$a->%name}"'; +$string['missinglibraryjson'] = 'Kan bestand library.json met geldig json format voor bibliotheek {$a->%name} niet vinden'; +$string['missinglibraryproperty'] = 'De vereiste eigenschap {$a->%property} ontbreekt in {$a->%library}'; +$string['missingmbstring'] = 'De mbstring PHP extensie is niet geladen. H5P heeft deze nodig om correct te functioneren'; +$string['missingparameters'] = 'Ontbrekende parameters'; +$string['missinguploadpermissions'] = 'Let erop dat de bibliotheken kunnen bestaan in het bestand dat je hebt geüpload, maar dat je geen nieuwe bibliotheken mag uploaden. Neem hiervoor contact op met de sitebeheerder.'; +$string['modulename'] = 'Interactieve inhoud'; +$string['modulename_help'] = 'Met de H5P activiteitenmodule maak je interactieve inhoud zoals bijvoorbeeld Interactieve Video, Question Sets, Drag and Drop vragen, Multiple Choice vragen, Presentaties en nog veel meer. + +Niet alleen is H5P een authoring tool voor rijke inhoud, maar kun je er ook H5P bestanden mee importeren en exporteren om inhoud eenvoudig te kunnen delen en hergebruiken. + +Gebruikersinteracties en scores worden opgeslagen met behulp van xAPI en zijn beschikbaar via het Moodle Cijferboek. + +Je kunt interactieve H5P-inhoud toevoegen door een .h5p bestand te uploaden. Je kunt .h5p bestanden maken en downloaden op H5P.org.'; +$string['modulenameplural'] = 'Interactieve inhoud'; +$string['nextpage'] = 'Volgende pagina'; +$string['nocontent'] = 'Kan het bestand content.json niet vinden of parsen.'; +$string['nocopyright'] = 'Er is geen copyrightinformatie beschikbaar voor deze inhoud.'; +$string['nodata'] = 'Er is geen data beschikbaar die overeenkomt met jouw criteria.'; +$string['noextension'] = 'Het bestand dat je hebt geüpload is geen geldig HTML5 pakket (het heeft niet de .h5p bestandsextensie)'; +$string['noh5ps'] = 'Er is geen interactieve inhoud beschikbaar voor deze cursus.'; +$string['nojson'] = 'Het hoofdbestand h5p.json is niet geldig'; +$string['noparameters'] = 'Geen parameters'; +$string['noparse'] = 'Kan het hoofdbestand h5p.json niet parsen.'; +$string['nopermissiontorestrict'] = 'Je hebt geen toestemming om bibliotheken te beperken.'; +$string['nopermissiontosavecontentuserdata'] = 'Je hebt geen toestemming om gebruikersdata van inhoud op te slaan.'; +$string['nopermissiontosaveresult'] = 'Je hebt geen toestemming om resultaten voor deze cinhoud op te slaan.'; +$string['nopermissiontoupgrade'] = 'Je hebt geen toestemming om bibliotheken te upgraden.'; +$string['nopermissiontoviewresult'] = 'Je hebt geen toestemming om de resultaten voor deze inhoud te bekijken.'; +$string['nosuchlibrary'] = 'Er is geen bibliotheek met die naam'; +$string['notapplicable'] = 'N.v.t.'; +$string['nounzip'] = 'Het bestand dat je hebt geüpload is geen geldig HTML5 pakket (We kunnen het niet unzippen)'; +$string['noziparchive'] = 'Je PHP versie ondersteunt ZipArchive niet.'; +$string['onlyupdate'] = 'Alleen bestaande bibliotheken updaten'; +$string['options'] = 'Opties'; +$string['pd'] = 'Publiek domein'; +$string['pddl'] = 'Publiek domein toewijzing en licentie'; +$string['pdm'] = 'Publiek domein merkteken'; +$string['pluginadministration'] = 'H5P'; +$string['pluginname'] = 'H5P'; +$string['previouspage'] = 'Vorige pagina'; +$string['removeoldlogentries'] = 'Oude H5P log entries verwijderen'; +$string['removetmpfiles'] = 'Oude tijdelijke H5P bestanden verwijderen'; +$string['resizescript'] = 'Neem dit script op je website op als je wilt dat de weergave van de inhoud zich aanpast aan de schermgrootte;'; +$string['score'] = 'Score'; +$string['search'] = 'Zoeken'; +$string['settings'] = 'H5P Instellingen'; +$string['showadvanced'] = 'Toon geavanceerd'; +$string['size'] = 'Grootte'; +$string['source'] = 'Bron'; +$string['startingover'] = 'Je zult opnieuw beginnen.'; +$string['thumbnail'] = 'Miniatuur'; +$string['title'] = 'Titel'; +$string['unabletocreatedir'] = 'Kon directory niet aanmaken'; +$string['unabletodownloadh5p'] = 'Kon H5P bestand niet downloaden'; +$string['unabletogetfieldtype'] = 'Kon veldtype niet ophalen'; +$string['undisclosed'] = 'Niet onthuld'; +$string['updatedlibraries'] = '{$a->%old} H5P bibliotheken geüpdatet.'; +$string['updatelibraries'] = 'Alle bibliotheken updaten.'; +$string['updatesavailable'] = 'Er zijn updates beschikbaar voor je H5P-inhoudstypes.'; +$string['updatesavailablemsgpt1'] = 'Er zijn updates beschikbaar voor de H5P-inhoudstypes die je hebt geïnstalleerd op je Moodle site.'; +$string['updatesavailablemsgpt2'] = 'Ga naar de pagina via de link hieronder voor verdere instructies.'; +$string['updatesavailablemsgpt3'] = 'De laatste update is gereleased op: {$a}'; +$string['updatesavailablemsgpt4'] = 'Je draait een versie van: {$a}'; +$string['updatesavailabletitle'] = 'Er zijn nieuwe H5P upgrades beschikbaar'; +$string['upgrade'] = 'H5P upgraden'; +$string['upgradebuttonlabel'] = 'Upgraden'; +$string['upgradedone'] = 'Je hebt succesvol {$a} inhoudsinstanties geüpgraded.'; +$string['upgradeerror'] = 'Er is een fout opgetreden bij het verwerken van de parameters:'; +$string['upgradeerrorcontent'] = 'Kan inhoud %id niet upgraden:'; +$string['upgradeerrordata'] = 'Kan geen data laden van bibliotheek %lib.'; +$string['upgradeerrorparamsbroken'] = 'Parameters verbroken.'; +$string['upgradeerrorscript'] = 'Kan geen upgrades script laden voor %lib.'; +$string['upgradeheading'] = '{$a} inhoud upgraden'; +$string['upgradeinprogress'] = 'Upgraden naar %ver...'; +$string['upgradeinvalidtoken'] = 'Fout: Ongeldig beveiligingstoken'; +$string['upgradelibrarycontent'] = 'Bibliotheekinhoud upgraden'; +$string['upgradelibrarymissing'] = 'Fout: Je bibliotheek ontbreekt!'; +$string['upgrademessage'] = 'Je gaat {$a} inhoudsinstantie(s) upgraden. Selecteer upgrade-versie.'; +$string['upgradenoavailableupgrades'] = 'Er zijn geen upgrades beschikbaar voor deze bibliotheek.'; +$string['upgradenothingtodo'] = 'Er zijn geen inhoudsinstanties om te upgraden.'; +$string['upgradereturn'] = 'Terug'; +$string['upload'] = 'Uploaden'; +$string['uploadlibraries'] = 'Bibliotheken uploaden'; +$string['usebuttonbelow'] = 'Je kunt deze knop gebruiken om automatisch al je inhoudstypes te downloaden en upgraden.'; +$string['user'] = 'Gebruiker'; +$string['welcomecommunity'] = 'We hopen dat je H5P met plezier gebruikt en betrokken raakt bij onze almaar groeiende community via onze forums}>forums en chatroom gitter}H5P op Gitter'; +$string['welcomecontactus'] = 'Als je feedback hebt, aarzel dan niet op contact met ons op te nemen. Wij nemen feedback erg serieus en gaan ervoor H5P iedere dag beter te maken!'; +$string['welcomegettingstarted'] = 'Neem om te beginnen met H5P en Moodle een kijkje bij onze moodle_tutorial}>tutorial en bekijk de example_content}>voorbeelden op H5P.org voor inspiratie.