Use Intl.RelativeTimeFormat() for premiere upcoming time left (#2610)
* Improve premiere timestamp Removes the unesseccary parts of the timestamp, year and seconds. displays month as long name (eg., March) * fix linting... forgot to add the file again before commit. * get and use current locale set in freetube this fixes issues where os locale and freetube locale don't match * use 'default' when no locale is set in freetube. this defaults to system locale * use i18n to get locale and format date with intl * format date with intl.datetimeformat forgot to add file again after changes... * use intl relative time format to format upcomingTimeLeft * rename timeUnitI18nKey to just timeUnit It's no longer used as a key and is no longer partial
This commit is contained in:
parent
ac4cc4a611
commit
c9c522a2b1
|
@ -429,34 +429,30 @@ export default Vue.extend({
|
||||||
|
|
||||||
// Convert from ms to second to minute
|
// Convert from ms to second to minute
|
||||||
upcomingTimeLeft = (upcomingTimeLeft / 1000) / 60
|
upcomingTimeLeft = (upcomingTimeLeft / 1000) / 60
|
||||||
let timeUnitI18nPartialKey = 'Minute'
|
let timeUnit = 'minute'
|
||||||
|
|
||||||
// Youtube switches to showing time left in minutes at 120 minutes remaining
|
// Youtube switches to showing time left in minutes at 120 minutes remaining
|
||||||
if (upcomingTimeLeft > 120) {
|
if (upcomingTimeLeft > 120) {
|
||||||
upcomingTimeLeft = upcomingTimeLeft / 60
|
upcomingTimeLeft = upcomingTimeLeft / 60
|
||||||
timeUnitI18nPartialKey = 'Hour'
|
timeUnit = 'hour'
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeUnitI18nPartialKey === 'Hour' && upcomingTimeLeft > 24) {
|
if (timeUnit === 'hour' && upcomingTimeLeft > 24) {
|
||||||
upcomingTimeLeft = upcomingTimeLeft / 24
|
upcomingTimeLeft = upcomingTimeLeft / 24
|
||||||
timeUnitI18nPartialKey = 'Day'
|
timeUnit = 'day'
|
||||||
}
|
}
|
||||||
|
|
||||||
// Value after decimal not to be displayed
|
// Value after decimal not to be displayed
|
||||||
// e.g. > 2 days = display as `2 days`
|
// e.g. > 2 days = display as `2 days`
|
||||||
upcomingTimeLeft = Math.floor(upcomingTimeLeft)
|
upcomingTimeLeft = Math.floor(upcomingTimeLeft)
|
||||||
if (upcomingTimeLeft !== 1) {
|
|
||||||
timeUnitI18nPartialKey = timeUnitI18nPartialKey + 's'
|
|
||||||
}
|
|
||||||
const timeUnitTranslated = this.$t(`Video.Published.${timeUnitI18nPartialKey}`).toLowerCase()
|
|
||||||
|
|
||||||
// Displays when less than a minute remains
|
// Displays when less than a minute remains
|
||||||
// Looks better than `Premieres in x seconds`
|
// Looks better than `Premieres in x seconds`
|
||||||
if (upcomingTimeLeft < 1) {
|
if (upcomingTimeLeft < 1) {
|
||||||
this.upcomingTimeLeft = this.$t('Video.Published.Less than a minute').toLowerCase()
|
this.upcomingTimeLeft = this.$t('Video.Published.In less than a minute').toLowerCase()
|
||||||
} else {
|
} else {
|
||||||
// TODO a I18n entry for time format might be needed here
|
// TODO a I18n entry for time format might be needed here
|
||||||
this.upcomingTimeLeft = `${upcomingTimeLeft} ${timeUnitTranslated}`
|
this.upcomingTimeLeft = new Intl.RelativeTimeFormat(this.currentLocale).format(upcomingTimeLeft, timeUnit)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.upcomingTimestamp = null
|
this.upcomingTimestamp = null
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
v-if="upcomingTimestamp !== null"
|
v-if="upcomingTimestamp !== null"
|
||||||
class="premiereText"
|
class="premiereText"
|
||||||
>
|
>
|
||||||
{{ $t("Video.Premieres in") }} {{ upcomingTimeLeft }}
|
{{ $t("Video.Premieres") }} {{ upcomingTimeLeft }}
|
||||||
<br>
|
<br>
|
||||||
{{ upcomingTimestamp }}
|
{{ upcomingTimestamp }}
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -542,7 +542,7 @@ Video:
|
||||||
the page to check again
|
the page to check again
|
||||||
# As in a Live Video
|
# As in a Live Video
|
||||||
Premieres on: Premieres on
|
Premieres on: Premieres on
|
||||||
Premieres in: Premieres in
|
Premieres: Premieres
|
||||||
Live: Live
|
Live: Live
|
||||||
Live Now: Live Now
|
Live Now: Live Now
|
||||||
Live Chat: Live Chat
|
Live Chat: Live Chat
|
||||||
|
@ -593,7 +593,7 @@ Video:
|
||||||
Years: Years
|
Years: Years
|
||||||
Ago: Ago
|
Ago: Ago
|
||||||
Upcoming: Premieres on
|
Upcoming: Premieres on
|
||||||
Less than a minute: Less than a minute
|
In less than a minute: In less than a minute
|
||||||
Published on: Published on
|
Published on: Published on
|
||||||
Streamed on: Streamed on
|
Streamed on: Streamed on
|
||||||
Started streaming on: Started streaming on
|
Started streaming on: Started streaming on
|
||||||
|
|
Loading…
Reference in New Issue