diff --git a/swad_account.c b/swad_account.c
index ef1a97cb1..21baa2a56 100644
--- a/swad_account.c
+++ b/swad_account.c
@@ -68,7 +68,7 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/
/*****************************************************************************/
-static void Acc_ShowFormCheckIfIHaveAccount (void);
+static void Acc_ShowFormCheckIfIHaveAccount (const char *Title);
static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWithoutArroba,
const char *NewEmail);
static bool Acc_GetParamsNewAccount (char *NewNicknameWithoutArroba,
@@ -114,14 +114,13 @@ void Acc_ShowFormAccount (void)
/* Links to log in and to change language */
fprintf (Gbl.F.Out,"
");
/**** Show form to check if I have an account *****/
- Acc_ShowFormCheckIfIHaveAccount ();
-
- /**** Show form to create a new account *****/
- Acc_ShowFormRequestNewAccountWithParams ("","");
+ Acc_ShowFormCheckIfIHaveAccount ("Antes de crear una cuenta nueva"
+ " compruebe si ya le han inscrito con su ID"); // TODO: Need translation!!!
}
}
@@ -129,13 +128,13 @@ void Acc_ShowFormAccount (void)
/***************** 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 *Txt_ID;
/***** Start frame *****/
- Lay_StartRoundFrame (NULL,"Es posible que ya le hayan inscrito con su ID (DNI/cédula)",NULL); // TODO: Need translation!!!
+ Lay_StartRoundFrame (NULL,Title,NULL);
/***** Form to request user's ID for possible account already created *****/
Act_FormStart (ActChkUsrAcc);
@@ -160,7 +159,7 @@ static void Acc_ShowFormCheckIfIHaveAccount (void)
void Acc_CheckIfEmptyAccountExists (void)
{
extern const char *Txt_Name;
- char NewID[ID_MAX_LENGTH_USR_ID+1];
+ char ID[ID_MAX_LENGTH_USR_ID+1];
unsigned NumUsrs;
unsigned NumUsr;
struct UsrData UsrDat;
@@ -168,51 +167,52 @@ void Acc_CheckIfEmptyAccountExists (void)
MYSQL_RES *mysql_res;
MYSQL_ROW row;
+ /***** Links to other actions *****/
+ fprintf (Gbl.F.Out,"");
+
/***** 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
- Str_RemoveLeadingZeros (NewID);
- Str_ConvertToUpperText (NewID);
+ Str_RemoveLeadingZeros (ID);
+ Str_ConvertToUpperText (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,"
- "UPPER(usr_data.FirstName),"
- "UPPER(usr_data.Surname1),"
- "UPPER(usr_data.Surname2)"
+ sprintf (Query,"SELECT usr_IDs.UsrCod"
" FROM usr_IDs,usr_data"
" WHERE usr_IDs.UsrID='%s'"
" AND usr_IDs.UsrCod=usr_data.UsrCod"
" AND usr_data.Password=''",
- NewID);
+ ID);
NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get user's codes");
if (NumUsrs)
{
/***** Start frame and write message with number of accounts found *****/
- if (NumUsrs == 1)
- Lay_StartRoundFrameTable (NULL,5,"¿Cree que usted es el siguiente usuario?"); // TODO: Need translation!!!
- else
- {
- sprintf (Gbl.Title,"¿Cree que usted es uno de los siguientes %u usuarios?",
- NumUsrs);
- Lay_StartRoundFrameTable (NULL,5,Gbl.Title); // TODO: Need translation!!!
- }
+ Lay_StartRoundFrameTable (NULL,5,(NumUsrs == 1) ? "¿Cree que usted es este usuario/a?" : // TODO: Need translation!!!
+ "¿Cree que usted es uno de estos usuarios?"); // TODO: Need translation!!!
+
+ /***** Initialize structure with user's data *****/
+ Usr_UsrDataConstructor (&UsrDat);
/***** List users found *****/
for (NumUsr = 1, Gbl.RowEvenOdd = 0;
NumUsr <= NumUsrs;
NumUsr++, Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd)
{
+ /***** Get user's data from query result *****/
row = mysql_fetch_row (mysql_res);
/* Get user's code */
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
- /* Get encrypted user's code */
- strncpy (UsrDat.EncryptedUsrCod,row[1],sizeof (UsrDat.EncryptedUsrCod) - 1);
- UsrDat.EncryptedUsrCod[sizeof (UsrDat.EncryptedUsrCod) - 1] = '\0';
+ /* Get user's data */
+ Usr_GetAllUsrDataFromUsrCod (&UsrDat);
/***** Write number of user in the list *****/
fprintf (Gbl.F.Out,""
@@ -222,28 +222,19 @@ void Acc_CheckIfEmptyAccountExists (void)
"",
Gbl.RowEvenOdd,NumUsr);
- fprintf (Gbl.F.Out,"%s: ",
- Gbl.RowEvenOdd,Txt_Name);
- if (row[2][0] ||
- row[3][0] ||
- row[4][0])
- {
- 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," | ");
+ /***** Write user's name *****/
+ fprintf (Gbl.F.Out,""
+ "%s: %s"
+ " | ",
+ Gbl.RowEvenOdd,Txt_Name,
+ UsrDat.FullName[0] ? UsrDat.FullName :
+ "?");
/* Button to login with this account */
fprintf (Gbl.F.Out,"",
Gbl.RowEvenOdd);
Act_FormStart (ActAutUsrNew);
- Usr_PutParamUsrCodEncrypted (Gbl.Usrs.Me.UsrDat.EncryptedUsrCod);
+ Usr_PutParamUsrCodEncrypted (UsrDat.EncryptedUsrCod);
Lay_PutCreateButtonInline ("¡Soy yo!"); // TODO: Need translation!!!
Act_FormEnd ();
fprintf (Gbl.F.Out," | "
@@ -260,25 +251,39 @@ void Acc_CheckIfEmptyAccountExists (void)
"
");
}
+ /***** Free memory used for user's data *****/
+ Usr_UsrDataDestructor (&UsrDat);
+
/***** End frame *****/
Lay_EndRoundFrameTable ();
}
else
{
- sprintf (Gbl.Message,"No hay ninguna cuenta vacía asociada a su ID %s.", // TODO: Need translation!!!
- NewID);
+ sprintf (Gbl.Message,"No existe ninguna cuenta "vacía""
+ " (aún no usada) asociada a su ID %s.
"
+ " Si cree que puede haber sido inscrito/a"
+ " con otro ID, compruébelo, por favor.", // TODO: Need translation!!!
+ ID);
Lay_ShowAlert (Lay_INFO,Gbl.Message);
-
- /**** Show form to check if I have an account *****/
- Acc_ShowFormCheckIfIHaveAccount ();
}
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);
- }
- /**** Show form to create a new account *****/
- Acc_ShowFormRequestNewAccountWithParams ("","");
+ /**** Show form to check if I have an account *****/
+ 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édula…).");
+
+ 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_email;
extern const char *Txt_Email;
- extern const char *Txt_New_on_PLATFORM_Sign_up;
extern const char *Txt_Create_account;
char NewNicknameWithArroba[Nck_MAX_BYTES_NICKNAME_WITH_ARROBA+1];
/***** Form to enter some data of the new user *****/
Act_FormStart (ActCreUsrAcc);
- sprintf (Gbl.Title,Txt_New_on_PLATFORM_Sign_up,Cfg_PLATFORM_SHORT_NAME);
- Lay_StartRoundFrameTable (NULL,2,Gbl.Title);
+ Lay_StartRoundFrameTable (NULL,2,"Crear una nueva cuenta"); // TODO: Need translation!!!!
/***** Nickname *****/
if (NewNicknameWithoutArroba[0])
diff --git a/swad_changelog.h b/swad_changelog.h
index c323df743..6ee4ae32a 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -135,17 +135,21 @@
// 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 *****************************/
/*****************************************************************************/
-#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 JS_FILE "swad15.238.1.js"
// 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
/*
+ 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.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)
diff --git a/swad_text.c b/swad_text.c
index 8ac6cc819..84e972370 100644
--- a/swad_text.c
+++ b/swad_text.c
@@ -940,7 +940,7 @@ const char *Txt_The_following_password_has_been_assigned_to_you_to_log_in_X_NO_H
#elif L==6
"Se le ha asignado la siguiente contraseña para entrar en %s: %s\n"
"Si desea activar esta nueva contraseña,"
- " debe entrar en %s con su ID (DNI/cédula), apodo o dirección de correo"
+ " debe entrar en %s con su ID (DNI/cédula…), apodo o dirección de correo"
" y esta nueva contraseña antes de %u días."
" Una vez que haya entrado, puede cambiar la contraseña por otra.\n"
"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
"A user can not have more than %u IDs.";
#elif L==4
- "Un usuario no puede tener más de %u ID (DNI/cédulas).";
+ "Un usuario no puede tener más de %u ID (DNI/cédulas…).";
#elif L==5
"Un utilisateur ne peut pas avoir plus de %u IDs.";
#elif L==6
- "Un usuario no puede tener más de %u ID (DNI/cédulas)."; // Okoteve traducción
+ "Un usuario no puede tener más de %u ID (DNI/cédulas…)."; // Okoteve traducción
#elif L==7
"Un utente non può avere più di %u ID.";
#elif L==8
@@ -2581,11 +2581,11 @@ const char *Txt_Another_ID =
#elif L==3
"Another ID";
#elif L==4
- "Otro ID (DNI/cédula)";
+ "Otro ID (DNI/cédula…)";
#elif L==5
"Un autre numéro d'identité";
#elif L==6
- "Otro ID (DNI/cédula)"; // Okoteve traducción
+ "Otro ID (DNI/cédula…)"; // Okoteve traducción
#elif L==7
"Un'altra carta d'identità";
#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
"Do you want to confirm the ID (identity number/passport) %s?";
#elif L==4
- "¿Desea confirmar el ID (DNI/cédula) %s?";
+ "¿Desea confirmar el ID (DNI/cédula…) %s?";
#elif L==5
"Voulez-vous confirmer l'ID %s?";
#elif L==6
- "¿Desea confirmar el ID (DNI/cédula) %s?"; // Okoteve traducción
+ "¿Desea confirmar el ID (DNI/cédula…) %s?"; // Okoteve traducción
#elif L==7
"Vuoi confermare l'ID %s?";
#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ándola como página web.
"
" Una tabla puede tener varias filas de cabecera y varias filas de pie."
" Entre ellas debe haber una única fila para cada estudiante,"
- " con cualquier número de columnas, conteniendo la primera columna el ID (DNI/cédula) del estudiante.
"
+ " con cualquier número de columnas, conteniendo la primera columna el ID (DNI/cédula…) del estudiante.
"
" Un estudiante verá una tabla con las filas de cabecera,"
" seguidas por la fila con sus calificaciones,"
" 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ándola como página web.
"
" Una tabla puede tener varias filas de cabecera y varias filas de pie."
" Entre ellas debe haber una única fila para cada estudiante,"
- " con cualquier número de columnas, conteniendo la primera columna el ID (DNI/cédula) del estudiante.
"
+ " con cualquier número de columnas, conteniendo la primera columna el ID (DNI/cédula…) del estudiante.
"
" Un estudiante verá una tabla con las filas de cabecera,"
" seguidas por la fila con sus calificaciones,"
" 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ándola como página web.
"
" Una tabla puede tener varias filas de cabecera y varias filas de pie."
" Entre ellas debe haber una única fila para cada estudiante,"
- " con cualquier número de columnas, conteniendo la primera columna el ID (DNI/cédula) del estudiante.
"
+ " con cualquier número de columnas, conteniendo la primera columna el ID (DNI/cédula…) del estudiante.
"
" Un estudiante verá una tabla con las filas de cabecera,"
" seguidas por la fila con sus calificaciones,"
" y por las filas de pie."; // Okoteve traducción
@@ -14226,11 +14226,11 @@ const char *Txt_ID =
#elif L==3
"ID (identity number/passport)";
#elif L==4
- "ID (DNI/cédula)";
+ "ID (DNI/cédula…)";
#elif L==5
"Num. d'identité";
#elif L==6
- "ID (DNI/cédula)"; // Okoteve traducción
+ "ID (DNI/cédula…)"; // Okoteve traducción
#elif L==7
"Numero carta d'identità";
#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
#if L==1
- "El ID (DNI/cédula) %s ja havia estat confirmat.";
+ "El ID (DNI/cédula…) %s ja havia estat confirmat.";
#elif L==2
"ID %s hatte bereits bestätigt worden.";
#elif L==3
"ID %s had already been confirmed.";
#elif L==4
- "El ID (DNI/cédula) %s ya había sido confirmado.";
+ "El ID (DNI/cédula…) %s ya había sido confirmado.";
#elif L==5
"L'ID %s avait déjà été confirmée.";
#elif L==6
- "El ID (DNI/cédula) %s ya había sido confirmado."; // Okoteve traducción
+ "El ID (DNI/cédula…) %s ya había sido confirmado."; // Okoteve traducción
#elif L==7
"L'ID %s era già stato confermato.";
#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
#if L==1
- "ID (DNI/cédula) %s confirmat";
+ "ID (DNI/cédula…) %s confirmat";
#elif L==2
"ID %s bestätigt";
#elif L==3
"ID %s confirmed";
#elif L==4
- "ID (DNI/cédula) %s confirmado";
+ "ID (DNI/cédula…) %s confirmado";
#elif L==5
"ID %s confirmé";
#elif L==6
- "ID (DNI/cédula) %s confirmado"; // Okoteve traducción
+ "ID (DNI/cédula…) %s confirmado"; // Okoteve traducción
#elif L==7
"ID %s confermato";
#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
#if L==1
- "ID (DNI/cédula) %s no confirmat";
+ "ID (DNI/cédula…) %s no confirmat";
#elif L==2
"ID %s nicht bestätigt";
#elif L==3
"ID %s not confirmed";
#elif L==4
- "ID (DNI/cédula) %s no confirmado";
+ "ID (DNI/cédula…) %s no confirmado";
#elif L==5
"ID %s pas confirmé";
#elif L==6
- "ID (DNI/cédula) %s no confirmado"; // Okoteve traducción
+ "ID (DNI/cédula…) %s no confirmado"; // Okoteve traducción
#elif L==7
"ID %s non confermato";
#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
#if L==1
- "ID (DNI/cédula) %s eliminat.";
+ "ID (DNI/cédula…) %s eliminat.";
#elif L==2
"ID %s entfernt.";
#elif L==3
"ID %s removed.";
#elif L==4
- "ID (DNI/cédula) %s eliminado.";
+ "ID (DNI/cédula…) %s eliminado.";
#elif L==5
"ID %s supprimé.";
#elif L==6
- "ID (DNI/cédula) %s eliminado."; // Okoteve traducción
+ "ID (DNI/cédula…) %s eliminado."; // Okoteve traducción
#elif L==7
"ID %s rimosso.";
#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
#if L==1
"Si se trata de un usuario nuevo en %s,"
- " debe indicar el ID (DNI/cédula)."; // Necessita traduccio
+ " debe indicar el ID (DNI/cédula…)."; // Necessita traduccio
#elif L==2
"If this is a new user in %s,"
" 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.";
#elif L==4
"Si se trata de un usuario nuevo en %s,"
- " debe indicar el ID (DNI/cédula).";
+ " debe indicar el ID (DNI/cédula…).";
#elif L==5
"If this is a new user in %s,"
" you should indicate her/his ID."; // Besoin de traduction
#elif L==6
"Si se trata de un usuario nuevo en %s,"
- " debe indicar el ID (DNI/cédula)."; // Okoteve traducción
+ " debe indicar el ID (DNI/cédula…)."; // Okoteve traducción
#elif L==7
"If this is a new user in %s,"
" 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_ =
#if L==1
- "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/cédula),"
+ "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/cédula…),"
" y el correo en su ficha es correcto,"
" recibirá un mensaje con una nueva contraseña."; // Necessita traduccio
#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,"
" you will receive an e-mail with a new password.";
#elif L==4
- "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/cédula),"
+ "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/cédula…),"
" y el correo en su ficha es correcto,"
" recibirá un mensaje con una nueva contraseña.";
#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,"
" vous recevrez un e-mail avec un nouveau mot de passe.";
#elif L==6
- "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/cédula),"
+ "Si usted ha escrito correctamente su @apodo, correo o ID (DNI/cédula…),"
" y el correo en su ficha es correcto,"
" recibirá un mensaje con una nueva contraseña."; // Okoteve traducción
#elif L==7
@@ -16536,17 +16536,17 @@ const char *Txt_List_of_detailed_clicks =
const char *Txt_List_of_nicks_emails_or_IDs =
#if L==1
- "Lista de @apodos, correos o ID (DNI/cédulas)"; // Necessita traduccio
+ "Lista de @apodos, correos o ID (DNI/cédulas…)"; // Necessita traduccio
#elif L==2
"Liste von @Benutzernamen, E-mails oder Ausweis-Nr.";
#elif L==3
"List of @nicks, e-mails or IDs";
#elif L==4
- "Lista de @apodos, correos o ID (DNI/cédulas)";
+ "Lista de @apodos, correos o ID (DNI/cédulas…)";
#elif L==5
"Liste de numéros d'identité";
#elif L==6
- "Lista de @apodos, correos o ID (DNI/cédulas)"; // Okoteve traducción
+ "Lista de @apodos, correos o ID (DNI/cédulas…)"; // Okoteve traducción
#elif L==7
"Lista di @nomi-utenti, e-mail o numero carte d'identità";
#elif L==8
@@ -23543,11 +23543,11 @@ const char *Txt_nick_email_or_ID =
#elif L==3
"@nick, e-mail or ID";
#elif L==4
- "@apodo, correo o ID (DNI/cédula)";
+ "@apodo, correo o ID (DNI/cédula…)";
#elif L==5
"@surnom, courrier ou numéro d'identité";
#elif L==6
- "@apodo, correo o ID (DNI/cédula)"; // Okoteve traducción
+ "@apodo, correo o ID (DNI/cédula…)"; // Okoteve traducción
#elif L==7
"@nome-utente, e-mail o numero carta d'identità";
#elif L==8
@@ -23558,17 +23558,17 @@ const char *Txt_nick_email_or_ID =
const char *Txt_nicks_emails_or_IDs_separated_by_commas =
#if L==1
- "@apodos, correos o ID (DNI/cédulas) separados por comas"; // Necessita traduccio
+ "@apodos, correos o ID (DNI/cédulas…) separados por comas"; // Necessita traduccio
#elif L==2
"@Benutzernamen, E-mails oder Ausweis-Nr. durch Kommas getrennt";
#elif L==3
"@nicks, e-mails or IDs separated by commas";
#elif L==4
- "@apodos, correos o ID (DNI/cédulas) separados por comas";
+ "@apodos, correos o ID (DNI/cédulas…) separados por comas";
#elif L==5
"@surnoms, courriers ou numéros d'identité séparés par des virgules";
#elif L==6
- "@apodos, correos o ID (DNI/cédulas) separados por comas"; // Okoteve traducción
+ "@apodos, correos o ID (DNI/cédulas…) separados por comas"; // Okoteve traducción
#elif L==7
"@nomi-utenti, e-mail o numero carte d'identità separati da virgole";
#elif L==8
@@ -28082,7 +28082,7 @@ const char *Txt_Please_fill_in_your_ID =
" because it facilitates the registration process"
" of users in the courses.";
#elif L==4
- "Por favor, rellene su ID (DNI/cédula)."
+ "Por favor, rellene su ID (DNI/cédula…)."
" Es un dato opcional,"
" pero es recomendable que lo rellene"
" porque facilita el proceso de inscripción"
@@ -28094,7 +28094,7 @@ const char *Txt_Please_fill_in_your_ID =
" parce qu'il facilite le processus d'enregistrement"
" des utilisateurs dans les matières.";
#elif L==6
- "Por favor, rellene su ID (DNI/cédula)."
+ "Por favor, rellene su ID (DNI/cédula…)."
" Es un dato opcional,"
" pero es recomendable que lo rellene"
" porque facilita el proceso de inscripció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
#if L==1
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" ha sido confirmado."; // Necessita traduccio
#elif L==2
"The ID %s"
@@ -42458,13 +42458,13 @@ const char *Txt_The_ID_X_has_been_confirmed = // Warning: it is very important t
"The ID %s"
" has been confirmed.";
#elif L==4
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" ha sido confirmado.";
#elif L==5
"The ID %s"
" has been confirmed."; // Besoin de traduction
#elif L==6
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" ha sido confirmado."; // Okoteve traducción
#elif L==7
"Il ID %s"
@@ -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
#if L==1
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" se ha registrado correctamente."; // Necessita traduccio
#elif L==2
"The ID %s"
@@ -42488,13 +42488,13 @@ const char *Txt_The_ID_X_has_been_registered_successfully = // Warning: it is ve
"The ID %s"
" has been registered successfully.";
#elif L==4
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" se ha registrado correctamente.";
#elif L==5
"The ID %s"
" has been registered successfully."; // Besoin de traduction
#elif L==6
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" se ha registrado correctamente."; // Okoteve traducción
#elif L==7
"Il ID %s"
@@ -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
#if L==1
- "El ID (DNI/cédula) %s no es válido."
+ "El ID (DNI/cédula…) %s no es válido."
" Solo puede contener números (al menos uno) y letras."; // Necessita traduccio
#elif L==2
"The ID %s 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 %s is not valid."
" It can only contain numbers (at least one) and letters.";
#elif L==4
- "El ID (DNI/cédula) %s no es válido."
+ "El ID (DNI/cédula…) %s no es válido."
" Solo puede contener números (al menos uno) y letras.";
#elif L==5
"The ID %s is not valid."
" It can only contain numbers (at least one) and letters."; // Besoin de traduction
#elif L==6
- "El ID (DNI/cédula) %s no es válido."
+ "El ID (DNI/cédula…) %s no es válido."
" Solo puede contener números (al menos uno) y letras."; // Okoteve traducción
#elif L==7
"L'ID %s non è 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
#if L==1
- "El @apodo, correo o ID (DNI/cédula) %s no es válido."; // Necessita traduccio
+ "El @apodo, correo o ID (DNI/cédula…) %s no es válido."; // Necessita traduccio
#elif L==2
"The @nick, e-mail or ID %s is not valid."; // Need Übersetzung
#elif L==3
"The @nick, e-mail or ID %s is not valid.";
#elif L==4
- "El @apodo, correo o ID (DNI/cédula) %s no es válido.";
+ "El @apodo, correo o ID (DNI/cédula…) %s no es válido.";
#elif L==5
"The @nick, e-mail or ID %s is not valid."; // Besoin de traduction
#elif L==6
- "El @apodo, correo o ID (DNI/cédula) %s no es válido."; // Okoteve traducción
+ "El @apodo, correo o ID (DNI/cédula…) %s no es válido."; // Okoteve traducción
#elif L==7
"Il @nome-utente, e-mail o ID %s non è valido.";
#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
#if L==1
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" coincide con uno de los existentes."; // Necessita traduccio
#elif L==2
"The ID %s"
@@ -42608,13 +42608,13 @@ const char *Txt_The_ID_X_matches_one_of_the_existing = // Warning: it is very im
"The ID %s"
" matches one of the existing.";
#elif L==4
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" coincide con uno de los existentes.";
#elif L==5
"The ID %s"
" matches one of the existing."; // Besoin de traduction
#elif L==6
- "El ID (DNI/cédula) %s"
+ "El ID (DNI/cédula…) %s"
" coincide con uno de los existentes."; // Okoteve traducción
#elif L==7
"The ID %s"
@@ -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
#if L==1
- "Hi ha %u usuaris amb el ID (DNI/cédula) %s.";
+ "Hi ha %u usuaris amb el ID (DNI/cédula…) %s.";
#elif L==2
"There are %u users with the ID %s."; // Need Übersetzung
#elif L==3
"There are %u users with the ID %s.";
#elif L==4
- "Hay %u usuarios con el ID (DNI/cédula) %s.";
+ "Hay %u usuarios con el ID (DNI/cédula…) %s.";
#elif L==5
"Il y a %u utilisateurs avec le ID %s.";
#elif L==6
- "Hay %u usuarios con el ID (DNI/cédula) %s."; // Okoteve traducción
+ "Hay %u usuarios con el ID (DNI/cédula…) %s."; // Okoteve traducción
#elif L==7
"Ci sono %u utenti con il ID %s.";
#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
#if L==1
"No existe ningún usuario en %s"
- " con el ID (DNI/cédula) %s."
+ " con el ID (DNI/cédula…) %s."
" Si usted ya tiene cuenta en %s,"
" inicie sesión y añada este ID a su cuenta."
" 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.";
#elif L==4
"No existe ningún usuario en %s"
- " con el ID (DNI/cédula) %s."
+ " con el ID (DNI/cédula…) %s."
" Si usted ya tiene cuenta en %s,"
" inicie sesión y añada este ID a su cuenta."
" 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éer un nouveau.";
#elif L==6
"No existe ningún usuario en %s"
- " con el ID (DNI/cédula) %s."
+ " con el ID (DNI/cédula…) %s."
" Si usted ya tiene cuenta en %s,"
" inicie sesión y añada este ID a su cuenta."
" 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
#if L==1
"No existe ningún usuario"
- " con ID (DNI/cédula), apodo o correo %s."; // Necessita traduccio
+ " con ID (DNI/cédula…), apodo o correo %s."; // Necessita traduccio
#elif L==2
"There is no user"
" with ID, nick or e-mail %s."; // Ü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 %s.";
#elif L==4
"No existe ningún usuario"
- " con ID (DNI/cédula), apodo o correo %s.";
+ " con ID (DNI/cédula…), apodo o correo %s.";
#elif L==5
"There is no user"
" with ID, nick or e-mail %s."; // Besoin de traduction
#elif L==6
"No existe ningún usuario"
- " con ID (DNI/cédula), apodo o correo %s."; // Okoteve traducción
+ " con ID (DNI/cédula…), apodo o correo %s."; // Okoteve traducción
#elif L==7
"Non c'è alcun utente"
" con ID, nome utente o e-mail %s.";
@@ -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
#if L==1
"No existe ningún usuario"
- " con ID (DNI/cédula), apodo o correo %s"
+ " con ID (DNI/cédula…), apodo o correo %s"
" en la asignatura %s."; // Necessita traduccio
#elif L==2
"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 %s.";
#elif L==4
"No existe ningún usuario"
- " con ID (DNI/cédula), apodo o correo %s"
+ " con ID (DNI/cédula…), apodo o correo %s"
" en la asignatura %s.";
#elif L==5
"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 %s."; // Besoin de traduction
#elif L==6
"No existe ningún usuario"
- " con ID (DNI/cédula), apodo o correo %s"
+ " con ID (DNI/cédula…), apodo o correo %s"
" en la asignatura %s."; // Okoteve traducción
#elif L==7
"Non c'è 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_ =
#if L==1
"Escriba o pegue una lista"
- " con @apodos, correos o ID (DNI/cédulas)."
- " Los @apodos, correos o ID (DNI/cédulas)"
+ " con @apodos, correos o ID (DNI/cédulas…)."
+ " Los @apodos, correos o ID (DNI/cédulas…)"
" pueden ir separados por cadenas de caracteres arbitrarias"
" (por ej. nombres, apellidos, espacios, etc.)."
" Solo se tendrán en cuenta aquellas palabras"
- " que parezcan @apodos, correos o ID (DNI/cédulas);"
+ " que parezcan @apodos, correos o ID (DNI/cédulas…);"
" el resto del texto se ignorará."; // Necessita traduccio
#elif L==2
"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.";
#elif L==4
"Escriba o pegue una lista"
- " con @apodos, correos o ID (DNI/cédulas)."
- " Los @apodos, correos o ID (DNI/cédulas)"
+ " con @apodos, correos o ID (DNI/cédulas…)."
+ " Los @apodos, correos o ID (DNI/cédulas…)"
" pueden ir separados por cadenas de caracteres arbitrarias"
" (por ej. nombres, apellidos, espacios, etc.)."
" Solo se tendrán en cuenta aquellas palabras"
- " que parezcan @apodos, correos o ID (DNI/cédulas);"
+ " que parezcan @apodos, correos o ID (DNI/cédulas…);"
" el resto del texto se ignorará.";
#elif L==5
"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
#elif L==6
"Escriba o pegue una lista"
- " con @apodos, correos o ID (DNI/cédulas)."
- " Los @apodos, correos o ID (DNI/cédulas)"
+ " con @apodos, correos o ID (DNI/cédulas…)."
+ " Los @apodos, correos o ID (DNI/cédulas…)"
" pueden ir separados por cadenas de caracteres arbitrarias"
" (por ej. nombres, apellidos, espacios, etc.)."
" Solo se tendrán en cuenta aquellas palabras"
- " que parezcan @apodos, correos o ID (DNI/cédulas);"
+ " que parezcan @apodos, correos o ID (DNI/cédulas…);"
" el resto del texto se ignorará."; // Okoteve traducción
#elif L==7
"Scrivi o incolla la lista"
@@ -49141,11 +49141,11 @@ const char *Txt_User_ID =
#elif L==3
"User ID";
#elif L==4
- "ID (DNI/cédula) del usuario";
+ "ID (DNI/cédula…) del usuario";
#elif L==5
"Numéro d'identité d'utilisateur";
#elif L==6
- "ID (DNI/cédula) del usuario"; // Okoteve traducción
+ "ID (DNI/cédula…) del usuario"; // Okoteve traducción
#elif L==7
"Numero carta d'identità utente";
#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 =
#if L==1
- "No puede eliminar este ID (DNI/cédula)."; // Necessita traduccio
+ "No puede eliminar este ID (DNI/cédula…)."; // Necessita traduccio
#elif L==2
"You can not delete this ID."; // Need Übersetzung
#elif L==3
"You can not delete this ID.";
#elif L==4
- "No puede eliminar este ID (DNI/cédula).";
+ "No puede eliminar este ID (DNI/cédula…).";
#elif L==5
"You can not delete this ID."; // Besoin de traduction
#elif L==6
- "No puede eliminar este ID (DNI/cédula)."; // Okoteve traducción
+ "No puede eliminar este ID (DNI/cédula…)."; // Okoteve traducción
#elif L==7
"Non puoi cancellare questo ID.";
#elif L==8
@@ -52925,11 +52925,11 @@ const char *Txt_You_must_enter_your_nick_email_or_ID =
#elif L==3
"You must enter your @nick, e-mail or ID.";
#elif L==4
- "Debe escribir su @apodo, correo o ID (DNI/cédula).";
+ "Debe escribir su @apodo, correo o ID (DNI/cédula…).";
#elif L==5
"Vous devez entrer votre @surnom, courrier ou numéro d'identité.";
#elif L==6
- "Debe escribir su @apodo, correo o ID (DNI/cédula)."; // Okoteve traducción
+ "Debe escribir su @apodo, correo o ID (DNI/cédula…)."; // Okoteve traducción
#elif L==7
"Devi inserire il tuo @nome-utente, e-mail o numero carta d'identità.";
#elif L==8