Add month and year support to get_time_length() (#969)

* Add RU

* Add EN

* Add DE

* Add SR

* Add BP

* Add HU

* Add SECONDS_IN_MONTH & timeunit_months

* Add months for API description

* Add SECONDS_IN_YEAR & timeunit_years

* fix typo

* Add FR
This commit is contained in:
Sergey Shorokhov 2021-07-01 11:51:24 +03:00 committed by GitHub
parent c58daeafca
commit 2e5e3ce060
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 4 deletions

View File

@ -24,6 +24,8 @@ enum
timeunit_hours, timeunit_hours,
timeunit_days, timeunit_days,
timeunit_weeks, timeunit_weeks,
timeunit_months,
timeunit_years,
}; };
/* Seconds in each time unit */ /* Seconds in each time unit */
@ -31,6 +33,8 @@ enum
#define SECONDS_IN_HOUR 3600 #define SECONDS_IN_HOUR 3600
#define SECONDS_IN_DAY 86400 #define SECONDS_IN_DAY 86400
#define SECONDS_IN_WEEK 604800 #define SECONDS_IN_WEEK 604800
#define SECONDS_IN_MONTH 2592000
#define SECONDS_IN_YEAR 31536000
/** /**
* Stock by Brad. * Stock by Brad.
@ -39,7 +43,7 @@ enum
* *
* @param id The player whose language the length should be translated to * @param id The player whose language the length should be translated to
* @param unitCnt The number of time units you want translated into verbose text * @param unitCnt The number of time units you want translated into verbose text
* @param type The type of unit (i.e. seconds, minutes, hours, days, weeks) that you are passing in * @param type The type of unit (i.e. seconds, minutes, hours, days, weeks, months, years) that you are passing in
* @param output The variable you want the verbose text to be placed in * @param output The variable you want the verbose text to be placed in
* @param outputLen The length of the output variable * @param outputLen The length of the output variable
* *
@ -50,7 +54,7 @@ stock get_time_length(id, unitCnt, type, output[], outputLen)
if (unitCnt > 0) if (unitCnt > 0)
{ {
// determine the number of each time unit there are // determine the number of each time unit there are
new weekCnt = 0, dayCnt = 0, hourCnt = 0, minuteCnt = 0, secondCnt = 0; new yearCnt = 0, monthCnt = 0, weekCnt = 0, dayCnt = 0, hourCnt = 0, minuteCnt = 0, secondCnt = 0;
switch (type) switch (type)
{ {
@ -59,8 +63,16 @@ stock get_time_length(id, unitCnt, type, output[], outputLen)
case timeunit_hours: secondCnt = unitCnt * SECONDS_IN_HOUR; case timeunit_hours: secondCnt = unitCnt * SECONDS_IN_HOUR;
case timeunit_days: secondCnt = unitCnt * SECONDS_IN_DAY; case timeunit_days: secondCnt = unitCnt * SECONDS_IN_DAY;
case timeunit_weeks: secondCnt = unitCnt * SECONDS_IN_WEEK; case timeunit_weeks: secondCnt = unitCnt * SECONDS_IN_WEEK;
case timeunit_months: secondCnt = unitCnt * SECONDS_IN_MONTH;
case timeunit_years: secondCnt = unitCnt * SECONDS_IN_YEAR;
} }
yearCnt = secondCnt / SECONDS_IN_YEAR;
secondCnt -= (yearCnt * SECONDS_IN_YEAR);
monthCnt = secondCnt / SECONDS_IN_MONTH;
secondCnt -= (monthCnt * SECONDS_IN_MONTH);
weekCnt = secondCnt / SECONDS_IN_WEEK; weekCnt = secondCnt / SECONDS_IN_WEEK;
secondCnt -= (weekCnt * SECONDS_IN_WEEK); secondCnt -= (weekCnt * SECONDS_IN_WEEK);
@ -75,8 +87,12 @@ stock get_time_length(id, unitCnt, type, output[], outputLen)
// translate the unit counts into verbose text // translate the unit counts into verbose text
new maxElementIdx = -1; new maxElementIdx = -1;
new timeElement[5][33]; new timeElement[7][33];
if (yearCnt > 0)
format(timeElement[++maxElementIdx], charsmax(timeElement[]), "%i %L", yearCnt, id, (yearCnt == 1) ? "TIME_ELEMENT_YEAR" : "TIME_ELEMENT_YEARS");
if (monthCnt > 0)
format(timeElement[++maxElementIdx], charsmax(timeElement[]), "%i %L", monthCnt, id, (monthCnt == 1) ? "TIME_ELEMENT_MONTH" : "TIME_ELEMENT_MONTHS");
if (weekCnt > 0) if (weekCnt > 0)
format(timeElement[++maxElementIdx], charsmax(timeElement[]), "%i %L", weekCnt, id, (weekCnt == 1) ? "TIME_ELEMENT_WEEK" : "TIME_ELEMENT_WEEKS"); format(timeElement[++maxElementIdx], charsmax(timeElement[]), "%i %L", weekCnt, id, (weekCnt == 1) ? "TIME_ELEMENT_WEEK" : "TIME_ELEMENT_WEEKS");
if (dayCnt > 0) if (dayCnt > 0)
@ -95,6 +111,8 @@ stock get_time_length(id, unitCnt, type, output[], outputLen)
case 2: formatex(output, outputLen, "%s, %s %L %s", timeElement[0], timeElement[1], id, "TIME_ELEMENT_AND", timeElement[2]); case 2: formatex(output, outputLen, "%s, %s %L %s", timeElement[0], timeElement[1], id, "TIME_ELEMENT_AND", timeElement[2]);
case 3: formatex(output, outputLen, "%s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], id, "TIME_ELEMENT_AND", timeElement[3]); case 3: formatex(output, outputLen, "%s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], id, "TIME_ELEMENT_AND", timeElement[3]);
case 4: formatex(output, outputLen, "%s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], id, "TIME_ELEMENT_AND", timeElement[4]); case 4: formatex(output, outputLen, "%s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], id, "TIME_ELEMENT_AND", timeElement[4]);
case 5: formatex(output, outputLen, "%s, %s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], timeElement[4], id, "TIME_ELEMENT_AND", timeElement[5]);
case 6: formatex(output, outputLen, "%s, %s, %s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], timeElement[4], timeElement[5], id, "TIME_ELEMENT_AND", timeElement[6]);
} }
} }
} }

View File

@ -9,6 +9,10 @@ TIME_ELEMENT_DAY = day
TIME_ELEMENT_DAYS = days TIME_ELEMENT_DAYS = days
TIME_ELEMENT_WEEK = week TIME_ELEMENT_WEEK = week
TIME_ELEMENT_WEEKS = weeks TIME_ELEMENT_WEEKS = weeks
TIME_ELEMENT_MONTH = month
TIME_ELEMENT_MONTHS = months
TIME_ELEMENT_YEAR = year
TIME_ELEMENT_YEARS = years
TIME_ELEMENT_PERMANENTLY = permanently TIME_ELEMENT_PERMANENTLY = permanently
TIME_ELEMENT_AND = and TIME_ELEMENT_AND = and
@ -23,6 +27,10 @@ TIME_ELEMENT_DAY = Tag
TIME_ELEMENT_DAYS = Tage TIME_ELEMENT_DAYS = Tage
TIME_ELEMENT_WEEK = Woche TIME_ELEMENT_WEEK = Woche
TIME_ELEMENT_WEEKS = Wochen TIME_ELEMENT_WEEKS = Wochen
TIME_ELEMENT_MONTH = Monat
TIME_ELEMENT_MONTHS = Monate
TIME_ELEMENT_YEAR = Jahr
TIME_ELEMENT_YEARS = Jahre
TIME_ELEMENT_PERMANENTLY = permanent TIME_ELEMENT_PERMANENTLY = permanent
TIME_ELEMENT_AND = und TIME_ELEMENT_AND = und
@ -37,6 +45,10 @@ TIME_ELEMENT_DAY = dan
TIME_ELEMENT_DAYS = dani TIME_ELEMENT_DAYS = dani
TIME_ELEMENT_WEEK = nedelja TIME_ELEMENT_WEEK = nedelja
TIME_ELEMENT_WEEKS = nedelje TIME_ELEMENT_WEEKS = nedelje
TIME_ELEMENT_MONTH = mesec
TIME_ELEMENT_MONTHS = meseci
TIME_ELEMENT_YEAR = godina
TIME_ELEMENT_YEARS = godine
TIME_ELEMENT_PERMANENTLY = za stalno TIME_ELEMENT_PERMANENTLY = za stalno
TIME_ELEMENT_AND = i TIME_ELEMENT_AND = i
@ -65,7 +77,11 @@ TIME_ELEMENT_DAY = jour
TIME_ELEMENT_DAYS = jours TIME_ELEMENT_DAYS = jours
TIME_ELEMENT_WEEK = semaine TIME_ELEMENT_WEEK = semaine
TIME_ELEMENT_WEEKS = semaines TIME_ELEMENT_WEEKS = semaines
TIME_ELEMENT_PERMANENTLY = a vie (permanent) TIME_ELEMENT_MONTH = mois
TIME_ELEMENT_MONTHS = mois
TIME_ELEMENT_YEAR = année
TIME_ELEMENT_YEARS = années
TIME_ELEMENT_PERMANENTLY = à vie (permanent)
TIME_ELEMENT_AND = et TIME_ELEMENT_AND = et
[tr] [tr]
@ -107,6 +123,10 @@ TIME_ELEMENT_DAY = dia
TIME_ELEMENT_DAYS = dias TIME_ELEMENT_DAYS = dias
TIME_ELEMENT_WEEK = semana TIME_ELEMENT_WEEK = semana
TIME_ELEMENT_WEEKS = semanas TIME_ELEMENT_WEEKS = semanas
TIME_ELEMENT_MONTH = mês
TIME_ELEMENT_MONTHS = meses
TIME_ELEMENT_YEAR = ano
TIME_ELEMENT_YEARS = anos
TIME_ELEMENT_PERMANENTLY = permanentemente TIME_ELEMENT_PERMANENTLY = permanentemente
TIME_ELEMENT_AND = e TIME_ELEMENT_AND = e
@ -205,6 +225,10 @@ TIME_ELEMENT_DAY = nap
TIME_ELEMENT_DAYS = nap TIME_ELEMENT_DAYS = nap
TIME_ELEMENT_WEEK = hét TIME_ELEMENT_WEEK = hét
TIME_ELEMENT_WEEKS = hét TIME_ELEMENT_WEEKS = hét
TIME_ELEMENT_MONTH = hónap
TIME_ELEMENT_MONTHS = hónapok
TIME_ELEMENT_YEAR = év
TIME_ELEMENT_YEARS = évek
TIME_ELEMENT_PERMANENTLY = végleges TIME_ELEMENT_PERMANENTLY = végleges
TIME_ELEMENT_AND = és TIME_ELEMENT_AND = és
@ -289,6 +313,10 @@ TIME_ELEMENT_DAY = день
TIME_ELEMENT_DAYS = дней TIME_ELEMENT_DAYS = дней
TIME_ELEMENT_WEEK = неделя TIME_ELEMENT_WEEK = неделя
TIME_ELEMENT_WEEKS = недель TIME_ELEMENT_WEEKS = недель
TIME_ELEMENT_MONTH = месяц
TIME_ELEMENT_MONTHS = месяца
TIME_ELEMENT_YEAR = год
TIME_ELEMENT_YEARS = лет
TIME_ELEMENT_PERMANENTLY = навсегда TIME_ELEMENT_PERMANENTLY = навсегда
TIME_ELEMENT_AND = и TIME_ELEMENT_AND = и