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)
|
||||
.pipe(
|
||||
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('/')
|
||||
|
||||
// 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('Are you sure you want to update the configuration?')
|
||||
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 }
|
||||
)
|
||||
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)
|
||||
if (confirmRes === false) return
|
||||
|
|
|
@ -36,7 +36,7 @@ export class FollowingAddComponent {
|
|||
|
||||
for (const host of hosts) {
|
||||
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) {
|
||||
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')
|
||||
)
|
||||
if (res === false) return
|
||||
|
@ -42,7 +42,7 @@ export class FollowingListComponent extends RestTable implements OnInit {
|
|||
() => {
|
||||
this.notificationsService.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()
|
||||
},
|
||||
|
|
|
@ -72,7 +72,7 @@ export class UserCreateComponent extends UserEdit implements OnInit {
|
|||
() => {
|
||||
this.notificationsService.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' ])
|
||||
},
|
||||
|
|
|
@ -85,7 +85,7 @@ export class UserUpdateComponent extends UserEdit implements OnInit, OnDestroy {
|
|||
() => {
|
||||
this.notificationsService.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' ])
|
||||
},
|
||||
|
|
|
@ -44,7 +44,7 @@ export class UserListComponent extends RestTable implements OnInit {
|
|||
() => {
|
||||
this.notificationsService.success(
|
||||
this.i18n('Success'),
|
||||
this.i18n('User {{ username }} deleted.', { username: user.username })
|
||||
this.i18n('User {{username}} deleted.', { username: user.username })
|
||||
)
|
||||
this.loadData()
|
||||
},
|
||||
|
|
|
@ -43,7 +43,7 @@ export class VideoBlacklistListComponent extends RestTable implements OnInit {
|
|||
() => {
|
||||
this.notificationsService.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()
|
||||
},
|
||||
|
|
|
@ -73,7 +73,7 @@ export class MyAccountVideoChannelCreateComponent extends MyAccountVideoChannelE
|
|||
this.authService.refreshUserInformation()
|
||||
this.notificationsService.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' ])
|
||||
},
|
||||
|
|
|
@ -101,7 +101,7 @@ export class MyAccountVideoChannelUpdateComponent extends MyAccountVideoChannelE
|
|||
this.authService.refreshUserInformation()
|
||||
this.notificationsService.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' ])
|
||||
},
|
||||
|
|
|
@ -35,7 +35,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
|
|||
async deleteVideoChannel (videoChannel: VideoChannel) {
|
||||
const res = await this.confirmService.confirmWithInput(
|
||||
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 }
|
||||
),
|
||||
this.i18n('Please type the name of the video channel to confirm'),
|
||||
|
@ -50,7 +50,7 @@ export class MyAccountVideoChannelsComponent implements OnInit {
|
|||
this.loadVideoChannels()
|
||||
this.notificationsService.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)
|
||||
.pipe(
|
||||
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
|
||||
|
||||
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(
|
||||
'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)
|
||||
if (interval > 1) {
|
||||
return this.i18n('{{ interval }} years ago', { interval })
|
||||
return this.i18n('{{interval}} years ago', { interval })
|
||||
}
|
||||
|
||||
interval = Math.floor(seconds / 2592000)
|
||||
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}} months ago', { interval })
|
||||
if (interval === 1) return this.i18n('{{interval}} month ago', { interval })
|
||||
|
||||
interval = Math.floor(seconds / 604800)
|
||||
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}} weeks ago', { interval })
|
||||
if (interval === 1) return this.i18n('{{interval}} week ago', { interval })
|
||||
|
||||
interval = Math.floor(seconds / 86400)
|
||||
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}} days ago', { interval })
|
||||
if (interval === 1) return this.i18n('{{interval}} day ago', { interval })
|
||||
|
||||
interval = Math.floor(seconds / 3600)
|
||||
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}} hours ago', { interval })
|
||||
if (interval === 1) return this.i18n('{{interval}} hour ago', { interval })
|
||||
|
||||
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')
|
||||
if (secondsLeft) {
|
||||
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 {
|
||||
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.i18n('Success'),
|
||||
this.i18n('Registration for {{ username }} complete.', { username: userCreate.username })
|
||||
this.i18n('Registration for {{username}} complete.', { username: userCreate.username })
|
||||
)
|
||||
this.redirectService.redirectToHomepage()
|
||||
},
|
||||
|
@ -106,9 +106,9 @@ export class SignupComponent extends FormReactive implements OnInit {
|
|||
const normalSeconds = initialUserVideoQuotaBit / (1.5 * 1000 * 1000)
|
||||
|
||||
const lines = [
|
||||
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 average quality videos', { seconds: SignupComponent.getApproximateTime(normalSeconds) })
|
||||
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 average quality videos', { seconds: SignupComponent.getApproximateTime(normalSeconds) })
|
||||
]
|
||||
|
||||
this.quotaHelpIndication = lines.join('<br />')
|
||||
|
|
|
@ -114,7 +114,7 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy {
|
|||
async onWantedToDelete (commentToDelete: VideoComment) {
|
||||
let message = 'Do you really want to delete this comment?'
|
||||
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'))
|
||||
|
|
|
@ -163,7 +163,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
|||
status => {
|
||||
this.notificationsService.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()
|
||||
},
|
||||
|
@ -265,7 +265,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
|||
status => {
|
||||
this.notificationsService.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.
|
||||
|
@ -297,7 +297,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
|||
|
||||
private setVideoLikesBarTooltipText () {
|
||||
this.likesBarTooltipText = this.i18n(
|
||||
'{{ likesNumber }} likes / {{ dislikesNumber }} dislikes',
|
||||
'{{likesNumber}} likes / {{dislikesNumber}} dislikes',
|
||||
{ likesNumber: this.video.likes, dislikes: this.video.dislikes }
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue