Version 16.2.5

This commit is contained in:
Antonio Cañas Vargas 2016-09-26 11:49:18 +02:00
parent e9a609b9eb
commit b368b60563
3 changed files with 147 additions and 140 deletions

View File

@ -68,7 +68,7 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Acc_ShowFormCheckIfIHaveAccount (void); static void Acc_ShowFormCheckIfIHaveAccount (const char *Title);
static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWithoutArroba, static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWithoutArroba,
const char *NewEmail); const char *NewEmail);
static bool Acc_GetParamsNewAccount (char *NewNicknameWithoutArroba, static bool Acc_GetParamsNewAccount (char *NewNicknameWithoutArroba,
@ -114,14 +114,13 @@ void Acc_ShowFormAccount (void)
/* Links to log in and to change language */ /* Links to log in and to change language */
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">"); fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
Usr_PutLinkToLogin (); Usr_PutLinkToLogin ();
Pwd_PutLinkToSendNewPasswd ();
Pre_PutLinkToChangeLanguage (); Pre_PutLinkToChangeLanguage ();
fprintf (Gbl.F.Out,"</div>"); fprintf (Gbl.F.Out,"</div>");
/**** Show form to check if I have an account *****/ /**** Show form to check if I have an account *****/
Acc_ShowFormCheckIfIHaveAccount (); Acc_ShowFormCheckIfIHaveAccount ("Antes de crear una cuenta nueva"
" compruebe si ya le han inscrito con su ID"); // TODO: Need translation!!!
/**** Show form to create a new account *****/
Acc_ShowFormRequestNewAccountWithParams ("","");
} }
} }
@ -129,13 +128,13 @@ void Acc_ShowFormAccount (void)
/***************** Show form to check if I have an account *******************/ /***************** Show form to check if I have an account *******************/
/*****************************************************************************/ /*****************************************************************************/
static void Acc_ShowFormCheckIfIHaveAccount (void) static void Acc_ShowFormCheckIfIHaveAccount (const char *Title)
{ {
extern const char *The_ClassForm[The_NUM_THEMES]; extern const char *The_ClassForm[The_NUM_THEMES];
extern const char *Txt_ID; extern const char *Txt_ID;
/***** Start frame *****/ /***** Start frame *****/
Lay_StartRoundFrame (NULL,"Es posible que ya le hayan inscrito con su ID (DNI/c&eacute;dula)",NULL); // TODO: Need translation!!! Lay_StartRoundFrame (NULL,Title,NULL);
/***** Form to request user's ID for possible account already created *****/ /***** Form to request user's ID for possible account already created *****/
Act_FormStart (ActChkUsrAcc); Act_FormStart (ActChkUsrAcc);
@ -160,7 +159,7 @@ static void Acc_ShowFormCheckIfIHaveAccount (void)
void Acc_CheckIfEmptyAccountExists (void) void Acc_CheckIfEmptyAccountExists (void)
{ {
extern const char *Txt_Name; extern const char *Txt_Name;
char NewID[ID_MAX_LENGTH_USR_ID+1]; char ID[ID_MAX_LENGTH_USR_ID+1];
unsigned NumUsrs; unsigned NumUsrs;
unsigned NumUsr; unsigned NumUsr;
struct UsrData UsrDat; struct UsrData UsrDat;
@ -168,51 +167,52 @@ void Acc_CheckIfEmptyAccountExists (void)
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
/***** Links to other actions *****/
fprintf (Gbl.F.Out,"<div class=\"CONTEXT_MENU\">");
Usr_PutLinkToLogin ();
Pwd_PutLinkToSendNewPasswd ();
Pre_PutLinkToChangeLanguage ();
fprintf (Gbl.F.Out,"</div>");
/***** Get new user's ID from form *****/ /***** Get new user's ID from form *****/
Par_GetParToText ("ID",NewID,ID_MAX_LENGTH_USR_ID); Par_GetParToText ("ID",ID,ID_MAX_LENGTH_USR_ID);
// Users' IDs are always stored internally in capitals and without leading zeros // Users' IDs are always stored internally in capitals and without leading zeros
Str_RemoveLeadingZeros (NewID); Str_RemoveLeadingZeros (ID);
Str_ConvertToUpperText (NewID); Str_ConvertToUpperText (ID);
/***** Check if there are users with this user's ID *****/ /***** Check if there are users with this user's ID *****/
if (ID_CheckIfUsrIDIsValid (NewID)) if (ID_CheckIfUsrIDIsValid (ID))
{ {
sprintf (Query,"SELECT usr_data.UsrCod,usr_data.EncryptedUsrCod," sprintf (Query,"SELECT usr_IDs.UsrCod"
"UPPER(usr_data.FirstName),"
"UPPER(usr_data.Surname1),"
"UPPER(usr_data.Surname2)"
" FROM usr_IDs,usr_data" " FROM usr_IDs,usr_data"
" WHERE usr_IDs.UsrID='%s'" " WHERE usr_IDs.UsrID='%s'"
" AND usr_IDs.UsrCod=usr_data.UsrCod" " AND usr_IDs.UsrCod=usr_data.UsrCod"
" AND usr_data.Password=''", " AND usr_data.Password=''",
NewID); ID);
NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's codes"); NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's codes");
if (NumUsrs) if (NumUsrs)
{ {
/***** Start frame and write message with number of accounts found *****/ /***** Start frame and write message with number of accounts found *****/
if (NumUsrs == 1) Lay_StartRoundFrameTable (NULL,5,(NumUsrs == 1) ? "&iquest;Cree que usted es este usuario/a?" : // TODO: Need translation!!!
Lay_StartRoundFrameTable (NULL,5,"&iquest;Cree que usted es el siguiente usuario?"); // TODO: Need translation!!! "&iquest;Cree que usted es uno de estos usuarios?"); // TODO: Need translation!!!
else
{ /***** Initialize structure with user's data *****/
sprintf (Gbl.Title,"&iquest;Cree que usted es uno de los siguientes %u usuarios?", Usr_UsrDataConstructor (&UsrDat);
NumUsrs);
Lay_StartRoundFrameTable (NULL,5,Gbl.Title); // TODO: Need translation!!!
}
/***** List users found *****/ /***** List users found *****/
for (NumUsr = 1, Gbl.RowEvenOdd = 0; for (NumUsr = 1, Gbl.RowEvenOdd = 0;
NumUsr <= NumUsrs; NumUsr <= NumUsrs;
NumUsr++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd) NumUsr++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd)
{ {
/***** Get user's data from query result *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
/* Get user's code */ /* Get user's code */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]); UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get encrypted user's code */ /* Get user's data */
strncpy (UsrDat.EncryptedUsrCod,row[1],sizeof (UsrDat.EncryptedUsrCod) - 1); Usr_GetAllUsrDataFromUsrCod (&UsrDat);
UsrDat.EncryptedUsrCod[sizeof (UsrDat.EncryptedUsrCod) - 1] = '\0';
/***** Write number of user in the list *****/ /***** Write number of user in the list *****/
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
@ -222,28 +222,19 @@ void Acc_CheckIfEmptyAccountExists (void)
"</td>", "</td>",
Gbl.RowEvenOdd,NumUsr); Gbl.RowEvenOdd,NumUsr);
fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_TOP COLOR%u\">%s: ", /***** Write user's name *****/
Gbl.RowEvenOdd,Txt_Name); fprintf (Gbl.F.Out,"<td class=\"DAT_N LEFT_TOP COLOR%u\">"
if (row[2][0] || "%s: %s"
row[3][0] || "</td>",
row[4][0]) Gbl.RowEvenOdd,Txt_Name,
{ UsrDat.FullName[0] ? UsrDat.FullName :
if (row[2][0]) "?");
fprintf (Gbl.F.Out,"%c.",row[2][0]);
if (row[3][0])
fprintf (Gbl.F.Out,"%c.",row[3][0]);
if (row[4][0])
fprintf (Gbl.F.Out,"%c.",row[4][0]);
}
else
fprintf (Gbl.F.Out,"?");
fprintf (Gbl.F.Out,"</td>");
/* Button to login with this account */ /* Button to login with this account */
fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">", fprintf (Gbl.F.Out,"<td class=\"RIGHT_TOP COLOR%u\">",
Gbl.RowEvenOdd); Gbl.RowEvenOdd);
Act_FormStart (ActAutUsrNew); Act_FormStart (ActAutUsrNew);
Usr_PutParamUsrCodEncrypted (Gbl.Usrs.Me.UsrDat.EncryptedUsrCod); Usr_PutParamUsrCodEncrypted (UsrDat.EncryptedUsrCod);
Lay_PutCreateButtonInline ("&iexcl;Soy yo!"); // TODO: Need translation!!! Lay_PutCreateButtonInline ("&iexcl;Soy yo!"); // TODO: Need translation!!!
Act_FormEnd (); Act_FormEnd ();
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
@ -260,25 +251,39 @@ void Acc_CheckIfEmptyAccountExists (void)
"</tr>"); "</tr>");
} }
/***** Free memory used for user's data *****/
Usr_UsrDataDestructor (&UsrDat);
/***** End frame *****/ /***** End frame *****/
Lay_EndRoundFrameTable (); Lay_EndRoundFrameTable ();
} }
else else
{ {
sprintf (Gbl.Message,"No hay ninguna cuenta vac&iacute;a asociada a su ID %s.", // TODO: Need translation!!! sprintf (Gbl.Message,"No existe ninguna cuenta &quot;vac&iacute;a&quot;"
NewID); " (a&uacute;n no usada) asociada a su ID %s.<br />"
" Si cree que puede haber sido inscrito/a"
" con otro ID, compru&eacute;belo, por favor.", // TODO: Need translation!!!
ID);
Lay_ShowAlert (Lay_INFO,Gbl.Message); Lay_ShowAlert (Lay_INFO,Gbl.Message);
/**** Show form to check if I have an account *****/
Acc_ShowFormCheckIfIHaveAccount ();
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
}
/**** Show form to create a new account *****/ /**** Show form to check if I have an account *****/
Acc_ShowFormRequestNewAccountWithParams ("",""); Acc_ShowFormCheckIfIHaveAccount ("Comprobar otro ID"); // TODO: Need translation!!!
/**** Show form to create a new account *****/
Acc_ShowFormRequestNewAccountWithParams ("","");
}
else // ID not valid
{
/**** Show again form to check if I have an account *****/
Lay_ShowAlert (Lay_WARNING,"Escriba su ID (DNI/c&eacute;dula&hellip;).");
Acc_ShowFormCheckIfIHaveAccount ("Antes de crear una cuenta nueva"
" compruebe si ya le han inscrito con su ID"); // TODO: Need translation!!!
}
} }
/*****************************************************************************/ /*****************************************************************************/
@ -293,14 +298,12 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWith
extern const char *Txt_HELP_nickname; extern const char *Txt_HELP_nickname;
extern const char *Txt_HELP_email; extern const char *Txt_HELP_email;
extern const char *Txt_Email; extern const char *Txt_Email;
extern const char *Txt_New_on_PLATFORM_Sign_up;
extern const char *Txt_Create_account; extern const char *Txt_Create_account;
char NewNicknameWithArroba[Nck_MAX_BYTES_NICKNAME_WITH_ARROBA+1]; char NewNicknameWithArroba[Nck_MAX_BYTES_NICKNAME_WITH_ARROBA+1];
/***** Form to enter some data of the new user *****/ /***** Form to enter some data of the new user *****/
Act_FormStart (ActCreUsrAcc); Act_FormStart (ActCreUsrAcc);
sprintf (Gbl.Title,Txt_New_on_PLATFORM_Sign_up,Cfg_PLATFORM_SHORT_NAME); Lay_StartRoundFrameTable (NULL,2,"Crear una nueva cuenta"); // TODO: Need translation!!!!
Lay_StartRoundFrameTable (NULL,2,Gbl.Title);
/***** Nickname *****/ /***** Nickname *****/
if (NewNicknameWithoutArroba[0]) if (NewNicknameWithoutArroba[0])

