diff --git a/swad_changelog.h b/swad_changelog.h index eedf8f3ae..99dbb4f1b 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -606,10 +606,13 @@ 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.96.3 (2022-05-16)" +#define Log_PLATFORM_VERSION "SWAD 21.96.6 (2022-05-18)" #define CSS_FILE "swad21.95.5.css" #define JS_FILE "swad21.92.js" /* + Version 21.96.6: May 18, 2022 Some messages translated. (323156 lines) + Version 21.96.5: May 17, 2022 Some messages translated. (323160 lines) + Version 21.96.4: May 16, 2022 Some messages translated. (323159 lines) Version 21.96.3: May 16, 2022 Some messages translated. (323158 lines) Version 21.96.2: May 14, 2022 Some messages translated. (323169 lines) Version 21.96.1: May 14, 2022 Some messages translated. (323168 lines) @@ -1842,7 +1845,7 @@ sudo cp icon/check-green.svg /var/www/html/swad/icon/ Version 19.248.1: May 30, 2020 Exam session results can not be marked as visible if end of time is not in the past. (302825 lines) Version 19.248: May 30, 2020 New API function getLastLocation. (302787 lines) Version 19.247.1: May 29, 2020 Do not show exam results in hidden exams or hidden exam sessions. (302646 lines) - Version 19.247: May 24, 2020 New API function sendMyCurrentLocation. (302622 lines) + Version 19.247: May 25, 2020 New API function sendMyCurrentLocation. (302622 lines) 1 change necessary in database: CREATE TABLE IF NOT EXISTS room_check_in (ChkCod INT NOT NULL AUTO_INCREMENT,UsrCod INT NOT NULL,RooCod INT NOT NULL,CheckInTime DATETIME NOT NULL,UNIQUE INDEX(ChkCod),INDEX(UsrCod,CheckInTime),INDEX(CheckInTime)); If you want to use MyISAM: diff --git a/swad_course.c b/swad_course.c index 7657bbf73..e5894aa58 100644 --- a/swad_course.c +++ b/swad_course.c @@ -1520,12 +1520,12 @@ static void Crs_ReceiveFormRequestOrCreateCrs (Hie_Status_t Status) { /***** If name of course was in database... *****/ if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg ("ShortName",Crs_EditingCrs->ShrtName, - -1L,Crs_EditingCrs->DegCod,Crs_EditingCrs->Year)) + -1L,Crs_EditingCrs->DegCod,Crs_EditingCrs->Year)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_course_X_already_exists, Crs_EditingCrs->ShrtName); else if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg ("FullName",Crs_EditingCrs->FullName, - -1L,Crs_EditingCrs->DegCod,Crs_EditingCrs->Year)) + -1L,Crs_EditingCrs->DegCod,Crs_EditingCrs->Year)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_course_X_already_exists, Crs_EditingCrs->FullName); @@ -1878,13 +1878,13 @@ void Crs_ChangeCrsYear (void) { /***** If name of course was in database in the new year... *****/ if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg ("ShortName",Crs_EditingCrs->ShrtName, - -1L,Crs_EditingCrs->DegCod,NewYear)) + -1L,Crs_EditingCrs->DegCod,NewYear)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_course_X_already_exists_in_year_Y, Crs_EditingCrs->ShrtName, Txt_YEAR_OF_DEGREE[NewYear]); else if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg ("FullName",Crs_EditingCrs->FullName, - -1L,Crs_EditingCrs->DegCod,NewYear)) + -1L,Crs_EditingCrs->DegCod,NewYear)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_course_X_already_exists_in_year_Y, Crs_EditingCrs->FullName, @@ -2010,7 +2010,7 @@ void Crs_RenameCourse (struct Crs_Course *Crs,Cns_ShrtOrFullName_t ShrtOrFullNam { /***** If course was in database... *****/ if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg (ParamName,NewCrsName,Crs->CrsCod, - Crs->DegCod,Crs->Year)) + Crs->DegCod,Crs->Year)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_course_X_already_exists, NewCrsName); diff --git a/swad_text.c b/swad_text.c index 5655e214e..7f0d902be 100644 --- a/swad_text.c +++ b/swad_text.c @@ -262,9 +262,9 @@ const char *Txt_A_message_has_been_sent_to_email_address_X_to_confirm_that_addre " a l'adreça de correu %s" " per confirmar aquesta adreça."; #elif L==2 // de - "A message has been sent" - " to email address %s" - " to confirm that address."; // Need Übersetzung + "Es wurde eine Nachricht" + " an die E-Mail-Adresse %s gesendet," + " um diese Adresse zu bestätigen."; #elif L==3 // en "A message has been sent" " to email address %s" @@ -274,21 +274,21 @@ const char *Txt_A_message_has_been_sent_to_email_address_X_to_confirm_that_addre " a la dirección de correo %s" " para confirmar dicha dirección."; #elif L==5 // fr - "A message has been sent" - " to email address %s" - " to confirm that address."; // Besoin de traduction + "Un message a été envoyé" + " à l'adresse e-mail %s" + " pour confirmer cette adresse."; #elif L==6 // gn "Se ha enviado un mensaje" " a la dirección de correo %s" " para confirmar dicha dirección."; // Okoteve traducción #elif L==7 // it - "A message has been sent" - " to email address %s" - " to confirm that address."; // Bisogno di traduzione + "È stato inviato un messaggio" + " all'indirizzo email %s" + " per confermare tale indirizzo."; #elif L==8 // pl - "A message has been sent" - " to email address %s" - " to confirm that address."; // Potrzebujesz tlumaczenie + "Wiadomość została wysłana" + " na adres e-mail %s" + " w celu potwierdzenia tego adresu."; #elif L==9 // pt "Uma mensagem foi enviada" " para o endereço de email %s" @@ -2766,7 +2766,7 @@ const char *Txt_Average_number_of_courses_to_which_a_user_belongs = #elif L==4 // es "N.º medio de asignaturas a las que pertenece cada usuario"; #elif L==5 // fr - "Nombre moyen de cours à qui appartient un utilisateur"; + "Nombre moyen de matières à qui appartient un utilisateur"; #elif L==6 // gn "N.º medio de asignaturas a las que pertenece cada usuario"; // Okoteve traducción #elif L==7 // it @@ -2781,19 +2781,19 @@ const char *Txt_Average_BR_number_of_BR_times_that_BR_a_question_BR_has_been_BR_ #if L==1 // ca "Mitjà de
vegades
que s'ha
respost
cada pregunta"; #elif L==2 // de - "Average
number of
times that
a question
has been
responded"; // Need Übersetzung + "Durchschnittliche
Häufigkeit,
mit der
eine Frage
beantwortet wurde"; #elif L==3 // en "Average
number of
times that
a question
has been
responded"; #elif L==4 // es "N.º medio
de veces
que se ha
respondido
cada pregunta"; #elif L==5 // fr - "Average
number of
times that
a question
has been
responded"; // Besoin de traduction + "Nombre moyen
de fois
qu'une question
a reçu
une réponse"; #elif L==6 // gn "N.º medio
de veces
que se ha
respondido
cada pregunta"; // Okoteve traducción #elif L==7 // it - "Average
number of
times that
a question
has been
responded"; // Bisogno di traduzione + "Numero medio
di volte
in cui
una domanda
ha ricevuto
risposta"; #elif L==8 // pl - "Average
number of
times that
a question
has been
responded"; // Potrzebujesz tlumaczenie + "Średnia
liczba
odpowiedzi
na pytanie"; #elif L==9 // pt "N.º médio
de vezes
que uma
pergunta
foi respondida"; #endif @@ -2802,19 +2802,19 @@ const char *Txt_Average_BR_number_of_BR_times_that_BR_questions_BR_have_been_BR_ #if L==1 // ca "Mitjà de
vegades
que s'ha
respost
per assignatura"; #elif L==2 // de - "Average
number of
times that
questions
have been
responded
per course"; // Need Übersetzung + "Durchschnittliche
Häufigkeit,
mit der
eine Frage
pro Kurs
beantwortet wurde"; #elif L==3 // en "Average
number of
times that
questions
have been
responded
per course"; #elif L==4 // es "N.º medio
de veces
que se ha
respondido
por asignatura"; #elif L==5 // fr - "Average
number of
times that
questions
have been
responded
per course"; // Besoin de traduction + "Nombre moyen
de fois
qu'une question
a reçu
une réponse
par matière"; #elif L==6 // gn "N.º medio
de veces
que se ha
respondido
por asignatura"; // Okoteve traducción #elif L==7 // it - "Average
number of
times that
questions
have been
responded
per course"; // Bisogno di traduzione + "Numero medio
di volte
in cui
una domanda
ha ricevuto
risposta
per corso"; #elif L==8 // pl - "Average
number of
times that
questions
have been
responded
per course"; // Potrzebujesz tlumaczenie + "Średnia
liczba
odpowiedzi
na pytanie
na kurs"; #elif L==9 // pt "N.º médio
de vezes
que uma
pergunta
foi respondida
por disciplina"; #endif @@ -8819,14 +8819,14 @@ const char *Txt_Disclaimer_the_files_hosted_here_ = // Warning: it is very impor " que contingui contingut li pertenezca" " o que infringeix la llei, pot comunicar-lo a %s."; #elif L==2 // de - "Disclaimer: the files hosted here," - " unless otherwise noted," - " are subject to intellectual property rights" - " and their ownership belongs to the users who have uploaded them." - " %s is not responsible for the information contained in those files." - " If you think convenient to remove any file" - " whose contents belongs to you" - " or that violates the law, you can contact %s."; // Need Übersetzung + "Haftungsausschluss: Die hier gehosteten Dateien unterliegen," + " sofern nicht anders angegeben," + " geistigen Eigentumsrechten und ihr Eigentum gehört den Benutzern," + " die sie hochgeladen haben." + " %s ist nicht verantwortlich für die in diesen Dateien enthaltenen Informationen." + " Wenn Sie es für angebracht halten, eine Datei zu entfernen," + " deren Inhalt Ihnen gehört oder die gegen das Gesetz verstößt," + " können Sie sich an %s wenden."; #elif L==3 // en "Disclaimer: the files hosted here," " unless otherwise noted," @@ -8846,14 +8846,14 @@ const char *Txt_Disclaimer_the_files_hosted_here_ = // Warning: it is very impor " cuyo contenido le pertenezca" " o que infrinja la ley, puede comunicarlo a %s."; #elif L==5 // fr - "Disclaimer: the files hosted here," - " unless otherwise noted," - " are subject to intellectual property rights" - " and their ownership belongs to the users who have uploaded them." - " %s is not responsible for the information contained in those files." - " If you think convenient to remove any file" - " whose contents belongs to you" - " or that violates the law, you can contact %s."; // Besoin de traduction + "Avis de non-responsabilité: les fichiers hébergés ici," + " sauf indication contraire," + " sont soumis à des droits de propriété intellectuelle" + " et leur propriété appartient aux utilisateurs qui les ont téléchargés." + " %s n'est pas responsable des informations contenues dans ces fichiers." + " Si vous jugez opportun de supprimer tout fichier" + " dont le contenu vous appartient" + " ou qui enfreint la loi, vous pouvez contacter %s."; #elif L==6 // gn "Aviso legal: los archivos alojados aquí," " salvo que se indique lo contrario," @@ -8864,23 +8864,22 @@ const char *Txt_Disclaimer_the_files_hosted_here_ = // Warning: it is very impor " cuyo contenido le pertenezca" " o que infrinja la ley, puede comunicarlo a %s."; // Okoteve traducción #elif L==7 // it - "Disclaimer: the files hosted here," - " unless otherwise noted," - " are subject to intellectual property rights" - " and their ownership belongs to the users who have uploaded them." - " %s is not responsible for the information contained in those files." - " If you think convenient to remove any file" - " whose contents belongs to you" - " or that violates the law, you can contact %s."; // Bisogno di traduzione + "Disclaimer: i file qui ospitati," + " salvo diversa indicazione," + " sono soggetti a diritti di proprietà intellettuale" + " e la loro proprietà appartiene agli utenti che li hanno caricati." + " %s non è responsabile per le informazioni contenute in tali file." + " Se ritieni opportuno rimuovere qualsiasi file" + " il cui contenuto ti appartiene" + " o che viola la legge, puoi contattare %s."; #elif L==8 // pl - "Disclaimer: the files hosted here," - " unless otherwise noted," - " are subject to intellectual property rights" - " and their ownership belongs to the users who have uploaded them." - " %s is not responsible for the information contained in those files." - " If you think convenient to remove any file" - " whose contents belongs to you" - " or that violates the law, you can contact %s."; // Potrzebujesz tlumaczenie + "Zastrzeżenie: pliki hostowane tutaj, o ile nie zaznaczono inaczej," + " podlegają prawom własności intelektualnej," + " a ich własność należy do użytkowników, którzy je przesłali." + " %s nie ponosi odpowiedzialności za informacje zawarte w tych plikach. " + " Jeśli uważasz za wygodne usunięcie dowolnego pliku," + " którego zawartość należy do Ciebie lub który narusza prawo," + " możesz skontaktować się z %s."; #elif L==9 // pt "Isenção de responsabilidade: os arquivos hospedados aqui," " salvo indicação em contrário," @@ -9263,13 +9262,13 @@ const char *Txt_Do_you_really_want_to_register_the_following_user_as_an_administ const char *Txt_Do_you_really_want_to_reject_the_enrolment_request_ = // Warning: it is very important to include three %s in the following sentences #if L==1 // ca - "¡Realmente desea rechazar la solicitud de inscripción" - " de %s como %s" - " en la asignatura %s?"; // Necessita traducció + "Realment vols rebutjar la sol·licitud de matrícula" + " de %s com a %s" + " a l'assignatura %s?"; #elif L==2 // de - "Do you really want to reject the enrolment request" - " from %s as %s" - " in the course %s?"; // Need Übersetzung + "Wollen Sie den Immatrikulationsantrag" + " von %s als %s" + " in den Kurs %s wirklich ablehnen?"; #elif L==3 // en "Do you really want to reject the enrolment request" " from %s as %s" @@ -9279,21 +9278,21 @@ const char *Txt_Do_you_really_want_to_reject_the_enrolment_request_ = // Warning " de %s como %s" " en la asignatura %s?"; #elif L==5 // fr - "Do you really want to reject the enrolment request" - " from %s as %s" - " in the course %s?"; // Besoin de traduction + "Voulez-vous vraiment rejeter la demande d'inscription" + " de %s en tant que %s" + " dans la matière %s?"; #elif L==6 // gn "¡Realmente desea rechazar la solicitud de inscripción" " de %s como %s" " en la asignatura %s?"; // Okoteve traducción #elif L==7 // it - "Do you really want to reject the enrolment request" - " from %s as %s" - " in the course %s?"; // Bisogno di traduzione + "Vuoi davvero rifiutare la richiesta di iscrizione" + " di %s come %s" + " al corso %s?"; #elif L==8 // pl - "Do you really want to reject the enrolment request" - " from %s as %s" - " in the course %s?"; // Potrzebujesz tlumaczenie + "Czy na pewno chcesz odrzucić prośbę o przyjęcie" + " od %s jako %s" + " na kurs %s?"; #elif L==9 // pt "Você realmente quer rejeitar a solicitação de inscrição" " de %s como %s" @@ -11227,11 +11226,11 @@ const char *Txt_Eliminate_old_users = const char *Txt_Eliminating_X_courses_whithout_users_and_with_more_than_Y_months_without_access = // Warning: it is very important to include %lu and %u in the following sentences #if L==1 // ca - "Eliminando %lu asignatura(s) sin usuarios" - " y que llevaba(n) más de %u meses sin accesos."; // Necessita traducció + "Eliminant %lu assignatures sense usuaris" + " i amb més de %u mesos sense accés."; #elif L==2 // de - "Eliminating %lu course(s) without users" - " and with more than %u months without access."; // Need Übersetzung + "Eliminierung von %lu Kurs(en) ohne Benutzer" + " und mit mehr als %u Monaten ohne Zugang."; #elif L==3 // en "Eliminating %lu course(s) without users" " and with more than %u months without access."; @@ -11239,17 +11238,17 @@ const char *Txt_Eliminating_X_courses_whithout_users_and_with_more_than_Y_months "Eliminando %lu asignatura(s) sin usuarios" " y que llevaba(n) más de %u meses sin accesos."; #elif L==5 // fr - "Eliminating %lu course(s) without users" - " and with more than %u months without access."; // Besoin de traduction + "Suppression de %lu cours sans utilisateurs" + " et avec plus de %u mois sans accès."; #elif L==6 // gn "Eliminando %lu asignatura(s) sin usuarios" " y que llevaba(n) más de %u meses sin accesos."; // Okoteve traducción #elif L==7 // it - "Eliminating %lu course(s) without users" - " and with more than %u months without access."; // Bisogno di traduzione + "Eliminazione di %lu corsi senza utenti" + " e con più di %u mesi senza accesso."; #elif L==8 // pl - "Eliminating %lu course(s) without users" - " and with more than %u months without access."; // Potrzebujesz tlumaczenie + "Eliminacja %lu kursów bez użytkowników" + " i z ponad %u miesiącami bez dostępu."; #elif L==9 // pt "Eliminando %lu disciplina(s) sem usuários" " e com mais de %u meses sem acesso."; @@ -11566,11 +11565,11 @@ const char *Txt_Email_X_confirmed = // Warning: it is very important to include const char *Txt_Email_X_has_already_been_confirmed_before = // Warning: it is very important to include %s in the following sentences #if L==1 // ca - "El correo %s" - " ya había sido confirmado anteriormente."; // Necessita traducció + "El correu %s" + " ja s'ha confirmat abans."; #elif L==2 // de - "Email %s" - " has already been confirmed before."; // Need Übersetzung + "E-Mail %s" + " wurde bereits zuvor bestätigt."; #elif L==3 // en "Email %s" " has already been confirmed before."; @@ -11578,17 +11577,17 @@ const char *Txt_Email_X_has_already_been_confirmed_before = // Warning: it is ve "El correo %s" " ya había sido confirmado anteriormente."; #elif L==5 // fr - "Email %s" - " has already been confirmed before."; // Besoin de traduction + "L'e-mail %s" + " a déjà été confirmé auparavant."; #elif L==6 // gn "El correo %s" " ya había sido confirmado anteriormente."; // Okoteve traducción #elif L==7 // it - "Email %s" - " has already been confirmed before."; // Bisogno di traduzione + "L'email %s" + " è già stata confermata in precedenza."; #elif L==8 // pl - "Email %s" - " has already been confirmed before."; // Potrzebujesz tlumaczenie + "E-mail %s" + " został już wcześniej potwierdzony."; #elif L==9 // pt "Email %s" " já foi confirmado antes."; @@ -11703,19 +11702,19 @@ const char *Txt_Enrolment_of_X_rejected = // Warning: it is very important to in #if L==1 // ca "Inscripció de %s rebutjada."; #elif L==2 // de - "Enrolment of %s rejected."; // Need Übersetzung + "Anmeldung von %s abgelehnt."; #elif L==3 // en "Enrolment of %s rejected."; #elif L==4 // es "Inscripción de %s rechazada."; #elif L==5 // fr - "Enrolment of %s rejected."; // Besoin de traduction + "Inscription de %s rejetée."; #elif L==6 // gn "Inscripción de %s rechazada."; // Okoteve traducción #elif L==7 // it - "Enrolment of %s rejected."; // Bisogno di traduzione + "Iscrizione di %s rifiutata."; #elif L==8 // pl - "Enrolment of %s rejected."; // Potrzebujesz tlumaczenie + "Rejestracja %s została odrzucona."; #elif L==9 // pt "Inscrição de %s rejeitada."; #endif @@ -14458,42 +14457,42 @@ const char *Txt_from_this_course = const char *Txt_From_this_time_you_can_receive_messages_from_X = // Warning: it is very important to include %s in the following sentences #if L==1 // ca - "A partir de este momento, puede recibir mensajes de %s."; // Necessita traducció + "A partir d'aquest moment, podeu rebre missatges de %s."; #elif L==2 // de - "From this time, you can receive messages from %s."; // Need Übersetzung + "Ab diesem Zeitpunkt können Sie Nachrichten von %s erhalten."; #elif L==3 // en "From this time, you can receive messages from %s."; #elif L==4 // es "A partir de este momento, puede recibir mensajes de %s."; #elif L==5 // fr - "From this time, you can receive messages from %s."; // Besoin de traduction + "À partir de ce moment, vous pouvez recevoir des messages de %s."; #elif L==6 // gn "A partir de este momento, puede recibir mensajes de %s."; // Okoteve traducción #elif L==7 // it - "From this time, you can receive messages from %s."; // Bisogno di traduzione + "Da questo momento, puoi ricevere messaggi da %s."; #elif L==8 // pl - "From this time, you can receive messages from %s."; // Potrzebujesz tlumaczenie + "Od tej chwili możesz otrzymywać wiadomości od %s."; #elif L==9 // pt "A partir deste momento, você pode receber mensagens de %s."; #endif const char *Txt_From_this_time_you_will_not_receive_messages_from_X = // Warning: it is very important to include %s in the following sentences #if L==1 // ca - "A partir de este momento, no recibirá mensajes de %s."; // Necessita traducció + "A partir d'aquest moment, no rebràs missatges de %s."; #elif L==2 // de - "From this time, you will not receive messages from %s."; // Need Übersetzung + "Ab diesem Zeitpunkt erhalten Sie keine Nachrichten mehr von %s."; #elif L==3 // en "From this time, you will not receive messages from %s."; #elif L==4 // es "A partir de este momento, no recibirá mensajes de %s."; #elif L==5 // fr - "From this time, you will not receive messages from %s."; // Besoin de traduction + "À partir de ce moment, vous ne recevrez plus de messages de %s."; #elif L==6 // gn "A partir de este momento, no recibirá mensajes de %s."; // Okoteve traducción #elif L==7 // it - "From this time, you will not receive messages from %s."; // Bisogno di traduzione + "Da questo momento, non riceverai più messaggi da %s."; #elif L==8 // pl - "From this time, you will not receive messages from %s."; // Potrzebujesz tlumaczenie + "Od tej chwili nie będziesz otrzymywać wiadomości od %s."; #elif L==9 // pt "A partir deste momento, você não receberá mensagens de %s."; #endif @@ -16301,11 +16300,11 @@ const char *Txt_Identified_views = const char *Txt_If_this_is_a_new_user_in_X_you_should_indicate_her_his_ID = // Warning: it is very important to include %s in the following sentences #if L==1 // ca - "Si se trata de un usuario nuevo en %s," - " debe indicar el ID (DNI/cédula)."; // Necessita traducció + "Si es tracta d'un usuari nou a %s," + " haureu d'indicar el seu ID (DNI/cèdula)."; #elif L==2 // de - "If this is a new user in %s," - " you should indicate her/his ID."; // Übersetzung notwendig + "Wenn dies ein neuer Benutzer in %s ist," + " sollten Sie seine/ihre ID angeben."; #elif L==3 // en "If this is a new user in %s," " you should indicate her/his ID."; @@ -16313,17 +16312,17 @@ const char *Txt_If_this_is_a_new_user_in_X_you_should_indicate_her_his_ID = // W "Si se trata de un usuario nuevo en %s," " debe indicar el ID (DNI/cédula)."; #elif L==5 // fr - "If this is a new user in %s," - " you should indicate her/his ID."; // Besoin de traduction + "S'il s'agit d'un nouvel utilisateur dans %s," + " vous devez indiquer son ID."; #elif L==6 // gn "Si se trata de un usuario nuevo en %s," " debe indicar el ID (DNI/cédula)."; // Okoteve traducción #elif L==7 // it - "If this is a new user in %s," - " you should indicate her/his ID."; // Bisogno di traduzione + "Se questo è un nuovo utente in %s," + " dovresti indicare il suo ID."; #elif L==8 // pl - "If this is a new user in %s," - " you should indicate her/his ID."; // Potrzebujesz tlumaczenie + "Jeśli jest to nowy użytkownik w %s," + " należy podać jego ID."; #elif L==9 // pt "Se este for um novo usuário em %s," " você deve indicar seu ID."; @@ -22576,7 +22575,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] = #elif L==4 // es "Archivos privados, solo para los profesores de la asignatura" #elif L==5 // fr - "Fichiers privés, seulement pour les enseignants du cours" + "Fichiers privés, seulement pour les enseignants de la matière" #elif L==6 // gn "Archivos privados, solo para los profesores de la asignatura"// Okoteve traducción #elif L==7 // it @@ -23422,13 +23421,13 @@ const char *Txt_message_sent_to_X_notified_by_email = // Warning: it is very imp #if L==1 // ca "Missatge enviat a %s (notificat per email)."; #elif L==2 // de - "Message sent to %s (notified by email)."; // Need Übersetzung + "Nachricht an %s gesendet (Benachrichtigung per E-Mail)."; #elif L==3 // en "Message sent to %s (notified by email)."; #elif L==4 // es "Mensaje enviado a %s (notificado por email)."; #elif L==5 // fr - "Message sent to %s (notified by email)."; // Besoin de traduction + "Message envoyé à %s (notifié par email)."; #elif L==6 // gn "Mensaje enviado a %s (notificado por email)."; // Okoteve traducción #elif L==7 // it @@ -23485,13 +23484,13 @@ const char *Txt_X_messages_have_been_deleted = // Warning: it is very important #if L==1 // ca "S'han suprimit %u missatges."; #elif L==2 // de - "%u messages have been deleted."; // Need Übersetzung + "%u Nachrichten wurden gelöscht."; #elif L==3 // en "%u messages have been deleted."; #elif L==4 // es "Se han eliminado %u mensajes."; #elif L==5 // fr - "%u messages have been deleted."; // Besoin de traduction + "%u messages ont été supprimés."; #elif L==6 // gn "Se han eliminado %u mensajes."; // Okoteve traducción #elif L==7 // it @@ -23506,13 +23505,13 @@ const char *Txt_Messages_of_THE_USER_X_have_been_deleted = // Warning: it is ver #if L==1 // ca "S'han eliminat els missatges de %s."; #elif L==2 // de - "Messages of %s have been deleted."; // Need Übersetzung + "Nachrichten von %s wurden gelöscht."; #elif L==3 // en "Messages of %s have been deleted."; #elif L==4 // es "Se han eliminado los mensajes de %s."; #elif L==5 // fr - "Messages of %s have been deleted."; // Besoin de traduction + "Les messages de %s ont été supprimés."; #elif L==6 // gn "Se han eliminado los mensajes de %s."; // Okoteve traducción #elif L==7 // it @@ -28996,19 +28995,19 @@ const char *Txt_Number_of_BR_times_that_BR_questions_BR_have_been_BR_responded = #if L==1 // ca "Nombre de
vegades
que s'ha
respost"; #elif L==2 // de - "Number of
times that
questions
have been
responded"; // Need Übersetzung + "Anzahl der
beantworteten
Fragen"; #elif L==3 // en "Number of
times that
questions
have been
responded"; #elif L==4 // es "N.º de
veces
que se ha
respondido"; #elif L==5 // fr - "Number of
times that
questions
have been
responded"; // Besoin de traduction + "Nombre de
fois où
les questions
ont été
répondues"; #elif L==6 // gn "N.º de
veces
que se ha
respondido"; // Okoteve traducción #elif L==7 // it - "Number of
times that
questions
have been
responded"; // Bisogno di traduzione + "Numero di
volte in cui
è stata
data risposta
alle domande"; #elif L==8 // pl - "Number of
times that
questions
have been
responded"; // Potrzebujesz tlumaczenie + "Ile razy
udzielono
odpowiedzi
na pytania"; #elif L==9 // pt "N.º de
vezes que
as perguntas
foram
respondidas"; #endif @@ -29653,7 +29652,7 @@ const char *Txt_Only_courses_with_more_than_X_clicks_are_shown = // Warning: it #elif L==4 // es "Solo se muestran las asignaturas con más de %u clics."; #elif L==5 // fr - "Seuls les cours avec plus de %u clics sont présentés."; + "Seuls les matières avec plus de %u clics sont présentées."; #elif L==6 // gn "Solo se muestran las asignaturas con más de %u clics."; // Okoteve traducción #elif L==7 // it @@ -31556,21 +31555,21 @@ const char *Txt_PRIVACY_OPTIONS[Pri_NUM_OPTIONS_PRIVACY] = , [Pri_VISIBILITY_USER] = #if L==1 // ca - "Visible por mí y mis profesores / mis estudiantes" // Necessita traducció + "Visible per mi i els meus professors / els meus estudiants" #elif L==2 // de - "Visible by me and my teachers / my students" // Need Übersetzung + "Sichtbar für mich und meine Lehrer / meine Schüler" #elif L==3 // en "Visible by me and my teachers / my students" #elif L==4 // es "Visible por mí y mis profesores / mis estudiantes" #elif L==5 // fr - "Visible by me and my teachers / my students" // Besoin de traduction + "Visible par moi et mes professeurs / mes étudiants" #elif L==6 // gn "Visible por mí y mis profesores / mis estudiantes" // Okoteve traducción #elif L==7 // it - "Visible by me and my teachers / my students" // Bisogno di traduzione + "Visibile da me e dai miei insegnanti / miei studenti" #elif L==8 // pl - "Visible by me and my teachers / my students" // Potrzebujesz tlumaczenie + "Widoczne przeze mnie i moich nauczycieli / moich uczniów" #elif L==9 // pt "Visível por mim e meus professores / meus estudantes" #endif @@ -31585,7 +31584,7 @@ const char *Txt_PRIVACY_OPTIONS[Pri_NUM_OPTIONS_PRIVACY] = #elif L==4 // es "Visible por usuarios con los que comparto asignaturas" #elif L==5 // fr - "Visible par les utilisateurs avec qui je partage des cours" + "Visible par les utilisateurs avec qui je partage des matières" #elif L==6 // gn "Visible por usuarios con los que comparto asignaturas" // Okoteve traducción #elif L==7 // it @@ -41569,49 +41568,49 @@ const char *Txt_Send_URL = #elif L==7 // it "Invia URL"; #elif L==8 // pl - "Send URL"; // Potrzebujesz tlumaczenie + "Wyślij URL"; #elif L==9 // pt "Enviar URL"; #endif const char *Txt_Sender_banned_click_to_unban_him = #if L==1 // ca - "Remitente bloqueado/a; pulse para desbloquearlo/a"; // Necessita traducció + "Remitent prohibit; feu clic per desbanbar-lo"; #elif L==2 // de - "Sender banned; click to unban her/him"; // Need Übersetzung + "Absender gesperrt; klicken, um sie/ihn zu entsperren"; #elif L==3 // en "Sender banned; click to unban her/him"; #elif L==4 // es "Remitente bloqueado/a; pulse para desbloquearlo/a"; #elif L==5 // fr - "Sender banned; click to unban her/him"; // Besoin de traduction + "Expéditeur banni; cliquez pour le débannir"; #elif L==6 // gn "Remitente bloqueado/a; pulse para desbloquearlo/a"; // Okoteve traducción #elif L==7 // it - "Sender banned; click to unban her/him"; // Bisogno di traduzione + "Mittente vietato; fare clic per riattivarlo"; #elif L==8 // pl - "Sender banned; click to unban her/him"; // Potrzebujesz tlumaczenie + "Nadawca zbanowany; kliknij, aby odblokować ją/jego"; #elif L==9 // pt "Remetente banido; clique para desbanir ela/ele"; #endif const char *Txt_Sender_permitted_click_to_ban_him = #if L==1 // ca - "Remitente permitido/a; pulse para bloquearlo/a"; // Necessita traducció + "Remitent permès; feu clic per prohibir-lo"; #elif L==2 // de - "Sender permitted; click to ban her/him"; // Need Übersetzung + "Absender erlaubt; klicken, um sie/ihn zu sperren"; #elif L==3 // en "Sender permitted; click to ban her/him"; #elif L==4 // es "Remitente permitido/a; pulse para bloquearlo/a"; #elif L==5 // fr - "Sender permitted; click to ban her/him"; // Besoin de traduction + "Expéditeur autorisé; cliquez pour l'exclure"; #elif L==6 // gn "Remitente permitido/a; pulse para bloquearlo/a"; // Okoteve traducción #elif L==7 // it - "Sender permitted; click to ban her/him"; // Bisogno di traduzione + "Mittente consentito; clicca per bannarla"; #elif L==8 // pl - "Sender permitted; click to ban her/him"; // Potrzebujesz tlumaczenie + "Nadawca dozwolony; kliknij, aby zbanować ją/jego"; #elif L==9 // pt "Remetente permitido; clique para banir ela/ele"; #endif @@ -43675,72 +43674,72 @@ const char *Txt_STAT_DEGREE_PHOTO_SIZE[Pho_NUM_HOW_COMPUTE_PHOTO_SIZES] = { [Pho_PROPORTIONAL_TO_NUMBER_OF_STUDENTS] = #if L==1 // ca - "proporcional al nº de estudiantes" // Necessita traducció + "proporcional al nombre d'estudiants" #elif L==2 // de - "proportional to the number of students" // Need Übersetzung + "proportional zur Schülerzahl" #elif L==3 // en "proportional to the number of students" #elif L==4 // es "proporcional al nº de estudiantes" #elif L==5 // fr - "proportional to the number of students" // Besoin de traduction + "proportionnel au nombre d'étudiants" #elif L==6 // gn "proporcional al nº de estudiantes" // Okoteve traducción #elif L==7 // it "proporzionale al numero di studenti" #elif L==8 // pl - "proportional to the number of students" // Potrzebujesz tlumaczenie + "proporcjonalna do liczby studentów" #elif L==9 // pt "proporcional ao número de estudantes" #endif , [Pho_PROPORTIONAL_TO_NUMBER_OF_PHOTOS] = #if L==1 // ca - "proporcional al nº de estudiantes con fotografía" // Necessita traducció + "proporcional al nombre d'estudiants amb foto" #elif L==2 // de - "proportional to the number of students with photo" // Need Übersetzung + "proportional zur Anzahl der Schüler mit Foto" #elif L==3 // en "proportional to the number of students with photo" #elif L==4 // es "proporcional al nº de estudiantes con fotografía" #elif L==5 // fr - "proportional to the number of students with photo" // Besoin de traduction + "proportionnel au nombre d'étudiants avec photo" #elif L==6 // gn "proporcional al nº de estudiantes con fotografía" // Okoteve traducción #elif L==7 // it "proporzionale al numero di studenti con foto" #elif L==8 // pl - "proportional to the number of students with photo" // Potrzebujesz tlumaczenie + "proporcjonalna do liczby uczniów ze zdjęciem" #elif L==9 // pt "proporcional ao número de estudantes com foto" #endif , [Pho_PROPORTIONAL_TO_PERCENT] = #if L==1 // ca - "proporcional al porcentaje de estudiantes con fotografía" // Necessita traducció + "proporcional al percentatge d'estudiants amb fotografia" #elif L==2 // de - "proportional to the percentage of students with photo" // Need Übersetzung + "proportional zum Prozentsatz der Schüler mit Foto" #elif L==3 // en "proportional to the percentage of students with photo" #elif L==4 // es "proporcional al porcentaje de estudiantes con fotografía" #elif L==5 // fr - "proportional to the percentage of students with photo" // Besoin de traduction + "proportionnel au pourcentage d'étudiants avec photo" #elif L==6 // gn "proporcional al porcentaje de estudiantes con fotografía" // Okoteve traducción #elif L==7 // it "proporzionale alla percentuale di studenti con foto" #elif L==8 // pl - "proportional to the percentage of students with photo" // Potrzebujesz tlumaczenie + "proporcjonalna do odsetka uczniów ze zdjęciem" #elif L==9 // pt "proporcional ao porcentagem de estudantes com foto" #endif , [Pho_UNIQUE_SIZE] = #if L==1 // ca - "igual para todas las titulaciones" // Necessita traducció + "igual per a totes les titulacions" #elif L==2 // de - "same for all degrees" // Need Übersetzung + "für alle Abschlüsse gleich" #elif L==3 // en "same for all degrees" #elif L==4 // es @@ -44998,7 +44997,7 @@ const char *Txt_Student_record_card_in_this_course_has_been_updated = #elif L==4 // es "La ficha del estudiante en la asignatura se ha actualizado."; #elif L==5 // fr - "La fiche du étudiant de ce cours a été mise à jour."; + "La fiche du étudiant de cette matière a été mise à jour."; #elif L==6 // gn "La ficha del estudiante en la asignatura se ha actualizado."; // Okoteve traducción #elif L==7 // it @@ -45823,19 +45822,19 @@ const char *Txt_Tag_X_allowed_Click_to_disable_it = // Warning: it is very impor #if L==1 // ca "Descriptor %s permès. Premeu per prohibir-ho."; #elif L==2 // de - "Tag %s allowed. Click to disable it."; // Need Übersetzung + "Tag %s erlaubt. Klicken Sie, um es zu deaktivieren."; #elif L==3 // en "Tag %s allowed. Click to disable it."; #elif L==4 // es "Descriptor %s permitido. Pulse para prohibirlo."; #elif L==5 // fr - "Tag %s allowed. Click to disable it."; // Besoin de traduction + "Balise %s autorisée. Cliquez pour le désactiver."; #elif L==6 // gn "Descriptor %s permitido. Pulse para prohibirlo."; // Okoteve traducción #elif L==7 // it "Etichetta %s autorizzata. Clicca per censurarla."; #elif L==8 // pl - "Tag %s allowed. Click to disable it."; // Potrzebujesz tlumaczenie + "Tag %s dozwolony. Kliknij, aby go wyłączyć."; #elif L==9 // pt "Descritor %s permitido. Clique para proibir."; #endif @@ -45856,7 +45855,7 @@ const char *Txt_Tag_not_allowed = #elif L==7 // it "Etichetta non autorizzata"; #elif L==8 // pl - "Tag not allowed"; // Potrzebujesz tlumaczenie + "Tag niedozwolony"; #elif L==9 // pt "Descritor não permitido"; #endif @@ -45865,19 +45864,19 @@ const char *Txt_Tag_X_not_allowed_Click_to_allow_it = // Warning: it is very imp #if L==1 // ca "Descriptor %s no permès. Premeu per permetre-ho."; #elif L==2 // de - "Tag %s not allowed. Click to allow it."; // Need Übersetzung + "Tag %s nicht erlaubt. Klicken Sie, um es zuzulassen."; #elif L==3 // en "Tag %s not allowed. Click to allow it."; #elif L==4 // es "Descriptor %s no permitido. Pulse para permitirlo."; #elif L==5 // fr - "Tag %s not allowed. Click to allow it."; // Besoin de traduction + "Balise %s non autorisée. Cliquez pour l'autoriser."; #elif L==6 // gn "Descriptor %s no permitido. Pulse para permitirlo."; // Okoteve traducción #elif L==7 // it "Etichetta %s censurata. Clicca per autorizzarla."; #elif L==8 // pl - "Tag %s not allowed. Click to allow it."; // Potrzebujesz tlumaczenie + "Tag %s jest niedozwolony. Kliknij, aby na to zezwolić."; #elif L==9 // pt "Descritor %s não permitido. Clique para permitir."; #endif @@ -47417,19 +47416,19 @@ const char *Txt_The_email_X_has_been_confirmed = // Warning: it is very importan #if L==1 // ca "El correu %s ha estat confirmat."; #elif L==2 // de - "The email %s has been confirmed."; // Need Übersetzung + "Die E-Mail %s wurde bestätigt."; #elif L==3 // en "The email %s has been confirmed."; #elif L==4 // es "El correo %s ha sido confirmado."; #elif L==5 // fr - "The email %s has been confirmed."; // Besoin de traduction + "L'e-mail %s a été confirmé."; #elif L==6 // gn "El correo %s ha sido confirmado."; // Okoteve traducción #elif L==7 // it - "The email %s has been confirmed."; // Bisogno di traduzione + "L'email %s è stata confermata."; #elif L==8 // pl - "The email %s has been confirmed."; // Potrzebujesz tlumaczenie + "E-mail %s został potwierdzony."; #elif L==9 // pt "O email %s foi confirmado."; #endif @@ -47564,13 +47563,13 @@ const char *Txt_The_email_domain_X_already_exists = #elif L==4 // es "El dominio de correo ya existe."; #elif L==5 // fr - "The email domain already exists."; // Besoin de traduction + "Le domaine de messagerie existe déj`."; #elif L==6 // gn "El dominio de correo ya existe."; // Okoteve traducción #elif L==7 // it "Il campo mail già esiste."; #elif L==8 // pl - "The email domain already exists."; // Potrzebujesz tlumaczenie + "Domena poczty e-mail już istnieje."; #elif L==9 // pt "O domínio de email já existe."; #endif @@ -47600,19 +47599,19 @@ const char *Txt_The_email_domain_X_has_not_changed = // Warning: it is very impo #if L==1 // ca "El domini de correu %s no ha canviat."; #elif L==2 // de - "The email domain %s has not changed."; // Need Übersetzung + "Die E-Mail-Domäne %s hat sich nicht geändert."; #elif L==3 // en "The email domain %s has not changed."; #elif L==4 // es "El dominio de correo %s no ha cambiado."; #elif L==5 // fr - "The email domain %s has not changed."; // Besoin de traduction + "Le domaine de messagerie %s n'a pas changé."; #elif L==6 // gn "El dominio de correo %s no ha cambiado."; // Okoteve traducción #elif L==7 // it "Il campo mail %s non è cambiato."; #elif L==8 // pl - "The email domain %s has not changed."; // Potrzebujesz tlumaczenie + "Domena poczty e-mail %s nie uległa zmianie."; #elif L==9 // pt "O domínio de email %s não foi alterado."; #endif @@ -47796,42 +47795,42 @@ const char *Txt_The_file_of_folder_no_longer_exists_or_is_now_hidden = const char *Txt_The_file_type_is_X_and_should_be_HTML_or_ZIP = // Warning: it is very important to include %s in the following sentences #if L==1 // ca - "El tipo de archivo es %s y debe ser HTML o ZIP."; // Necessita traducció + "El tipus de fitxer és %s i hauria de ser HTML o ZIP."; #elif L==2 // de - "The file type is %s and should be HTML or ZIP."; // Need Übersetzung + "Der Dateityp ist %s und sollte HTML oder ZIP sein."; #elif L==3 // en "The file type is %s and should be HTML or ZIP."; #elif L==4 // es "El tipo de archivo es %s y debe ser HTML o ZIP."; #elif L==5 // fr - "The file type is %s and should be HTML or ZIP."; // Besoin de traduction + "Le type de fichier est %s et doit être HTML ou ZIP."; #elif L==6 // gn "El tipo de archivo es %s y debe ser HTML o ZIP."; // Okoteve traducción #elif L==7 // it "Il tipo di file è %s e dovrebbe essere HTML o ZIP."; #elif L==8 // pl - "The file type is %s and should be HTML or ZIP."; // Potrzebujesz tlumaczenie + "Typ pliku to %s i powinien to być HTML lub ZIP."; #elif L==9 // pt "O tipo de arquivo é %s e deve ser HTML ou ZIP."; #endif const char *Txt_The_file_type_should_be_HTML_or_ZIP = #if L==1 // ca - "El tipo de archivo debe ser HTML o ZIP."; // Necessita traducció + "El tipus d'arxiu hauria de ser HTML o ZIP."; #elif L==2 // de - "The file type should be HTML or ZIP."; // Need Übersetzung + "Der Dateityp sollte HTML oder ZIP sein."; #elif L==3 // en "The file type should be HTML or ZIP."; #elif L==4 // es "El tipo de archivo debe ser HTML o ZIP."; #elif L==5 // fr - "The file type should be HTML or ZIP."; // Besoin de traduction + "Le type de fichier doit être HTML ou ZIP."; #elif L==6 // gn "El tipo de archivo debe ser HTML o ZIP."; // Okoteve traducción #elif L==7 // it "Il tipo di file dovrebbe essere HTML o ZIP."; #elif L==8 // pl - "The file type should be HTML or ZIP."; // Potrzebujesz tlumaczenie + "Typ pliku powinien być HTML lub ZIP."; #elif L==9 // pt "O tipo de arquivo deve ser HTML ou ZIP."; #endif @@ -48002,13 +48001,13 @@ const char *Txt_The_group_X_already_exists = // Warning: it is very important to #elif L==4 // es "El grupo %s ya existe."; #elif L==5 // fr - "The group %s already exists."; // Besoin de traduction + "Le groupe %s existe déjà."; #elif L==6 // gn "El grupo %s ya existe."; // Okoteve traducción #elif L==7 // it "Il gruppo %s già esiste."; #elif L==8 // pl - "The group %s already exists."; // Potrzebujesz tlumaczenie + "Grupa %s już istnieje."; #elif L==9 // pt "O grupo %s já existe."; #endif @@ -48038,19 +48037,19 @@ const char *Txt_The_group_X_is_now_closed = // Warning: it is very important to #if L==1 // ca "El grup %s ara està tancat."; #elif L==2 // de - "The group %s is now closed."; // Need Übersetzung + "Die Gruppe %s ist jetzt geschlossen."; #elif L==3 // en "The group %s is now closed."; #elif L==4 // es "El grupo %s está ahora cerrado."; #elif L==5 // fr - "The group %s is now closed."; // Besoin de traduction + "Le groupe %s est maintenant fermé."; #elif L==6 // gn "El grupo %s está ahora cerrado."; // Okoteve traducción #elif L==7 // it "Il gruppo %s è ora chiuso."; #elif L==8 // pl - "The group %s is now closed."; // Potrzebujesz tlumaczenie + "Grupa %s jest teraz zamknięta."; #elif L==9 // pt "O grupo %s está agora fechado."; #endif @@ -48059,19 +48058,19 @@ const char *Txt_The_group_X_is_now_open = // Warning: it is very important to in #if L==1 // ca "El grup %s ara està obert."; #elif L==2 // de - "The group %s is now open."; // Need Übersetzung + "Die Gruppe %s ist jetzt geöffnet."; #elif L==3 // en "The group %s is now open."; #elif L==4 // es "El grupo %s está ahora abierto."; #elif L==5 // fr - "The group %s is now open."; // Besoin de traduction + "Le groupe %s est maintenant ouvert."; #elif L==6 // gn "El grupo %s está ahora abierto."; // Okoteve traducción #elif L==7 // it "Il gruppo %s è ora aperto."; #elif L==8 // pl - "The group %s is now open."; // Potrzebujesz tlumaczenie + "Grupa %s jest teraz otwarta."; #elif L==9 // pt "O grupo %s está agora aberto."; #endif @@ -48360,11 +48359,11 @@ const char *Txt_The_ID_nickname_or_email_X_is_not_valid = // Warning: it is very const char *Txt_The_ID_X_matches_one_of_the_existing = // Warning: it is very important to include %s in the following sentences #if L==1 // ca - "El ID (DNI/cédula) %s" - " coincide con uno de los existentes."; // Necessita traducció + "L'ID %s" + " coincideix amb un dels existents."; #elif L==2 // de - "The ID %s" - " matches one of the existing."; // Need Übersetzung + "Die ID %s" + " stimmt mit einer der vorhandenen überein."; #elif L==3 // en "The ID %s" " matches one of the existing."; @@ -48372,17 +48371,17 @@ const char *Txt_The_ID_X_matches_one_of_the_existing = // Warning: it is very im "El ID (DNI/cédula) %s" " coincide con uno de los existentes."; #elif L==5 // fr - "The ID %s" - " matches one of the existing."; // Besoin de traduction + "L'ID %s" + " correspond à l'un des existants."; #elif L==6 // gn "El ID (DNI/cédula) %s" " coincide con uno de los existentes."; // Okoteve traducción #elif L==7 // it - "The ID %s" - " matches one of the existing."; // Bisogno di traduzione + "L'ID %s" + " corrisponde a uno degli esistenti."; #elif L==8 // pl - "The ID %s" - " matches one of the existing."; // Potrzebujesz tlumaczenie + "ID %s" + " pasuje do jednego z istniejących."; #elif L==9 // pt "O ID %s" " corresponde a um dos existentes."; @@ -48861,42 +48860,42 @@ const char *Txt_The_message_has_not_been_sent_to_any_recipient = const char *Txt_The_message_has_been_sent_to_1_recipient = #if L==1 // ca - "El mensaje se ha enviado a 1 destinatario."; // Necessita traducció + "El missatge s'ha enviat a 1 destinatari."; #elif L==2 // de - "The message has been sent to 1 recipient."; // Need Übersetzung + "Die Nachricht wurde an 1 Empfänger gesendet."; #elif L==3 // en "The message has been sent to 1 recipient."; #elif L==4 // es "El mensaje se ha enviado a 1 destinatario."; #elif L==5 // fr - "The message has been sent to 1 recipient."; // Besoin de traduction + "Le message a été envoyé à 1 destinataire."; #elif L==6 // gn "El mensaje se ha enviado a 1 destinatario."; // Okoteve traducción #elif L==7 // it "Il messaggio è stato inviato a 1 destinatario."; #elif L==8 // pl - "The message has been sent to 1 recipient."; // Potrzebujesz tlumaczenie + "Wiadomość została wysłana do 1 odbiorców."; #elif L==9 // pt "A mensagem foi enviada para 1 destinatário."; #endif const char *Txt_The_message_has_been_sent_to_X_recipients = // Warning: it is very important to include %u in the following sentences #if L==1 // ca - "El mensaje se ha enviado a %u destinatarios."; // Necessita traducció + "El missatge s'ha enviat a %u destinataris."; #elif L==2 // de - "The message has been sent to %u recipients."; // Need Übersetzung + "Die Nachricht wurde an %u Empfänger gesendet."; #elif L==3 // en "The message has been sent to %u recipients."; #elif L==4 // es "El mensaje se ha enviado a %u destinatarios."; #elif L==5 // fr - "The message has been sent to %u recipients."; // Besoin de traduction + "Le message a été envoyé à %u destinataires."; #elif L==6 // gn "El mensaje se ha enviado a %u destinatarios."; // Okoteve traducción #elif L==7 // it "Il messaggio è stato inviato a %u destinatari."; #elif L==8 // pl - "The message has been sent to %u recipients."; // Potrzebujesz tlumaczenie + "Wiadomość została wysłana do %u odbiorców."; #elif L==9 // pt "A mensagem foi enviada para %u destinatários."; #endif @@ -49008,15 +49007,14 @@ const char *Txt_The_nickname_has_been_registered_successfully = const char *Txt_The_nickname_is_not_valid_ = #if L==1 // ca - "El apodo no es válido.
" - "El apodo debe tener una longitud entre %u y %u caracteres (sin contar la @ inicial).
" - "Cada carácter posterior a la @ inicial puede ser una letra (a-z, A-Z)," - " un dígito (0-9) o "_"."; // Necessita traducció + "El sobrenom no és vàlid.
" + "El vostre àlies ha de tenir una longitud d'entre %u i %u caràcters (sense incloure la @ inicial).
" + "Cada caràcter després de la inicial @ pot ser una lletra (a-z, A-Z)," + " un dígit (0-9) o "_"."; #elif L==2 // de - "The nickname is not valid.
" - "Your nickname must have a length between %u and %u characters (not including the initial @).
" - "Each character after initial @ can be a letter (a-z, A-Z)," - " a digit (0-9) or "_"."; // Need Übersetzung + "Der Spitzname ist ungültig.
" + "Ihr Spitzname muss zwischen %u und %u Zeichen lang sein (ohne den Anfangsbuchstaben @).
" + "Jedes Zeichen nach dem Anfangsbuchstaben @ kann ein Buchstabe (a-z, A-Z), eine Ziffer (0-9) oder "_" sein."; #elif L==3 // en "The nickname is not valid.
" "Your nickname must have a length between %u and %u characters (not including the initial @).
" @@ -49028,25 +49026,22 @@ const char *Txt_The_nickname_is_not_valid_ = "Cada carácter posterior a la @ inicial puede ser una letra (a-z, A-Z)," " un dígito (0-9) o "_"."; #elif L==5 // fr - "The nickname is not valid.
" - "Your nickname must have a length between %u and %u characters (not including initial the @).
" - "Each character after initial @ can be a letter (a-z, A-Z)," - " a digit (0-9) or "_"."; // Besoin de traduction + "Le surnom n'est pas valide.
" + "Votre pseudo doit avoir une longueur comprise entre %u et %u caractères (n'incluant pas l'initiale @).
" + "Chaque caractère après l'initiale @ peut être une lettre (a-z, A-Z), un chiffre (0-9) ou "_"."; #elif L==6 // gn "El apodo no es válido.
" "El apodo debe tener una longitud entre %u y %u caracteres (sin contar la @ inicial).
" "Cada carácter posterior a la @ inicial puede ser una letra (a-z, A-Z)," " un dígito (0-9) o "_"."; // Okoteve traducción #elif L==7 // it - "Il nome utente non è valido.
" - "Your nickname must have a length between %u and %u characters (not including the initial @).
" - "Each character after initial @ can be a letter (a-z, A-Z)," - " a digit (0-9) or "_"."; // Bisogno di traduzione + "Il soprannome non è valido.
" + "Il tuo nickname deve avere una lunghezza compresa tra %u e %u caratteri (esclusa l'iniziale @).
" + "Ciascun carattere dopo l'iniziale @ può essere una lettera (a-z, A-Z), una cifra (0-9) o "_"."; #elif L==8 // pl - "The nickname is not valid.
" - "Your nickname must have a length between %u and %u characters (not including the initial @).
" - "Each character after initial @ can be a letter (a-z, A-Z)," - " a digit (0-9) or "_"."; // Potrzebujesz tlumaczenie + "Pseudonim jest nieprawidłowy.
" + "Twój pseudonim musi mieć długość od %u do %u znaków (nie licząc początkowego @).
" + "Każdy znak po początkowym @ może być literą (a-z, A-Z), cyfrą (0-9) lub "_"."; #elif L==9 // pt "A alcunha não é válido.
" "Sua alcunha deve ter um tamanho entre %u e %u caracteres (sem incluir o inicial @).
" @@ -49691,19 +49686,19 @@ const char *Txt_The_properties_of_file_X_have_been_saved = // Warning: it is ver #if L==1 // ca "Les propietats del arxiu %s s'han desat."; #elif L==2 // de - "The properties of file %s have been saved."; // Need Übersetzung + "Die Eigenschaften der Datei %s wurden gespeichert."; #elif L==3 // en "The properties of file %s have been saved."; #elif L==4 // es "Las propiedades del archivo %s se han guardado."; #elif L==5 // fr - "The properties of file %s have been saved."; // Besoin de traduction + "Les propriétés du fichier %s ont été enregistrées."; #elif L==6 // gn "Las propiedades del archivo %s se han guardado."; // Okoteve traducción #elif L==7 // it - "The properties of file %s have been saved."; // Bisogno di traduzione + "Le proprietà del file %s sono state salvate."; #elif L==8 // pl - "The properties of file %s have been saved."; // Potrzebujesz tlumaczenie + "Właściwości pliku %s zostały zapisane."; #elif L==9 // pt "As propriedades do arquivo %s foram salvas."; #endif @@ -57037,9 +57032,9 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #endif , #if L==1 // ca - "1º" // Necessita traducció + "1r" #elif L==2 // de - "1st" // Need Übersetzung + "1" #elif L==3 // en "1st" #elif L==4 // es @@ -57049,17 +57044,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "1º" // Okoteve traducción #elif L==7 // it - "Primo" + "1º" #elif L==8 // pl - "1st" // Potrzebujesz tlumaczenie + "1." #elif L==9 // pt "1º" #endif , #if L==1 // ca - "2º" // Necessita traducció + "2n" #elif L==2 // de - "2nd" // Need Übersetzung + "2" #elif L==3 // en "2nd" #elif L==4 // es @@ -57069,15 +57064,15 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "2º" // Okoteve traducción #elif L==7 // it - "Secondo" + "2º" #elif L==8 // pl - "2nd" // Potrzebujesz tlumaczenie + "2." #elif L==9 // pt "2º" #endif , #if L==1 // ca - "3º" // Necessita traducció + "3r" #elif L==2 // de "3rd" #elif L==3 // en @@ -57089,17 +57084,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "3º" // Okoteve traducción #elif L==7 // it - "Terzo" + "3º" #elif L==8 // pl - "3rd" // Potrzebujesz tlumaczenie + "3." #elif L==9 // pt "3º" #endif , #if L==1 // ca - "4º" // Necessita traducció + "4t" #elif L==2 // de - "4th" // Need Übersetzung + "4" #elif L==3 // en "4th" #elif L==4 // es @@ -57109,17 +57104,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "4º" // Okoteve traducción #elif L==7 // it - "4th" // Bisogno di traduzione + "4º" #elif L==8 // pl - "4th" // Potrzebujesz tlumaczenie + "4." #elif L==9 // pt "4º" #endif , #if L==1 // ca - "5º" // Necessita traducció + "5è" #elif L==2 // de - "5th" // Need Übersetzung + "5" #elif L==3 // en "5th" #elif L==4 // es @@ -57129,17 +57124,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "5º" // Okoteve traducción #elif L==7 // it - "Quinto" + "5º" #elif L==8 // pl - "5th" // Potrzebujesz tlumaczenie + "5." #elif L==9 // pt "5º" #endif , #if L==1 // ca - "6º" // Necessita traducció + "6è" #elif L==2 // de - "6th" // Need Übersetzung + "6" #elif L==3 // en "6th" #elif L==4 // es @@ -57149,17 +57144,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "6º" // Okoteve traducción #elif L==7 // it - "Sesto" + "6º" #elif L==8 // pl - "6th" // Potrzebujesz tlumaczenie + "6." #elif L==9 // pt "6º" #endif , #if L==1 // ca - "7º" // Necessita traducció + "7è" #elif L==2 // de - "7th" // Need Übersetzung + "7" #elif L==3 // en "7th" #elif L==4 // es @@ -57169,17 +57164,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "7º" // Okoteve traducción #elif L==7 // it - "Settimo" + "7º" #elif L==8 // pl - "7th" // Potrzebujesz tlumaczenie + "7." #elif L==9 // pt "7º" #endif , #if L==1 // ca - "8º" // Necessita traducció + "8è" #elif L==2 // de - "8th" // Need Übersetzung + "8" #elif L==3 // en "8th" #elif L==4 // es @@ -57189,17 +57184,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "8º" // Okoteve traducción #elif L==7 // it - "Ottavo" + "8º" #elif L==8 // pl - "8th" // Potrzebujesz tlumaczenie + "8." #elif L==9 // pt "8º" #endif , #if L==1 // ca - "9º" // Necessita traducció + "9è" #elif L==2 // de - "9th" // Need Übersetzung + "9" #elif L==3 // en "9th" #elif L==4 // es @@ -57209,17 +57204,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "9º" // Okoteve traducción #elif L==7 // it - "Nono" + "9º" #elif L==8 // pl - "9th" // Potrzebujesz tlumaczenie + "9." #elif L==9 // pt "9º" #endif , #if L==1 // ca - "10º" // Necessita traducció + "10è" #elif L==2 // de - "10th" // Need Übersetzung + "10" #elif L==3 // en "10th" #elif L==4 // es @@ -57229,17 +57224,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "10º" // Okoteve traducción #elif L==7 // it - "Decimo" + "10º" #elif L==8 // pl - "10th" // Potrzebujesz tlumaczenie + "10." #elif L==9 // pt "10º" #endif , #if L==1 // ca - "11º" // Necessita traducció + "11è" #elif L==2 // de - "11th" // Need Übersetzung + "11" #elif L==3 // en "11th" #elif L==4 // es @@ -57249,17 +57244,17 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "11º" // Okoteve traducción #elif L==7 // it - "Undicesimo" + "11º" #elif L==8 // pl - "11th" // Potrzebujesz tlumaczenie + "11." #elif L==9 // pt "11º" #endif , #if L==1 // ca - "12º" // Necessita traducció + "12è" #elif L==2 // de - "12th" // Need Übersetzung + "12" #elif L==3 // en "12th" #elif L==4 // es @@ -57269,9 +57264,9 @@ const char *Txt_YEAR_OF_DEGREE[1 + Deg_MAX_YEARS_PER_DEGREE] = #elif L==6 // gn "12º" // Okoteve traducción #elif L==7 // it - "Sesto" + "12º" #elif L==8 // pl - "12th" // Potrzebujesz tlumaczenie + "12." #elif L==9 // pt "12º" #endif @@ -57314,7 +57309,7 @@ const char *Txt_YES = #elif L==7 // it "SI"; #elif L==8 // pl - "YES"; // Potrzebujesz tlumaczenie + "TAK"; #elif L==9 // pt "SIM"; #endif @@ -57335,7 +57330,7 @@ const char *Txt_Yes = #elif L==7 // it "Sì"; #elif L==8 // pl - "Yes"; // Potrzebujesz tlumaczenie + "Tak"; #elif L==9 // pt "Sim"; #endif @@ -57356,7 +57351,7 @@ const char *Txt_Yesterday = #elif L==7 // it "Ieri"; #elif L==8 // pl - "Yesterday"; // Potrzebujesz tlumaczenie + "Wczorajszy dzień"; #elif L==9 // pt "Ontem"; #endif @@ -58332,21 +58327,21 @@ const char *Txt_You_have_no_unread_notifications = const char *Txt_You_have_not_banned_any_sender = #if L==1 // ca - "No ha bloqueado ningún remitente."; // Necessita traducció + "No heu prohibit cap remitent."; #elif L==2 // de - "You have not banned any sender."; // Need Übersetzung + "Sie haben keinen Absender gesperrt."; #elif L==3 // en "You have not banned any sender."; #elif L==4 // es "No ha bloqueado ningún remitente."; #elif L==5 // fr - "You have not banned any sender."; // Besoin de traduction + "Vous n'avez banni aucun expéditeur."; #elif L==6 // gn "No ha bloqueado ningún remitente."; // Okoteve traducción #elif L==7 // it - "You have not banned any sender."; // Bisogno di traduzione + "Non hai bannato nessun mittente."; #elif L==8 // pl - "You have not banned any sender."; // Potrzebujesz tlumaczenie + "Nie zbanowałeś żadnego nadawcy."; #elif L==9 // pt "Você não baniu nenhum remetente."; #endif @@ -59680,11 +59675,11 @@ const char *Txt_You_must_type_the_stem_of_the_question = const char *Txt_You_need_an_XML_file_containing_a_list_of_questions = #if L==1 // ca - "Es necesario un archivo XML" - " que contenga una lista de preguntas."; // Necessita traducció + "Necessites un arxiu XML" + " que contingui una llista de preguntes."; #elif L==2 // de - "You need an XML file" - " containing a list of questions."; // Need Übersetzung + "Sie benötigen eine XML-Datei" + " mit einem Fragenkatalog."; #elif L==3 // en "You need an XML file" " containing a list of questions."; @@ -59692,17 +59687,17 @@ const char *Txt_You_need_an_XML_file_containing_a_list_of_questions = "Es necesario un archivo XML" " que contenga una lista de preguntas."; #elif L==5 // fr - "You need an XML file" - " containing a list of questions."; // Besoin de traduction + "Vous avez besoin d'un fichier XML" + " contenant une liste de questions."; #elif L==6 // gn "Es necesario un archivo XML" " que contenga una lista de preguntas."; // Okoteve traducción #elif L==7 // it - "You need an XML file" - " containing a list of questions."; // Bisogno di traduzione + "È necessario un file XML" + " contenente un elenco di domande."; #elif L==8 // pl - "You need an XML file" - " containing a list of questions."; // Potrzebujesz tlumaczenie + "Potrzebujesz pliku XML" + " zawierającego listę pytań."; #elif L==9 // pt "Você precisa de um arquivo XML" " contendo uma lista de perguntas."; @@ -59731,11 +59726,11 @@ const char *Txt_You_should_read_the_following_information = const char *Txt_You_were_already_enroled_as_X_in_the_course_Y = // Warning: it is very important to include two %s in the following sentences #if L==1 // ca - "Usted ya estaba inscrito/a como %s" - " en la asignatura %s."; // Necessita traducció + "Ja estaves matriculat com a %s" + " a l'assignatura %s."; #elif L==2 // de - "You were already enroled as %s" - " in the course %s."; // Übersetzung notwendig + "Sie waren bereits als %s" + " im Studiengang %s eingeschrieben."; #elif L==3 // en "You were already enroled as %s" " in the course %s."; @@ -59743,17 +59738,17 @@ const char *Txt_You_were_already_enroled_as_X_in_the_course_Y = // Warning: it i "Usted ya estaba inscrito/a como %s" " en la asignatura %s."; #elif L==5 // fr - "You were already enroled as %s" - " in the course %s."; // Besoin de traduction + "Vous étiez déjà inscrit comme %s" + " dans la matière %s."; #elif L==6 // gn "Usted ya estaba inscrito/a como %s" " en la asignatura %s."; // Okoteve traducción #elif L==7 // it - "You were already enroled as %s" - " in the course %s."; // Bisogno di traduzione + "Eri già iscritto come %s" + " al corso %s."; #elif L==8 // pl - "You were already enroled as %s" - " in the course %s."; // Potrzebujesz tlumaczenie + "Byłeś już zapisany jako %s" + " na kurs %s."; #elif L==9 // pt "Você já estava inscrito/a como %s" " na disciplina %s."; diff --git a/swad_text_action.c b/swad_text_action.c index 1c55ca5e6..bd8d0ea22 100644 --- a/swad_text_action.c +++ b/swad_text_action.c @@ -165,128 +165,128 @@ const char *Txt_Actions[Act_NUM_ACTIONS] = , [ActReqSch] = #if L==1 // ca - "Request search" // Necessita traducció + "Sol·licitar la recerca" #elif L==2 // de - "Request search" // Need Übersetzung + "Suche anfordern" #elif L==3 // en "Request search" #elif L==4 // es "Solicitar búsqueda" #elif L==5 // fr - "Request search" // Besoin de traduction + "Demander une recherche" #elif L==6 // gn "Solicitar búsqueda" // Okoteve traducción #elif L==7 // it - "Request search" // Bisogno di traduzione + "Richiedere la ricerca" #elif L==8 // pl - "Request search" // Potrzebujesz tlumaczenie + "Poproś o wyszukiwanie" #elif L==9 // pt - "Request search" // Precisa de tradução + "Solicitar pesquisa" #endif , [ActSeeGblTL] = #if L==1 // ca - "Show timeline global" // Necessita traducció + "Mostrar timeline global" #elif L==2 // de - "Show timeline global" // Need Übersetzung + "Globale Timeline anzeigen" #elif L==3 // en - "Show timeline global" + "Show global timeline" #elif L==4 // es "Mostrar timeline global" #elif L==5 // fr - "Show timeline global" // Besoin de traduction + "Afficher chronologie globale" #elif L==6 // gn "Mostrar timeline global" // Okoteve traducción #elif L==7 // it - "Show timeline global" // Bisogno di traduzione + "Mostra timeline globale" #elif L==8 // pl - "Show timeline global" // Potrzebujesz tlumaczenie + "Pokaż globalną timeline" #elif L==9 // pt - "Show timeline global" // Precisa de tradução + "Mostrar timeline global" #endif , [ActSeeSocPrf] = #if L==1 // ca - "Suggest list of users to follow" // Necessita traducció + "Suggerir llista d'usuaris a seguir" #elif L==2 // de - "Suggest list of users to follow" // Need Übersetzung + "Schlagen Sie eine Liste von Benutzern vor, denen Sie folgen möchten" #elif L==3 // en "Suggest list of users to follow" #elif L==4 // es "Sugerir lista de usuarios a seguir" #elif L==5 // fr - "Suggest list of users to follow" // Besoin de traduction + "Suggérer liste d'utilisateurs à suivre" #elif L==6 // gn "Sugerir lista de usuarios a seguir" // Okoteve traducción #elif L==7 // it - "Suggest list of users to follow" // Bisogno di traduzione + "Suggerisci elenco di utenti da seguire" #elif L==8 // pl - "Suggest list of users to follow" // Potrzebujesz tlumaczenie + "Zasugeruj listę użytkowników do obserwowania" #elif L==9 // pt - "Suggest list of users to follow" // Precisa de tradução + "Sugerir lista de usuários a seguir" #endif , [ActSeeCal] = #if L==1 // ca - "Show calendar" // Necessita traducció + "Mostrar calendari" #elif L==2 // de - "Show calendar" // Need Übersetzung + "Kalender zeigen" #elif L==3 // en "Show calendar" #elif L==4 // es "Mostrar calendario" #elif L==5 // fr - "Show calendar" // Besoin de traduction + "Afficher le calendrier" #elif L==6 // gn "Mostrar calendario" // Okoteve traducción #elif L==7 // it - "Show calendar" // Bisogno di traduzione + "Mostra il calendario" #elif L==8 // pl - "Show calendar" // Potrzebujesz tlumaczenie + "Pokaż kalendarz" #elif L==9 // pt - "Show calendar" // Precisa de tradução + "Mostrar calendário" #endif , [ActSeeNtf] = #if L==1 // ca - "Show notifications" // Necessita traducció + "Mostrar notificacions" #elif L==2 // de - "Show notifications" // Need Übersetzung + "Benachrichtigungen zeigen" #elif L==3 // en "Show notifications" #elif L==4 // es "Mostrar notificaciones" #elif L==5 // fr - "Show notifications" // Besoin de traduction + "Afficher les notifications" #elif L==6 // gn "Mostrar notificaciones" // Okoteve traducción #elif L==7 // it - "Show notifications" // Bisogno di traduzione + "Mostra notifiche" #elif L==8 // pl - "Show notifications" // Potrzebujesz tlumaczenie + "Pokaż powiadomienia" #elif L==9 // pt - "Show notifications" // Precisa de tradução + "Mostrar notificações" #endif , [ActLogIn] = #if L==1 // ca - "Authenticate user" // Necessita traducció + "Autenticar usuari" #elif L==2 // de - "Authenticate user" // Need Übersetzung + "Benutzer authentifizieren" #elif L==3 // en "Authenticate user" #elif L==4 // es "Autenticar usuario" #elif L==5 // fr - "Authenticate user" // Besoin de traduction + "Authentifier l'utilisateur" #elif L==6 // gn "Autenticar usuario" // Okoteve traducción #elif L==7 // it - "Authenticate user" // Bisogno di traduzione + "Autenticare l'utente" #elif L==8 // pl - "Authenticate user" // Potrzebujesz tlumaczenie + "Uwierzytelnij użytkownika" #elif L==9 // pt - "Authenticate user" // Precisa de tradução + "Autenticar usuário" #endif , [ActLogInNew] =