diff --git a/swad_changelog.h b/swad_changelog.h
index 03b54ace3..7305fdadd 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -606,10 +606,11 @@ TODO: Fix bug: error al enviar un mensaje a dos recipientes, error on duplicate
TODO: Attach pdf files in multimedia.
*/
-#define Log_PLATFORM_VERSION "SWAD 21.98.5 (2022-06-21)"
+#define Log_PLATFORM_VERSION "SWAD 21.98.6 (2022-06-21)"
#define CSS_FILE "swad21.97.1.css"
#define JS_FILE "swad21.97.4.js"
/*
+ Version 21.98.6: Jun 21, 2022 Some messages translated. (322554 lines)
Version 21.98.5: Jun 21, 2022 Some messages translated. (322554 lines)
Version 21.98.4: Jun 21, 2022 Some messages translated. (322555 lines)
Version 21.98.3: Jun 20, 2022 Some messages translated. (322537 lines)
diff --git a/swad_text.c b/swad_text.c
index 912b79346..a9b276bbb 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -9472,13 +9472,13 @@ const char *Txt_Do_you_really_want_to_remove_the_exam_X = // Warning: it is very
const char *Txt_Do_you_really_want_to_remove_the_field_X_from_the_records_of_Y_Z_ = // Warning: it is very important to include two %s and one %u in the following sentences
#if L==1 // ca
- "¿Realmente desea eliminar el campo %s"
- " de las fichas de %s"
- " (dicho campo está relleno en las fichas de %u estudiante(s))?"; // Necessita traducció
+ "Realment voleu eliminar el camp %s"
+ " dels registres de %s"
+ " (aquest camp s'omple amb els registres de %u estudiant(s))";
#elif L==2 // de
- "Do you really want to remove the field %s"
- " from the records of %s"
- " (this field is filled in the records of %u student(s))?"; // Need Übersetzung
+ "Wollen Sie das Feld %s"
+ " wirklich aus den Datensätzen von %s entfernen"
+ " (dieses Feld ist in den Datensätzen von %u Studenten ausgef%uuml;llt)";
#elif L==3 // en
"Do you really want to remove the field %s"
" from the records of %s"
@@ -9488,9 +9488,9 @@ const char *Txt_Do_you_really_want_to_remove_the_field_X_from_the_records_of_Y_Z
" de las fichas de %s"
" (dicho campo está relleno en las fichas de %u estudiante(s))?";
#elif L==5 // fr
- "Do you really want to remove the field %s"
- " from the records of %s"
- " (this field is filled in the records of %u student(s))?"; // Besoin de traduction
+ "Voulez-vous vraiment supprimer le champ %s"
+ " des fiches de %s"
+ " (ce champ est rempli dans les fiches de %u étudiant(s))";
#elif L==6 // gn
"¿Realmente desea eliminar el campo %s"
" de las fichas de %s"
@@ -9500,9 +9500,9 @@ const char *Txt_Do_you_really_want_to_remove_the_field_X_from_the_records_of_Y_Z
" dalle schede di %s"
" (questo campo è inserito nella scheda di %u studenti)?";
#elif L==8 // pl
- "Do you really want to remove the field %s"
- " from the records of %s"
- " (this field is filled in the records of %u student(s))?"; // Potrzebujesz tlumaczenie
+ "Czy na pewno chcesz usunąć pole %s"
+ " z rekordów %s"
+ " (to pole jest wypełniane w rekordach %u uczniów)";
#elif L==9 // pt
"Você realmente quer remover o campo %s"
" dos cartões de %s"
@@ -11298,11 +11298,11 @@ const char *Txt_Eliminate_user_account =
const char *Txt_Eliminating_X_users_who_were_not_enroled_in_any_course_and_with_more_than_Y_months_without_access_to_Z = // Warning: it is very important to include %lu, %u and %s in the following sentences
#if L==1 // ca
- "Eliminando %lu usuario(s) que no estaba(n) inscrito(s) en ninguna asignatura"
- " y que llevaba(n) más de %u meses sin acceder a %s."; // Necessita traducció
+ "Eliminant %lu usuaris que no estaven matriculats en cap assignatura"
+ " i amb més de %u mesos sense accés a %s.";
#elif L==2 // de
- "Eliminating %lu user(s) who were not enroled in any course"
- " and with more than %u months without access to %s."; // Need Übersetzung
+ "Eliminierung von %lu Benutzern, die in keinem Kurs eingeschrieben waren"
+ " und seit mehr als %u Monaten keinen Zugriff auf %s haben.";
#elif L==3 // en
"Eliminating %lu user(s) who were not enroled in any course"
" and with more than %u months without access to %s.";
@@ -11310,8 +11310,8 @@ const char *Txt_Eliminating_X_users_who_were_not_enroled_in_any_course_and_with_
"Eliminando %lu usuario(s) que no estaba(n) inscrito(s) en ninguna asignatura"
" y que llevaba(n) más de %u meses sin acceder a %s.";
#elif L==5 // fr
- "Eliminating %lu user(s) who were not enroled in any course"
- " and with more than %u months without access to %s."; // Besoin de traduction
+ "Suppression de %lu utilisateur(s) qui n'étaient inscrits à aucune matière"
+ " et avec plus de %u mois sans accès à %s.";
#elif L==6 // gn
"Eliminando %lu usuario(s) que no estaba(n) inscrito(s) en ninguna asignatura"
" y que llevaba(n) más de %u meses sin acceder a %s."; // Okoteve traducción
@@ -12453,15 +12453,15 @@ const char *Txt_Extended_public_profile =
const char *Txt_X_faces_have_been_detected_in_front_position_1_Z_ = // Warning: it is very important to include two %u in the following sentences
#if L==1 // ca
- "Se han detectado %u rostros en posición frontal:
"
- "1 con el fondo suficientemente claro (en color verde),
"
- "%u con el fondo demasiado oscuro (en color rojo).
"
- "Si desea elegir el rostro señalado en verde, pulse sobre él."; // Necessita traducció
+ "S'han detectat %u cares en posició frontal:
"
+ "1 amb prou llum de fons (marcat en verd),
"
+ "%u amb el fons massa fosc (marcat en vermell).
"
+ "Si vols triar la cara marcada en verd, fes-hi clic.";
#elif L==2 // de
- "%u faces have been detected in front position:
"
- "1 with the background light enough (marked in green).
"
- "%u with the background too dark (marked in red).
"
- "If you want to choose the face marked in green, click on it."; // Need Übersetzung
+ "%u Gesichter wurden in vorderer Position erkannt:
"
+ "1 mit ausreichend hellem Hintergrund (grün markiert),
"
+ "%u mit zu dunklem Hintergrund (rot markiert).
"
+ "Wenn Sie das grün markierte Gesicht auswählen möchten, klicken Sie darauf.";
#elif L==3 // en
"%u faces have been detected in front position:
"
"1 with the background light enough (marked in green).
"
@@ -12473,10 +12473,10 @@ const char *Txt_X_faces_have_been_detected_in_front_position_1_Z_ = // Warning:
"%u con el fondo demasiado oscuro (en color rojo).
"
"Si desea elegir el rostro señalado en verde, pulse sobre él.";
#elif L==5 // fr
- "%u faces have been detected in front position:
"
- "1 with the background light enough (marked in green).
"
- "%u with the background too dark (marked in red).
"
- "If you want to choose the face marked in green, click on it."; // Besoin de traduction
+ "%u visages ont été détectés en position de face:
"
+ "1 avec le fond assez clair (marqué en vert),
"
+ "%u avec le fond trop sombre (marqué en rouge).
"
+ "Si vous voulez choisir le visage marqué en vert, cliquez dessus.";
#elif L==6 // gn
"Se han detectado %u rostros en posición frontal:
"
"1 con el fondo suficientemente claro (en color verde),
"
@@ -12484,35 +12484,35 @@ const char *Txt_X_faces_have_been_detected_in_front_position_1_Z_ = // Warning:
"Si desea elegir el rostro señalado en verde, pulse sobre él."; // Okoteve traducción
#elif L==7 // it
"%u visi sono stati individuati in posizione centrale:
"
- "1 con lo sfondo abbastanza chiaro (segnato in verde).
"
+ "1 con lo sfondo abbastanza chiaro (segnato in verde),
"
"%u con lo sfondo troppo scuro (segnato in rosso).
"
"Se vuoi scegliere il viso segnato in verde, clicca su di esso.";
#elif L==8 // pl
"%u twarze zostaly wykryte w przednim:
"
- "1 z dosc jasnym tle (zaznaczone na zielono).
"
+ "1 z dosc jasnym tle (zaznaczone na zielono),
"
"%u z tlem zbyt ciemny (zaznaczone na czerwono).
"
"Jesli chcesz wybrac twarz zaznaczone na zielono, kliknij na niego.";
#elif L==9 // pt
"%u faces foram detectadas na posição frontal:
"
- "1 com o fundo claro o suficiente (marcado em verde).
"
+ "1 com o fundo claro o suficiente (marcado em verde),
"
"%u com o fundo muito escuro (marcado em vermelho).
"
"Se você quiser escolher o rosto marcado em verde, clique nele.";
#endif
const char *Txt_X_faces_have_been_detected_in_front_position_Y_Z_ = // Warning: it is very important to include three %u in the following sentences
#if L==1 // ca
- "Se han detectado %u rostros en posición frontal:
"
- "%u con el fondo suficientemente claro (en color verde),
"
- "%u con el fondo demasiado oscuro (en color rojo).
"
- "Si desea elegir uno de los rostros señalados en verde, pulse sobre él."; // Necessita traducció
+ "S'han detectat %u cares en posició frontal:
"
+ "%u amb prou llum de fons (marcat en verd),
"
+ "%u amb el fons massa fosc (marcat en vermell).
"
+ "Si vols triar una de les cares marcades en verd, fes-hi clic.";
#elif L==2 // de
- "%u faces have been detected in front position:
"
- "%u with the background light enough (marked in green).
"
- "%u with the background too dark (marked in red).
"
- "If you want to choose one of the faces marked in green, click on it."; // Need Übersetzung
+ "%u Gesichter wurden in vorderer Position erkannt:
"
+ "%u mit ausreichend hellem Hintergrund (grün markiert),
"
+ "%u mit zu dunklem Hintergrund (rot markiert).
"
+ "Wenn Sie eines der grün markierten Gesichter auswählen möchten, klicken Sie darauf.";
#elif L==3 // en
"%u faces have been detected in front position:
"
- "%u with the background light enough (marked in green).
"
+ "%u with the background light enough (marked in green),
"
"%u with the background too dark (marked in red).
"
"If you want to choose one of the faces marked in green, click on it.";
#elif L==4 // es
@@ -12521,10 +12521,10 @@ const char *Txt_X_faces_have_been_detected_in_front_position_Y_Z_ = // Warning:
"%u con el fondo demasiado oscuro (en color rojo).
"
"Si desea elegir uno de los rostros señalados en verde, pulse sobre él.";
#elif L==5 // fr
- "%u faces have been detected in front position:
"
- "%u with the background light enough (marked in green).
"
- "%u with the background too dark (marked in red).
"
- "If you want to choose one of the faces marked in green, click on it."; // Besoin de traduction
+ "%u visages ont été détectés en position de face:
"
+ "%u avec un fond suffisamment clair (marqué en vert),
"
+ "%u avec un arrière-plan trop sombre (marqué en rouge).
"
+ "Si vous voulez choisir l'une des faces marquées en vert, cliquez dessus.";
#elif L==6 // gn
"Se han detectado %u rostros en posición frontal:
"
"%u con el fondo suficientemente claro (en color verde),
"
@@ -12532,17 +12532,17 @@ const char *Txt_X_faces_have_been_detected_in_front_position_Y_Z_ = // Warning:
"Si desea elegir uno de los rostros señalados en verde, pulse sobre él."; // Okoteve traducción
#elif L==7 // it
"%u visi sono stati individuati in posizione centrale:
"
- "%u con lo sfondo abbastanza chiaro (segnato il verde).
"
+ "%u con lo sfondo abbastanza chiaro (segnato il verde),
"
"%u con lo sfondo troppo scuro (segnato in rosso).
"
"Se vuoi scegliere uno dei visi segnati in verde, clicca su di esso.";
#elif L==8 // pl
"%u twarze zostaly wykryte w przednim:
"
- "%u z dosc jasnym tlem (zaznaczone na zielono).
"
+ "%u z dosc jasnym tlem (zaznaczone na zielono),
"
"%u z tlem zbyt ciemnym (zaznaczone na czerwono).
"
"Jesli chcesz wybrac jedna z twarzy zaznaczone na zielono, kliknij na niego.";
#elif L==9 // pt
"%u faces foram detectadas na posição frontal:
"
- "%u com o fundo claro o suficiente (marcado em verde).
"
+ "%u com o fundo claro o suficiente (marcado em verde),
"
"%u com o fundo muito escuro (marcado em vermelho).
"
"Se você quiser escolher um dos rostos marcados em verde, clique nele.";
#endif
@@ -16641,11 +16641,11 @@ const char *Txt_In_a_type_of_group_with_single_enrolment_students_can_not_be_reg
const char *Txt_In_the_year_X_of_the_degree_Y_already_existed_a_course_with_the_name_Z = // Warning: it is very important to include three %s in the following sentences
#if L==1 // ca
- "En el año/semestre %s de la titulación %s"
- " ya existía una asignatura con el nombre %s."; // Necessita traducció
+ "L'any/semestre %s de la titulació %s"
+ " ja existia una assignatura amb el nom %s.";
#elif L==2 // de
- "In the year/semester %s of the degree %s"
- " already existed a course with the name %s."; // Need Übersetzung
+ "Im %s Studienjahr/Semester des Studiengangs %s"
+ " existierte bereits ein Studiengang mit dem Namen %s.";
#elif L==3 // en
"In the year/semester %s of the degree %s"
" already existed a course with the name %s.";
@@ -16653,8 +16653,8 @@ const char *Txt_In_the_year_X_of_the_degree_Y_already_existed_a_course_with_the_
"En el año/semestre %s de la titulación %s"
" ya existía una asignatura con el nombre %s.";
#elif L==5 // fr
- "In the year/semester %s of the degree %s"
- " already existed a course with the name %s."; // Besoin de traduction
+ "Dans l'année/semestre %s de l'étude %s"
+ " existait déjà une matière avec le nom %s.";
#elif L==6 // gn
"En el año/semestre %s de la titulación %s"
" ya existía una asignatura con el nombre %s."; // Okoteve traducción
@@ -16662,8 +16662,8 @@ const char *Txt_In_the_year_X_of_the_degree_Y_already_existed_a_course_with_the_
"Nell'anno/semester %s di laurea %s"
" già esiste un corso con il nome %s.";
#elif L==8 // pl
- "W roku/semestr %s stopnia %s"
- " istnialy juz kursów z nazwa %s.";
+ "W roku/semestrze %s stopnia %s"
+ " istniał już kierunek o nazwie %s.";
#elif L==9 // pt
"No ano/semestre %s do grau %s"
" já existia uma disciplina com o nome %s.";
@@ -41383,17 +41383,16 @@ const char *Txt_Select_questions =
const char *Txt_Select_the_groups_in_from_which_you_want_to_register_remove_users_ =
#if L==1 // ca
- "Seleccione los grupos en/de los que quiere inscribir/eliminar usuarios.
"
- "Si selecciona grupos, los usuarios serán inscritos en la asignatura y en los grupos seleccionados,"
- " o bien eliminados de los grupos seleccionados pero no de la asignatura.
"
- "Si no selecciona ningún grupo, los usuarios serán inscritos en la asignatura pero no en grupos concretos,"
- " o bien eliminados de la asignatura y de todos los grupos."; // Necessita traducció
+ "Seleccioneu els grups en/des dels quals voleu registrar/eliminar usuaris.
"
+ "Si seleccioneu algun grup, els usuaris s'inscriuran a l'assignatura i als grups seleccionats, o s'eliminaran dels grups seleccionats però no de l'assignatura.
"
+ "Si no seleccioneu cap grup, els usuaris seran inscrits a l'assignatura però no a grups específics,"
+ " o s'eliminaran de l'assignatura i de tots els grups.";
#elif L==2 // de
- "Select the groups in/from which you want to register/remove users.
"
- "If you select any groups, users will be enroled in the course and the selected groups,"
- " or removed from the selected groups but not from the course.
"
- "If you do not select any groups, users will be enroled in the course but not in specific groups,"
- " or removed from the course and from all groups."; // Need Übersetzung
+ "Wählen Sie die Gruppen aus, in/aus denen Sie Benutzer registrieren/entfernen möchten.
"
+ "Wenn Sie Gruppen auswählen, werden Benutzer in den Kurs und die ausgewählten Gruppen eingeschrieben oder aus den ausgewählten Gruppen,"
+ " aber nicht aus dem Kurs entfernt.
"
+ "Wenn Sie keine Gruppen auswählen, werden Benutzer in den Kurs eingeschrieben, aber nicht in bestimmte Gruppen,"
+ " oder aus dem Kurs und aus allen Gruppen entfernt.";
#elif L==3 // en
"Select the groups in/from which you want to register/remove users.
"
"If you select any groups, users will be enroled in the course and the selected groups,"
@@ -41407,11 +41406,11 @@ const char *Txt_Select_the_groups_in_from_which_you_want_to_register_remove_user
"Si no selecciona ningún grupo, los usuarios serán inscritos en la asignatura pero no en grupos concretos,"
" o bien eliminados de la asignatura y de todos los grupos.";
#elif L==5 // fr
- "Select the groups in/from which you want to register/remove users.
"
- "If you select any groups, users will be enroled in the course and the selected groups,"
- " or removed from the selected groups but not from the course.
"
- "If you do not select any groups, users will be enroled in the course but not in specific groups,"
- " or removed from the course and from all groups."; // Besoin de traduction
+ "Sélectionnez les groupes dans/dont vous souhaitez enregistrer/supprimer des utilisateurs.
"
+ "Si vous sélectionnez des groupes, les utilisateurs seront inscrits a la matière et aux groupes sélectionnés,"
+ " ou supprimés des groupes sélectionnés mais pas de la matière.
"
+ "Si vous ne sélectionnez aucun groupe, les utilisateurs seront inscrits au cours mais pas à des groupes spécifiques,"
+ " ou seront supprimés de la matière et de tous les groupes.";
#elif L==6 // gn
"Seleccione los grupos en/de los que quiere inscribir/eliminar usuarios.
"
"Si selecciona grupos, los usuarios serán inscritos en la asignatura y en los grupos seleccionados,"
@@ -41425,11 +41424,11 @@ const char *Txt_Select_the_groups_in_from_which_you_want_to_register_remove_user
"Se non selezioni alcun gruppo, gli utenti saranno registrati nel corso ma non in gruppi specifici,"
" o rimossi dal corso e da tutti i gruppi.";
#elif L==8 // pl
- "Select the groups in/from which you want to register/remove users.
"
- "If you select any groups, users will be enroled in the course and the selected groups,"
- " or removed from the selected groups but not from the course.
"
- "If you do not select any groups, users will be enroled in the course but not in specific groups,"
- " or removed from the course and from all groups."; // Potrzebujesz tlumaczenie
+ "Wybierz grupy, w których/z których chcesz zarejestrować/usunąć użytkowników.
"
+ "Jeśli wybierzesz jakąkolwiek grupę, użytkownicy zostaną zapisani do kursu i wybranych grup"
+ " lub zostaną usunięci z wybranych grup, ale nie z kursu.
"
+ "Jeśli nie wybierzesz żadnej grupy, użytkownicy zostaną zapisani do kursu, ale nie do określonych grup,"
+ " lub usunięci z kursu i ze wszystkich grup.";
#elif L==9 // pt
"Selecione os grupos em/dos quais você deseja registrar/remover usuários.
"
"Se você selecionar grupos, os usuários serão inscritos na disciplina e nos grupos selecionados"
@@ -48304,11 +48303,11 @@ const char *Txt_The_ID_X_has_been_registered_successfully = // Warning: it is ve
const char *Txt_The_ID_X_is_not_valid = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
- "El ID (DNI/cédula) %s no es válido."
- " Solo puede contener números (al menos uno) y letras."; // Necessita traducció
+ "L'ID (DNI/cèdula) %s no és vàlid."
+ " Només pot contenir números (almenys un) i lletres.";
#elif L==2 // de
- "The ID %s is not valid."
- " It can only contain numbers (at least one) and letters."; // Need Übersetzung
+ "Die ID %s ist ungültig."
+ " Es darf nur Zahlen (mindestens eine) und Buchstaben enthalten.";
#elif L==3 // en
"The ID %s is not valid."
" It can only contain numbers (at least one) and letters.";
@@ -48316,8 +48315,8 @@ const char *Txt_The_ID_X_is_not_valid = // Warning: it is very important to incl
"El ID (DNI/cédula) %s no es válido."
" Solo puede contener números (al menos uno) y letras.";
#elif L==5 // fr
- "The ID %s is not valid."
- " It can only contain numbers (at least one) and letters."; // Besoin de traduction
+ "L'ID %s n'est pas valide."
+ " Il ne peut contenir que des chiffres (au moins un) et des lettres.";
#elif L==6 // gn
"El ID (DNI/cédula) %s no es válido."
" Solo puede contener números (al menos uno) y letras."; // Okoteve traducción
@@ -48325,8 +48324,8 @@ const char *Txt_The_ID_X_is_not_valid = // Warning: it is very important to incl
"L'ID %s non è valido."
" Può contenere solo numeri (almeno uno) e lettere.";
#elif L==8 // pl
- "The ID %s is not valid."
- " It can only contain numbers (at least one) and letters."; // Potrzebujesz tlumaczenie
+ "ID %s jest nieprawidłowy."
+ " Może zawierać tylko cyfry (co najmniej jedną) i litery.";
#elif L==9 // pt
"O ID %s não é válido."
" Só pode conter números (pelo menos um) e letras.";
@@ -48781,11 +48780,11 @@ const char *Txt_The_location_of_the_building_X_has_not_changed = // Warning: it
const char *Txt_The_lower_limit_of_correct_answers_must_be_less_than_or_equal_to_the_upper_limit =
#if L==1 // ca
- "El límite inferior del intervalo de respuestas correctas"
- " debe ser menor o igual que el límite superior."; // Necessita traducció
+ "El límit inferior de respostes correctes"
+ " ha de ser inferior o igual al límit superior.";
#elif L==2 // de
- "The lower limit of correct answers"
- " must be less than or equal to the upper limit."; // Need Übersetzung
+ "Die Untergrenze richtiger Antworten"
+ " muss kleiner oder gleich der Obergrenze sein.";
#elif L==3 // en
"The lower limit of correct answers"
" must be less than or equal to the upper limit.";
@@ -48793,8 +48792,8 @@ const char *Txt_The_lower_limit_of_correct_answers_must_be_less_than_or_equal_to
"El límite inferior del intervalo de respuestas correctas"
" debe ser menor o igual que el límite superior.";
#elif L==5 // fr
- "The lower limit of correct answers"
- " must be less than or equal to the upper limit."; // Besoin de traduction
+ "La limite inférieure des bonnes réponses"
+ " doit être inférieure ou égale à la limite supérieure.";
#elif L==6 // gn
"El límite inferior del intervalo de respuestas correctas"
" debe ser menor o igual que el límite superior."; // Okoteve traducción
@@ -48802,8 +48801,8 @@ const char *Txt_The_lower_limit_of_correct_answers_must_be_less_than_or_equal_to
"Il limite inferiore di risposte corrette"
" deve essere minore o uguale al limite superiore.";
#elif L==8 // pl
- "The lower limit of correct answers"
- " must be less than or equal to the upper limit."; // Potrzebujesz tlumaczenie
+ "Dolna granica poprawnych odpowiedzi"
+ " musi być mniejsza lub równa górnej granicy.";
#elif L==9 // pt
"O limite inferior de respostas corretas"
" deve ser menor ou igual ao limite superior.";
@@ -49341,11 +49340,11 @@ const char *Txt_The_nickname_matches_the_one_you_had_previously_registered =
const char *Txt_The_number_of_editing_lines_in_the_record_field_X_has_not_changed = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
- "El nº de líneas"
- " de edición del campo %s no ha cambiado."; // Necessita traducció
+ "El nombre de línies d'edició"
+ " al camp de fitxa %s no ha canviat.";
#elif L==2 // de
- "The number of editing lines"
- " in the record field %s has not changed."; // Need Übersetzung
+ "Die Anzahl der Bearbeitungszeilen"
+ " im Satzfeld %s hat sich nicht geändert.";
#elif L==3 // en
"The number of editing lines"
" in the record field %s has not changed.";
@@ -49353,17 +49352,17 @@ const char *Txt_The_number_of_editing_lines_in_the_record_field_X_has_not_change
"El nº de líneas de edición"
" del campo %s no ha cambiado.";
#elif L==5 // fr
- "The number of editing lines"
- " in the record field %s has not changed."; // Besoin de traduction
+ "Le nombre de lignes d'édition"
+ " dans le champ de carte %s n'a pas changé.";
#elif L==6 // gn
"El nº de líneas de edición"
- " del campo %s no ha cambiado."; // Okoteve traducción
+ " del campo %s no ha cambiado."; // Okoteve traducción
#elif L==7 // it
"Il numero di linee editate"
" nel campo scheda %s non è cambiato.";
#elif L==8 // pl
- "The number of editing lines"
- " in the record field %s has not changed."; // Potrzebujesz tlumaczenie
+ "Liczba wierszy edycji"
+ " w polu rekordu %s nie uległa zmianie.";
#elif L==9 // pt
"O número de linhas de edição"
" no campo de cartão %s não foi alterado.";
@@ -50610,21 +50609,21 @@ const char *Txt_The_user_does_not_exist_or_password_is_incorrect =
const char *Txt_THE_USER_X_already_exists_in_Y = // Warning: it is very important to include two %s in the following sentences
#if L==1 // ca
- "%s ya existe en %s."; // Necessita traducció
+ "%s ja existeix a %s.";
#elif L==2 // de
- "%s already exists in %s."; // Übersetzung notwendig
+ "%s existiert bereits in %s.";
#elif L==3 // en
"%s already exists in %s.";
#elif L==4 // es
"%s ya existe en %s.";
#elif L==5 // fr
- "%s already exists in %s."; // Besoin de traduction
+ "%s existe déjà dans %s.";
#elif L==6 // gn
"%s ya existe en %s."; // Okoteve traducción
#elif L==7 // it
"%s esiste già in %s.";
#elif L==8 // pl
- "%s already exists in %s."; // Potrzebujesz tlumaczenie
+ "%s już istnieje w %s.";
#elif L==9 // pt
"%s já existe em %s.";
#endif
@@ -50790,21 +50789,21 @@ const char *Txt_THE_USER_X_has_been_enroled_in_the_group_of_type_Y_Z = // Warnin
const char *Txt_THE_USER_X_has_been_removed_as_administrator = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
- "%s ha sido eliminado/a como administrador/a."; // Necessita traducció
+ "%s ha estat eliminat/da com a administrador/a.";
#elif L==2 // de
- "%s has been removed as administrator."; // Übersetzung notwendig
+ "%s wurde als Administrator entfernt.";
#elif L==3 // en
"%s has been removed as administrator.";
#elif L==4 // es
"%s ha sido eliminado/a como administrador/a.";
#elif L==5 // fr
- "%s has been removed as administrator."; // Besoin de traduction
+ "%s a été supprimé en tant qu'administrateur.";
#elif L==6 // gn
"%s ha sido eliminado/a como administrador/a."; // Okoteve traducción
#elif L==7 // it
"%s è stato rimosso come amministratore.";
#elif L==8 // pl
- "%s has been removed as administrator."; // Potrzebujesz tlumaczenie
+ "%s został usunięty jako administrator.";
#elif L==9 // pt
"%s foi removido como administrador.";
#endif
@@ -51634,42 +51633,42 @@ const char *Txt_There_are_X_users_with_the_ID_Y = // Warning: it is very importa
const char *Txt_There_has_been_no_change_in_groups =
#if L==1 // ca
- "No se ha realizado ningún cambio de grupos."; // Necessita traducció
+ "No hi ha hagut cap canvi en els grups.";
#elif L==2 // de
- "There has been no change in groups."; // Übersetzung notwendig
+ "An den Gruppen hat sich nichts geändert";
#elif L==3 // en
"There has been no change in groups.";
#elif L==4 // es
"No se ha realizado ningún cambio de grupos.";
#elif L==5 // fr
- "There has been no change in groups."; // Besoin de traduction
+ "Il n'y a pas eu de changement dans les groupes.";
#elif L==6 // gn
"No se ha realizado ningún cambio de grupos."; // Okoteve traducción
#elif L==7 // it
"Non ci sono stati cambiamenti in gruppi.";
#elif L==8 // pl
- "There has been no change in groups."; // Potrzebujesz tlumaczenie
+ "Nie było zmian w grupach.";
#elif L==9 // pt
"Nenhuma alteração de grupo foi feita.";
#endif
const char *Txt_There_have_been_X_errors_in_sending_the_message = // Warning: it is very important to include %u in the following sentences
#if L==1 // ca
- "Ha habido %u errores enviando el mensaje."; // Necessita traducció
+ "S'han produït %u errors en enviar el missatge.";
#elif L==2 // de
- "There have been %u errors in sending the message."; // Übersetzung notwendig
+ "Beim Senden der Nachricht sind %u Fehler aufgetreten.";
#elif L==3 // en
"There have been %u errors in sending the message.";
#elif L==4 // es
"Ha habido %u errores enviando el mensaje.";
#elif L==5 // fr
- "There have been %u errors in sending the message."; // Besoin de traduction
+ "Il y a eu %u erreurs dans l'envoi du message.";
#elif L==6 // gn
"Ha habido %u errores enviando el mensaje."; // Okoteve traducción
#elif L==7 // it
"Ci sono stati %u errori inviando il messaggio.";
#elif L==8 // pl
- "There have been %u errors in sending the message."; // Potrzebujesz tlumaczenie
+ "Wystąpiło %u błędów podczas wysyłania wiadomości.";
#elif L==9 // pt
"Houve %u erros ao enviar a mensagem.";
#endif
@@ -54160,21 +54159,21 @@ const char *Txt_Type_of_degree =
const char *Txt_Type_of_degree_X_removed = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca
- "Tipo de titulación %s eliminada."; // Necessita traducció
+ "Tipus de grau %s eliminat.";
#elif L==2 // de
- "Type of degree %s removed."; // Übersetzung notwendig
+ "Art des Abschlusses %s entfernt.";
#elif L==3 // en
"Type of degree %s removed.";
#elif L==4 // es
"Tipo de titulación %s eliminada.";
#elif L==5 // fr
- "Type of degree %s removed."; // Besoin de traduction
+ "Type d'étude %s supprimé.";
#elif L==6 // gn
"Tipo de titulación %s eliminada."; // Okoteve traducción
#elif L==7 // it
"Tipo di laurea %s rimossa.";
#elif L==8 // pl
- "Type of degree %s removed."; // Potrzebujesz tlumaczenie
+ "Usunięto rodzaj stopnia %s.";
#elif L==9 // pt
"Tipo de grau %s removido.";
#endif
@@ -54231,36 +54230,36 @@ const char *Txt_Type_of_group_X_removed = // Warning: it is very important to in
#elif L==4 // es
"Tipo de grupo %s eliminado.";
#elif L==5 // fr
- "Type of group %s removed."; // Besoin de traduction
+ "Type de groupe %s supprimé.";
#elif L==6 // gn
"Tipo de grupo %s eliminado."; // Okoteve traducción
#elif L==7 // it
"Tipo di gruppo %s rimosso.";
#elif L==8 // pl
- "Type of group %s removed."; // Potrzebujesz tlumaczenie
+ "Usunięto typ grupy %s.";
#elif L==9 // pt
"Tipo de grupo %s removido.";
#endif
const char *Txt_Type_or_paste_a_list_of_IDs_nicks_or_emails_ =
#if L==1 // ca
- "Escriba o pegue una lista"
- " con @apodos, correos o ID (DNI/cédulas)."
- " Los @apodos, correos o ID (DNI/cédulas)"
- " pueden ir separados por cadenas de caracteres arbitrarias"
- " (por ej. nombres, apellidos, espacios, etc.)."
- " Solo se tendrán en cuenta aquellas palabras"
- " que parezcan @apodos, correos o ID (DNI/cédulas);"
- " el resto del texto se ignorará."; // Necessita traducció
+ "Escriviu o enganxeu una llista"
+ " de @nicks, correus electrònics o IDs."
+ " Els @nicks, correus electrònics o IDs"
+ " es poden separar per cadenes arbitràries"
+ " (per exemple, noms, llocs, etc.)."
+ " Només es tindran en compte les paraules"
+ " que sembli @nicks, correus electrònics o IDs;"
+ " la resta del text s'ignorarà.";
#elif L==2 // de
- "Type or paste a list"
- " of @nicks, emails or IDs."
- " The @nicks, emails or IDs"
- " can be separated by arbitrary strings"
- " (eg. names, places, etc.)."
- " Only the words that seems @nicks, emails or IDs"
- " will be taken into account;"
- " the rest of the text will be ignored."; // Need Übersetzung
+ "Geben oder fügen Sie eine Liste"
+ " mit @nicks, E-Mails oder IDs ein."
+ " Die @nicks, E-Mails oder IDs"
+ " können durch beliebige Zeichenfolgen"
+ " (z. B. Namen, Orte usw.) getrennt werden."
+ " Nur die Wörter, die wie @nicks, E-Mails oder IDs aussehen,"
+ " werden berücksichtigt;"
+ " der Rest des Textes wird ignoriert.";
#elif L==3 // en
"Type or paste a list"
" of @nicks, emails or IDs."
@@ -54280,14 +54279,14 @@ const char *Txt_Type_or_paste_a_list_of_IDs_nicks_or_emails_ =
" que parezcan @apodos, correos o ID (DNI/cédulas);"
" el resto del texto se ignorará.";
#elif L==5 // fr
- "Type or paste a list"
- " of @nicks, emails or IDs."
- " The @nicks, emails or IDs"
- " can be separated by arbitrary strings"
- " (eg. names, places, etc.)."
- " Only the words that seems @nicks, emails or IDs"
- " will be taken into account;"
- " the rest of the text will be ignored."; // Besoin de traduction
+ "Tapez ou collez une liste"
+ " de @nicks, e-mails ou identifiants."
+ " Les @nicks, emails ou identifiants"
+ " peuvent être séparés par des chaînes arbitraires"
+ " (ex. noms, lieux, etc.)."
+ " Seuls les mots qui semblent @nicks, emails ou identifiants"
+ " seront pris en compte;"
+ " le reste du texte sera ignoré.";
#elif L==6 // gn
"Escriba o pegue una lista"
" con @apodos, correos o ID (DNI/cédulas)."
@@ -54308,14 +54307,14 @@ const char *Txt_Type_or_paste_a_list_of_IDs_nicks_or_emails_ =
" saranno presi in considerazione;"
" il resto del testo sarà ignorato.";
#elif L==8 // pl
- "Type or paste a list"
- " of @nicks, emails or IDs."
- " The @nicks, emails or IDs"
- " can be separated by arbitrary strings"
- " (eg. names, places, etc.)."
- " Only the words that seems @nicks, emails or IDs"
- " will be taken into account;"
- " the rest of the text will be ignored."; // Potrzebujesz tlumaczenie
+ "Wpisz lub wklej listę"
+ " @nicków, e-maili lub ID."
+ " @nicki, e-maile lub ID"
+ " mogą być oddzielone dowolnymi ciągami"
+ " (np. nazwy, miejsca itp.)."
+ " Tylko słowa, które wyglądają jak @nick, e-maile lub ID,"
+ " będą brane pod uwagę;"
+ " reszta tekstu zostanie zignorowana.";
#elif L==9 // pt
"Digite ou cole uma lista"
" de @alcunhas, emails ou IDs."