From 308a722d856b7f002bffd8ba0fc872dc9ecead1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 3 Apr 2015 14:04:26 +0200 Subject: [PATCH] Version 14.108 --- swad_changelog.h | 3 +- swad_layout.c | 24 ++- swad_layout.h | 3 + swad_statistic.c | 378 ++++++++++++++++++++++++++++++++++++++++++++++- swad_statistic.h | 3 +- swad_text.c | 60 +++++--- 6 files changed, 438 insertions(+), 33 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index f9080b47b..e751c832c 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -103,11 +103,12 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 14.107.8 (2015/04/03)" +#define Log_PLATFORM_VERSION "SWAD 14.108 (2015/04/03)" // 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 14.108: Apr 03, 2015 New statistic (figure) about institutions. (184136 lines) Version 14.107.8: Apr 03, 2015 Changes in statistics (figures about hierarchy). (183774 lines) Version 14.107.7: Apr 03, 2015 Changes in layout of sent / received messages. (183753 lines) Version 14.107.6: Apr 03, 2015 Changes in layout of form to change password. (183748 lines) diff --git a/swad_layout.c b/swad_layout.c index fa3e66555..3856f39a1 100644 --- a/swad_layout.c +++ b/swad_layout.c @@ -1066,6 +1066,16 @@ void Lay_WriteTitle (const char *Title) // CellPadding must be 0, 1, 2, 4 or 8 void Lay_StartRoundFrameTable10 (const char *Width,unsigned CellPadding,const char *Title) + { + Lay_StartRoundFrame10 (Width,Title); + + fprintf (Gbl.F.Out,""); + } + +void Lay_StartRoundFrame10 (const char *Width,const char *Title) { fprintf (Gbl.F.Out,"
" "
", Title); - - fprintf (Gbl.F.Out,"
"); } // CellPadding must be 0, 1, 2, 4 or 8 @@ -1104,8 +1109,13 @@ void Lay_StartRoundFrameTable10Shadow (const char *Width,unsigned CellPadding) void Lay_EndRoundFrameTable10 (void) { - fprintf (Gbl.F.Out,"
" - "" + fprintf (Gbl.F.Out,""); + Lay_EndRoundFrame10 (); + } + +void Lay_EndRoundFrame10 (void) + { + fprintf (Gbl.F.Out,"" ""); } diff --git a/swad_layout.h b/swad_layout.h index 5b7617f98..e8987330a 100644 --- a/swad_layout.h +++ b/swad_layout.h @@ -98,8 +98,11 @@ void Lay_PutConfirmButtonInline (const char *Text); void Lay_PutRemoveButton (const char *Text); void Lay_StartRoundFrameTable10 (const char *Width,unsigned CellPadding,const char *Title); +void Lay_StartRoundFrame10 (const char *Width,const char *Title); void Lay_StartRoundFrameTable10Shadow (const char *Width,unsigned CellPadding); void Lay_EndRoundFrameTable10 (void); +void Lay_EndRoundFrame10 (void); + void Lay_ShowErrorAndExit (const char *Message); void Lay_ShowAlert (Lay_AlertType_t MsgType,const char *Message); void Lay_RefreshNotifsAndConnected (void); diff --git a/swad_statistic.c b/swad_statistic.c index 94b433323..811f352e7 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -123,7 +123,7 @@ static void Sta_WriteDegree (long DegCod); static void Sta_DrawBarNumClicks (char Color,float NumPagesGenerated,float MaxPagesGenerated,float TotalPagesGenerated,unsigned MaxBarWidth); static void Sta_WriteSelectedRangeOfDates (unsigned NumDays); -static void Sta_GetAndShowDegCrsStats (void); +static void Sta_GetAndShowHierarchyStats (void); static void Sta_WriteHeadDegsCrssInSWAD (void); static void Sta_GetAndShowNumCtysInSWAD (void); static void Sta_GetAndShowNumInssInSWAD (void); @@ -131,6 +131,14 @@ static void Sta_GetAndShowNumCtrsInSWAD (void); static void Sta_GetAndShowNumDegsInSWAD (void); static void Sta_GetAndShowNumCrssInSWAD (void); +static void Sta_GetAndShowInstitutionsStats (void); +static void Sta_GetAndShowInssOrderedByNumCtrs (void); +static void Sta_GetAndShowInssOrderedByNumDegs (void); +static void Sta_GetAndShowInssOrderedByNumCrss (void); +static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void); +static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void); +static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure); + static void Sta_GetAndShowUsersStats (void); static void Sta_GetAndShowUsersRanking (void); @@ -3670,7 +3678,11 @@ void Sta_ShowUseOfPlatform (void) break; case Sta_HIERARCHY: /***** Number of degrees and courses *****/ - Sta_GetAndShowDegCrsStats (); + Sta_GetAndShowHierarchyStats (); + break; + case Sta_INSTITUTIONS: + /***** Number of institutions with users *****/ + Sta_GetAndShowInstitutionsStats (); break; case Sta_SOCIAL_NETWORKS: /***** Number of users in social networks *****/ @@ -3860,10 +3872,11 @@ static void Sta_GetAndShowUsersRanking (void) } /*****************************************************************************/ -/*************** Get and show stats about degrees and courses ****************/ +/********* Get and show stats about hierarchy ***********/ +/********* (countries, institutions, centres, degrees and courses) ***********/ /*****************************************************************************/ -static void Sta_GetAndShowDegCrsStats (void) +static void Sta_GetAndShowHierarchyStats (void) { extern const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS]; @@ -4474,6 +4487,363 @@ static void Sta_GetAndShowNumCrssInSWAD (void) NumCrssWithStds); } +/*****************************************************************************/ +/****************** Get and show stats about institutions ********************/ +/*****************************************************************************/ + +static void Sta_GetAndShowInstitutionsStats (void) + { + /****** Institutions ordered by number of centres ******/ + Sta_GetAndShowInssOrderedByNumCtrs (); + + /****** Institutions ordered by number of degrees ******/ + Sta_GetAndShowInssOrderedByNumDegs (); + + /****** Institutions ordered by number of courses ******/ + Sta_GetAndShowInssOrderedByNumCrss (); + + /****** Institutions ordered by number of users in courses ******/ + Sta_GetAndShowInssOrderedByNumUsrsInCrss (); + + /****** Institutions ordered by number of users who claim to belong to them ******/ + Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (); + } + +/*****************************************************************************/ +/**** Get and show stats about institutions ordered by number of centres *****/ +/*****************************************************************************/ + +static void Sta_GetAndShowInssOrderedByNumCtrs (void) + { + extern const char *The_ClassFormul[The_NUM_THEMES]; + extern const char *Txt_Centres; + char Query[1024]; + + /****** Institutions ordered by number of centres ******/ + Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de centros"); // Need translation + + /***** Get institutions ordered by number of centres *****/ + switch (Gbl.Scope.Current) + { + case Sco_SCOPE_SYS: + sprintf (Query,"SELECT InsCod,COUNT(*) AS N" + " FROM centres" + " GROUP BY InsCod" + " ORDER BY N DESC"); + break; + case Sco_SCOPE_CTY: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM institutions,centres" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); + break; + case Sco_SCOPE_INS: + case Sco_SCOPE_CTR: + case Sco_SCOPE_DEG: + case Sco_SCOPE_CRS: + sprintf (Query,"SELECT InsCod,COUNT(*) AS N" + " FROM centres" + " WHERE InsCod='%ld'" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); + break; + default: + Lay_ShowErrorAndExit ("Wrong scope."); + break; + } + Sta_GetAndShowInss (Query,Txt_Centres); + + Lay_EndRoundFrameTable10 (); + } + +/*****************************************************************************/ +/**** Get and show stats about institutions ordered by number of degrees *****/ +/*****************************************************************************/ + +static void Sta_GetAndShowInssOrderedByNumDegs (void) + { + extern const char *The_ClassFormul[The_NUM_THEMES]; + extern const char *Txt_Degrees; + char Query[1024]; + + /****** Institutions ordered by number of centres ******/ + Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de titulaciones"); // Need translation + + /***** Get institutions ordered by number of degrees *****/ + switch (Gbl.Scope.Current) + { + case Sco_SCOPE_SYS: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM centres,degrees" + " WHERE centres.CtrCod=degrees.CtrCod" + " GROUP BY InsCod" + " ORDER BY N DESC"); + break; + case Sco_SCOPE_CTY: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM institutions,centres,degrees" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); + break; + case Sco_SCOPE_INS: + case Sco_SCOPE_CTR: + case Sco_SCOPE_DEG: + case Sco_SCOPE_CRS: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM centres,degrees" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); + break; + default: + Lay_ShowErrorAndExit ("Wrong scope."); + break; + } + Sta_GetAndShowInss (Query,Txt_Degrees); + + Lay_EndRoundFrameTable10 (); + } + +/*****************************************************************************/ +/**** Get and show stats about institutions ordered by number of courses *****/ +/*****************************************************************************/ + +static void Sta_GetAndShowInssOrderedByNumCrss (void) + { + extern const char *The_ClassFormul[The_NUM_THEMES]; + extern const char *Txt_Courses; + char Query[1024]; + + /****** Institutions ordered by number of centres ******/ + Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de asignaturas"); // Need translation + + /***** Get institutions ordered by number of courses *****/ + switch (Gbl.Scope.Current) + { + case Sco_SCOPE_SYS: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM centres,degrees,courses" + " WHERE centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " GROUP BY InsCod" + " ORDER BY N DESC"); + break; + case Sco_SCOPE_CTY: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM institutions,centres,degrees,courses" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); + break; + case Sco_SCOPE_INS: + case Sco_SCOPE_CTR: + case Sco_SCOPE_DEG: + case Sco_SCOPE_CRS: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM centres,degrees,courses" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); + break; + default: + Lay_ShowErrorAndExit ("Wrong scope."); + break; + } + Sta_GetAndShowInss (Query,Txt_Courses); + + Lay_EndRoundFrameTable10 (); + } + +/*****************************************************************************/ +/***** Get and show stats about institutions ordered by users in courses *****/ +/*****************************************************************************/ + +static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void) + { + extern const char *The_ClassFormul[The_NUM_THEMES]; + extern const char *Txt_Users; + char Query[1024]; + + /****** Institutions ordered by number of centres ******/ + Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de usuarios en asignaturas"); // Need translation + + /***** Get institutions ordered by number of users in courses *****/ + switch (Gbl.Scope.Current) + { + case Sco_SCOPE_SYS: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM centres,degrees,courses,crs_usr" + " WHERE centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " GROUP BY InsCod" + " ORDER BY N DESC"); + break; + case Sco_SCOPE_CTY: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM institutions,centres,degrees,courses,crs_usr" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=centres.InsCod" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " GROUP BY centres.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); + break; + case Sco_SCOPE_INS: + case Sco_SCOPE_CTR: + case Sco_SCOPE_DEG: + case Sco_SCOPE_CRS: + sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N" + " FROM centres,degrees,courses,crs_usr" + " WHERE centres.InsCod='%ld'" + " AND centres.CtrCod=degrees.CtrCod" + " AND degrees.DegCod=courses.DegCod" + " AND courses.CrsCod=crs_usr.CrsCod" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); + break; + default: + Lay_ShowErrorAndExit ("Wrong scope."); + break; + } + Sta_GetAndShowInss (Query,Txt_Users); + + Lay_EndRoundFrameTable10 (); + } + +/*****************************************************************************/ +/************* Get and show stats about institutions ordered by **************/ +/************* number of users who claim to belong to them **************/ +/*****************************************************************************/ + +static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void) + { + extern const char *The_ClassFormul[The_NUM_THEMES]; + extern const char *Txt_Users; + char Query[1024]; + + /****** Institutions ordered by number of centres ******/ + Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de usuarios que dicen pertenecer a ellas"); // Need translation + + /***** Get institutions ordered by number of users who claim to belong to them *****/ + switch (Gbl.Scope.Current) + { + case Sco_SCOPE_SYS: + sprintf (Query,"SELECT InsCod,COUNT(*) AS N" + " FROM usr_data" + " WHERE InsCod>'0'" + " GROUP BY InsCod" + " ORDER BY N DESC"); + break; + case Sco_SCOPE_CTY: + sprintf (Query,"SELECT usr_data.InsCod,COUNT(*) AS N" + " FROM institutions,usr_data" + " WHERE institutions.CtyCod='%ld'" + " AND institutions.InsCod=usr_data.InsCod" + " GROUP BY usr_data.InsCod" + " ORDER BY N DESC", + Gbl.CurrentCty.Cty.CtyCod); + break; + case Sco_SCOPE_INS: + case Sco_SCOPE_CTR: + case Sco_SCOPE_DEG: + case Sco_SCOPE_CRS: + sprintf (Query,"SELECT InsCod,COUNT(*) AS N" + " FROM usr_data" + " WHERE InsCod='%ld'" + " ORDER BY N DESC", + Gbl.CurrentIns.Ins.InsCod); + break; + default: + Lay_ShowErrorAndExit ("Wrong scope."); + break; + } + Sta_GetAndShowInss (Query,Txt_Users); + + Lay_EndRoundFrameTable10 (); + } + +/*****************************************************************************/ +/****************** Get and show stats about institutions ********************/ +/*****************************************************************************/ + +static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure) + { + extern const char *The_ClassFormul[The_NUM_THEMES]; + extern const char *Txt_Institution; + MYSQL_RES *mysql_res; + MYSQL_ROW row; + unsigned NumInss; + unsigned NumIns; + struct Institution Ins; + + /***** Query database *****/ + if ((NumInss = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get institutions"))) + { + fprintf (Gbl.F.Out,"" + "" + "%s" + "" + "" + "%s" + "" + "", + Txt_Institution, + TxtFigure); + + for (NumIns = 0; + NumIns < NumInss; + NumIns++) + { + /***** Get next institution *****/ + row = mysql_fetch_row (mysql_res); + + /***** Get data of this institution (row[0]) *****/ + Ins.InsCod = Str_ConvertStrCodToLongCod (row[0]); + if (!Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_MINIMAL_DATA)) + Lay_ShowErrorAndExit ("Institution not found."); + + /***** Write link to institution *****/ + fprintf (Gbl.F.Out,"" + "", + The_ClassFormul[Gbl.Prefs.Theme]); + Act_FormStart (ActSeeInsInf); + Ins_PutParamInsCod (Ins.InsCod); + Act_LinkFormSubmit (Ins.ShortName,The_ClassFormul[Gbl.Prefs.Theme]); + Log_DrawLogo (Sco_SCOPE_INS,Ins.InsCod,Ins.ShortName, + 32,NULL,true); + fprintf (Gbl.F.Out," %s",Ins.FullName); + Act_FormEnd (); + fprintf (Gbl.F.Out,""); + + /***** Write number of centres (row[1]) *****/ + fprintf (Gbl.F.Out,"" + "%s" + "", + row[1]); + } + } + + /* Free structure that stores the query result */ + DB_FreeMySQLResult (&mysql_res); + } + /*****************************************************************************/ /************************* Get total number of users *************************/ /*****************************************************************************/ diff --git a/swad_statistic.h b/swad_statistic.h index bdde3177e..8f25cd094 100644 --- a/swad_statistic.h +++ b/swad_statistic.h @@ -86,12 +86,13 @@ typedef enum Sta_ACC_GBL_PER_COURSE = 20, } Sta_ClicksStatType_t; -#define Sta_NUM_TYPES_USE_STATS 20 +#define Sta_NUM_TYPES_USE_STATS 21 typedef enum { Sta_USERS, // Number of users Sta_USERS_RANKING, // Users' ranking Sta_HIERARCHY, // Number of countries, institutions, centres, degrees and courses + Sta_INSTITUTIONS, // Number of users in each institution Sta_SOCIAL_NETWORKS, // Number of users in social networks Sta_FOLDERS_AND_FILES, // Number of folders and files Sta_OER, // Number of OERs (Open Educational Resources) diff --git a/swad_text.c b/swad_text.c index 004271849..6e212a1e8 100644 --- a/swad_text.c +++ b/swad_text.c @@ -36045,7 +36045,7 @@ const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_STAT_COUNT_TYPES] = const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = { -#if L==0 +#if L==0 // Sta_USERS "Usuaris" #elif L==1 "Benutzer" @@ -36065,7 +36065,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Utilizadores" #endif , -#if L==0 +#if L==0 // Sta_USERS_RANKING "Rànquing" #elif L==1 "Rang" @@ -36085,7 +36085,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Posição" #endif , -#if L==0 +#if L==0 // Sta_HIERARCHY "Jerarquia" #elif L==1 "Hierarchie" @@ -36105,7 +36105,27 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Hierarquia" #endif , -#if L==0 +#if L==0 // Sta_INSTITUTIONS + "Institucions" +#elif L==1 + "Hochschulen" +#elif L==2 + "Institutions" +#elif L==3 + "Instituciones" +#elif L==4 + "Établissements" +#elif L==5 + "Mbo'ehao" +#elif L==6 + "Istituzioni" +#elif L==7 + "Instytucje" +#elif L==8 + "Instituções" +#endif + , +#if L==0 // Sta_SOCIAL_NETWORKS "Webs / xarxes socials" #elif L==1 "Webs / Social Networks" @@ -36125,7 +36145,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Webs / redes sociais" #endif , -#if L==0 +#if L==0 // Sta_FOLDERS_AND_FILES "Carpetes i fitxers" #elif L==1 "Verzeichnisse und Dateien" @@ -36145,7 +36165,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Diretórios e arquivos" #endif , -#if L==0 +#if L==0 // Sta_OER "Recursos Educatius Oberts (OER)" #elif L==1 "Open Educational Resources (OER)" @@ -36165,7 +36185,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Recursos Educacionais Abertos (OER)" #endif , -#if L==0 +#if L==0 // Sta_ASSIGNMENTS "Activitats" #elif L==1 "Aufgaben" @@ -36185,7 +36205,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Atividades" #endif , -#if L==0 +#if L==0 // Sta_TESTS "Tests" #elif L==1 "Tests" @@ -36205,7 +36225,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Testes" #endif , -#if L==0 +#if L==0 // Sta_NOTIFY_EVENTS "Notificacions" #elif L==1 "Anmeldungen" @@ -36225,7 +36245,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Notificações" #endif , -#if L==0 +#if L==0 // Sta_NOTICES "Avisos" #elif L==1 "Ankündigungen" @@ -36245,7 +36265,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Avisos" #endif , -#if L==0 +#if L==0 // Sta_MESSAGES "Missatges" #elif L==1 "Nachrichten" @@ -36265,7 +36285,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Mensagens" #endif , -#if L==0 +#if L==0 // Sta_FORUMS "Fòrums" #elif L==1 "Foren" @@ -36285,7 +36305,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Fóruns" #endif , -#if L==0 +#if L==0 // Sta_SURVEYS "Enquestes" #elif L==1 "Umfragen" @@ -36305,7 +36325,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Inquéritos" #endif , -#if L==0 +#if L==0 // Sta_PRIVACY "Privacitat" #elif L==1 "Geheimhaltung" @@ -36325,7 +36345,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Privacidade" #endif , -#if L==0 +#if L==0 // Sta_LANGUAGES "Idioma" #elif L==1 "Sprache" @@ -36345,7 +36365,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Lingua" #endif , -#if L==0 +#if L==0 // Sta_LAYOUTS "Disseny" #elif L==1 "layout" @@ -36365,7 +36385,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Layout" #endif , -#if L==0 +#if L==0 // Sta_THEMES "Tema (colors)" #elif L==1 "Skin" @@ -36385,7 +36405,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Skin" #endif , -#if L==0 +#if L==0 // Sta_ICON_SETS "Icones" #elif L==1 "Symbole" @@ -36405,7 +36425,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Ícones" #endif , -#if L==0 +#if L==0 // Sta_MENUS "Menú" #elif L==1 "Menü" @@ -36425,7 +36445,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] = "Menu" #endif , -#if L==0 +#if L==0 // Sta_SIDE_COLUMNS "Columnes" #elif L==1 "Spalten"