Version18.112.1

This commit is contained in:
Antonio Cañas Vargas 2019-04-12 10:14:29 +02:00
parent 8615d161e0
commit 75d802bb7c
4 changed files with 307 additions and 65 deletions

View File

@ -2420,6 +2420,25 @@ a:hover img.CENTRE_PHOTO_SHOW
{ {
max-width:500px; max-width:500px;
} }
.PRJ_MEMBER_ICO
{
width:30px;
text-align:center;
vertical-align:middle;
}
.PRJ_MEMBER_PHO
{
width:30px;
text-align:center;
vertical-align:middle;
}
.PRJ_MEMBER_NAM
{
text-align:left;
vertical-align:middle;
color:#4D88A1;
font-size:11pt;
}
/********************************** Tests ************************************/ /********************************** Tests ************************************/
.TAG_SEL {box-sizing:border-box; width:346px;} .TAG_SEL {box-sizing:border-box; width:346px;}
@ -2807,7 +2826,7 @@ a:hover img.CENTRE_PHOTO_SHOW
overflow:hidden; overflow:hidden;
text-overflow:ellipsis; text-overflow:ellipsis;
} }
.AUTHOR_TXT {color:#4D88A1; font-size:11pt;} .AUTHOR_TXT {color:#4D88A1; font-size:11pt;}
.AUTHOR_TXT_LIGHT {color:#AFC4CC; font-size:11pt;} .AUTHOR_TXT_LIGHT {color:#AFC4CC; font-size:11pt;}
.AUTHOR_TXT_NEW {color:#4D88A1; font-size:11pt; font-weight:bold;} .AUTHOR_TXT_NEW {color:#4D88A1; font-size:11pt; font-weight:bold;}

View File

@ -456,10 +456,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.112 (2019-04-11)" #define Log_PLATFORM_VERSION "SWAD 18.112.1 (2019-04-12)"
#define CSS_FILE "swad18.92.css" #define CSS_FILE "swad18.112.1.css"
#define JS_FILE "swad18.92.js" #define JS_FILE "swad18.92.js"
/* /*
Version 18.112.1: Apr 12, 2019 Minor changes in layout of projects. (? lines)
Version 18.112: Apr 11, 2019 Code refactoring related to attendance. (242538 lines) Version 18.112: Apr 11, 2019 Code refactoring related to attendance. (242538 lines)
Version 18.111: Apr 11, 2019 New option to select users to compose an email to them. (242541 lines) Version 18.111: Apr 11, 2019 New option to select users to compose an email to them. (242541 lines)
1 change necessary in database: 1 change necessary in database:

View File

@ -1667,7 +1667,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
/* Icon to remove user */ /* Icon to remove user */
if (ProjectView == Prj_EDIT_ONE_PROJECT) if (ProjectView == Prj_EDIT_ONE_PROJECT)
{ {
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">"); fprintf (Gbl.F.Out,"<td class=\"PRJ_MEMBER_ICO\">");
Lay_PutContextualLinkOnlyIcon (ActionReqRemUsr[RoleInProject],NULL, Lay_PutContextualLinkOnlyIcon (ActionReqRemUsr[RoleInProject],NULL,
Prj_PutCurrentParams, Prj_PutCurrentParams,
"trash.svg", "trash.svg",
@ -1676,7 +1676,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
} }
/* Put user's photo */ /* Put user's photo */
fprintf (Gbl.F.Out,"<td class=\"CENTER_TOP\" style=\"width:30px;\">"); fprintf (Gbl.F.Out,"<td class=\"PRJ_MEMBER_PHO\">");
ShowPhoto = Pho_ShowingUsrPhotoIsAllowed (&Gbl.Usrs.Other.UsrDat,PhotoURL); ShowPhoto = Pho_ShowingUsrPhotoIsAllowed (&Gbl.Usrs.Other.UsrDat,PhotoURL);
Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,ShowPhoto ? PhotoURL : Pho_ShowUsrPhoto (&Gbl.Usrs.Other.UsrDat,ShowPhoto ? PhotoURL :
NULL, NULL,
@ -1684,7 +1684,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
fprintf (Gbl.F.Out,"</td>"); fprintf (Gbl.F.Out,"</td>");
/* Write user's name */ /* Write user's name */
fprintf (Gbl.F.Out,"<td class=\"AUTHOR_TXT LEFT_MIDDLE\">%s</td>", fprintf (Gbl.F.Out,"<td class=\"PRJ_MEMBER_NAM\">%s</td>",
Gbl.Usrs.Other.UsrDat.FullName); Gbl.Usrs.Other.UsrDat.FullName);
/* End row for this user */ /* End row for this user */
@ -1697,7 +1697,7 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
{ {
case Prj_EDIT_ONE_PROJECT: case Prj_EDIT_ONE_PROJECT:
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<td class=\"CENTER_TOP\" style=\"width:30px;\">"); "<td class=\"PRJ_MEMBER_ICO\">");
Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter Gbl.Prjs.PrjCod = Prj->PrjCod; // Used to pass project code as a parameter
snprintf (Gbl.Title,sizeof (Gbl.Title), snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Add_USERS, Txt_Add_USERS,
@ -1706,11 +1706,8 @@ static void Prj_ShowOneProjectMembersWithARole (const struct Project *Prj,
Prj_PutCurrentParams, Prj_PutCurrentParams,
Gbl.Title); Gbl.Title);
fprintf (Gbl.F.Out,"</td>" fprintf (Gbl.F.Out,"</td>"
"<td style=\"width:30px;\">" // Column for photo "<td class=\"PRJ_MEMBER_PHO\"></td>" // Column for photo
"</td>"); "<td class=\"PRJ_MEMBER_NAM\"></td>" // Column for name
if (RoleInProject == Prj_ROLE_STD)
fprintf (Gbl.F.Out,"<td></td>"); // Column for user's IDs
fprintf (Gbl.F.Out,"<td></td>" // Column for name
"</tr>"); "</tr>");
break; break;
default: default:
@ -1958,7 +1955,7 @@ static void Prj_AddEvls (void)
static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject) static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject)
{ {
extern const char *Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project; extern const char *Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project;
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS];
long PrjCod; long PrjCod;
const char *Ptr; const char *Ptr;
bool ItsMe; bool ItsMe;
@ -1996,7 +1993,7 @@ static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject)
/* Show success alert */ /* Show success alert */
Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project, Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_enroled_as_a_Y_in_the_project,
Gbl.Usrs.Other.UsrDat.FullName, Gbl.Usrs.Other.UsrDat.FullName,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject]); Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]);
} }
} }
@ -2027,9 +2024,8 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
{ {
extern const char *Txt_Do_you_really_want_to_be_removed_as_a_X_from_the_project_Y; extern const char *Txt_Do_you_really_want_to_be_removed_as_a_X_from_the_project_Y;
extern const char *Txt_Do_you_really_want_to_remove_the_following_user_as_a_X_from_the_project_Y; extern const char *Txt_Do_you_really_want_to_remove_the_following_user_as_a_X_from_the_project_Y;
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS];
extern const char *Txt_Remove_me_from_this_project; extern const char *Txt_Remove_USER_from_this_project;
extern const char *Txt_Remove_user_from_this_project;
static Act_Action_t ActionRemUsr[Prj_NUM_ROLES_IN_PROJECT] = static Act_Action_t ActionRemUsr[Prj_NUM_ROLES_IN_PROJECT] =
{ {
ActUnk, // Prj_ROLE_UNK, Unknown ActUnk, // Prj_ROLE_UNK, Unknown
@ -2058,11 +2054,11 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
{ {
ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod);
/***** Show question and button to remove user as administrator *****/ /***** Show question and button to remove user as a role from project *****/
/* Start alert */ /* Start alert */
Ale_ShowAlertAndButton1 (Ale_QUESTION,ItsMe ? Txt_Do_you_really_want_to_be_removed_as_a_X_from_the_project_Y : Ale_ShowAlertAndButton1 (Ale_QUESTION,ItsMe ? Txt_Do_you_really_want_to_be_removed_as_a_X_from_the_project_Y :
Txt_Do_you_really_want_to_remove_the_following_user_as_a_X_from_the_project_Y, Txt_Do_you_really_want_to_remove_the_following_user_as_a_X_from_the_project_Y,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject], Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex],
Prj.Title); Prj.Title);
/* Show user's record */ /* Show user's record */
@ -2072,8 +2068,10 @@ static void Prj_ReqRemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
Frm_StartForm (ActionRemUsr[RoleInProject]); Frm_StartForm (ActionRemUsr[RoleInProject]);
Gbl.Prjs.PrjCod = Prj.PrjCod; Gbl.Prjs.PrjCod = Prj.PrjCod;
Prj_PutCurrentParams (); Prj_PutCurrentParams ();
Btn_PutRemoveButton (ItsMe ? Txt_Remove_me_from_this_project : snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Remove_user_from_this_project); Txt_Remove_USER_from_this_project,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex]);
Btn_PutRemoveButton (Gbl.Title);
Frm_EndForm (); Frm_EndForm ();
/* End alert */ /* End alert */
@ -2114,7 +2112,7 @@ void Prj_RemEvl (void)
static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject) static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
{ {
extern const char *Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z; extern const char *Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z;
extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT]; extern const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS];
struct Project Prj; struct Project Prj;
bool ItsMe; bool ItsMe;
@ -2151,7 +2149,7 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
/***** Show success alert *****/ /***** Show success alert *****/
Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z, Ale_ShowAlert (Ale_SUCCESS,Txt_THE_USER_X_has_been_removed_as_a_Y_from_the_project_Z,
Gbl.Usrs.Other.UsrDat.FullName, Gbl.Usrs.Other.UsrDat.FullName,
Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject], Txt_PROJECT_ROLES_SINGUL_abc[RoleInProject][Gbl.Usrs.Other.UsrDat.Sex],
Prj.Title); Prj.Title);
} }
else else