View File

@ -135,17 +135,21 @@
// TODO: FIX BUG: Passwords with % do not work // TODO: FIX BUG: Passwords with % do not work
// TODO: Send a message to the user when rejecting a requesto for enrollment. Suggested by Javier Fernández Baldomero.
// TODO: Fix bug: database error when a not logged user searches users. "Database error: can not check if a user shares any course with you (Table 'swad.my_courses_tmp' doesn't exist).
/*****************************************************************************/ /*****************************************************************************/
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.2.4 (2016-09-22)" #define Log_PLATFORM_VERSION "SWAD 16.2.5 (2016-09-26)"
#define CSS_FILE "swad15.229.css" #define CSS_FILE "swad15.229.css"
#define JS_FILE "swad15.238.1.js" #define JS_FILE "swad15.238.1.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/* /*
Version 16.2.5: Sep 26, 2016 Check if an account already exists. Not finished. (205019 lines)
Version 16.2.4: Sep 22, 2016 Check if an account already exists. Not finished. (205016 lines) Version 16.2.4: Sep 22, 2016 Check if an account already exists. Not finished. (205016 lines)
Version 16.2.3: Sep 22, 2016 Check if an account already exists. Not finished. (204984 lines) Version 16.2.3: Sep 22, 2016 Check if an account already exists. Not finished. (204984 lines)
Version 16.2.2: Sep 22, 2016 Fixed bug in photo visibility. (204951 lines) Version 16.2.2: Sep 22, 2016 Fixed bug in photo visibility. (204951 lines)

View File

