mirror of https://github.com/Chocobozzz/PeerTube
Fix i18n in components
parent
632f9815c6
commit
25acef90a8
|
@ -69,7 +69,7 @@ export class AccountVideosComponent extends AbstractVideoList implements OnInit,
|
||||||
.getAccountVideos(this.account, newPagination, this.sort)
|
.getAccountVideos(this.account, newPagination, this.sort)
|
||||||
.pipe(
|
.pipe(
|
||||||
tap(({ totalVideos }) => {
|
tap(({ totalVideos }) => {
|
||||||
this.titlePage = this.i18n('Published {{ totalVideos }} videos', { totalVideos })
|
this.titlePage = this.i18n('Published {{totalVideos}} videos', { totalVideos })
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,14 +161,14 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
|
||||||
const customizationsText = customizations.join('/')
|
const customizationsText = customizations.join('/')
|
||||||
|
|
||||||
// FIXME: i18n service does not support string concatenation
|
// FIXME: i18n service does not support string concatenation
|
||||||
const message = this.i18n('You set custom {{ customizationsText }}. ', { customizationsText }) +
|
const message = this.i18n('You set custom {{customizationsText}}. ', { customizationsText }) +
|
||||||
this.i18n('This could lead to security issues or bugs if you do not understand it. ') +
|
this.i18n('This could lead to security issues or bugs if you do not understand it. ') +
|
||||||
this.i18n('Are you sure you want to update the configuration?')
|
this.i18n('Are you sure you want to update the configuration?')
|
||||||
const label = this.i18n(
|
const label = this.i18n(
|
||||||
'Please type "I understand the {{ customizationsText }} I set" to confirm.',
|
'Please type "I understand the {{customizationsText}} I set" to confirm.',
|
||||||
{ customizationsText }
|
{ customizationsText }
|
||||||
)
|
)
|
||||||
const expectedInputValue = this.i18n('I understand the {{ customizationsText }} I set', { customizationsText })
|
const expectedInputValue = this.i18n('I understand the {{customizationsText}} I set', { customizationsText })
|
||||||
|
|
||||||
const confirmRes = await this.confirmService.confirmWithInput(message, label, expectedInputValue)
|
const confirmRes = await this.confirmService.confirmWithInput(message, label, expectedInputValue)
|
||||||
if (confirmRes === false) return
|
if (confirmRes === false) return
|
||||||
|
|
|
@ -36,7 +36,7 @@ export class FollowingAddComponent {
|
||||||
|
|
||||||
for (const host of hosts) {
|
for (const host of hosts) {
|
||||||
if (validateHost(host) === false) {
|
if (validateHost(host) === false) {
|
||||||
newHostsErrors.push(this.i18n('{{ host }} is not valid', { host }))
|
newHostsErrors.push(this.i18n('{{host}} is not valid', { host }))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ export class FollowingListComponent extends RestTable implements OnInit {
|
||||||
|
|
||||||
async removeFollowing (follow: AccountFollow) {
|
async removeFollowing (follow: AccountFollow) {
|
||||||
const res = await this.confirmService.confirm(
|
const res = await this.confirmService.confirm(
|
||||||
this.i18n('Do you really want to unfollow {{ host }}?', { host: follow.following.host }),
|
this.i18n('Do you really want to unfollow {{host}}?', { host: follow.following.host }),
|
||||||
this.i18n('Unfollow')
|
this.i18n('Unfollow')
|
||||||
)
|
)
|
||||||
if (res === false) return
|
if (res === false) return
|
||||||
|
@ -42,7 +42,7 @@ export class FollowingListComponent extends RestTable implements OnInit {
|
||||||
() => {
|
() => {
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('You are not following {{ host }} anymore.', { host: follow.following.host })
|
this.i18n('You are not following {{host}} anymore.', { host: follow.following.host })
|
||||||
)
|
)
|
||||||
this.loadData()
|
this.loadData()
|
||||||
},
|
},
|
||||||
|
|
|
@ -72,7 +72,7 @@ export class UserCreateComponent extends UserEdit implements OnInit {
|
||||||
() => {
|
() => {
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('User {{ username }} created.', { username: userCreate.username })
|
this.i18n('User {{username}} created.', { username: userCreate.username })
|
||||||
)
|
)
|
||||||
this.router.navigate([ '/admin/users/list' ])
|
this.router.navigate([ '/admin/users/list' ])
|
||||||
},
|
},
|
||||||
|
|
|
@ -85,7 +85,7 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy {
|
||||||
() => {
|
() => {
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('User {{ username }} updated.', { username: this.username })
|
this.i18n('User {{username}} updated.', { username: this.username })
|
||||||
)
|
)
|
||||||
this.router.navigate([ '/admin/users/list' ])
|
this.router.navigate([ '/admin/users/list' ])
|
||||||
},
|
},
|
||||||
|
|
|
@ -44,7 +44,7 @@ export class UserListComponent extends RestTable implements OnInit {
|
||||||
() => {
|
() => {
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('User {{ username }} deleted.', { username: user.username })
|
this.i18n('User {{username}} deleted.', { username: user.username })
|
||||||
)
|
)
|
||||||
this.loadData()
|
this.loadData()
|
||||||
},
|
},
|
||||||
|
|
|
@ -43,7 +43,7 @@ export class VideoBlacklistListComponent extends RestTable implements OnInit {
|
||||||
() => {
|
() => {
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('Video {{ name }} removed from the blacklist.', { name: entry.name })
|
this.i18n('Video {{name}} removed from the blacklist.', { name: entry.name })
|
||||||
)
|
)
|
||||||
this.loadData()
|
this.loadData()
|
||||||
},
|
},
|
||||||
|
|
|
@ -73,7 +73,7 @@ export class MyAccountVideoChannelCreateComponent extends MyAccountVideoChannelE
|
||||||
this.authService.refreshUserInformation()
|
this.authService.refreshUserInformation()
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('Video channel {{ videoChannelName }} created.', { videoChannelName: videoChannelCreate.displayName })
|
this.i18n('Video channel {{videoChannelName}} created.', { videoChannelName: videoChannelCreate.displayName })
|
||||||
)
|
)
|
||||||
this.router.navigate([ '/my-account', 'video-channels' ])
|
this.router.navigate([ '/my-account', 'video-channels' ])
|
||||||
},
|
},
|
||||||
|
|
|
@ -101,7 +101,7 @@ export class MyAccountVideoChannelUpdateComponent extends MyAccountVideoChannelE
|
||||||
this.authService.refreshUserInformation()
|
this.authService.refreshUserInformation()
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('Video channel {{ videoChannelName }} updated.', { videoChannelName: videoChannelUpdate.displayName })
|
this.i18n('Video channel {{videoChannelName}} updated.', { videoChannelName: videoChannelUpdate.displayName })
|
||||||
)
|
)
|
||||||
this.router.navigate([ '/my-account', 'video-channels' ])
|
this.router.navigate([ '/my-account', 'video-channels' ])
|
||||||
},
|
},
|
||||||
|
|
|
@ -35,7 +35,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
|
||||||
async deleteVideoChannel (videoChannel: VideoChannel) {
|
async deleteVideoChannel (videoChannel: VideoChannel) {
|
||||||
const res = await this.confirmService.confirmWithInput(
|
const res = await this.confirmService.confirmWithInput(
|
||||||
this.i18n(
|
this.i18n(
|
||||||
'Do you really want to delete {{ videoChannelName }}? It will delete all videos uploaded in this channel too.',
|
'Do you really want to delete {{videoChannelName}}? It will delete all videos uploaded in this channel too.',
|
||||||
{ videoChannelName: videoChannel.displayName }
|
{ videoChannelName: videoChannel.displayName }
|
||||||
),
|
),
|
||||||
this.i18n('Please type the name of the video channel to confirm'),
|
this.i18n('Please type the name of the video channel to confirm'),
|
||||||
|
@ -50,7 +50,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
|
||||||
this.loadVideoChannels()
|
this.loadVideoChannels()
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('Video channel {{ videoChannelName } deleted.', { videoChannelName: videoChannel.displayName })
|
this.i18n('Video channel {{videoChannelName}} deleted.', { videoChannelName: videoChannel.displayName })
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ export class VideoChannelVideosComponent extends AbstractVideoList implements On
|
||||||
.getVideoChannelVideos(this.videoChannel, newPagination, this.sort)
|
.getVideoChannelVideos(this.videoChannel, newPagination, this.sort)
|
||||||
.pipe(
|
.pipe(
|
||||||
tap(({ totalVideos }) => {
|
tap(({ totalVideos }) => {
|
||||||
this.titlePage = this.i18n('Published {{ totalVideos }} videos', { totalVideos })
|
this.titlePage = this.i18n('Published {{totalVideos}} videos', { totalVideos })
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,7 +76,7 @@ export class AuthService {
|
||||||
let errorMessage = error.message
|
let errorMessage = error.message
|
||||||
|
|
||||||
if (error.status === 403) {
|
if (error.status === 403) {
|
||||||
errorMessage = this.i18n('Cannot retrieve OAuth Client credentials: {{ errorText }}.\n', { errorText: error.text })
|
errorMessage = this.i18n('Cannot retrieve OAuth Client credentials: {{errorText}}.\n', { errorText: error.text })
|
||||||
errorMessage += this.i18n(
|
errorMessage += this.i18n(
|
||||||
'Ensure you have correctly configured PeerTube (config/ directory), in particular the "webserver" section.'
|
'Ensure you have correctly configured PeerTube (config/ directory), in particular the "webserver" section.'
|
||||||
)
|
)
|
||||||
|
|
|
@ -12,28 +12,28 @@ export class FromNowPipe implements PipeTransform {
|
||||||
|
|
||||||
let interval = Math.floor(seconds / 31536000)
|
let interval = Math.floor(seconds / 31536000)
|
||||||
if (interval > 1) {
|
if (interval > 1) {
|
||||||
return this.i18n('{{ interval }} years ago', { interval })
|
return this.i18n('{{interval}} years ago', { interval })
|
||||||
}
|
}
|
||||||
|
|
||||||
interval = Math.floor(seconds / 2592000)
|
interval = Math.floor(seconds / 2592000)
|
||||||
if (interval > 1) return this.i18n('{{ interval }} months ago', { interval })
|
if (interval > 1) return this.i18n('{{interval}} months ago', { interval })
|
||||||
if (interval === 1) return this.i18n('{{ interval }} month ago', { interval })
|
if (interval === 1) return this.i18n('{{interval}} month ago', { interval })
|
||||||
|
|
||||||
interval = Math.floor(seconds / 604800)
|
interval = Math.floor(seconds / 604800)
|
||||||
if (interval > 1) return this.i18n('{{ interval }} weeks ago', { interval })
|
if (interval > 1) return this.i18n('{{interval}} weeks ago', { interval })
|
||||||
if (interval === 1) return this.i18n('{{ interval }} week ago', { interval })
|
if (interval === 1) return this.i18n('{{interval}} week ago', { interval })
|
||||||
|
|
||||||
interval = Math.floor(seconds / 86400)
|
interval = Math.floor(seconds / 86400)
|
||||||
if (interval > 1) return this.i18n('{{ interval }} days ago', { interval })
|
if (interval > 1) return this.i18n('{{interval}} days ago', { interval })
|
||||||
if (interval === 1) return this.i18n('{{ interval }} day ago', { interval })
|
if (interval === 1) return this.i18n('{{interval}} day ago', { interval })
|
||||||
|
|
||||||
interval = Math.floor(seconds / 3600)
|
interval = Math.floor(seconds / 3600)
|
||||||
if (interval > 1) return this.i18n('{{ interval }} hours ago', { interval })
|
if (interval > 1) return this.i18n('{{interval}} hours ago', { interval })
|
||||||
if (interval === 1) return this.i18n('{{ interval }} hour ago', { interval })
|
if (interval === 1) return this.i18n('{{interval}} hour ago', { interval })
|
||||||
|
|
||||||
interval = Math.floor(seconds / 60)
|
interval = Math.floor(seconds / 60)
|
||||||
if (interval >= 1) return this.i18n('{{ interval }} min ago', { interval })
|
if (interval >= 1) return this.i18n('{{interval}} min ago', { interval })
|
||||||
|
|
||||||
return this.i18n('{{ interval }} sec ago', { interval: Math.floor(seconds) })
|
return this.i18n('{{interval}} sec ago', { interval: Math.floor(seconds) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ export class RestExtractor {
|
||||||
const secondsLeft = err.headers.get('retry-after')
|
const secondsLeft = err.headers.get('retry-after')
|
||||||
if (secondsLeft) {
|
if (secondsLeft) {
|
||||||
const minutesLeft = Math.floor(parseInt(secondsLeft, 10) / 60)
|
const minutesLeft = Math.floor(parseInt(secondsLeft, 10) / 60)
|
||||||
errorMessage = this.i18n('Too many attempts, please try again after {{ minutesLeft }} minutes.', { minutesLeft })
|
errorMessage = this.i18n('Too many attempts, please try again after {{minutesLeft}} minutes.', { minutesLeft })
|
||||||
} else {
|
} else {
|
||||||
errorMessage = this.i18n('Too many attempts, please try again later.')
|
errorMessage = this.i18n('Too many attempts, please try again later.')
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ export class SignupComponent extends FormReactive implements OnInit {
|
||||||
() => {
|
() => {
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('Registration for {{ username }} complete.', { username: userCreate.username })
|
this.i18n('Registration for {{username}} complete.', { username: userCreate.username })
|
||||||
)
|
)
|
||||||
this.redirectService.redirectToHomepage()
|
this.redirectService.redirectToHomepage()
|
||||||
},
|
},
|
||||||
|
@ -106,9 +106,9 @@ export class SignupComponent extends FormReactive implements OnInit {
|
||||||
const normalSeconds = initialUserVideoQuotaBit / (1.5 * 1000 * 1000)
|
const normalSeconds = initialUserVideoQuotaBit / (1.5 * 1000 * 1000)
|
||||||
|
|
||||||
const lines = [
|
const lines = [
|
||||||
this.i18n('{{ seconds }} of full HD videos', { seconds: SignupComponent.getApproximateTime(fullHdSeconds) }),
|
this.i18n('{{seconds}} of full HD videos', { seconds: SignupComponent.getApproximateTime(fullHdSeconds) }),
|
||||||
this.i18n('{{ seconds }} of HD videos', { seconds: SignupComponent.getApproximateTime(hdSeconds) }),
|
this.i18n('{{seconds}} of HD videos', { seconds: SignupComponent.getApproximateTime(hdSeconds) }),
|
||||||
this.i18n('{{ seconds }} of average quality videos', { seconds: SignupComponent.getApproximateTime(normalSeconds) })
|
this.i18n('{{seconds}} of average quality videos', { seconds: SignupComponent.getApproximateTime(normalSeconds) })
|
||||||
]
|
]
|
||||||
|
|
||||||
this.quotaHelpIndication = lines.join('<br />')
|
this.quotaHelpIndication = lines.join('<br />')
|
||||||
|
|
|
@ -114,7 +114,7 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy {
|
||||||
async onWantedToDelete (commentToDelete: VideoComment) {
|
async onWantedToDelete (commentToDelete: VideoComment) {
|
||||||
let message = 'Do you really want to delete this comment?'
|
let message = 'Do you really want to delete this comment?'
|
||||||
if (commentToDelete.totalReplies !== 0) {
|
if (commentToDelete.totalReplies !== 0) {
|
||||||
message += this.i18n(' {{ totalReplies }} replies will be deleted too.', { totalReplies: commentToDelete.totalReplies })
|
message += this.i18n(' {{totalReplies}} replies will be deleted too.', { totalReplies: commentToDelete.totalReplies })
|
||||||
}
|
}
|
||||||
|
|
||||||
const res = await this.confirmService.confirm(message, this.i18n('Delete'))
|
const res = await this.confirmService.confirm(message, this.i18n('Delete'))
|
||||||
|
|
|
@ -163,7 +163,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
||||||
status => {
|
status => {
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('Video {{ videoName }} had been blacklisted.', { videoName: this.video.name })
|
this.i18n('Video {{videoName}} had been blacklisted.', { videoName: this.video.name })
|
||||||
)
|
)
|
||||||
this.redirectService.redirectToHomepage()
|
this.redirectService.redirectToHomepage()
|
||||||
},
|
},
|
||||||
|
@ -265,7 +265,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
||||||
status => {
|
status => {
|
||||||
this.notificationsService.success(
|
this.notificationsService.success(
|
||||||
this.i18n('Success'),
|
this.i18n('Success'),
|
||||||
this.i18n('Video {{ videoName }} deleted.', { videoName: this.video.name })
|
this.i18n('Video {{videoName}} deleted.', { videoName: this.video.name })
|
||||||
)
|
)
|
||||||
|
|
||||||
// Go back to the video-list.
|
// Go back to the video-list.
|
||||||
|
@ -297,7 +297,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
private setVideoLikesBarTooltipText () {
|
private setVideoLikesBarTooltipText () {
|
||||||
this.likesBarTooltipText = this.i18n(
|
this.likesBarTooltipText = this.i18n(
|
||||||
'{{ likesNumber }} likes / {{ dislikesNumber }} dislikes',
|
'{{likesNumber}} likes / {{dislikesNumber}} dislikes',
|
||||||
{ likesNumber: this.video.likes, dislikes: this.video.dislikes }
|
{ likesNumber: this.video.likes, dislikes: this.video.dislikes }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue