Add More Locale Strings to Both the locales file and the app
This commit is contained in:
parent
d929918eec
commit
287739de7c
|
@ -31,6 +31,7 @@ export default Vue.extend({
|
||||||
channelName: '',
|
channelName: '',
|
||||||
channelId: '',
|
channelId: '',
|
||||||
viewCount: 0,
|
viewCount: 0,
|
||||||
|
parsedViewCount: '',
|
||||||
uploadedTime: '',
|
uploadedTime: '',
|
||||||
duration: '',
|
duration: '',
|
||||||
description: '',
|
description: '',
|
||||||
|
@ -39,14 +40,6 @@ export default Vue.extend({
|
||||||
isLive: false,
|
isLive: false,
|
||||||
isFavorited: false,
|
isFavorited: false,
|
||||||
hideViews: false,
|
hideViews: false,
|
||||||
optionsNames: [
|
|
||||||
'Open in YouTube',
|
|
||||||
'Copy YouTube Link',
|
|
||||||
'Open YouTube Embedded Player',
|
|
||||||
'Copy YouTube Embedded Player Link',
|
|
||||||
'Open in Invidious',
|
|
||||||
'Copy Invidious Link'
|
|
||||||
],
|
|
||||||
optionsValues: [
|
optionsValues: [
|
||||||
'openYoutube',
|
'openYoutube',
|
||||||
'copyYoutube',
|
'copyYoutube',
|
||||||
|
@ -90,6 +83,17 @@ export default Vue.extend({
|
||||||
return `https://www.youtube-nocookie.com/embed/${this.id}`
|
return `https://www.youtube-nocookie.com/embed/${this.id}`
|
||||||
},
|
},
|
||||||
|
|
||||||
|
optionsNames: function () {
|
||||||
|
return [
|
||||||
|
this.$t('Video.Open in YouTube'),
|
||||||
|
this.$t('Video.Copy YouTube Link'),
|
||||||
|
this.$t('Video.Open YouTube Embedded Player'),
|
||||||
|
this.$t('Video.Copy YouTube Embedded Player Link'),
|
||||||
|
this.$t('Video.Open in Invidious'),
|
||||||
|
this.$t('Video.Copy Invidious Link')
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
thumbnail: function () {
|
thumbnail: function () {
|
||||||
let baseUrl
|
let baseUrl
|
||||||
if (this.backendPreference === 'invidious') {
|
if (this.backendPreference === 'invidious') {
|
||||||
|
@ -206,15 +210,16 @@ export default Vue.extend({
|
||||||
this.duration = this.calculateVideoDuration(this.data.lengthSeconds)
|
this.duration = this.calculateVideoDuration(this.data.lengthSeconds)
|
||||||
this.description = this.data.description
|
this.description = this.data.description
|
||||||
this.isLive = this.data.liveNow
|
this.isLive = this.data.liveNow
|
||||||
|
this.viewCount = this.data.viewCount
|
||||||
|
|
||||||
if (typeof (this.data.publishedText) !== 'undefined') {
|
if (typeof (this.data.publishedText) !== 'undefined') {
|
||||||
this.uploadedTime = this.data.publishedText
|
this.uploadedTime = this.data.publishedText
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof (this.data.viewCount) !== 'undefined' && this.data.viewCount !== null) {
|
if (typeof (this.data.viewCount) !== 'undefined' && this.data.viewCount !== null) {
|
||||||
this.viewCount = this.data.viewCount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
this.parsedViewCount = this.data.viewCount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
||||||
} else if (typeof (this.data.viewCountText) !== 'undefined') {
|
} else if (typeof (this.data.viewCountText) !== 'undefined') {
|
||||||
this.viewCount = this.data.viewCountText.replace(' views', '')
|
this.parsedViewCount = this.data.viewCountText.replace(' views', '')
|
||||||
} else {
|
} else {
|
||||||
this.hideViews = true
|
this.hideViews = true
|
||||||
}
|
}
|
||||||
|
@ -232,6 +237,7 @@ export default Vue.extend({
|
||||||
if (typeof (this.data.author) === 'string') {
|
if (typeof (this.data.author) === 'string') {
|
||||||
this.channelName = this.data.author
|
this.channelName = this.data.author
|
||||||
this.channelId = this.data.ucid
|
this.channelId = this.data.ucid
|
||||||
|
this.viewCount = this.data.views
|
||||||
|
|
||||||
// Data is returned as a literal string names 'undefined'
|
// Data is returned as a literal string names 'undefined'
|
||||||
if (this.data.length_seconds !== 'undefined') {
|
if (this.data.length_seconds !== 'undefined') {
|
||||||
|
@ -250,10 +256,10 @@ export default Vue.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.data.views !== null && typeof (this.data.views) !== 'undefined') {
|
if (this.data.views !== null && typeof (this.data.views) !== 'undefined') {
|
||||||
this.viewCount = this.data.views.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
this.parsedViewCount = this.data.views.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
||||||
} else if (typeof (this.data.view_count) !== 'undefined') {
|
} else if (typeof (this.data.view_count) !== 'undefined') {
|
||||||
const viewCount = this.data.view_count.replace(',', '')
|
const viewCount = this.data.view_count.replace(',', '')
|
||||||
this.viewCount = viewCount.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
this.parsedViewCount = viewCount.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
||||||
} else {
|
} else {
|
||||||
this.hideViews = true
|
this.hideViews = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
class="videoDuration"
|
class="videoDuration"
|
||||||
:class="{ live: isLive }"
|
:class="{ live: isLive }"
|
||||||
>
|
>
|
||||||
{{ isLive ? "Live" : duration }}
|
{{ isLive ? $t("Video.Live") : duration }}
|
||||||
</div>
|
</div>
|
||||||
<ft-icon-button
|
<ft-icon-button
|
||||||
v-if="!isLive"
|
v-if="!isLive"
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
v-if="watched"
|
v-if="watched"
|
||||||
class="videoWatched"
|
class="videoWatched"
|
||||||
>
|
>
|
||||||
Watched
|
{{ $t("Video.Watched") }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="watched"
|
v-if="watched"
|
||||||
|
@ -80,7 +80,9 @@
|
||||||
<span
|
<span
|
||||||
v-if="!isLive && !hideViews"
|
v-if="!isLive && !hideViews"
|
||||||
class="viewCount"
|
class="viewCount"
|
||||||
>• {{ viewCount }} views</span>
|
>• {{ parsedViewCount }}</span>
|
||||||
|
<span v-if="viewCount > 1">{{ $t("Video.Views").toLowerCase() }}</span>
|
||||||
|
<span v-if="viewCount === 1">{{ $t("Video.View") }}</span>
|
||||||
<span
|
<span
|
||||||
v-if="uploadedTime !== '' && !isLive"
|
v-if="uploadedTime !== '' && !isLive"
|
||||||
class="uploadedTime"
|
class="uploadedTime"
|
||||||
|
@ -88,7 +90,7 @@
|
||||||
<span
|
<span
|
||||||
v-if="isLive"
|
v-if="isLive"
|
||||||
class="viewCount"
|
class="viewCount"
|
||||||
>• {{ viewCount }} watching</span>
|
>• {{ viewCount }} {{ $t("Video.Watching").toLowerCase() }}</span>
|
||||||
</div>
|
</div>
|
||||||
<p
|
<p
|
||||||
v-if="listType !== 'grid' && appearance === 'result'"
|
v-if="listType !== 'grid' && appearance === 'result'"
|
||||||
|
|
|
@ -26,12 +26,6 @@ export default Vue.extend({
|
||||||
lastUpdated: '',
|
lastUpdated: '',
|
||||||
description: '',
|
description: '',
|
||||||
infoSource: '',
|
infoSource: '',
|
||||||
shareHeaders: [
|
|
||||||
'Copy YouTube Link',
|
|
||||||
'Open in YouTube',
|
|
||||||
'Copy Invidious Link',
|
|
||||||
'Open in Invidious'
|
|
||||||
],
|
|
||||||
shareValues: [
|
shareValues: [
|
||||||
'copyYoutube',
|
'copyYoutube',
|
||||||
'openYoutube',
|
'openYoutube',
|
||||||
|
@ -53,6 +47,15 @@ export default Vue.extend({
|
||||||
return this.$store.getters.getThumbnailPreference
|
return this.$store.getters.getThumbnailPreference
|
||||||
},
|
},
|
||||||
|
|
||||||
|
shareHeaders: function () {
|
||||||
|
return [
|
||||||
|
this.$t('Playlist.Share Playlist.Copy YouTube Link'),
|
||||||
|
this.$t('Playlist.Share Playlist.Open in YouTube'),
|
||||||
|
this.$t('Playlist.Share Playlist.Copy Invidious Link'),
|
||||||
|
this.$t('Playlist.Share Playlist.Open in Invidious')
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
thumbnail: function () {
|
thumbnail: function () {
|
||||||
switch (this.thumbnailPreference) {
|
switch (this.thumbnailPreference) {
|
||||||
case 'start':
|
case 'start':
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
{{ title }}
|
{{ title }}
|
||||||
</h2>
|
</h2>
|
||||||
<p>
|
<p>
|
||||||
{{ videoCount }} videos - {{ viewCount }} views -
|
{{ videoCount }} {{ $t("Playlist.Videos") }} - {{ viewCount }} {{ $t("Playlist.Views") }} -
|
||||||
<span v-if="infoSource !== 'local'">
|
<span v-if="infoSource !== 'local'">
|
||||||
Last updated on
|
{{ $t("Playlist.Last Updated On") }}
|
||||||
</span>
|
</span>
|
||||||
{{ lastUpdated }}
|
{{ lastUpdated }}
|
||||||
</p>
|
</p>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<ft-list-dropdown
|
<ft-list-dropdown
|
||||||
title="SHARE PLAYLIST"
|
:title="$t('Playlist.Share Playlist.Share Playlist')"
|
||||||
:label-names="shareHeaders"
|
:label-names="shareHeaders"
|
||||||
:label-values="shareValues"
|
:label-values="shareValues"
|
||||||
@click="sharePlaylist"
|
@click="sharePlaylist"
|
||||||
|
|
|
@ -116,7 +116,7 @@
|
||||||
class="getMoreComments"
|
class="getMoreComments"
|
||||||
@click="getCommentData"
|
@click="getCommentData"
|
||||||
>
|
>
|
||||||
{{ $t("Load More Comments") }}
|
{{ $t("Comments.Load More Comments") }}
|
||||||
</h4>
|
</h4>
|
||||||
</ft-card>
|
</ft-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
v-else
|
v-else
|
||||||
class="relative"
|
class="relative"
|
||||||
>
|
>
|
||||||
<h4>Live Chat</h4>
|
<h4>{{ $t("Video.Live Chat") }}</h4>
|
||||||
<div
|
<div
|
||||||
v-if="superChatComments.length > 0"
|
v-if="superChatComments.length > 0"
|
||||||
class="superChatComments"
|
class="superChatComments"
|
||||||
|
|
|
@ -56,6 +56,9 @@ activeLocales.forEach((locale) => {
|
||||||
|
|
||||||
const i18n = new VueI18n({
|
const i18n = new VueI18n({
|
||||||
locale: 'en-US', // set locale
|
locale: 'en-US', // set locale
|
||||||
|
fallbackLocale: {
|
||||||
|
default: 'en-US'
|
||||||
|
},
|
||||||
messages // set locale messages
|
messages // set locale messages
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
{{ $t("Channel.About.About").toUpperCase() }}
|
{{ $t("Channel.About.About").toUpperCase() }}
|
||||||
</div>
|
</div>
|
||||||
<ft-input
|
<ft-input
|
||||||
placeholder="Search Channel"
|
:placeholder="$t('Channel.Search Channel')"
|
||||||
class="channelSearch"
|
class="channelSearch"
|
||||||
@click="newSearch"
|
@click="newSearch"
|
||||||
/>
|
/>
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
class="getNextPage"
|
class="getNextPage"
|
||||||
@click="handleFetchMore"
|
@click="handleFetchMore"
|
||||||
>
|
>
|
||||||
<font-awesome-icon icon="search" /> Fetch more results…
|
<font-awesome-icon icon="search" /> {{ $t("Search Filters.Fetch more results") }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ft-card>
|
</ft-card>
|
||||||
|
|
|
@ -272,8 +272,21 @@ Channel:
|
||||||
Channel Description: Channel Description
|
Channel Description: Channel Description
|
||||||
Featured Channels: Featured Channels
|
Featured Channels: Featured Channels
|
||||||
Video:
|
Video:
|
||||||
|
Open in YouTube: Open in YouTube
|
||||||
|
Copy YouTube Link: Copy YouTube Link
|
||||||
|
Open YouTube Embedded Player: Open YouTube Embedded Player
|
||||||
|
Copy YouTube Embedded Player Link: Copy YouTube Embedded Player Link
|
||||||
|
Open in Invidious: Open in Invidious
|
||||||
|
Copy Invidious Link: Copy Invidious Link
|
||||||
|
View: View
|
||||||
Views: Views
|
Views: Views
|
||||||
|
# Context is "X People Watching"
|
||||||
|
Watching: Watching
|
||||||
|
Watched: Watched
|
||||||
|
# As in a Live Video
|
||||||
|
Live: Live
|
||||||
Live Now: Live Now
|
Live Now: Live Now
|
||||||
|
Live Chat: Live Chat
|
||||||
Enable Live Chat: Enable Live Chat
|
Enable Live Chat: Enable Live Chat
|
||||||
Live Chat is currently not supported in this build.: Live Chat is currently not supported in this build.
|
Live Chat is currently not supported in this build.: Live Chat is currently not supported in this build.
|
||||||
'Chat is disabled or the Live Stream has ended.': Chat is disabled or the Live Stream has ended.
|
'Chat is disabled or the Live Stream has ended.': Chat is disabled or the Live Stream has ended.
|
||||||
|
@ -315,14 +328,16 @@ Videos:
|
||||||
Playlist:
|
Playlist:
|
||||||
#& About
|
#& About
|
||||||
View Full Playlist: View Full Playlist
|
View Full Playlist: View Full Playlist
|
||||||
|
Videos: Videos
|
||||||
# On Channel Playlist Page
|
View: View
|
||||||
Share Playlist:
|
Views: Views
|
||||||
Share Playlist: Share Playlist
|
Last Updated On: Last Updated On
|
||||||
Copy YouTube Link: Copy YouTube Link
|
Share Playlist:
|
||||||
Open in YouTube: Open in YouTube
|
Share Playlist: Share Playlist
|
||||||
Copy Invidious Link: Copy Invidious Link
|
Copy YouTube Link: Copy YouTube Link
|
||||||
Open in Invidious: Open in Invidious
|
Open in YouTube: Open in YouTube
|
||||||
|
Copy Invidious Link: Copy Invidious Link
|
||||||
|
Open in Invidious: Open in Invidious
|
||||||
|
|
||||||
# On Video Watch Page
|
# On Video Watch Page
|
||||||
#* Published
|
#* Published
|
||||||
|
|
Loading…
Reference in New Issue