View File

@ -30161,9 +30161,10 @@ const char *Txt_PROJECT_ROLES_SINGUL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
#endif #endif
}; };
const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] = const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT][Usr_NUM_SEXS] =
{
{ {
#if L==1 // ca // Prj_ROLE_UNK #if L==1 // ca // Prj_ROLE_UNK - Usr_SEX_UNKNOWN
"desconegut/da" "desconegut/da"
#elif L==2 // de #elif L==2 // de
"Unbekannter/e" "Unbekannter/e"
@ -30182,8 +30183,69 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt #elif L==9 // pt
"desconhecido/a" "desconhecido/a"
#endif #endif
, ,
#if L==1 // ca // Prj_ROLE_STD #if L==1 // ca // Prj_ROLE_UNK - Usr_SEX_FEMALE
"desconeguda"
#elif L==2 // de
"Unbekanntere"
#elif L==3 // en
"unknown"
#elif L==4 // es
"desconocida"
#elif L==5 // fr
"inconnu/e"
#elif L==6 // gn
"desconocida" // Okoteve traducción
#elif L==7 // it
"sconosciuta"
#elif L==8 // pl
"nieznany"
#elif L==9 // pt
"desconhecida"
#endif
,
#if L==1 // ca // Prj_ROLE_UNK - Usr_SEX_MALE
"desconegut"
#elif L==2 // de
"Unbekannter"
#elif L==3 // en
"unknown"
#elif L==4 // es
"desconocido"
#elif L==5 // fr
"inconnu"
#elif L==6 // gn
"desconocido" // Okoteve traducción
#elif L==7 // it
"sconosciuto"
#elif L==8 // pl
"nieznany"
#elif L==9 // pt
"desconhecido"
#endif
,
#if L==1 // ca // Prj_ROLE_UNK - Usr_SEX_ALL
"desconegut/da"
#elif L==2 // de
"Unbekannter/e"
#elif L==3 // en
"unknown"
#elif L==4 // es
"desconocido/a"
#elif L==5 // fr
"inconnu/e"
#elif L==6 // gn
"desconocido/a" // Okoteve traducción
#elif L==7 // it
"sconosciuto/a"
#elif L==8 // pl
"nieznany"
#elif L==9 // pt
"desconhecido/a"
#endif
},
{
#if L==1 // ca // Prj_ROLE_STD - Usr_SEX_UNKNOWN
"estudiant" "estudiant"
#elif L==2 // de #elif L==2 // de
"Student" "Student"
@ -30202,8 +30264,69 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt #elif L==9 // pt
"estudante" "estudante"
#endif #endif
, ,
#if L==1 // ca // Prj_ROLE_TUT #if L==1 // ca // Prj_ROLE_STD - Usr_SEX_FEMALE
"estudiant"
#elif L==2 // de
"Student"
#elif L==3 // en
"student"
#elif L==4 // es
"estudiante"
#elif L==5 // fr
"&eacute;tudiante"
#elif L==6 // gn
"temimbo'e"
#elif L==7 // it
"studente"
#elif L==8 // pl
"student"
#elif L==9 // pt
"estudante"
#endif
,
#if L==1 // ca // Prj_ROLE_STD - Usr_SEX_MALE
"estudiant"
#elif L==2 // de
"Student"
#elif L==3 // en
"student"
#elif L==4 // es
"estudiante"
#elif L==5 // fr
"&eacute;tudiant"
#elif L==6 // gn
"temimbo'e"
#elif L==7 // it
"studente"
#elif L==8 // pl
"student"
#elif L==9 // pt
"estudante"
#endif
,
#if L==1 // ca // Prj_ROLE_STD - Usr_SEX_ALL
"estudiant"
#elif L==2 // de
"Student"
#elif L==3 // en
"student"
#elif L==4 // es
"estudiante"
#elif L==5 // fr
"&eacute;tudiant/e"
#elif L==6 // gn
"temimbo'e"
#elif L==7 // it
"studente"
#elif L==8 // pl
"student"
#elif L==9 // pt
"estudante"
#endif
},
{
#if L==1 // ca // Prj_ROLE_TUT - Usr_SEX_UNKNOWN
"tutor/a" "tutor/a"
#elif L==2 // de #elif L==2 // de
"Tutor" "Tutor"
@ -30212,7 +30335,7 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==4 // es #elif L==4 // es
"tutor/a" "tutor/a"
#elif L==5 // fr #elif L==5 // fr
"tuteur" "tuteur/trice"
#elif L==6 // gn #elif L==6 // gn
"tutor/a" // Okoteve traducción "tutor/a" // Okoteve traducción
#elif L==7 // it #elif L==7 // it
@ -30222,8 +30345,69 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt #elif L==9 // pt
"tutor/a" "tutor/a"
#endif #endif
, ,
#if L==1 // ca // Prj_ROLE_EVL #if L==1 // ca // Prj_ROLE_TUT - Usr_SEX_FEMALE
"tutora"
#elif L==2 // de
"Tutor"
#elif L==3 // en
"tutor"
#elif L==4 // es
"tutora"
#elif L==5 // fr
"tutrice"
#elif L==6 // gn
"tutora" // Okoteve traducción
#elif L==7 // it
"precettore"
#elif L==8 // pl
"nauczyciel"
#elif L==9 // pt
"tutora"
#endif
,
#if L==1 // ca // Prj_ROLE_TUT - Usr_SEX_MALE
"tutor"
#elif L==2 // de
"Tutor"
#elif L==3 // en
"tutor"
#elif L==4 // es
"tutor"
#elif L==5 // fr
"tuteur"
#elif L==6 // gn
"tutor" // Okoteve traducción
#elif L==7 // it
"precettore"
#elif L==8 // pl
"nauczyciel"
#elif L==9 // pt
"tutor"
#endif
,
#if L==1 // ca // Prj_ROLE_TUT - Usr_SEX_ALL
"tutor/a"
#elif L==2 // de
"Tutor"
#elif L==3 // en
"tutor"
#elif L==4 // es
"tutor/a"
#elif L==5 // fr
"tuteur/trice"
#elif L==6 // gn
"tutor/a" // Okoteve traducción
#elif L==7 // it
"precettore"
#elif L==8 // pl
"nauczyciel"
#elif L==9 // pt
"tutor/a"
#endif
},
{
#if L==1 // ca // Prj_ROLE_EVL - Usr_SEX_UNKNOWN
"avaluador/a" "avaluador/a"
#elif L==2 // de #elif L==2 // de
"Auswerter" "Auswerter"
@ -30232,7 +30416,7 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==4 // es #elif L==4 // es
"evaluador/a" "evaluador/a"
#elif L==5 // fr #elif L==5 // fr
"&eacute;valuateur" "&eacute;valuateur/trice"
#elif L==6 // gn #elif L==6 // gn
"evaluador/a" // Okoteve traducción "evaluador/a" // Okoteve traducción
#elif L==7 // it #elif L==7 // it
@ -30242,7 +30426,68 @@ const char *Txt_PROJECT_ROLES_SINGUL_abc[Prj_NUM_ROLES_IN_PROJECT] =
#elif L==9 // pt #elif L==9 // pt
"avaliador/a" "avaliador/a"
#endif #endif
}; ,
#if L==1 // ca // Prj_ROLE_EVL - Usr_SEX_FEMALE
"avaluadora"
#elif L==2 // de
"Auswerter"
#elif L==3 // en
"evaluator"
#elif L==4 // es
"evaluadora"
#elif L==5 // fr
"&eacute;valuatrice"
#elif L==6 // gn
"evaluadora" // Okoteve traducción
#elif L==7 // it
"valutatore"
#elif L==8 // pl
"ewaluator"
#elif L==9 // pt
"avaliadora"
#endif
,
#if L==1 // ca // Prj_ROLE_EVL - Usr_SEX_MALE
"avaluador"
#elif L==2 // de
"Auswerter"
#elif L==3 // en
"evaluator"
#elif L==4 // es
"evaluador"
#elif L==5 // fr
"&eacute;valuateur"
#elif L==6 // gn
"evaluador" // Okoteve traducción
#elif L==7 // it
"valutatore"
#elif L==8 // pl
"ewaluator"
#elif L==9 // pt
"avaliador"
#endif
,
#if L==1 // ca // Prj_ROLE_EVL - Usr_SEX_ALL
"avaluador/a"
#elif L==2 // de
"Auswerter"
#elif L==3 // en
"evaluator"
#elif L==4 // es
"evaluador/a"
#elif L==5 // fr
"&eacute;valuateur/trice"
#elif L==6 // gn
"evaluador/a" // Okoteve traducción
#elif L==7 // it
"valutatore"
#elif L==8 // pl
"ewaluator"
#elif L==9 // pt
"avaliador/a"
#endif
}
};
const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] = const char *Txt_PROJECT_ROLES_PLURAL_Abc[Prj_NUM_ROLES_IN_PROJECT] =
{ {
@ -32193,27 +32438,6 @@ const char *Txt_Remove_me_from_this_course =
"Tirar me desta disciplina"; "Tirar me desta disciplina";
#endif #endif
const char *Txt_Remove_me_from_this_project =
#if L==1 // ca
"Eliminarme d'aquest projecte";
#elif L==2 // de
"Entfernen Sie diesen Projekt";
#elif L==3 // en
"Remove me from this project";
#elif L==4 // es
"Eliminarme de este proyecto";
#elif L==5 // fr
"Enlever-moi de ce projet";
#elif L==6 // gn
"Eliminarme de este proyecto"; // Okoteve traducción
#elif L==7 // it
"Rimuovimi da questo progetto";
#elif L==8 // pl
"Usu&ntilde; z projekt";
#elif L==9 // pt
"Tirar me deste projeto";
#endif
const char *Txt_Remove_me_from_THE_COURSE_X = // Warning: it is very important to include %s in the following sentences const char *Txt_Remove_me_from_THE_COURSE_X = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca #if L==1 // ca
"Eliminarme de <strong>%s</strong>"; "Eliminarme de <strong>%s</strong>";
@ -32466,25 +32690,25 @@ const char *Txt_Remove_user_from_this_course =
"Tirar utilizador desta disciplina"; "Tirar utilizador desta disciplina";
#endif #endif
const char *Txt_Remove_user_from_this_project = const char *Txt_Remove_USER_from_this_project = // Warning: it is very important to include %s in the following sentences
#if L==1 // ca #if L==1 // ca
"Eliminar usuari d'aquest projecte"; "Eliminar %s d'aquest projecte";
#elif L==2 // de #elif L==2 // de
"Entfernen Benutzer Sie diesen Projekt"; "Entfernen %s Sie diesen Projekt";
#elif L==3 // en #elif L==3 // en
"Remove user from this project"; "Remove %s from this project";
#elif L==4 // es #elif L==4 // es
"Eliminar usuario de este proyecto"; "Eliminar %s de este proyecto";
#elif L==5 // fr #elif L==5 // fr
"Enlever utilisateur de ce projet"; "Enlever %s de ce projet";
#elif L==6 // gn #elif L==6 // gn
"Eliminar usuario de este proyecto"; // Okoteve traducción "Eliminar %s de este proyecto"; // Okoteve traducción
#elif L==7 // it #elif L==7 // it
"Rimuovi utente da questo progetto"; "Rimuovi %s da questo progetto";
#elif L==8 // pl #elif L==8 // pl
"Usu&ntilde; u&zdot;ytkownika z projekt"; "Usu&ntilde; %s z projekt";
#elif L==9 // pt #elif L==9 // pt
"Tirar utilizador deste projeto"; "Tirar %s deste projeto";
#endif #endif
const char *Txt_Remove_USER_as_an_administrator = const char *Txt_Remove_USER_as_an_administrator =