diff --git a/src/renderer/components/ft-list-video/ft-list-video.js b/src/renderer/components/ft-list-video/ft-list-video.js index 219ae7b0..a707bdd0 100644 --- a/src/renderer/components/ft-list-video/ft-list-video.js +++ b/src/renderer/components/ft-list-video/ft-list-video.js @@ -1,5 +1,6 @@ import Vue from 'vue' import FtIconButton from '../ft-icon-button/ft-icon-button.vue' +import { mapActions } from 'vuex' export default Vue.extend({ name: 'FtListVideo', @@ -213,7 +214,16 @@ export default Vue.extend({ this.viewCount = this.data.viewCount if (typeof (this.data.publishedText) !== 'undefined') { - this.uploadedTime = this.data.publishedText + // produces a string according to the template in the locales string + this.toLocaleStringS({ + publishText: this.data.publishedText, + templateString: this.$t('Video.Publicationtemplate'), + timeStrings: this.$t('Video.Published') + }).then((data) => { + this.uploadedTime = data + }).catch((error) => { + console.error(error) + }) } if (typeof (this.data.viewCount) !== 'undefined' && this.data.viewCount !== null) { @@ -265,6 +275,9 @@ export default Vue.extend({ } this.isLive = this.data.live - } + }, + ...mapActions([ + 'toLocaleStringS' + ]) } }) diff --git a/src/renderer/store/modules/utils.js b/src/renderer/store/modules/utils.js index 6e0931f8..b1776ee4 100644 --- a/src/renderer/store/modules/utils.js +++ b/src/renderer/store/modules/utils.js @@ -166,6 +166,64 @@ const actions = { return vttString }, + toLocaleStringS ({ dispatch }, payload) { + const strings = payload.publishText.split(' ') + const singular = (strings[0] === '1') + let publicationString = payload.templateString.replace('$', strings[0]) + switch (strings[1].substring(0, 2)) { + case 'se': + if (singular) { + publicationString = publicationString.replace('%', payload.timeStrings.Second) + } else { + publicationString = publicationString.replace('%', payload.timeStrings.Seconds) + } + break + case 'mi': + if (singular) { + publicationString = publicationString.replace('%', payload.timeStrings.Minute) + } else { + publicationString = publicationString.replace('%', payload.timeStrings.Minutes) + } + break + case 'ho': + if (singular) { + publicationString = publicationString.replace('%', payload.timeStrings.Hour) + } else { + publicationString = publicationString.replace('%', payload.timeStrings.Hours) + } + break + case 'da': + if (singular) { + publicationString = publicationString.replace('%', payload.timeStrings.Day) + } else { + publicationString = publicationString.replace('%', payload.timeStrings.Days) + } + break + case 'we': + if (singular) { + publicationString = publicationString.replace('%', payload.timeStrings.Week) + } else { + publicationString = publicationString.replace('%', payload.timeStrings.Weeks) + } + break + case 'mo': + if (singular) { + publicationString = publicationString.replace('%', payload.timeStrings.Month) + } else { + publicationString = publicationString.replace('%', payload.timeStrings.Months) + } + break + case 'ye': + if (singular) { + publicationString = publicationString.replace('%', payload.timeStrings.Year) + } else { + publicationString = publicationString.replace('%', payload.timeStrings.Years) + } + break + } + return publicationString + }, + showToast (_, payload) { FtToastEvents.$emit('toast.open', payload.message, payload.action, payload.time) } diff --git a/static/locales/de-DE.yaml b/static/locales/de-DE.yaml index 1f177792..5f4c7fe5 100644 --- a/static/locales/de-DE.yaml +++ b/static/locales/de-DE.yaml @@ -305,18 +305,22 @@ Video: Oct: Okt Nov: Nov Dec: Dez + Second: Sekunde + Seconds: Sekunden Hour: Stunde Hours: Stunden Day: Tag - Days: Tage + Days: Tagen Week: Woche Weeks: Wochen Month: Monat - Months: Monate + Months: Monaten Year: Jahr - Years: Jahre + Years: Jahren Ago: Vor Published on: Veröffentlicht am + Publicationtemplate: vor $ % veröffentlicht + #& Videos Videos: #& Sort By diff --git a/static/locales/en-US.yaml b/static/locales/en-US.yaml index b5ef8785..281f36b5 100644 --- a/static/locales/en-US.yaml +++ b/static/locales/en-US.yaml @@ -297,6 +297,8 @@ Video: Oct: Oct Nov: Nov Dec: Dec + Second: Second + Seconds: Seconds Hour: Hour Hours: Hours Day: Day @@ -309,6 +311,8 @@ Video: Years: Years Ago: Ago Published on: Published on + # $ is replaced with the number and % with the unit (days, hours, minutes...) + Publicationtemplate: $ % ago #& Videos Videos: #& Sort By