@ -940,7 +940,7 @@ const char *Txt_The_following_password_has_been_assigned_to_you_to_log_in_X_NO_H
#elif L==6 #elif L==6
"Se le ha asignado la siguiente contraseña para entrar en %s: %s\n" "Se le ha asignado la siguiente contraseña para entrar en %s: %s\n"
"Si desea activar esta nueva contraseña," "Si desea activar esta nueva contraseña,"
" debe entrar en %s con su ID (DNI/c&eacute;dula), apodo o dirección de correo" " debe entrar en %s con su ID (DNI/c&eacute;dula&hellip;), apodo o dirección de correo"
" y esta nueva contraseña antes de %u días." " y esta nueva contraseña antes de %u días."
" Una vez que haya entrado, puede cambiar la contraseña por otra.\n" " Una vez que haya entrado, puede cambiar la contraseña por otra.\n"
"Si no accede con esta nueva contraseña," "Si no accede con esta nueva contraseña,"
@ -1552,11 +1552,11 @@ const char *Txt_A_user_can_not_have_more_than_X_IDs =
#elif L==3 #elif L==3
"A user can not have more than %u IDs."; "A user can not have more than %u IDs.";
#elif L==4 #elif L==4
"Un usuario no puede tener m&aacute;s de %u ID (DNI/c&eacute;dulas)."; "Un usuario no puede tener m&aacute;s de %u ID (DNI/c&eacute;dulas&hellip;).";
#elif L==5 #elif L==5
"Un utilisateur ne peut pas avoir plus de %u IDs."; "Un utilisateur ne peut pas avoir plus de %u IDs.";
#elif L==6 #elif L==6
"Un usuario no puede tener m&aacute;s de %u ID (DNI/c&eacute;dulas)."; // Okoteve traducción "Un usuario no puede tener m&aacute;s de %u ID (DNI/c&eacute;dulas&hellip;)."; // Okoteve traducción
#elif L==7 #elif L==7
"Un utente non pu&ograve; avere pi&ugrave; di %u ID."; "Un utente non pu&ograve; avere pi&ugrave; di %u ID.";
#elif L==8 #elif L==8
@ -2581,11 +2581,11 @@ const char *Txt_Another_ID =
#elif L==3 #elif L==3
"Another ID"; "Another ID";
#elif L==4 #elif L==4
"Otro ID (DNI/c&eacute;dula)"; "Otro ID (DNI/c&eacute;dula&hellip;)";
#elif L==5 #elif L==5
"Un autre num&eacute;ro d'identit&eacute;"; "Un autre num&eacute;ro d'identit&eacute;";
#elif L==6 #elif L==6
"Otro ID (DNI/c&eacute;dula)"; // Okoteve traducción "Otro ID (DNI/c&eacute;dula&hellip;)"; // Okoteve traducción
#elif L==7 #elif L==7
"Un'altra carta d'identit&agrave;"; "Un'altra carta d'identit&agrave;";
#elif L==8 #elif L==8
@ -9210,11 +9210,11 @@ const char *Txt_Do_you_want_to_confirm_the_ID_X = // Warning: it is very importa
#elif L==3 #elif L==3
"Do you want to confirm the ID (identity number/passport) <strong>%s</strong>?"; "Do you want to confirm the ID (identity number/passport) <strong>%s</strong>?";
#elif L==4 #elif L==4
"&iquest;Desea confirmar el ID (DNI/c&eacute;dula) <strong>%s</strong>?"; "&iquest;Desea confirmar el ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>?";
#elif L==5 #elif L==5
"Voulez-vous confirmer l'ID <strong>%s</strong>?"; "Voulez-vous confirmer l'ID <strong>%s</strong>?";
#elif L==6 #elif L==6
"&iquest;Desea confirmar el ID (DNI/c&eacute;dula) <strong>%s</strong>?"; // Okoteve traducción "&iquest;Desea confirmar el ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>?"; // Okoteve traducción
#elif L==7 #elif L==7
"Vuoi confermare l'ID <strong>%s</strong>?"; "Vuoi confermare l'ID <strong>%s</strong>?";
#elif L==8 #elif L==8
@ -11968,7 +11968,7 @@ const char *Txt_Files_of_marks_must_contain_a_table_in_HTML_format_ =
" seleccionando la parte deseada de la tabla y guard&aacute;ndola como p&aacute;gina web.<br />" " seleccionando la parte deseada de la tabla y guard&aacute;ndola como p&aacute;gina web.<br />"
" Una tabla puede tener <strong>varias filas de cabecera y varias filas de pie</strong>." " Una tabla puede tener <strong>varias filas de cabecera y varias filas de pie</strong>."
" Entre ellas debe haber <strong>una &uacute;nica fila para cada estudiante</strong>," " Entre ellas debe haber <strong>una &uacute;nica fila para cada estudiante</strong>,"
" con cualquier n&uacute;mero de columnas, conteniendo <strong>la primera columna el ID (DNI/c&eacute;dula) del estudiante</strong>.<br />" " con cualquier n&uacute;mero de columnas, conteniendo <strong>la primera columna el ID (DNI/c&eacute;dula&hellip;) del estudiante</strong>.<br />"
" Un estudiante ver&aacute; una tabla con las filas de cabecera," " Un estudiante ver&aacute; una tabla con las filas de cabecera,"
" seguidas por la fila con sus calificaciones," " seguidas por la fila con sus calificaciones,"
" y por las filas de pie."; // Necessita traduccio " y por las filas de pie."; // Necessita traduccio
@ -11994,7 +11994,7 @@ const char *Txt_Files_of_marks_must_contain_a_table_in_HTML_format_ =
" seleccionando la parte deseada de la tabla y guard&aacute;ndola como p&aacute;gina web.<br />" " seleccionando la parte deseada de la tabla y guard&aacute;ndola como p&aacute;gina web.<br />"
" Una tabla puede tener <strong>varias filas de cabecera y varias filas de pie</strong>." " Una tabla puede tener <strong>varias filas de cabecera y varias filas de pie</strong>."
" Entre ellas debe haber <strong>una &uacute;nica fila para cada estudiante</strong>," " Entre ellas debe haber <strong>una &uacute;nica fila para cada estudiante</strong>,"
" con cualquier n&uacute;mero de columnas, conteniendo <strong>la primera columna el ID (DNI/c&eacute;dula) del estudiante</strong>.<br />" " con cualquier n&uacute;mero de columnas, conteniendo <strong>la primera columna el ID (DNI/c&eacute;dula&hellip;) del estudiante</strong>.<br />"
" Un estudiante ver&aacute; una tabla con las filas de cabecera," " Un estudiante ver&aacute; una tabla con las filas de cabecera,"
" seguidas por la fila con sus calificaciones," " seguidas por la fila con sus calificaciones,"
" y por las filas de pie."; " y por las filas de pie.";
@ -12014,7 +12014,7 @@ const char *Txt_Files_of_marks_must_contain_a_table_in_HTML_format_ =
" seleccionando la parte deseada de la tabla y guard&aacute;ndola como p&aacute;gina web.<br />" " seleccionando la parte deseada de la tabla y guard&aacute;ndola como p&aacute;gina web.<br />"
" Una tabla puede tener <strong>varias filas de cabecera y varias filas de pie</strong>." " Una tabla puede tener <strong>varias filas de cabecera y varias filas de pie</strong>."
" Entre ellas debe haber <strong>una &uacute;nica fila para cada estudiante</strong>," " Entre ellas debe haber <strong>una &uacute;nica fila para cada estudiante</strong>,"
" con cualquier n&uacute;mero de columnas, conteniendo <strong>la primera columna el ID (DNI/c&eacute;dula) del estudiante</strong>.<br />" " con cualquier n&uacute;mero de columnas, conteniendo <strong>la primera columna el ID (DNI/c&eacute;dula&hellip;) del estudiante</strong>.<br />"
" Un estudiante ver&aacute; una tabla con las filas de cabecera," " Un estudiante ver&aacute; una tabla con las filas de cabecera,"
" seguidas por la fila con sus calificaciones," " seguidas por la fila con sus calificaciones,"
" y por las filas de pie."; // Okoteve traducción " y por las filas de pie."; // Okoteve traducción
@ -14226,11 +14226,11 @@ const char *Txt_ID =
#elif L==3 #elif L==3
"ID (identity number/passport)"; "ID (identity number/passport)";
#elif L==4 #elif L==4
"ID (DNI/c&eacute;dula)"; "ID (DNI/c&eacute;dula&hellip;)";
#elif L==5 #elif L==5
"Num. d'identit&eacute;"; "Num. d'identit&eacute;";
#elif L==6 #elif L==6
"ID (DNI/c&eacute;dula)"; // Okoteve traducción "ID (DNI/c&eacute;dula&hellip;)"; // Okoteve traducción
#elif L==7 #elif L==7
"Numero carta d'identit&agrave;"; "Numero carta d'identit&agrave;";
#elif L==8 #elif L==8
@ -14241,17 +14241,17 @@ const char *Txt_ID =
const char *Txt_ID_X_had_already_been_confirmed = // Warning: it is very important to include %s in the following sentences const char *Txt_ID_X_had_already_been_confirmed = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"El ID (DNI/c&eacute;dula) %s ja havia estat confirmat."; "El ID (DNI/c&eacute;dula&hellip;) %s ja havia estat confirmat.";
#elif L==2 #elif L==2
"ID %s hatte bereits best&auml;tigt worden."; "ID %s hatte bereits best&auml;tigt worden.";
#elif L==3 #elif L==3
"ID %s had already been confirmed."; "ID %s had already been confirmed.";
#elif L==4 #elif L==4
"El ID (DNI/c&eacute;dula) %s ya hab&iacute;a sido confirmado."; "El ID (DNI/c&eacute;dula&hellip;) %s ya hab&iacute;a sido confirmado.";
#elif L==5 #elif L==5
"L'ID %s avait d&eacute;j&agrave; &eacute;t&eacute; confirm&eacute;e."; "L'ID %s avait d&eacute;j&agrave; &eacute;t&eacute; confirm&eacute;e.";
#elif L==6 #elif L==6
"El ID (DNI/c&eacute;dula) %s ya hab&iacute;a sido confirmado."; // Okoteve traducción "El ID (DNI/c&eacute;dula&hellip;) %s ya hab&iacute;a sido confirmado."; // Okoteve traducción
#elif L==7 #elif L==7
"L'ID %s era gi&agrave; stato confermato."; "L'ID %s era gi&agrave; stato confermato.";
#elif L==8 #elif L==8
@ -14262,17 +14262,17 @@ const char *Txt_ID_X_had_already_been_confirmed = // Warning: it is very importa
const char *Txt_ID_X_confirmed = // Warning: it is very important to include %s in the following sentences const char *Txt_ID_X_confirmed = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"ID (DNI/c&eacute;dula) %s confirmat"; "ID (DNI/c&eacute;dula&hellip;) %s confirmat";
#elif L==2 #elif L==2
"ID %s best&auml;tigt"; "ID %s best&auml;tigt";
#elif L==3 #elif L==3
"ID %s confirmed"; "ID %s confirmed";
#elif L==4 #elif L==4
"ID (DNI/c&eacute;dula) %s confirmado"; "ID (DNI/c&eacute;dula&hellip;) %s confirmado";
#elif L==5 #elif L==5
"ID %s confirm&eacute;"; "ID %s confirm&eacute;";
#elif L==6 #elif L==6
"ID (DNI/c&eacute;dula) %s confirmado"; // Okoteve traducción "ID (DNI/c&eacute;dula&hellip;) %s confirmado"; // Okoteve traducción
#elif L==7 #elif L==7
"ID %s confermato"; "ID %s confermato";
#elif L==8 #elif L==8
@ -14283,17 +14283,17 @@ const char *Txt_ID_X_confirmed = // Warning: it is very important to include %s
const char *Txt_ID_X_not_confirmed = // Warning: it is very important to include %s in the following sentences const char *Txt_ID_X_not_confirmed = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"ID (DNI/c&eacute;dula) %s no confirmat"; "ID (DNI/c&eacute;dula&hellip;) %s no confirmat";
#elif L==2 #elif L==2
"ID %s nicht best&auml;tigt"; "ID %s nicht best&auml;tigt";
#elif L==3 #elif L==3
"ID %s not confirmed"; "ID %s not confirmed";
#elif L==4 #elif L==4
"ID (DNI/c&eacute;dula) %s no confirmado"; "ID (DNI/c&eacute;dula&hellip;) %s no confirmado";
#elif L==5 #elif L==5
"ID %s pas confirm&eacute;"; "ID %s pas confirm&eacute;";
#elif L==6 #elif L==6
"ID (DNI/c&eacute;dula) %s no confirmado"; // Okoteve traducción "ID (DNI/c&eacute;dula&hellip;) %s no confirmado"; // Okoteve traducción
#elif L==7 #elif L==7
"ID %s non confermato"; "ID %s non confermato";
#elif L==8 #elif L==8
@ -14304,17 +14304,17 @@ const char *Txt_ID_X_not_confirmed = // Warning: it is very important to include
const char *Txt_ID_X_removed = // Warning: it is very important to include %s in the following sentences const char *Txt_ID_X_removed = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"ID (DNI/c&eacute;dula) <strong>%s</strong> eliminat."; "ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> eliminat.";
#elif L==2 #elif L==2
"ID <strong>%s</strong> entfernt."; "ID <strong>%s</strong> entfernt.";
#elif L==3 #elif L==3
"ID <strong>%s</strong> removed."; "ID <strong>%s</strong> removed.";
#elif L==4 #elif L==4
"ID (DNI/c&eacute;dula) <strong>%s</strong> eliminado."; "ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> eliminado.";
#elif L==5 #elif L==5
"ID <strong>%s</strong> supprim&eacute;."; "ID <strong>%s</strong> supprim&eacute;.";
#elif L==6 #elif L==6
"ID (DNI/c&eacute;dula) <strong>%s</strong> eliminado."; // Okoteve traducción "ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> eliminado."; // Okoteve traducción
#elif L==7 #elif L==7
"ID <strong>%s</strong> rimosso."; "ID <strong>%s</strong> rimosso.";
#elif L==8 #elif L==8
@ -14386,7 +14386,7 @@ const char *Txt_If_there_are_multiple_versions_of_the_ID_ =
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 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 #if L==1
"Si se trata de un usuario nuevo en %s," "Si se trata de un usuario nuevo en %s,"
" debe indicar el ID (DNI/c&eacute;dula)."; // Necessita traduccio " debe indicar el ID (DNI/c&eacute;dula&hellip;)."; // Necessita traduccio
#elif L==2 #elif L==2
"If this is a new user in %s," "If this is a new user in %s,"
" you should indicate her/his ID."; // Übersetzung notwendig " you should indicate her/his ID."; // Übersetzung notwendig
@ -14395,13 +14395,13 @@ const char *Txt_If_this_is_a_new_user_in_X_you_should_indicate_her_his_ID = // W
" you should indicate her/his ID."; " you should indicate her/his ID.";
#elif L==4 #elif L==4
"Si se trata de un usuario nuevo en %s," "Si se trata de un usuario nuevo en %s,"
" debe indicar el ID (DNI/c&eacute;dula)."; " debe indicar el ID (DNI/c&eacute;dula&hellip;).";
#elif L==5 #elif L==5
"If this is a new user in %s," "If this is a new user in %s,"
" you should indicate her/his ID."; // Besoin de traduction " you should indicate her/his ID."; // Besoin de traduction
#elif L==6 #elif L==6
"Si se trata de un usuario nuevo en %s," "Si se trata de un usuario nuevo en %s,"
" debe indicar el ID (DNI/c&eacute;dula)."; // Okoteve traducción " debe indicar el ID (DNI/c&eacute;dula&hellip;)."; // Okoteve traducción
#elif L==7 #elif L==7
"If this is a new user in %s," "If this is a new user in %s,"
" you should indicate her/his ID."; // Bisogno di traduzione " you should indicate her/his ID."; // Bisogno di traduzione
@ -14513,7 +14513,7 @@ const char *Txt_If_you_have_forgotten_your_password_ =
const char *Txt_If_you_have_written_your_ID_nickname_or_email_correctly_ = const char *Txt_If_you_have_written_your_ID_nickname_or_email_correctly_ =
#if L==1 #if L==1
"Si usted ha escrito correctamente su @apodo, correo o ID (DNI/c&eacute;dula)," "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/c&eacute;dula&hellip;),"
" y el correo en su ficha es correcto," " y el correo en su ficha es correcto,"
" recibir&aacute; un mensaje con una nueva contrase&ntilde;a."; // Necessita traduccio " recibir&aacute; un mensaje con una nueva contrase&ntilde;a."; // Necessita traduccio
#elif L==2 #elif L==2
@ -14525,7 +14525,7 @@ const char *Txt_If_you_have_written_your_ID_nickname_or_email_correctly_ =
" and the e-mail address on your record is correct," " and the e-mail address on your record is correct,"
" you will receive an e-mail with a new password."; " you will receive an e-mail with a new password.";
#elif L==4 #elif L==4
"Si usted ha escrito correctamente su @apodo, correo o ID (DNI/c&eacute;dula)," "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/c&eacute;dula&hellip;),"
" y el correo en su ficha es correcto," " y el correo en su ficha es correcto,"
" recibir&aacute; un mensaje con una nueva contrase&ntilde;a."; " recibir&aacute; un mensaje con una nueva contrase&ntilde;a.";
#elif L==5 #elif L==5
@ -14533,7 +14533,7 @@ const char *Txt_If_you_have_written_your_ID_nickname_or_email_correctly_ =
" ainsi que l'adresse e-mail sur votre carte est correct," " ainsi que l'adresse e-mail sur votre carte est correct,"
" vous recevrez un e-mail avec un nouveau mot de passe."; " vous recevrez un e-mail avec un nouveau mot de passe.";
#elif L==6 #elif L==6
"Si usted ha escrito correctamente su @apodo, correo o ID (DNI/c&eacute;dula)," "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/c&eacute;dula&hellip;),"
" y el correo en su ficha es correcto," " y el correo en su ficha es correcto,"
" recibir&aacute; un mensaje con una nueva contrase&ntilde;a."; // Okoteve traducción " recibir&aacute; un mensaje con una nueva contrase&ntilde;a."; // Okoteve traducción
#elif L==7 #elif L==7
@ -16536,17 +16536,17 @@ const char *Txt_List_of_detailed_clicks =
const char *Txt_List_of_nicks_emails_or_IDs = const char *Txt_List_of_nicks_emails_or_IDs =
#if L==1 #if L==1
"Lista de @apodos, correos o ID (DNI/c&eacute;dulas)"; // Necessita traduccio "Lista de @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)"; // Necessita traduccio
#elif L==2 #elif L==2
"Liste von @Benutzernamen, E-mails oder Ausweis-Nr."; "Liste von @Benutzernamen, E-mails oder Ausweis-Nr.";
#elif L==3 #elif L==3
"List of @nicks, e-mails or IDs"; "List of @nicks, e-mails or IDs";
#elif L==4 #elif L==4
"Lista de @apodos, correos o ID (DNI/c&eacute;dulas)"; "Lista de @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)";
#elif L==5 #elif L==5
"Liste de num&eacute;ros d'identit&eacute;"; "Liste de num&eacute;ros d'identit&eacute;";
#elif L==6 #elif L==6
"Lista de @apodos, correos o ID (DNI/c&eacute;dulas)"; // Okoteve traducción "Lista de @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)"; // Okoteve traducción
#elif L==7 #elif L==7
"Lista di @nomi-utenti, e-mail o numero carte d'identit&agrave;"; "Lista di @nomi-utenti, e-mail o numero carte d'identit&agrave;";
#elif L==8 #elif L==8
@ -23543,11 +23543,11 @@ const char *Txt_nick_email_or_ID =
#elif L==3 #elif L==3
"@nick, e-mail or ID"; "@nick, e-mail or ID";
#elif L==4 #elif L==4
"@apodo, correo o ID (DNI/c&eacute;dula)"; "@apodo, correo o ID (DNI/c&eacute;dula&hellip;)";
#elif L==5 #elif L==5
"@surnom, courrier ou num&eacute;ro d'identit&eacute;"; "@surnom, courrier ou num&eacute;ro d'identit&eacute;";
#elif L==6 #elif L==6
"@apodo, correo o ID (DNI/c&eacute;dula)"; // Okoteve traducción "@apodo, correo o ID (DNI/c&eacute;dula&hellip;)"; // Okoteve traducción
#elif L==7 #elif L==7
"@nome-utente, e-mail o numero carta d'identit&agrave;"; "@nome-utente, e-mail o numero carta d'identit&agrave;";
#elif L==8 #elif L==8
@ -23558,17 +23558,17 @@ const char *Txt_nick_email_or_ID =
const char *Txt_nicks_emails_or_IDs_separated_by_commas = const char *Txt_nicks_emails_or_IDs_separated_by_commas =
#if L==1 #if L==1
"@apodos, correos o ID (DNI/c&eacute;dulas) separados por comas"; // Necessita traduccio "@apodos, correos o ID (DNI/c&eacute;dulas&hellip;) separados por comas"; // Necessita traduccio
#elif L==2 #elif L==2
"@Benutzernamen, E-mails oder Ausweis-Nr. durch Kommas getrennt"; "@Benutzernamen, E-mails oder Ausweis-Nr. durch Kommas getrennt";
#elif L==3 #elif L==3
"@nicks, e-mails or IDs separated by commas"; "@nicks, e-mails or IDs separated by commas";
#elif L==4 #elif L==4
"@apodos, correos o ID (DNI/c&eacute;dulas) separados por comas"; "@apodos, correos o ID (DNI/c&eacute;dulas&hellip;) separados por comas";
#elif L==5 #elif L==5
"@surnoms, courriers ou num&eacute;ros d'identit&eacute; s&eacute;par&eacute;s par des virgules"; "@surnoms, courriers ou num&eacute;ros d'identit&eacute; s&eacute;par&eacute;s par des virgules";
#elif L==6 #elif L==6
"@apodos, correos o ID (DNI/c&eacute;dulas) separados por comas"; // Okoteve traducción "@apodos, correos o ID (DNI/c&eacute;dulas&hellip;) separados por comas"; // Okoteve traducción
#elif L==7 #elif L==7
"@nomi-utenti, e-mail o numero carte d'identit&agrave; separati da virgole"; "@nomi-utenti, e-mail o numero carte d'identit&agrave; separati da virgole";
#elif L==8 #elif L==8
@ -28082,7 +28082,7 @@ const char *Txt_Please_fill_in_your_ID =
" because it facilitates the registration process" " because it facilitates the registration process"
" of users in the courses."; " of users in the courses.";
#elif L==4 #elif L==4
"Por favor, rellene su ID (DNI/c&eacute;dula)." "Por favor, rellene su ID (DNI/c&eacute;dula&hellip;)."
" Es un dato opcional," " Es un dato opcional,"
" pero es recomendable que lo rellene" " pero es recomendable que lo rellene"
" porque facilita el proceso de inscripci&oacute;n" " porque facilita el proceso de inscripci&oacute;n"
@ -28094,7 +28094,7 @@ const char *Txt_Please_fill_in_your_ID =
" parce qu'il facilite le processus d'enregistrement" " parce qu'il facilite le processus d'enregistrement"
" des utilisateurs dans les mati&egrave;res."; " des utilisateurs dans les mati&egrave;res.";
#elif L==6 #elif L==6
"Por favor, rellene su ID (DNI/c&eacute;dula)." "Por favor, rellene su ID (DNI/c&eacute;dula&hellip;)."
" Es un dato opcional," " Es un dato opcional,"
" pero es recomendable que lo rellene" " pero es recomendable que lo rellene"
" porque facilita el proceso de inscripci&oacute;n" " porque facilita el proceso de inscripci&oacute;n"
@ -42449,7 +42449,7 @@ const char *Txt_The_HTML_file_has_been_received_successfully =
const char *Txt_The_ID_X_has_been_confirmed = // Warning: it is very important to include %s in the following sentences const char *Txt_The_ID_X_has_been_confirmed = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" ha sido confirmado."; // Necessita traduccio " ha sido confirmado."; // Necessita traduccio
#elif L==2 #elif L==2
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
@ -42458,13 +42458,13 @@ const char *Txt_The_ID_X_has_been_confirmed = // Warning: it is very important t
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
" has been confirmed."; " has been confirmed.";
#elif L==4 #elif L==4
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" ha sido confirmado."; " ha sido confirmado.";
#elif L==5 #elif L==5
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
" has been confirmed."; // Besoin de traduction " has been confirmed."; // Besoin de traduction
#elif L==6 #elif L==6
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" ha sido confirmado."; // Okoteve traducción " ha sido confirmado."; // Okoteve traducción
#elif L==7 #elif L==7
"Il ID <strong>%s</strong>" "Il ID <strong>%s</strong>"
@ -42479,7 +42479,7 @@ const char *Txt_The_ID_X_has_been_confirmed = // Warning: it is very important t
const char *Txt_The_ID_X_has_been_registered_successfully = // Warning: it is very important to include %s in the following sentences const char *Txt_The_ID_X_has_been_registered_successfully = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" se ha registrado correctamente."; // Necessita traduccio " se ha registrado correctamente."; // Necessita traduccio
#elif L==2 #elif L==2
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
@ -42488,13 +42488,13 @@ const char *Txt_The_ID_X_has_been_registered_successfully = // Warning: it is ve
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
" has been registered successfully."; " has been registered successfully.";
#elif L==4 #elif L==4
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" se ha registrado correctamente."; " se ha registrado correctamente.";
#elif L==5 #elif L==5
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
" has been registered successfully."; // Besoin de traduction " has been registered successfully."; // Besoin de traduction
#elif L==6 #elif L==6
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" se ha registrado correctamente."; // Okoteve traducción " se ha registrado correctamente."; // Okoteve traducción
#elif L==7 #elif L==7
"Il ID <strong>%s</strong>" "Il ID <strong>%s</strong>"
@ -42509,7 +42509,7 @@ 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 const char *Txt_The_ID_X_is_not_valid = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"El ID (DNI/c&eacute;dula) <strong>%s</strong> no es v&aacute;lido." "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> no es v&aacute;lido."
" Solo puede contener n&uacute;meros (al menos uno) y letras."; // Necessita traduccio " Solo puede contener n&uacute;meros (al menos uno) y letras."; // Necessita traduccio
#elif L==2 #elif L==2
"The ID <strong>%s</strong> is not valid." "The ID <strong>%s</strong> is not valid."
@ -42518,13 +42518,13 @@ const char *Txt_The_ID_X_is_not_valid = // Warning: it is very important to incl
"The ID <strong>%s</strong> is not valid." "The ID <strong>%s</strong> is not valid."
" It can only contain numbers (at least one) and letters."; " It can only contain numbers (at least one) and letters.";
#elif L==4 #elif L==4
"El ID (DNI/c&eacute;dula) <strong>%s</strong> no es v&aacute;lido." "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> no es v&aacute;lido."
" Solo puede contener n&uacute;meros (al menos uno) y letras."; " Solo puede contener n&uacute;meros (al menos uno) y letras.";
#elif L==5 #elif L==5
"The ID <strong>%s</strong> is not valid." "The ID <strong>%s</strong> is not valid."
" It can only contain numbers (at least one) and letters."; // Besoin de traduction " It can only contain numbers (at least one) and letters."; // Besoin de traduction
#elif L==6 #elif L==6
"El ID (DNI/c&eacute;dula) <strong>%s</strong> no es v&aacute;lido." "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> no es v&aacute;lido."
" Solo puede contener n&uacute;meros (al menos uno) y letras."; // Okoteve traducción " Solo puede contener n&uacute;meros (al menos uno) y letras."; // Okoteve traducción
#elif L==7 #elif L==7
"L'ID <strong>%s</strong> non &egrave; valido." "L'ID <strong>%s</strong> non &egrave; valido."
@ -42578,17 +42578,17 @@ const char *Txt_The_ID_is_used_in_order_to_facilitate_ =
const char *Txt_The_ID_nickname_or_email_X_is_not_valid = // Warning: it is very important to include %s in the following sentences const char *Txt_The_ID_nickname_or_email_X_is_not_valid = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"El @apodo, correo o ID (DNI/c&eacute;dula) <strong>%s</strong> no es v&aacute;lido."; // Necessita traduccio "El @apodo, correo o ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> no es v&aacute;lido."; // Necessita traduccio
#elif L==2 #elif L==2
"The @nick, e-mail or ID <strong>%s</strong> is not valid."; // Need Übersetzung "The @nick, e-mail or ID <strong>%s</strong> is not valid."; // Need Übersetzung
#elif L==3 #elif L==3
"The @nick, e-mail or ID <strong>%s</strong> is not valid."; "The @nick, e-mail or ID <strong>%s</strong> is not valid.";
#elif L==4 #elif L==4
"El @apodo, correo o ID (DNI/c&eacute;dula) <strong>%s</strong> no es v&aacute;lido."; "El @apodo, correo o ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> no es v&aacute;lido.";
#elif L==5 #elif L==5
"The @nick, e-mail or ID <strong>%s</strong> is not valid."; // Besoin de traduction "The @nick, e-mail or ID <strong>%s</strong> is not valid."; // Besoin de traduction
#elif L==6 #elif L==6
"El @apodo, correo o ID (DNI/c&eacute;dula) <strong>%s</strong> no es v&aacute;lido."; // Okoteve traducción "El @apodo, correo o ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong> no es v&aacute;lido."; // Okoteve traducción
#elif L==7 #elif L==7
"Il @nome-utente, e-mail o ID <strong>%s</strong> non &egrave; valido."; "Il @nome-utente, e-mail o ID <strong>%s</strong> non &egrave; valido.";
#elif L==8 #elif L==8
@ -42599,7 +42599,7 @@ 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 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 #if L==1
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" coincide con uno de los existentes."; // Necessita traduccio " coincide con uno de los existentes."; // Necessita traduccio
#elif L==2 #elif L==2
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
@ -42608,13 +42608,13 @@ const char *Txt_The_ID_X_matches_one_of_the_existing = // Warning: it is very im
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
" matches one of the existing."; " matches one of the existing.";
#elif L==4 #elif L==4
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" coincide con uno de los existentes."; " coincide con uno de los existentes.";
#elif L==5 #elif L==5
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
" matches one of the existing."; // Besoin de traduction " matches one of the existing."; // Besoin de traduction
#elif L==6 #elif L==6
"El ID (DNI/c&eacute;dula) <strong>%s</strong>" "El ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>"
" coincide con uno de los existentes."; // Okoteve traducción " coincide con uno de los existentes."; // Okoteve traducción
#elif L==7 #elif L==7
"The ID <strong>%s</strong>" "The ID <strong>%s</strong>"
@ -46079,17 +46079,17 @@ const char *Txt_There_are_no_types_of_group_in_the_course_X = // Warning: it is
const char *Txt_There_are_X_users_with_the_ID_Y = // Warning: it is very important to include %u and %s in the following sentences const char *Txt_There_are_X_users_with_the_ID_Y = // Warning: it is very important to include %u and %s in the following sentences
#if L==1 #if L==1
"Hi ha %u usuaris amb el ID (DNI/c&eacute;dula) <strong>%s</strong>."; "Hi ha %u usuaris amb el ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>.";
#elif L==2 #elif L==2
"There are %u users with the ID <strong>%s</strong>."; // Need Übersetzung "There are %u users with the ID <strong>%s</strong>."; // Need Übersetzung
#elif L==3 #elif L==3
"There are %u users with the ID <strong>%s</strong>."; "There are %u users with the ID <strong>%s</strong>.";
#elif L==4 #elif L==4
"Hay %u usuarios con el ID (DNI/c&eacute;dula) <strong>%s</strong>."; "Hay %u usuarios con el ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>.";
#elif L==5 #elif L==5
"Il y a %u utilisateurs avec le ID <strong>%s</strong>."; "Il y a %u utilisateurs avec le ID <strong>%s</strong>.";
#elif L==6 #elif L==6
"Hay %u usuarios con el ID (DNI/c&eacute;dula) <strong>%s</strong>."; // Okoteve traducción "Hay %u usuarios con el ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>."; // Okoteve traducción
#elif L==7 #elif L==7
"Ci sono %u utenti con il ID <strong>%s</strong>."; "Ci sono %u utenti con il ID <strong>%s</strong>.";
#elif L==8 #elif L==8
@ -46299,7 +46299,7 @@ const char *Txt_There_is_no_user_with_email_X = // Warning: it is very important
const char *Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_on_Z_ = // Warning: it is very important to include three %s in the following sentences const char *Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_on_Z_ = // Warning: it is very important to include three %s in the following sentences
#if L==1 #if L==1
"No existe ning&uacute;n usuario en %s" "No existe ning&uacute;n usuario en %s"
" con el ID (DNI/c&eacute;dula) <strong>%s</strong>." " con el ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>."
" Si usted ya tiene cuenta en %s," " Si usted ya tiene cuenta en %s,"
" inicie sesi&oacute;n y a&ntilde;ada este ID a su cuenta." " inicie sesi&oacute;n y a&ntilde;ada este ID a su cuenta."
" Si no tiene cuenta, puede crear una nueva."; // Necessita traduccio " Si no tiene cuenta, puede crear una nueva."; // Necessita traduccio
@ -46317,7 +46317,7 @@ const char *Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_o
" If you have no account, you can create a new one."; " If you have no account, you can create a new one.";
#elif L==4 #elif L==4
"No existe ning&uacute;n usuario en %s" "No existe ning&uacute;n usuario en %s"
" con el ID (DNI/c&eacute;dula) <strong>%s</strong>." " con el ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>."
" Si usted ya tiene cuenta en %s," " Si usted ya tiene cuenta en %s,"
" inicie sesi&oacute;n y a&ntilde;ada este ID a su cuenta." " inicie sesi&oacute;n y a&ntilde;ada este ID a su cuenta."
" Si no tiene cuenta, puede crear una nueva."; " Si no tiene cuenta, puede crear una nueva.";
@ -46329,7 +46329,7 @@ const char *Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_o
" Si vous n'avez pas de compte, vous pouvez en cr&eacute;er un nouveau."; " Si vous n'avez pas de compte, vous pouvez en cr&eacute;er un nouveau.";
#elif L==6 #elif L==6
"No existe ning&uacute;n usuario en %s" "No existe ning&uacute;n usuario en %s"
" con el ID (DNI/c&eacute;dula) <strong>%s</strong>." " con el ID (DNI/c&eacute;dula&hellip;) <strong>%s</strong>."
" Si usted ya tiene cuenta en %s," " Si usted ya tiene cuenta en %s,"
" inicie sesi&oacute;n y a&ntilde;ada este ID a su cuenta." " inicie sesi&oacute;n y a&ntilde;ada este ID a su cuenta."
" Si no tiene cuenta, puede crear una nueva."; // Okoteve traducción " Si no tiene cuenta, puede crear una nueva."; // Okoteve traducción
@ -46356,7 +46356,7 @@ const char *Txt_There_is_no_user_in_X_with_ID_Y_If_you_already_have_an_account_o
const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X = // Warning: it is very important to include %s in the following sentences const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X = // Warning: it is very important to include %s in the following sentences
#if L==1 #if L==1
"No existe ning&uacute;n usuario" "No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>."; // Necessita traduccio " con ID (DNI/c&eacute;dula&hellip;), apodo o correo <strong>%s</strong>."; // Necessita traduccio
#elif L==2 #elif L==2
"There is no user" "There is no user"
" with ID, nick or e-mail <strong>%s</strong>."; // Übersetzung notwendig " with ID, nick or e-mail <strong>%s</strong>."; // Übersetzung notwendig
@ -46365,13 +46365,13 @@ const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X = // Warning: it is ve
" with ID, nick or e-mail <strong>%s</strong>."; " with ID, nick or e-mail <strong>%s</strong>.";
#elif L==4 #elif L==4
"No existe ning&uacute;n usuario" "No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>."; " con ID (DNI/c&eacute;dula&hellip;), apodo o correo <strong>%s</strong>.";
#elif L==5 #elif L==5
"There is no user" "There is no user"
" with ID, nick or e-mail <strong>%s</strong>."; // Besoin de traduction " with ID, nick or e-mail <strong>%s</strong>."; // Besoin de traduction
#elif L==6 #elif L==6
"No existe ning&uacute;n usuario" "No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>."; // Okoteve traducción " con ID (DNI/c&eacute;dula&hellip;), apodo o correo <strong>%s</strong>."; // Okoteve traducción
#elif L==7 #elif L==7
"Non c'&egrave; alcun utente" "Non c'&egrave; alcun utente"
" con ID, nome utente o e-mail <strong>%s</strong>."; " con ID, nome utente o e-mail <strong>%s</strong>.";
@ -46386,7 +46386,7 @@ const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X = // Warning: it is ve
const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X_in_the_course_Y = // Warning: it is very important to include two %s in the following sentences const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X_in_the_course_Y = // Warning: it is very important to include two %s in the following sentences
#if L==1 #if L==1
"No existe ning&uacute;n usuario" "No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>" " con ID (DNI/c&eacute;dula&hellip;), apodo o correo <strong>%s</strong>"
" en la asignatura <strong>%s</strong>."; // Necessita traduccio " en la asignatura <strong>%s</strong>."; // Necessita traduccio
#elif L==2 #elif L==2
"There is no user" "There is no user"
@ -46398,7 +46398,7 @@ const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X_in_the_course_Y = // W
" in the course <strong>%s</strong>."; " in the course <strong>%s</strong>.";
#elif L==4 #elif L==4
"No existe ning&uacute;n usuario" "No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>" " con ID (DNI/c&eacute;dula&hellip;), apodo o correo <strong>%s</strong>"
" en la asignatura <strong>%s</strong>."; " en la asignatura <strong>%s</strong>.";
#elif L==5 #elif L==5
"There is no user" "There is no user"
@ -46406,7 +46406,7 @@ const char *Txt_There_is_no_user_with_ID_nick_or_e_mail_X_in_the_course_Y = // W
" in the course <strong>%s</strong>."; // Besoin de traduction " in the course <strong>%s</strong>."; // Besoin de traduction
#elif L==6 #elif L==6
"No existe ning&uacute;n usuario" "No existe ning&uacute;n usuario"
" con ID (DNI/c&eacute;dula), apodo o correo <strong>%s</strong>" " con ID (DNI/c&eacute;dula&hellip;), apodo o correo <strong>%s</strong>"
" en la asignatura <strong>%s</strong>."; // Okoteve traducción " en la asignatura <strong>%s</strong>."; // Okoteve traducción
#elif L==7 #elif L==7
"Non c'&egrave; alcun utente" "Non c'&egrave; alcun utente"
@ -48108,12 +48108,12 @@ const char *Txt_Type_of_group_X_removed = // Warning: it is very important to in
const char *Txt_Type_or_paste_a_list_of_IDs_nicks_or_emails_ = const char *Txt_Type_or_paste_a_list_of_IDs_nicks_or_emails_ =
#if L==1 #if L==1
"Escriba o pegue una lista" "Escriba o pegue una lista"
" con @apodos, correos o ID (DNI/c&eacute;dulas)." " con @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)."
" Los @apodos, correos o ID (DNI/c&eacute;dulas)" " Los @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)"
" pueden ir separados por cadenas de caracteres arbitrarias" " pueden ir separados por cadenas de caracteres arbitrarias"
" (por ej. nombres, apellidos, espacios, etc.)." " (por ej. nombres, apellidos, espacios, etc.)."
" Solo se tendr&aacute;n en cuenta aquellas palabras" " Solo se tendr&aacute;n en cuenta aquellas palabras"
" que parezcan @apodos, correos o ID (DNI/c&eacute;dulas);" " que parezcan @apodos, correos o ID (DNI/c&eacute;dulas&hellip;);"
" el resto del texto se ignorar&aacute;."; // Necessita traduccio " el resto del texto se ignorar&aacute;."; // Necessita traduccio
#elif L==2 #elif L==2
"Type or paste a list" "Type or paste a list"
@ -48135,12 +48135,12 @@ const char *Txt_Type_or_paste_a_list_of_IDs_nicks_or_emails_ =
" the rest of the text will be ignored."; " the rest of the text will be ignored.";
#elif L==4 #elif L==4
"Escriba o pegue una lista" "Escriba o pegue una lista"
" con @apodos, correos o ID (DNI/c&eacute;dulas)." " con @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)."
" Los @apodos, correos o ID (DNI/c&eacute;dulas)" " Los @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)"
" pueden ir separados por cadenas de caracteres arbitrarias" " pueden ir separados por cadenas de caracteres arbitrarias"
" (por ej. nombres, apellidos, espacios, etc.)." " (por ej. nombres, apellidos, espacios, etc.)."
" Solo se tendr&aacute;n en cuenta aquellas palabras" " Solo se tendr&aacute;n en cuenta aquellas palabras"
" que parezcan @apodos, correos o ID (DNI/c&eacute;dulas);" " que parezcan @apodos, correos o ID (DNI/c&eacute;dulas&hellip;);"
" el resto del texto se ignorar&aacute;."; " el resto del texto se ignorar&aacute;.";
#elif L==5 #elif L==5
"Type or paste a list" "Type or paste a list"
@ -48153,12 +48153,12 @@ const char *Txt_Type_or_paste_a_list_of_IDs_nicks_or_emails_ =
" the rest of the text will be ignored."; // Besoin de traduction " the rest of the text will be ignored."; // Besoin de traduction
#elif L==6 #elif L==6
"Escriba o pegue una lista" "Escriba o pegue una lista"
" con @apodos, correos o ID (DNI/c&eacute;dulas)." " con @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)."
" Los @apodos, correos o ID (DNI/c&eacute;dulas)" " Los @apodos, correos o ID (DNI/c&eacute;dulas&hellip;)"
" pueden ir separados por cadenas de caracteres arbitrarias" " pueden ir separados por cadenas de caracteres arbitrarias"
" (por ej. nombres, apellidos, espacios, etc.)." " (por ej. nombres, apellidos, espacios, etc.)."
" Solo se tendr&aacute;n en cuenta aquellas palabras" " Solo se tendr&aacute;n en cuenta aquellas palabras"
" que parezcan @apodos, correos o ID (DNI/c&eacute;dulas);" " que parezcan @apodos, correos o ID (DNI/c&eacute;dulas&hellip;);"
" el resto del texto se ignorar&aacute;."; // Okoteve traducción " el resto del texto se ignorar&aacute;."; // Okoteve traducción
#elif L==7 #elif L==7
"Scrivi o incolla la lista" "Scrivi o incolla la lista"
@ -49141,11 +49141,11 @@ const char *Txt_User_ID =
#elif L==3 #elif L==3
"User ID"; "User ID";
#elif L==4 #elif L==4
"ID (DNI/c&eacute;dula) del usuario"; "ID (DNI/c&eacute;dula&hellip;) del usuario";
#elif L==5 #elif L==5
"Num&eacute;ro d'identit&eacute; d'utilisateur"; "Num&eacute;ro d'identit&eacute; d'utilisateur";
#elif L==6 #elif L==6
"ID (DNI/c&eacute;dula) del usuario"; // Okoteve traducción "ID (DNI/c&eacute;dula&hellip;) del usuario"; // Okoteve traducción
#elif L==7 #elif L==7
"Numero carta d'identit&agrave; utente"; "Numero carta d'identit&agrave; utente";
#elif L==8 #elif L==8
@ -51320,17 +51320,17 @@ const char *Txt_You_can_not_delete_your_current_nickname =
const char *Txt_You_can_not_delete_this_ID = const char *Txt_You_can_not_delete_this_ID =
#if L==1 #if L==1
"No puede eliminar este ID (DNI/c&eacute;dula)."; // Necessita traduccio "No puede eliminar este ID (DNI/c&eacute;dula&hellip;)."; // Necessita traduccio
#elif L==2 #elif L==2
"You can not delete this ID."; // Need Übersetzung "You can not delete this ID."; // Need Übersetzung
#elif L==3 #elif L==3
"You can not delete this ID."; "You can not delete this ID.";
#elif L==4 #elif L==4
"No puede eliminar este ID (DNI/c&eacute;dula)."; "No puede eliminar este ID (DNI/c&eacute;dula&hellip;).";
#elif L==5 #elif L==5
"You can not delete this ID."; // Besoin de traduction "You can not delete this ID."; // Besoin de traduction
#elif L==6 #elif L==6
"No puede eliminar este ID (DNI/c&eacute;dula)."; // Okoteve traducción "No puede eliminar este ID (DNI/c&eacute;dula&hellip;)."; // Okoteve traducción
#elif L==7 #elif L==7
"Non puoi cancellare questo ID."; "Non puoi cancellare questo ID.";
#elif L==8 #elif L==8
@ -52925,11 +52925,11 @@ const char *Txt_You_must_enter_your_nick_email_or_ID =
#elif L==3 #elif L==3
"You must enter your @nick, e-mail or ID."; "You must enter your @nick, e-mail or ID.";
#elif L==4 #elif L==4
"Debe escribir su @apodo, correo o ID (DNI/c&eacute;dula)."; "Debe escribir su @apodo, correo o ID (DNI/c&eacute;dula&hellip;).";
#elif L==5 #elif L==5
"Vous devez entrer votre @surnom, courrier ou num&eacute;ro d'identit&eacute;."; "Vous devez entrer votre @surnom, courrier ou num&eacute;ro d'identit&eacute;.";
#elif L==6 #elif L==6
"Debe escribir su @apodo, correo o ID (DNI/c&eacute;dula)."; // Okoteve traducción "Debe escribir su @apodo, correo o ID (DNI/c&eacute;dula&hellip;)."; // Okoteve traducción
#elif L==7 #elif L==7
"Devi inserire il tuo @nome-utente, e-mail o numero carta d'identit&agrave;."; "Devi inserire il tuo @nome-utente, e-mail o numero carta d'identit&agrave;.";
#elif L==8 #elif L==8