diff --git a/src/js/components/splatoon/SalmonRunBox.vue b/src/js/components/splatoon/SalmonRunBox.vue
index ddeb015..5a63535 100644
--- a/src/js/components/splatoon/SalmonRunBox.vue
+++ b/src/js/components/splatoon/SalmonRunBox.vue
@@ -86,7 +86,7 @@
- in {{ event.start_time - now | duration(true) }}
+ {{ event.start_time - now | duration(true) | timeIn }}
@@ -108,6 +108,7 @@
diff --git a/src/js/components/splatoon/SplatfestBox.vue b/src/js/components/splatoon/SplatfestBox.vue
index 6a9bcec..55f3986 100644
--- a/src/js/components/splatoon/SplatfestBox.vue
+++ b/src/js/components/splatoon/SplatfestBox.vue
@@ -43,28 +43,18 @@
-
- in {{ festival.times.start - now | shortDuration }}
-
-
- {{ festival.times.end - now | durationHours }} remaining
+
+ {{ screenshotModeDuration }}
@@ -97,6 +87,34 @@ export default {
if (this.festival)
return Vue.filter('localSplatNetImageUrl')(this.festival.images.panel);
},
+ formattedDuration() {
+ let time;
+
+ switch (this.state) {
+ case 'upcoming':
+ time = Vue.filter('duration')(this.festival.times.start - this.now);
+ return this.$t('time.in', { time });
+ case 'active':
+ time = Vue.filter('duration')(this.festival.times.end - this.now);
+ return this.$t('time.remaining', { time });
+ }
+ },
+ resultsIn() {
+ let time = Vue.filter('duration')(this.festival.times.result - this.now);
+ return this.$t('splatfest.results_in', { time });
+ },
+ screenshotModeDuration() {
+ let time;
+
+ switch (this.state) {
+ case 'upcoming':
+ time = Vue.filter('shortDuration')(this.festival.times.start - this.now);
+ return this.$t('time.in', { time });
+ case 'active':
+ time = Vue.filter('durationHours')(this.festival.times.end - this.now);
+ return this.$t('time.remaining', { time });
+ }
+ },
}
}
diff --git a/src/js/filters.js b/src/js/filters.js
index e6555c2..1cf7023 100644
--- a/src/js/filters.js
+++ b/src/js/filters.js
@@ -1,4 +1,5 @@
import Vue from 'vue';
+const $t = Vue.i18n.translate;
// Local hosting of SplatNet images
Vue.filter('localSplatNetImageUrl', function(value) {
@@ -42,34 +43,34 @@ Vue.filter('duration', function(value, hideSeconds = false) {
minutes = ('0' + minutes).substr(-2);
seconds = ('0' + seconds).substr(-2);
- if (days) {
- if (hideSeconds)
- return `${negative}${days}d ${hours}h ${minutes}m`;
- return `${negative}${days}d ${hours}h ${minutes}m ${seconds}s`;
- }
- if (hours) {
- if (hideSeconds)
- return `${negative}${hours}h ${minutes}m`;
- return `${negative}${hours}h ${minutes}m ${seconds}s`;
- }
- return `${negative}${minutes}m ${seconds}s`;
+ // Format for translation
+ days = days && $t('time.daysShort', { days }, parseInt(days));
+ hours = hours && $t('time.hoursShort', { hours }, parseInt(hours));
+ minutes = $t('time.minutesShort', { minutes }, parseInt(minutes));
+ seconds = $t('time.secondsShort', { seconds }, parseInt(seconds));
+
+ if (days)
+ return negative + $t((hideSeconds) ? 'time.dhm' : 'time.dhms', { days, hours, minutes, seconds });
+ if (hours)
+ return negative + $t((hideSeconds) ? 'time.hm' : 'time.hms', { hours, minutes, seconds });
+ return negative + $t('time.ms', { minutes, seconds });
});
Vue.filter('shortDuration', function (value) {
let { negative, days, hours, minutes, seconds } = getDurationParts(value);
if (days)
- return (days == 1) ? `${negative}1 day` : `${negative}${days} days`;
+ return $t('time.days', { days: negative + days }, days);
if (hours)
- return (hours == 1) ? `${negative}1 hour` : `${negative}${hours} hours`;
+ return $t('time.hours', { hours: negative + hours }, hours);
if (minutes)
- return (minutes == 1) ? `${negative}1 minute` : `${negative}${minutes} minutes`;
- return (seconds == 1) ? `${negative}1 second` : `${negative}${seconds} seconds`;
+ return $t('time.minutes', { minutes: negative + minutes }, minutes);
+ return $t('time.seconds', { seconds: negative + seconds }, seconds);
});
Vue.filter('durationHours', function (value) {
let { negative, days, hours, minutes, seconds } = getDurationParts(value);
hours += 24 * days;
- return (hours == 1) ? `${negative}1 hour` : `${negative}${hours} hours`;
+ return $t('time.hours', { hours: negative + hours }, hours);
});
diff --git a/src/locale/de.json b/src/locale/de.json
index c1785d1..5314832 100644
--- a/src/locale/de.json
+++ b/src/locale/de.json
@@ -24,7 +24,8 @@
"battle": "Splatfestkämpfe",
"recent": "Splatfest",
"title": "Splatfest",
- "upcoming": "Splatfest"
+ "upcoming": "Splatfest",
+ "results_in": "Ergebnisse in {time}"
},
"splatnet_gear": {
"button": "TentaWorld",
@@ -35,5 +36,22 @@
"next": "Demnächst",
"now": "Jetzt",
"soon": "Demnächst"
+ },
+ "time": {
+ "in": "in {time}",
+ "remaining": "Noch {time}",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} Sekunde ::: {seconds} Sekunden",
+ "minutes": "{minutes} Minute ::: {minutes} Minuten",
+ "hours": "{hours} Stunde ::: {hours} Stunden",
+ "days": "{days} Tag ::: {days} Tage",
+ "secondsShort": "{seconds}Sek ::: {seconds}Sek",
+ "minutesShort": "{minutes}Min ::: {minutes}Min",
+ "hoursShort": "{hours}Std ::: {hours}Std",
+ "daysShort": "{days}Tg ::: {days}Tg"
}
-}
\ No newline at end of file
+}
diff --git a/src/locale/en.json b/src/locale/en.json
index ad9e503..c56005a 100644
--- a/src/locale/en.json
+++ b/src/locale/en.json
@@ -24,7 +24,8 @@
"battle": "Splatfest Battle",
"recent": "Recent Splatfest",
"title": "Splatfest",
- "upcoming": "Upcoming Splatfest"
+ "upcoming": "Upcoming Splatfest",
+ "results_in": "results in {time}"
},
"splatnet_gear": {
"button": "SplatNet Gear",
@@ -35,5 +36,22 @@
"next": "Next",
"now": "Now",
"soon": "Soon!"
+ },
+ "time": {
+ "in": "in {time}",
+ "remaining": "{time} remaining",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} second ::: {seconds} seconds",
+ "minutes": "{minutes} minute ::: {minutes} minutes",
+ "hours": "{hours} hour ::: {hours} hours",
+ "days": "{days} day ::: {days} days",
+ "secondsShort": "{seconds}s ::: {seconds}s",
+ "minutesShort": "{minutes}m ::: {minutes}m",
+ "hoursShort": "{hours}h ::: {hours}h",
+ "daysShort": "{days}d ::: {days}d"
}
}
diff --git a/src/locale/es-MX.json b/src/locale/es-MX.json
index 244652c..026fd26 100644
--- a/src/locale/es-MX.json
+++ b/src/locale/es-MX.json
@@ -24,7 +24,8 @@
"battle": "Festival del Teñido",
"recent": "Festival",
"title": "Festival",
- "upcoming": "Festival"
+ "upcoming": "Festival",
+ "results_in": "resultados en {time}"
},
"splatnet_gear": {
"button": "Tienda SplatNet",
@@ -35,5 +36,22 @@
"next": "Próximo",
"now": "Ahora",
"soon": "Siguiente"
+ },
+ "time": {
+ "in": "en {time}",
+ "remaining": "{time} restante",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} segundo ::: {seconds} segundos",
+ "minutes": "{minutes} minuto ::: {minutes} minutos",
+ "hours": "{hours} hora ::: {hours} horas",
+ "days": "{days} día ::: {days} días",
+ "secondsShort": "{seconds}s ::: {seconds}s",
+ "minutesShort": "{minutes}m ::: {minutes}m",
+ "hoursShort": "{hours}h ::: {hours}h",
+ "daysShort": "{days}d ::: {days}d"
}
-}
\ No newline at end of file
+}
diff --git a/src/locale/es.json b/src/locale/es.json
index a7cee18..c172ca8 100644
--- a/src/locale/es.json
+++ b/src/locale/es.json
@@ -24,7 +24,8 @@
"battle": "Combates temáticos",
"recent": "Festival",
"title": "Festival",
- "upcoming": "Festival"
+ "upcoming": "Festival",
+ "results_in": "resultados en {time}"
},
"splatnet_gear": {
"button": "Tentatienda",
@@ -35,5 +36,22 @@
"next": "Próximos",
"now": "Ahora",
"soon": "Próximo"
+ },
+ "time": {
+ "in": "en {time}",
+ "remaining": "{time} restante",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} segundo ::: {seconds} segundos",
+ "minutes": "{minutes} minuto ::: {minutes} minutos",
+ "hours": "{hours} hora ::: {hours} horas",
+ "days": "{days} día ::: {days} días",
+ "secondsShort": "{seconds}s ::: {seconds}s",
+ "minutesShort": "{minutes}m ::: {minutes}m",
+ "hoursShort": "{hours}h ::: {hours}h",
+ "daysShort": "{days}d ::: {days}d"
}
-}
\ No newline at end of file
+}
diff --git a/src/locale/fr-CA.json b/src/locale/fr-CA.json
index 32cce5f..2845409 100644
--- a/src/locale/fr-CA.json
+++ b/src/locale/fr-CA.json
@@ -24,7 +24,8 @@
"battle": "Festimatch",
"recent": "Festival",
"title": "Festival",
- "upcoming": "Festival"
+ "upcoming": "Festival",
+ "results_in": "résultats en {time}"
},
"splatnet_gear": {
"button": "Boutique SplatNet",
@@ -35,5 +36,22 @@
"next": "Suivants",
"now": "À présent",
"soon": "Bientôt!"
+ },
+ "time": {
+ "in": "dans {time}",
+ "remaining": "{time} restants",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} seconde ::: {seconds} secondes",
+ "minutes": "{minutes} minute ::: {minutes} minutes",
+ "hours": "{hours} heure ::: {hours} heures",
+ "days": "{days} jour ::: {days} jours",
+ "secondsShort": "{seconds}s ::: {seconds}s",
+ "minutesShort": "{minutes}m ::: {minutes}m",
+ "hoursShort": "{hours}h ::: {hours}h",
+ "daysShort": "{days}j ::: {days}j"
}
-}
\ No newline at end of file
+}
diff --git a/src/locale/fr.json b/src/locale/fr.json
index 6dd19e4..6d95357 100644
--- a/src/locale/fr.json
+++ b/src/locale/fr.json
@@ -24,7 +24,8 @@
"battle": "Festimatchs",
"recent": "Festival",
"title": "Festival",
- "upcoming": "Festival"
+ "upcoming": "Festival",
+ "results_in": "résultats en {time}"
},
"splatnet_gear": {
"button": "Céphalochic",
@@ -35,5 +36,22 @@
"next": "Suivants",
"now": "À présent",
"soon": "Bientôt !"
+ },
+ "time": {
+ "in": "dans {time}",
+ "remaining": "{time} restants",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} seconde ::: {seconds} secondes",
+ "minutes": "{minutes} minute ::: {minutes} minutes",
+ "hours": "{hours} heure ::: {hours} heures",
+ "days": "{days} jour ::: {days} jours",
+ "secondsShort": "{seconds}s ::: {seconds}s",
+ "minutesShort": "{minutes}m ::: {minutes}m",
+ "hoursShort": "{hours}h ::: {hours}h",
+ "daysShort": "{days}j ::: {days}j"
}
-}
\ No newline at end of file
+}
diff --git a/src/locale/it.json b/src/locale/it.json
index 3ead11e..a77126e 100644
--- a/src/locale/it.json
+++ b/src/locale/it.json
@@ -24,7 +24,8 @@
"battle": "Partite tematiche",
"recent": "Festival",
"title": "Festival",
- "upcoming": "Festival"
+ "upcoming": "Festival",
+ "results_in": "risultati in {time}"
},
"splatnet_gear": {
"button": "Calama-zone",
@@ -35,5 +36,22 @@
"next": "Prossimi",
"now": "Adesso",
"soon": "Presto!"
+ },
+ "time": {
+ "in": "tra {time}",
+ "remaining": "{time} rimanenti",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} secondo ::: {seconds} secondi",
+ "minutes": "{minutes} minuto ::: {minutes} minuti",
+ "hours": "{hours} ora ::: {hours} ore",
+ "days": "{days} giorno ::: {days} giorni",
+ "secondsShort": "{seconds}s ::: {seconds}s",
+ "minutesShort": "{minutes}m ::: {minutes}m",
+ "hoursShort": "{hours}o ::: {hours}o",
+ "daysShort": "{days}g ::: {days}g"
}
-}
\ No newline at end of file
+}
diff --git a/src/locale/ja.json b/src/locale/ja.json
index 6cbcf55..1315933 100644
--- a/src/locale/ja.json
+++ b/src/locale/ja.json
@@ -24,7 +24,8 @@
"battle": "フェスマッチ",
"recent": "フェス",
"title": "フェス",
- "upcoming": "フェス"
+ "upcoming": "フェス",
+ "results_in": "結果発表 {time}"
},
"splatnet_gear": {
"button": "ゲソタウン",
@@ -35,5 +36,22 @@
"next": "つぎ",
"now": "今",
"soon": "もうすぐ"
+ },
+ "time": {
+ "in": "{time}後",
+ "remaining": "残り{time}",
+ "dhm": "{days}{hours}{minutes}",
+ "dhms": "{days}{hours}{minutes}{seconds}",
+ "hm": "{hours}{minutes}",
+ "hms": "{hours}{minutes}{seconds}",
+ "ms": "{minutes}{seconds}",
+ "seconds": "{seconds}秒 ::: {seconds}秒",
+ "minutes": "{minutes}分 ::: {minutes}分",
+ "hours": "{hours}時間 ::: {hours}時間",
+ "days": "{days}日 ::: {days}日",
+ "secondsShort": "{seconds}秒 ::: {seconds}秒",
+ "minutesShort": "{minutes}分 ::: {minutes}分",
+ "hoursShort": "{hours}時間 ::: {hours}時間",
+ "daysShort": "{days}日 ::: {days}日"
}
-}
\ No newline at end of file
+}
diff --git a/src/locale/nl.json b/src/locale/nl.json
index af5655b..7bcef3c 100644
--- a/src/locale/nl.json
+++ b/src/locale/nl.json
@@ -24,7 +24,8 @@
"battle": "Splatfest-gevecht",
"recent": "Splatfest",
"title": "Splatfest",
- "upcoming": "Splatfest"
+ "upcoming": "Splatfest",
+ "results_in": "resultaten in {time}"
},
"splatnet_gear": {
"button": "Tentashop",
@@ -35,5 +36,22 @@
"next": "Volgende",
"now": "Nu",
"soon": "Binnenkort!"
+ },
+ "time": {
+ "in": "over {time}",
+ "remaining": "Nog {time}",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} seconde ::: {seconds} seconden",
+ "minutes": "{minutes} minuut ::: {minutes} minuten",
+ "hours": "{hours} uur ::: {hours} uur",
+ "days": "{days} dag ::: {days} dagen",
+ "secondsShort": "{seconds}s ::: {seconds}s",
+ "minutesShort": "{minutes}m ::: {minutes}m",
+ "hoursShort": "{hours}u ::: {hours}u",
+ "daysShort": "{days}d ::: {days}d"
}
-}
\ No newline at end of file
+}
diff --git a/src/locale/ru.json b/src/locale/ru.json
index 9c5600d..65832ec 100644
--- a/src/locale/ru.json
+++ b/src/locale/ru.json
@@ -24,7 +24,8 @@
"battle": "Сплатфест-бой",
"recent": "Сплатфест",
"title": "Сплатфест",
- "upcoming": "Сплатфест"
+ "upcoming": "Сплатфест",
+ "results_in": "результаты за {time}"
},
"splatnet_gear": {
"button": "«Щупозон»",
@@ -35,5 +36,22 @@
"next": "Далее",
"now": "Теперь",
"soon": "Далее"
+ },
+ "time": {
+ "in": "через {time}",
+ "remaining": "Осталось: {time}",
+ "dhm": "{days} {hours} {minutes}",
+ "dhms": "{days} {hours} {minutes} {seconds}",
+ "hm": "{hours} {minutes}",
+ "hms": "{hours} {minutes} {seconds}",
+ "ms": "{minutes} {seconds}",
+ "seconds": "{seconds} секунда ::: {seconds} секунды",
+ "minutes": "{minutes} минута ::: {minutes} минута",
+ "hours": "{hours} час ::: {hours} часа",
+ "days": "{days} день ::: {days} дня",
+ "secondsShort": "{seconds} секунда ::: {seconds} секунды",
+ "minutesShort": "{minutes} минута ::: {minutes} минута",
+ "hoursShort": "{hours} час ::: {hours} часа",
+ "daysShort": "{days} день ::: {days} дня"
}
-}
\ No newline at end of file
+}