aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'client/src')
-rw-r--r--client/src/app/+about/about-peertube/about-peertube.component.html4
-rw-r--r--client/src/app/+accounts/accounts.component.html12
-rw-r--r--client/src/app/+accounts/accounts.component.scss12
-rw-r--r--client/src/app/+accounts/accounts.component.ts48
-rw-r--r--client/src/app/+admin/admin.module.ts8
-rw-r--r--client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html2
-rw-r--r--client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts28
-rw-r--r--client/src/app/+admin/follows/followers-list/followers-list.component.html9
-rw-r--r--client/src/app/+admin/follows/followers-list/followers-list.component.scss10
-rw-r--r--client/src/app/+admin/follows/followers-list/followers-list.component.ts2
-rw-r--r--client/src/app/+admin/follows/following-list/following-list.component.html11
-rw-r--r--client/src/app/+admin/follows/following-list/following-list.component.scss11
-rw-r--r--client/src/app/+admin/follows/following-list/following-list.component.ts4
-rw-r--r--client/src/app/+admin/follows/shared/follow.service.ts8
-rw-r--r--client/src/app/+admin/jobs/jobs-list/jobs-list.component.ts2
-rw-r--r--client/src/app/+admin/moderation/instance-blocklist/index.ts2
-rw-r--r--client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html22
-rw-r--r--client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.scss7
-rw-r--r--client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts59
-rw-r--r--client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html23
-rw-r--r--client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss7
-rw-r--r--client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts60
-rw-r--r--client/src/app/+admin/moderation/moderation.component.html4
-rw-r--r--client/src/app/+admin/moderation/moderation.component.ts8
-rw-r--r--client/src/app/+admin/moderation/moderation.routes.ts23
-rw-r--r--client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html2
-rw-r--r--client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts6
-rw-r--r--client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html2
-rw-r--r--client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts2
-rw-r--r--client/src/app/+admin/users/index.ts1
-rw-r--r--client/src/app/+admin/users/shared/index.ts1
-rw-r--r--client/src/app/+admin/users/shared/user.service.ts96
-rw-r--r--client/src/app/+admin/users/user-edit/user-create.component.ts2
-rw-r--r--client/src/app/+admin/users/user-edit/user-edit.ts1
-rw-r--r--client/src/app/+admin/users/user-edit/user-update.component.ts2
-rw-r--r--client/src/app/+admin/users/user-list/user-list.component.html41
-rw-r--r--client/src/app/+admin/users/user-list/user-list.component.scss8
-rw-r--r--client/src/app/+admin/users/user-list/user-list.component.ts106
-rw-r--r--client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.html26
-rw-r--r--client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.scss7
-rw-r--r--client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts59
-rw-r--r--client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html27
-rw-r--r--client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.scss7
-rw-r--r--client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts60
-rw-r--r--client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts26
-rw-r--r--client/src/app/+my-account/my-account-routing.module.ts20
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html5
-rw-r--r--client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts4
-rw-r--r--client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts6
-rw-r--r--client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.ts2
-rw-r--r--client/src/app/+my-account/my-account-videos/my-account-videos.component.ts2
-rw-r--r--client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.html6
-rw-r--r--client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts2
-rw-r--r--client/src/app/+my-account/my-account.component.html16
-rw-r--r--client/src/app/+my-account/my-account.component.scss2
-rw-r--r--client/src/app/+my-account/my-account.component.ts15
-rw-r--r--client/src/app/+my-account/my-account.module.ts6
-rw-r--r--client/src/app/+my-account/shared/actor-avatar-info.component.ts4
-rw-r--r--client/src/app/app.component.ts13
-rw-r--r--client/src/app/app.module.ts2
-rw-r--r--client/src/app/core/auth/auth-user.model.ts4
-rw-r--r--client/src/app/core/auth/auth.service.ts2
-rw-r--r--client/src/app/core/server/server.service.ts2
-rw-r--r--client/src/app/core/theme/theme.service.ts4
-rw-r--r--client/src/app/header/header.component.html4
-rw-r--r--client/src/app/menu/menu.component.ts2
-rw-r--r--client/src/app/search/search.component.ts3
-rw-r--r--client/src/app/shared/account/account.model.ts12
-rw-r--r--client/src/app/shared/blocklist/account-block.model.ts14
-rw-r--r--client/src/app/shared/blocklist/blocklist.service.ts135
-rw-r--r--client/src/app/shared/blocklist/index.ts2
-rw-r--r--client/src/app/shared/buttons/action-dropdown.component.html14
-rw-r--r--client/src/app/shared/buttons/action-dropdown.component.scss25
-rw-r--r--client/src/app/shared/buttons/action-dropdown.component.ts11
-rw-r--r--client/src/app/shared/buttons/button.component.ts6
-rw-r--r--client/src/app/shared/buttons/edit-button.component.ts2
-rw-r--r--client/src/app/shared/forms/form-validators/user-validators.service.ts4
-rw-r--r--client/src/app/shared/forms/form-validators/video-change-ownership-validators.service.ts15
-rw-r--r--client/src/app/shared/forms/form-validators/video-channel-validators.service.ts8
-rw-r--r--client/src/app/shared/forms/form-validators/video-validators.service.ts4
-rw-r--r--client/src/app/shared/forms/peertube-checkbox.component.html2
-rw-r--r--client/src/app/shared/forms/peertube-checkbox.component.scss6
-rw-r--r--client/src/app/shared/guards/can-deactivate-guard.service.ts4
-rw-r--r--client/src/app/shared/misc/peertube-local-storage.ts6
-rw-r--r--client/src/app/shared/misc/utils.ts2
-rw-r--r--client/src/app/shared/moderation/index.ts2
-rw-r--r--client/src/app/shared/moderation/user-ban-modal.component.html (renamed from client/src/app/+admin/users/user-list/user-ban-modal.component.html)2
-rw-r--r--client/src/app/shared/moderation/user-ban-modal.component.scss (renamed from client/src/app/+admin/users/user-list/user-ban-modal.component.scss)0
-rw-r--r--client/src/app/shared/moderation/user-ban-modal.component.ts (renamed from client/src/app/+admin/users/user-list/user-ban-modal.component.ts)29
-rw-r--r--client/src/app/shared/moderation/user-moderation-dropdown.component.html8
-rw-r--r--client/src/app/shared/moderation/user-moderation-dropdown.component.scss0
-rw-r--r--client/src/app/shared/moderation/user-moderation-dropdown.component.ts331
-rw-r--r--client/src/app/shared/overview/videos-overview.model.ts1
-rw-r--r--client/src/app/shared/rest/rest-extractor.service.ts4
-rw-r--r--client/src/app/shared/rest/rest-table.ts29
-rw-r--r--client/src/app/shared/rest/rest.service.ts2
-rw-r--r--client/src/app/shared/shared.module.ts16
-rw-r--r--client/src/app/shared/users/user.model.ts3
-rw-r--r--client/src/app/shared/users/user.service.ts114
-rw-r--r--client/src/app/shared/video/abstract-video-list.html16
-rw-r--r--client/src/app/shared/video/abstract-video-list.scss25
-rw-r--r--client/src/app/shared/video/abstract-video-list.ts16
-rw-r--r--client/src/app/shared/video/feed.component.html (renamed from client/src/app/shared/video/video-feed.component.html)0
-rw-r--r--client/src/app/shared/video/feed.component.scss (renamed from client/src/app/shared/video/video-feed.component.scss)0
-rw-r--r--client/src/app/shared/video/feed.component.ts11
-rw-r--r--client/src/app/shared/video/syndication.model.ts7
-rw-r--r--client/src/app/shared/video/video-edit.model.ts4
-rw-r--r--client/src/app/shared/video/video-feed.component.ts10
-rw-r--r--client/src/app/shared/video/video-miniature.component.html3
-rw-r--r--client/src/app/shared/video/video-miniature.component.ts9
-rw-r--r--client/src/app/shared/video/video-thumbnail.component.html10
-rw-r--r--client/src/app/shared/video/video-thumbnail.component.scss13
-rw-r--r--client/src/app/shared/video/video-thumbnail.component.ts8
-rw-r--r--client/src/app/shared/video/video.model.ts6
-rw-r--r--client/src/app/shared/video/video.service.ts8
-rw-r--r--client/src/app/signup/signup.component.html2
-rw-r--r--client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts3
-rw-r--r--client/src/app/videos/+video-edit/shared/video-edit.component.scss5
-rw-r--r--client/src/app/videos/+video-edit/shared/video-edit.component.ts6
-rw-r--r--client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts6
-rw-r--r--client/src/app/videos/+video-edit/video-add-components/video-send.ts6
-rw-r--r--client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts6
-rw-r--r--client/src/app/videos/+video-watch/comment/linkifier.service.ts7
-rw-r--r--client/src/app/videos/+video-watch/comment/video-comment-add.component.ts2
-rw-r--r--client/src/app/videos/+video-watch/comment/video-comment.component.ts2
-rw-r--r--client/src/app/videos/+video-watch/comment/video-comment.model.ts2
-rw-r--r--client/src/app/videos/+video-watch/comment/video-comment.service.ts8
-rw-r--r--client/src/app/videos/+video-watch/comment/video-comments.component.html2
-rw-r--r--client/src/app/videos/+video-watch/comment/video-comments.component.scss2
-rw-r--r--client/src/app/videos/+video-watch/comment/video-comments.component.ts3
-rw-r--r--client/src/app/videos/+video-watch/video-watch.component.scss2
-rw-r--r--client/src/app/videos/+video-watch/video-watch.component.ts23
-rw-r--r--client/src/app/videos/video-list/video-local.component.ts12
-rw-r--r--client/src/assets/player/peertube-chunk-store.ts20
-rw-r--r--client/src/assets/player/peertube-link-button.ts6
-rw-r--r--client/src/assets/player/peertube-load-progress-bar.ts5
-rw-r--r--client/src/assets/player/peertube-player-local-storage.ts8
-rw-r--r--client/src/assets/player/peertube-player.ts28
-rw-r--r--client/src/assets/player/peertube-videojs-plugin.ts116
-rw-r--r--client/src/assets/player/peertube-videojs-typings.ts17
-rw-r--r--client/src/assets/player/resolution-menu-button.ts7
-rw-r--r--client/src/assets/player/resolution-menu-item.ts9
-rw-r--r--client/src/assets/player/settings-menu-button.ts19
-rw-r--r--client/src/assets/player/settings-menu-item.ts15
-rw-r--r--client/src/assets/player/theater-button.ts6
-rw-r--r--client/src/assets/player/utils.ts2
-rw-r--r--client/src/assets/player/video-renderer.ts18
-rw-r--r--client/src/assets/player/webtorrent-info-button.ts2
-rw-r--r--client/src/locale/source/angular_en_US.xml991
-rw-r--r--client/src/locale/source/server_en_US.xml4
-rw-r--r--client/src/locale/target/angular_ar_001.xml110
-rw-r--r--client/src/locale/target/angular_ca_ES.xml125
-rw-r--r--client/src/locale/target/angular_cs_CZ.xml116
-rw-r--r--client/src/locale/target/angular_de_DE.xml635
-rw-r--r--client/src/locale/target/angular_eo.xml132
-rw-r--r--client/src/locale/target/angular_es_ES.xml132
-rw-r--r--client/src/locale/target/angular_eu_ES.xml247
-rw-r--r--client/src/locale/target/angular_fa_IR.xml33
-rw-r--r--client/src/locale/target/angular_fr_FR.xml381
-rw-r--r--client/src/locale/target/angular_gl_ES.xml28
-rw-r--r--client/src/locale/target/angular_it_IT.xml880
-rw-r--r--client/src/locale/target/angular_ja_JP.xml102
-rw-r--r--client/src/locale/target/angular_nl_NL.xml26
-rw-r--r--client/src/locale/target/angular_oc.xml835
-rw-r--r--client/src/locale/target/angular_pl_PL.xml321
-rw-r--r--client/src/locale/target/angular_pt_BR.xml247
-rw-r--r--client/src/locale/target/angular_ru_RU.xml302
-rw-r--r--client/src/locale/target/angular_sv_SE.xml385
-rw-r--r--client/src/locale/target/angular_zh_Hans_CN.xml380
-rw-r--r--client/src/locale/target/angular_zh_Hant_TW.xml647
-rw-r--r--client/src/locale/target/player_de_DE.json2
-rw-r--r--client/src/locale/target/player_sv_SE.json2
-rw-r--r--client/src/locale/target/player_zh_Hans_CN.json2
-rw-r--r--client/src/locale/target/server_ar_001.xml4
-rw-r--r--client/src/locale/target/server_ca_ES.json2
-rw-r--r--client/src/locale/target/server_cs_CZ.json2
-rw-r--r--client/src/locale/target/server_de_DE.json2
-rw-r--r--client/src/locale/target/server_eo.json2
-rw-r--r--client/src/locale/target/server_es_ES.json2
-rw-r--r--client/src/locale/target/server_eu_ES.json2
-rw-r--r--client/src/locale/target/server_fr_FR.json2
-rw-r--r--client/src/locale/target/server_gl_ES.xml4
-rw-r--r--client/src/locale/target/server_nl_NL.xml4
-rw-r--r--client/src/locale/target/server_oc.json2
-rw-r--r--client/src/locale/target/server_pl_PL.xml4
-rw-r--r--client/src/locale/target/server_pt_BR.json2
-rw-r--r--client/src/locale/target/server_sv_SE.json2
-rw-r--r--client/src/locale/target/server_zh_Hans_CN.json2
-rw-r--r--client/src/locale/target/server_zh_Hant_TW.json2
-rw-r--r--client/src/main.ts2
-rw-r--r--client/src/polyfills.ts51
-rw-r--r--client/src/sass/include/_bootstrap-variables.scss4
-rw-r--r--client/src/sass/include/_mixins.scss2
-rw-r--r--client/src/sass/primeng-custom.scss44
-rw-r--r--client/src/shims/noop.ts2
-rw-r--r--client/src/standalone/videos/embed.ts5
-rw-r--r--client/src/standalone/videos/test-embed.ts6
-rw-r--r--client/src/typings.d.ts5
198 files changed, 6724 insertions, 2832 deletions
diff --git a/client/src/app/+about/about-peertube/about-peertube.component.html b/client/src/app/+about/about-peertube/about-peertube.component.html
index 13ce89f75..d3fc9a828 100644
--- a/client/src/app/+about/about-peertube/about-peertube.component.html
+++ b/client/src/app/+about/about-peertube/about-peertube.component.html
@@ -83,7 +83,7 @@
83 <h6 i18n class="p2p-privacy-title">What will be done to mitigate this problem?</h6> 83 <h6 i18n class="p2p-privacy-title">What will be done to mitigate this problem?</h6>
84 84
85 <p i18n> 85 <p i18n>
86 PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. 86 PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released.
87 In the meantime, we want to test different ideas related to this issue: 87 In the meantime, we want to test different ideas related to this issue:
88 </p> 88 </p>
89 89
@@ -94,4 +94,4 @@
94 <li i18n>Disable P2P from the administration interface</li> 94 <li i18n>Disable P2P from the administration interface</li>
95 <li i18n>An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program</li> 95 <li i18n>An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program</li>
96 </ul> 96 </ul>
97</div> \ No newline at end of file 97</div>
diff --git a/client/src/app/+accounts/accounts.component.html b/client/src/app/+accounts/accounts.component.html
index 69f648269..c1377c1ea 100644
--- a/client/src/app/+accounts/accounts.component.html
+++ b/client/src/app/+accounts/accounts.component.html
@@ -8,6 +8,18 @@
8 <div class="actor-names"> 8 <div class="actor-names">
9 <div class="actor-display-name">{{ account.displayName }}</div> 9 <div class="actor-display-name">{{ account.displayName }}</div>
10 <div class="actor-name">{{ account.nameWithHost }}</div> 10 <div class="actor-name">{{ account.nameWithHost }}</div>
11
12 <span *ngIf="user?.blocked" [ngbTooltip]="user.blockedReason" class="badge badge-danger" i18n>Banned</span>
13 <span *ngIf="account.mutedByUser" class="badge badge-danger" i18n>Muted</span>
14 <span *ngIf="account.mutedServerByUser" class="badge badge-danger" i18n>Muted by your instance</span>
15 <span *ngIf="account.mutedByInstance" class="badge badge-danger" i18n>Instance muted</span>
16 <span *ngIf="account.mutedServerByInstance" class="badge badge-danger" i18n>Instance muted by your instance</span>
17
18 <my-user-moderation-dropdown
19 buttonSize="small" [account]="account" [user]="user"
20 (userChanged)="onUserChanged()" (userDeleted)="onUserDeleted()"
21 >
22 </my-user-moderation-dropdown>
11 </div> 23 </div>
12 <div i18n class="actor-followers">{{ account.followersCount }} subscribers</div> 24 <div i18n class="actor-followers">{{ account.followersCount }} subscribers</div>
13 </div> 25 </div>
diff --git a/client/src/app/+accounts/accounts.component.scss b/client/src/app/+accounts/accounts.component.scss
index 909b65bc7..3cedda889 100644
--- a/client/src/app/+accounts/accounts.component.scss
+++ b/client/src/app/+accounts/accounts.component.scss
@@ -3,4 +3,16 @@
3 3
4.sub-menu { 4.sub-menu {
5 @include sub-menu-with-actor; 5 @include sub-menu-with-actor;
6}
7
8my-user-moderation-dropdown,
9.badge {
10 margin-left: 10px;
11
12 position: relative;
13 top: 3px;
14}
15
16.badge {
17 font-size: 13px;
6} \ No newline at end of file 18} \ No newline at end of file
diff --git a/client/src/app/+accounts/accounts.component.ts b/client/src/app/+accounts/accounts.component.ts
index af0451e91..e19927d6b 100644
--- a/client/src/app/+accounts/accounts.component.ts
+++ b/client/src/app/+accounts/accounts.component.ts
@@ -1,10 +1,14 @@
1import { Component, OnInit, OnDestroy } from '@angular/core' 1import { Component, OnDestroy, OnInit } from '@angular/core'
2import { ActivatedRoute } from '@angular/router' 2import { ActivatedRoute } from '@angular/router'
3import { AccountService } from '@app/shared/account/account.service' 3import { AccountService } from '@app/shared/account/account.service'
4import { Account } from '@app/shared/account/account.model' 4import { Account } from '@app/shared/account/account.model'
5import { RestExtractor } from '@app/shared' 5import { RestExtractor, UserService } from '@app/shared'
6import { catchError, switchMap, distinctUntilChanged, map } from 'rxjs/operators' 6import { catchError, distinctUntilChanged, map, switchMap, tap } from 'rxjs/operators'
7import { Subscription } from 'rxjs' 7import { Subscription } from 'rxjs'
8import { NotificationsService } from 'angular2-notifications'
9import { User, UserRight } from '../../../../shared'
10import { I18n } from '@ngx-translate/i18n-polyfill'
11import { AuthService, RedirectService } from '@app/core'
8 12
9@Component({ 13@Component({
10 templateUrl: './accounts.component.html', 14 templateUrl: './accounts.component.html',
@@ -12,13 +16,19 @@ import { Subscription } from 'rxjs'
12}) 16})
13export class AccountsComponent implements OnInit, OnDestroy { 17export class AccountsComponent implements OnInit, OnDestroy {
14 account: Account 18 account: Account
19 user: User
15 20
16 private routeSub: Subscription 21 private routeSub: Subscription
17 22
18 constructor ( 23 constructor (
19 private route: ActivatedRoute, 24 private route: ActivatedRoute,
25 private userService: UserService,
20 private accountService: AccountService, 26 private accountService: AccountService,
21 private restExtractor: RestExtractor 27 private notificationsService: NotificationsService,
28 private restExtractor: RestExtractor,
29 private redirectService: RedirectService,
30 private authService: AuthService,
31 private i18n: I18n
22 ) {} 32 ) {}
23 33
24 ngOnInit () { 34 ngOnInit () {
@@ -27,12 +37,40 @@ export class AccountsComponent implements OnInit, OnDestroy {
27 map(params => params[ 'accountId' ]), 37 map(params => params[ 'accountId' ]),
28 distinctUntilChanged(), 38 distinctUntilChanged(),
29 switchMap(accountId => this.accountService.getAccount(accountId)), 39 switchMap(accountId => this.accountService.getAccount(accountId)),
40 tap(account => this.getUserIfNeeded(account)),
30 catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 404 ])) 41 catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 404 ]))
31 ) 42 )
32 .subscribe(account => this.account = account) 43 .subscribe(
44 account => this.account = account,
45
46 err => this.notificationsService.error(this.i18n('Error'), err.message)
47 )
33 } 48 }
34 49
35 ngOnDestroy () { 50 ngOnDestroy () {
36 if (this.routeSub) this.routeSub.unsubscribe() 51 if (this.routeSub) this.routeSub.unsubscribe()
37 } 52 }
53
54 onUserChanged () {
55 this.getUserIfNeeded(this.account)
56 }
57
58 onUserDeleted () {
59 this.redirectService.redirectToHomepage()
60 }
61
62 private getUserIfNeeded (account: Account) {
63 if (!account.userId) return
64 if (!this.authService.isLoggedIn()) return
65
66 const user = this.authService.getUser()
67 if (user.hasRight(UserRight.MANAGE_USERS)) {
68 this.userService.getUser(account.userId)
69 .subscribe(
70 user => this.user = user,
71
72 err => this.notificationsService.error(this.i18n('Error'), err.message)
73 )
74 }
75 }
38} 76}
diff --git a/client/src/app/+admin/admin.module.ts b/client/src/app/+admin/admin.module.ts
index 5784609ef..c06ae1d60 100644
--- a/client/src/app/+admin/admin.module.ts
+++ b/client/src/app/+admin/admin.module.ts
@@ -10,12 +10,12 @@ import { FollowingListComponent } from './follows/following-list/following-list.
10import { JobsComponent } from './jobs/job.component' 10import { JobsComponent } from './jobs/job.component'
11import { JobsListComponent } from './jobs/jobs-list/jobs-list.component' 11import { JobsListComponent } from './jobs/jobs-list/jobs-list.component'
12import { JobService } from './jobs/shared/job.service' 12import { JobService } from './jobs/shared/job.service'
13import { UserCreateComponent, UserListComponent, UsersComponent, UserService, UserUpdateComponent } from './users' 13import { UserCreateComponent, UserListComponent, UsersComponent, UserUpdateComponent } from './users'
14import { ModerationCommentModalComponent, VideoAbuseListComponent, VideoBlacklistListComponent } from './moderation' 14import { ModerationCommentModalComponent, VideoAbuseListComponent, VideoBlacklistListComponent } from './moderation'
15import { UserBanModalComponent } from '@app/+admin/users/user-list/user-ban-modal.component'
16import { ModerationComponent } from '@app/+admin/moderation/moderation.component' 15import { ModerationComponent } from '@app/+admin/moderation/moderation.component'
17import { RedundancyCheckboxComponent } from '@app/+admin/follows/shared/redundancy-checkbox.component' 16import { RedundancyCheckboxComponent } from '@app/+admin/follows/shared/redundancy-checkbox.component'
18import { RedundancyService } from '@app/+admin/follows/shared/redundancy.service' 17import { RedundancyService } from '@app/+admin/follows/shared/redundancy.service'
18import { InstanceAccountBlocklistComponent, InstanceServerBlocklistComponent } from '@app/+admin/moderation/instance-blocklist'
19 19
20@NgModule({ 20@NgModule({
21 imports: [ 21 imports: [
@@ -37,12 +37,13 @@ import { RedundancyService } from '@app/+admin/follows/shared/redundancy.service
37 UserCreateComponent, 37 UserCreateComponent,
38 UserUpdateComponent, 38 UserUpdateComponent,
39 UserListComponent, 39 UserListComponent,
40 UserBanModalComponent,
41 40
42 ModerationComponent, 41 ModerationComponent,
43 VideoBlacklistListComponent, 42 VideoBlacklistListComponent,
44 VideoAbuseListComponent, 43 VideoAbuseListComponent,
45 ModerationCommentModalComponent, 44 ModerationCommentModalComponent,
45 InstanceServerBlocklistComponent,
46 InstanceAccountBlocklistComponent,
46 47
47 JobsComponent, 48 JobsComponent,
48 JobsListComponent, 49 JobsListComponent,
@@ -58,7 +59,6 @@ import { RedundancyService } from '@app/+admin/follows/shared/redundancy.service
58 providers: [ 59 providers: [
59 FollowService, 60 FollowService,
60 RedundancyService, 61 RedundancyService,
61 UserService,
62 JobService, 62 JobService,
63 ConfigService 63 ConfigService
64 ] 64 ]
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html
index e2cbd35ca..dfbbfbb29 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html
+++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.html
@@ -112,7 +112,7 @@
112 112
113 <my-peertube-checkbox 113 <my-peertube-checkbox
114 inputName="importVideosHttpEnabled" formControlName="importVideosHttpEnabled" 114 inputName="importVideosHttpEnabled" formControlName="importVideosHttpEnabled"
115 i18n-labelText labelText="Video import with HTTP enabled" 115 i18n-labelText labelText="Video import with HTTP URL (i.e. YouTube) enabled"
116 ></my-peertube-checkbox> 116 ></my-peertube-checkbox>
117 117
118 <my-peertube-checkbox 118 <my-peertube-checkbox
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
index 4983b0425..f48b6fc1a 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
+++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
@@ -1,6 +1,5 @@
1import { Component, OnInit } from '@angular/core' 1import { Component, OnInit } from '@angular/core'
2import { ConfigService } from '@app/+admin/config/shared/config.service' 2import { ConfigService } from '@app/+admin/config/shared/config.service'
3import { ConfirmService } from '@app/core'
4import { ServerService } from '@app/core/server/server.service' 3import { ServerService } from '@app/core/server/server.service'
5import { CustomConfigValidatorsService, FormReactive, UserValidatorsService } from '@app/shared' 4import { CustomConfigValidatorsService, FormReactive, UserValidatorsService } from '@app/shared'
6import { NotificationsService } from 'angular2-notifications' 5import { NotificationsService } from 'angular2-notifications'
@@ -29,7 +28,6 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
29 private notificationsService: NotificationsService, 28 private notificationsService: NotificationsService,
30 private configService: ConfigService, 29 private configService: ConfigService,
31 private serverService: ServerService, 30 private serverService: ServerService,
32 private confirmService: ConfirmService,
33 private i18n: I18n 31 private i18n: I18n
34 ) { 32 ) {
35 super() 33 super()
@@ -64,7 +62,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
64 } 62 }
65 63
66 ngOnInit () { 64 ngOnInit () {
67 const formGroupData = { 65 const formGroupData: { [key: string]: any } = {
68 instanceName: this.customConfigValidatorsService.INSTANCE_NAME, 66 instanceName: this.customConfigValidatorsService.INSTANCE_NAME,
69 instanceShortDescription: this.customConfigValidatorsService.INSTANCE_SHORT_DESCRIPTION, 67 instanceShortDescription: this.customConfigValidatorsService.INSTANCE_SHORT_DESCRIPTION,
70 instanceDescription: null, 68 instanceDescription: null,
@@ -124,28 +122,6 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
124 } 122 }
125 123
126 async formValidated () { 124 async formValidated () {
127 const newCustomizationJavascript = this.form.value['customizationJavascript']
128 const newCustomizationCSS = this.form.value['customizationCSS']
129
130 const customizations = []
131 if (newCustomizationJavascript && newCustomizationJavascript !== this.oldCustomJavascript) customizations.push('JavaScript')
132 if (newCustomizationCSS && newCustomizationCSS !== this.oldCustomCSS) customizations.push('CSS')
133
134 if (customizations.length !== 0) {
135 const customizationsText = customizations.join('/')
136
137 // FIXME: i18n service does not support string concatenation
138 const message = this.i18n('You set custom {{customizationsText}}. ', { customizationsText }) +
139 this.i18n('This could lead to security issues or bugs if you do not understand it. ') +
140 this.i18n('Are you sure you want to update the configuration?')
141
142 const label = this.i18n('Please type') + ` "I understand the ${customizationsText} I set" ` + this.i18n('to confirm.')
143 const expectedInputValue = `I understand the ${customizationsText} I set`
144
145 const confirmRes = await this.confirmService.confirmWithInput(message, label, expectedInputValue)
146 if (confirmRes === false) return
147 }
148
149 const data: CustomConfig = { 125 const data: CustomConfig = {
150 instance: { 126 instance: {
151 name: this.form.value['instanceName'], 127 name: this.form.value['instanceName'],
@@ -226,7 +202,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
226 } 202 }
227 203
228 private updateForm () { 204 private updateForm () {
229 const data = { 205 const data: { [key: string]: any } = {
230 instanceName: this.customConfig.instance.name, 206 instanceName: this.customConfig.instance.name,
231 instanceShortDescription: this.customConfig.instance.shortDescription, 207 instanceShortDescription: this.customConfig.instance.shortDescription,
232 instanceDescription: this.customConfig.instance.description, 208 instanceDescription: this.customConfig.instance.description,
diff --git a/client/src/app/+admin/follows/followers-list/followers-list.component.html b/client/src/app/+admin/follows/followers-list/followers-list.component.html
index 5645a60cc..fc022bdb4 100644
--- a/client/src/app/+admin/follows/followers-list/followers-list.component.html
+++ b/client/src/app/+admin/follows/followers-list/followers-list.component.html
@@ -2,6 +2,15 @@
2 [value]="followers" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage" 2 [value]="followers" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" 3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)"
4> 4>
5 <ng-template pTemplate="caption">
6 <div class="caption">
7 <input
8 type="text" name="table-filter" id="table-filter" i18n-placeholder placeholder="Filter..."
9 (keyup)="onSearch($event.target.value)"
10 >
11 </div>
12 </ng-template>
13
5 <ng-template pTemplate="header"> 14 <ng-template pTemplate="header">
6 <tr> 15 <tr>
7 <th i18n style="width: 60px">ID</th> 16 <th i18n style="width: 60px">ID</th>
diff --git a/client/src/app/+admin/follows/followers-list/followers-list.component.scss b/client/src/app/+admin/follows/followers-list/followers-list.component.scss
index e69de29bb..a6f0656b8 100644
--- a/client/src/app/+admin/follows/followers-list/followers-list.component.scss
+++ b/client/src/app/+admin/follows/followers-list/followers-list.component.scss
@@ -0,0 +1,10 @@
1@import '_variables';
2@import '_mixins';
3
4.caption {
5 justify-content: flex-end;
6
7 input {
8 @include peertube-input-text(250px);
9 }
10} \ No newline at end of file
diff --git a/client/src/app/+admin/follows/followers-list/followers-list.component.ts b/client/src/app/+admin/follows/followers-list/followers-list.component.ts
index ca993dcd3..4a25b7ff3 100644
--- a/client/src/app/+admin/follows/followers-list/followers-list.component.ts
+++ b/client/src/app/+admin/follows/followers-list/followers-list.component.ts
@@ -28,7 +28,7 @@ export class FollowersListComponent extends RestTable implements OnInit {
28 } 28 }
29 29
30 ngOnInit () { 30 ngOnInit () {
31 this.loadSort() 31 this.initialize()
32 } 32 }
33 33
34 protected loadData () { 34 protected loadData () {
diff --git a/client/src/app/+admin/follows/following-list/following-list.component.html b/client/src/app/+admin/follows/following-list/following-list.component.html
index 8af624ac5..5bc8fbc2d 100644
--- a/client/src/app/+admin/follows/following-list/following-list.component.html
+++ b/client/src/app/+admin/follows/following-list/following-list.component.html
@@ -2,6 +2,17 @@
2 [value]="following" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage" 2 [value]="following" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" 3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)"
4> 4>
5 <ng-template pTemplate="caption">
6 <div class="caption">
7 <div>
8 <input
9 type="text" name="table-filter" id="table-filter" i18n-placeholder placeholder="Filter..."
10 (keyup)="onSearch($event.target.value)"
11 >
12 </div>
13 </div>
14 </ng-template>
15
5 <ng-template pTemplate="header"> 16 <ng-template pTemplate="header">
6 <tr> 17 <tr>
7 <th i18n style="width: 60px">ID</th> 18 <th i18n style="width: 60px">ID</th>
diff --git a/client/src/app/+admin/follows/following-list/following-list.component.scss b/client/src/app/+admin/follows/following-list/following-list.component.scss
index bfcdcaa49..a6f0656b8 100644
--- a/client/src/app/+admin/follows/following-list/following-list.component.scss
+++ b/client/src/app/+admin/follows/following-list/following-list.component.scss
@@ -1,13 +1,10 @@
1@import '_variables'; 1@import '_variables';
2@import '_mixins'; 2@import '_mixins';
3 3
4my-redundancy-checkbox /deep/ my-peertube-checkbox { 4.caption {
5 .form-group { 5 justify-content: flex-end;
6 margin-bottom: 0;
7 align-items: center;
8 }
9 6
10 label { 7 input {
11 margin: 0; 8 @include peertube-input-text(250px);
12 } 9 }
13} \ No newline at end of file 10} \ No newline at end of file
diff --git a/client/src/app/+admin/follows/following-list/following-list.component.ts b/client/src/app/+admin/follows/following-list/following-list.component.ts
index dd57884c6..9b7029f75 100644
--- a/client/src/app/+admin/follows/following-list/following-list.component.ts
+++ b/client/src/app/+admin/follows/following-list/following-list.component.ts
@@ -29,7 +29,7 @@ export class FollowingListComponent extends RestTable implements OnInit {
29 } 29 }
30 30
31 ngOnInit () { 31 ngOnInit () {
32 this.loadSort() 32 this.initialize()
33 } 33 }
34 34
35 async removeFollowing (follow: ActorFollow) { 35 async removeFollowing (follow: ActorFollow) {
@@ -53,7 +53,7 @@ export class FollowingListComponent extends RestTable implements OnInit {
53 } 53 }
54 54
55 protected loadData () { 55 protected loadData () {
56 this.followService.getFollowing(this.pagination, this.sort) 56 this.followService.getFollowing(this.pagination, this.sort, this.search)
57 .subscribe( 57 .subscribe(
58 resultList => { 58 resultList => {
59 this.following = resultList.data 59 this.following = resultList.data
diff --git a/client/src/app/+admin/follows/shared/follow.service.ts b/client/src/app/+admin/follows/shared/follow.service.ts
index 27169a9cd..a2904179e 100644
--- a/client/src/app/+admin/follows/shared/follow.service.ts
+++ b/client/src/app/+admin/follows/shared/follow.service.ts
@@ -18,10 +18,12 @@ export class FollowService {
18 ) { 18 ) {
19 } 19 }
20 20
21 getFollowing (pagination: RestPagination, sort: SortMeta): Observable<ResultList<ActorFollow>> { 21 getFollowing (pagination: RestPagination, sort: SortMeta, search?: string): Observable<ResultList<ActorFollow>> {
22 let params = new HttpParams() 22 let params = new HttpParams()
23 params = this.restService.addRestGetParams(params, pagination, sort) 23 params = this.restService.addRestGetParams(params, pagination, sort)
24 24
25 if (search) params = params.append('search', search)
26
25 return this.authHttp.get<ResultList<ActorFollow>>(FollowService.BASE_APPLICATION_URL + '/following', { params }) 27 return this.authHttp.get<ResultList<ActorFollow>>(FollowService.BASE_APPLICATION_URL + '/following', { params })
26 .pipe( 28 .pipe(
27 map(res => this.restExtractor.convertResultListDateToHuman(res)), 29 map(res => this.restExtractor.convertResultListDateToHuman(res)),
@@ -29,10 +31,12 @@ export class FollowService {
29 ) 31 )
30 } 32 }
31 33
32 getFollowers (pagination: RestPagination, sort: SortMeta): Observable<ResultList<ActorFollow>> { 34 getFollowers (pagination: RestPagination, sort: SortMeta, search?: string): Observable<ResultList<ActorFollow>> {
33 let params = new HttpParams() 35 let params = new HttpParams()
34 params = this.restService.addRestGetParams(params, pagination, sort) 36 params = this.restService.addRestGetParams(params, pagination, sort)
35 37
38 if (search) params = params.append('search', search)
39
36 return this.authHttp.get<ResultList<ActorFollow>>(FollowService.BASE_APPLICATION_URL + '/followers', { params }) 40 return this.authHttp.get<ResultList<ActorFollow>>(FollowService.BASE_APPLICATION_URL + '/followers', { params })
37 .pipe( 41 .pipe(
38 map(res => this.restExtractor.convertResultListDateToHuman(res)), 42 map(res => this.restExtractor.convertResultListDateToHuman(res)),
diff --git a/client/src/app/+admin/jobs/jobs-list/jobs-list.component.ts b/client/src/app/+admin/jobs/jobs-list/jobs-list.component.ts
index 866ba1b23..44778ab56 100644
--- a/client/src/app/+admin/jobs/jobs-list/jobs-list.component.ts
+++ b/client/src/app/+admin/jobs/jobs-list/jobs-list.component.ts
@@ -34,7 +34,7 @@ export class JobsListComponent extends RestTable implements OnInit {
34 34
35 ngOnInit () { 35 ngOnInit () {
36 this.loadJobState() 36 this.loadJobState()
37 this.loadSort() 37 this.initialize()
38 } 38 }
39 39
40 onJobStateChanged () { 40 onJobStateChanged () {
diff --git a/client/src/app/+admin/moderation/instance-blocklist/index.ts b/client/src/app/+admin/moderation/instance-blocklist/index.ts
new file mode 100644
index 000000000..3e7a344bb
--- /dev/null
+++ b/client/src/app/+admin/moderation/instance-blocklist/index.ts
@@ -0,0 +1,2 @@
1export * from './instance-account-blocklist.component'
2export * from './instance-server-blocklist.component'
diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html
new file mode 100644
index 000000000..7797bc56e
--- /dev/null
+++ b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html
@@ -0,0 +1,22 @@
1<p-table
2 [value]="blockedAccounts" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)"
4>
5
6 <ng-template pTemplate="header">
7 <tr>
8 <th i18n>Account</th>
9 <th i18n pSortableColumn="createdAt">Muted at <p-sortIcon field="createdAt"></p-sortIcon></th>
10 </tr>
11 </ng-template>
12
13 <ng-template pTemplate="body" let-accountBlock>
14 <tr>
15 <td>{{ accountBlock.blockedAccount.nameWithHost }}</td>
16 <td>{{ accountBlock.createdAt }}</td>
17 <td class="action-cell">
18 <button class="unblock-button" (click)="unblockAccount(accountBlock)" i18n>Unmute</button>
19 </td>
20 </tr>
21 </ng-template>
22</p-table>
diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.scss b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.scss
new file mode 100644
index 000000000..6028b75ea
--- /dev/null
+++ b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.scss
@@ -0,0 +1,7 @@
1@import '_variables';
2@import '_mixins';
3
4.unblock-button {
5 @include peertube-button;
6 @include grey-button;
7} \ No newline at end of file
diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts
new file mode 100644
index 000000000..3f243aee4
--- /dev/null
+++ b/client/src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts
@@ -0,0 +1,59 @@
1import { Component, OnInit } from '@angular/core'
2import { NotificationsService } from 'angular2-notifications'
3import { I18n } from '@ngx-translate/i18n-polyfill'
4import { RestPagination, RestTable } from '@app/shared'
5import { SortMeta } from 'primeng/components/common/sortmeta'
6import { BlocklistService, AccountBlock } from '@app/shared/blocklist'
7
8@Component({
9 selector: 'my-instance-account-blocklist',
10 styleUrls: [ './instance-account-blocklist.component.scss' ],
11 templateUrl: './instance-account-blocklist.component.html'
12})
13export class InstanceAccountBlocklistComponent extends RestTable implements OnInit {
14 blockedAccounts: AccountBlock[] = []
15 totalRecords = 0
16 rowsPerPage = 10
17 sort: SortMeta = { field: 'createdAt', order: -1 }
18 pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
19
20 constructor (
21 private notificationsService: NotificationsService,
22 private blocklistService: BlocklistService,
23 private i18n: I18n
24 ) {
25 super()
26 }
27
28 ngOnInit () {
29 this.initialize()
30 }
31
32 unblockAccount (accountBlock: AccountBlock) {
33 const blockedAccount = accountBlock.blockedAccount
34
35 this.blocklistService.unblockAccountByInstance(blockedAccount)
36 .subscribe(
37 () => {
38 this.notificationsService.success(
39 this.i18n('Success'),
40 this.i18n('Account {{nameWithHost}} unmuted by your instance.', { nameWithHost: blockedAccount.nameWithHost })
41 )
42
43 this.loadData()
44 }
45 )
46 }
47
48 protected loadData () {
49 return this.blocklistService.getInstanceAccountBlocklist(this.pagination, this.sort)
50 .subscribe(
51 resultList => {
52 this.blockedAccounts = resultList.data
53 this.totalRecords = resultList.total
54 },
55
56 err => this.notificationsService.error(this.i18n('Error'), err.message)
57 )
58 }
59}
diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html
new file mode 100644
index 000000000..f634ba834
--- /dev/null
+++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html
@@ -0,0 +1,23 @@
1<p-table
2 [value]="blockedServers" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage"
3 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)"
4>
5
6 <ng-template pTemplate="header">
7 <tr>
8 <th i18n>Instance</th>
9 <th i18n pSortableColumn="createdAt">Muted at <p-sortIcon field="createdAt"></p-sortIcon></th>
10 <th></th>
11 </tr>
12 </ng-template>
13
14 <ng-template pTemplate="body" let-serverBlock>
15 <tr>
16 <td>{{ serverBlock.blockedServer.host }}</td>
17 <td>{{ serverBlock.createdAt }}</td>
18 <td class="action-cell">
19 <button class="unblock-button" (click)="unblockServer(serverBlock)" i18n>Unmute</button>
20 </td>
21 </tr>
22 </ng-template>
23</p-table>
diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss
new file mode 100644
index 000000000..6028b75ea
--- /dev/null
+++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.scss
@@ -0,0 +1,7 @@
1@import '_variables';
2@import '_mixins';
3
4.unblock-button {
5 @include peertube-button;
6 @include grey-button;
7} \ No newline at end of file
diff --git a/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts
new file mode 100644
index 000000000..130009dc7
--- /dev/null
+++ b/client/src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts
@@ -0,0 +1,60 @@
1import { Component, OnInit } from '@angular/core'
2import { NotificationsService } from 'angular2-notifications'
3import { I18n } from '@ngx-translate/i18n-polyfill'
4import { RestPagination, RestTable } from '@app/shared'
5import { SortMeta } from 'primeng/components/common/sortmeta'
6import { BlocklistService } from '@app/shared/blocklist'
7import { ServerBlock } from '../../../../../../shared'
8
9@Component({
10 selector: 'my-instance-server-blocklist',
11 styleUrls: [ './instance-server-blocklist.component.scss' ],
12 templateUrl: './instance-server-blocklist.component.html'
13})
14export class InstanceServerBlocklistComponent extends RestTable implements OnInit {
15 blockedServers: ServerBlock[] = []
16 totalRecords = 0
17 rowsPerPage = 10
18 sort: SortMeta = { field: 'createdAt', order: -1 }
19 pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
20
21 constructor (
22 private notificationsService: NotificationsService,
23 private blocklistService: BlocklistService,
24 private i18n: I18n
25 ) {
26 super()
27 }
28
29 ngOnInit () {
30 this.initialize()
31 }
32
33 unblockServer (serverBlock: ServerBlock) {
34 const host = serverBlock.blockedServer.host
35
36 this.blocklistService.unblockServerByInstance(host)
37 .subscribe(
38 () => {
39 this.notificationsService.success(
40 this.i18n('Success'),
41 this.i18n('Instance {{host}} unmuted by your instance.', { host })
42 )
43
44 this.loadData()
45 }
46 )
47 }
48
49 protected loadData () {
50 return this.blocklistService.getInstanceServerBlocklist(this.pagination, this.sort)
51 .subscribe(
52 resultList => {
53 this.blockedServers = resultList.data
54 this.totalRecords = resultList.total
55 },
56
57 err => this.notificationsService.error(this.i18n('Error'), err.message)
58 )
59 }
60}
diff --git a/client/src/app/+admin/moderation/moderation.component.html b/client/src/app/+admin/moderation/moderation.component.html
index 91e87fcd4..01457936c 100644
--- a/client/src/app/+admin/moderation/moderation.component.html
+++ b/client/src/app/+admin/moderation/moderation.component.html
@@ -5,6 +5,10 @@
5 <a *ngIf="hasVideoAbusesRight()" i18n routerLink="video-abuses/list" routerLinkActive="active">Video abuses</a> 5 <a *ngIf="hasVideoAbusesRight()" i18n routerLink="video-abuses/list" routerLinkActive="active">Video abuses</a>
6 6
7 <a *ngIf="hasVideoBlacklistRight()" i18n routerLink="video-blacklist/list" routerLinkActive="active">Blacklisted videos</a> 7 <a *ngIf="hasVideoBlacklistRight()" i18n routerLink="video-blacklist/list" routerLinkActive="active">Blacklisted videos</a>
8
9 <a *ngIf="hasAccountsBlocklistRight()" i18n routerLink="blocklist/accounts" routerLinkActive="active">Muted accounts</a>
10
11 <a *ngIf="hasServersBlocklistRight()" i18n routerLink="blocklist/servers" routerLinkActive="active">Muted servers</a>
8 </div> 12 </div>
9</div> 13</div>
10 14
diff --git a/client/src/app/+admin/moderation/moderation.component.ts b/client/src/app/+admin/moderation/moderation.component.ts
index 0f4efb970..2b2618933 100644
--- a/client/src/app/+admin/moderation/moderation.component.ts
+++ b/client/src/app/+admin/moderation/moderation.component.ts
@@ -16,4 +16,12 @@ export class ModerationComponent {
16 hasVideoBlacklistRight () { 16 hasVideoBlacklistRight () {
17 return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLACKLIST) 17 return this.auth.getUser().hasRight(UserRight.MANAGE_VIDEO_BLACKLIST)
18 } 18 }
19
20 hasAccountsBlocklistRight () {
21 return this.auth.getUser().hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST)
22 }
23
24 hasServersBlocklistRight () {
25 return this.auth.getUser().hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)
26 }
19} 27}
diff --git a/client/src/app/+admin/moderation/moderation.routes.ts b/client/src/app/+admin/moderation/moderation.routes.ts
index 6d81b9b36..bc6dd49d5 100644
--- a/client/src/app/+admin/moderation/moderation.routes.ts
+++ b/client/src/app/+admin/moderation/moderation.routes.ts
@@ -4,6 +4,7 @@ import { UserRightGuard } from '@app/core'
4import { VideoAbuseListComponent } from '@app/+admin/moderation/video-abuse-list' 4import { VideoAbuseListComponent } from '@app/+admin/moderation/video-abuse-list'
5import { VideoBlacklistListComponent } from '@app/+admin/moderation/video-blacklist-list' 5import { VideoBlacklistListComponent } from '@app/+admin/moderation/video-blacklist-list'
6import { ModerationComponent } from '@app/+admin/moderation/moderation.component' 6import { ModerationComponent } from '@app/+admin/moderation/moderation.component'
7import { InstanceAccountBlocklistComponent, InstanceServerBlocklistComponent } from '@app/+admin/moderation/instance-blocklist'
7 8
8export const ModerationRoutes: Routes = [ 9export const ModerationRoutes: Routes = [
9 { 10 {
@@ -46,6 +47,28 @@ export const ModerationRoutes: Routes = [
46 title: 'Blacklisted videos' 47 title: 'Blacklisted videos'
47 } 48 }
48 } 49 }
50 },
51 {
52 path: 'blocklist/accounts',
53 component: InstanceAccountBlocklistComponent,
54 canActivate: [ UserRightGuard ],
55 data: {
56 userRight: UserRight.MANAGE_ACCOUNTS_BLOCKLIST,
57 meta: {
58 title: 'Muted accounts'
59 }
60 }
61 },
62 {
63 path: 'blocklist/servers',
64 component: InstanceServerBlocklistComponent,
65 canActivate: [ UserRightGuard ],
66 data: {
67 userRight: UserRight.MANAGE_SERVER_REDUNDANCY,
68 meta: {
69 title: 'Muted instances'
70 }
71 }
49 } 72 }
50 ] 73 ]
51 } 74 }
diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html
index 287ab3e46..0374b70ef 100644
--- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html
+++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.html
@@ -9,7 +9,7 @@
9 <th i18n pSortableColumn="createdAt">Created <p-sortIcon field="createdAt"></p-sortIcon></th> 9 <th i18n pSortableColumn="createdAt">Created <p-sortIcon field="createdAt"></p-sortIcon></th>
10 <th i18n>Video</th> 10 <th i18n>Video</th>
11 <th i18n pSortableColumn="state" style="width: 80px;">State <p-sortIcon field="state"></p-sortIcon></th> 11 <th i18n pSortableColumn="state" style="width: 80px;">State <p-sortIcon field="state"></p-sortIcon></th>
12 <th style="width: 50px;"></th> 12 <th style="width: 120px;"></th>
13 </tr> 13 </tr>
14 </ng-template> 14 </ng-template>
15 15
diff --git a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts
index 681db7434..7a219c846 100644
--- a/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts
+++ b/client/src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts
@@ -36,7 +36,7 @@ export class VideoAbuseListComponent extends RestTable implements OnInit {
36 36
37 this.videoAbuseActions = [ 37 this.videoAbuseActions = [
38 { 38 {
39 label: this.i18n('Delete'), 39 label: this.i18n('Delete this report'),
40 handler: videoAbuse => this.removeVideoAbuse(videoAbuse) 40 handler: videoAbuse => this.removeVideoAbuse(videoAbuse)
41 }, 41 },
42 { 42 {
@@ -57,7 +57,7 @@ export class VideoAbuseListComponent extends RestTable implements OnInit {
57 } 57 }
58 58
59 ngOnInit () { 59 ngOnInit () {
60 this.loadSort() 60 this.initialize()
61 } 61 }
62 62
63 openModerationCommentModal (videoAbuse: VideoAbuse) { 63 openModerationCommentModal (videoAbuse: VideoAbuse) {
@@ -85,7 +85,7 @@ export class VideoAbuseListComponent extends RestTable implements OnInit {
85 } 85 }
86 86
87 async removeVideoAbuse (videoAbuse: VideoAbuse) { 87 async removeVideoAbuse (videoAbuse: VideoAbuse) {
88 const res = await this.confirmService.confirm(this.i18n('Do you really want to delete this abuse?'), this.i18n('Delete')) 88 const res = await this.confirmService.confirm(this.i18n('Do you really want to delete this abuse report?'), this.i18n('Delete'))
89 if (res === false) return 89 if (res === false) return
90 90
91 this.videoAbuseService.removeVideoAbuse(videoAbuse).subscribe( 91 this.videoAbuseService.removeVideoAbuse(videoAbuse).subscribe(
diff --git a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html
index 0585e0490..ff4543b97 100644
--- a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html
+++ b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html
@@ -8,7 +8,7 @@
8 <th i18n pSortableColumn="name">Video name <p-sortIcon field="name"></p-sortIcon></th> 8 <th i18n pSortableColumn="name">Video name <p-sortIcon field="name"></p-sortIcon></th>
9 <th i18n>Sensitive</th> 9 <th i18n>Sensitive</th>
10 <th i18n pSortableColumn="createdAt">Date <p-sortIcon field="createdAt"></p-sortIcon></th> 10 <th i18n pSortableColumn="createdAt">Date <p-sortIcon field="createdAt"></p-sortIcon></th>
11 <th style="width: 50px;"></th> 11 <th style="width: 120px;"></th>
12 </tr> 12 </tr>
13 </ng-template> 13 </ng-template>
14 14
diff --git a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts
index bb051d00f..e491edaca 100644
--- a/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts
+++ b/client/src/app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.ts
@@ -39,7 +39,7 @@ export class VideoBlacklistListComponent extends RestTable implements OnInit {
39 } 39 }
40 40
41 ngOnInit () { 41 ngOnInit () {
42 this.loadSort() 42 this.initialize()
43 } 43 }
44 44
45 getVideoUrl (videoBlacklist: VideoBlacklist) { 45 getVideoUrl (videoBlacklist: VideoBlacklist) {
diff --git a/client/src/app/+admin/users/index.ts b/client/src/app/+admin/users/index.ts
index efcd0d9cb..156e54d89 100644
--- a/client/src/app/+admin/users/index.ts
+++ b/client/src/app/+admin/users/index.ts
@@ -1,4 +1,3 @@
1export * from './shared'
2export * from './user-edit' 1export * from './user-edit'
3export * from './user-list' 2export * from './user-list'
4export * from './users.component' 3export * from './users.component'
diff --git a/client/src/app/+admin/users/shared/index.ts b/client/src/app/+admin/users/shared/index.ts
deleted file mode 100644
index 1f1302dc5..000000000
--- a/client/src/app/+admin/users/shared/index.ts
+++ /dev/null
@@ -1 +0,0 @@
1export * from './user.service'
diff --git a/client/src/app/+admin/users/shared/user.service.ts b/client/src/app/+admin/users/shared/user.service.ts
deleted file mode 100644
index 470beef08..000000000
--- a/client/src/app/+admin/users/shared/user.service.ts
+++ /dev/null
@@ -1,96 +0,0 @@
1import { catchError, map } from 'rxjs/operators'
2import { HttpClient, HttpParams } from '@angular/common/http'
3import { Injectable } from '@angular/core'
4import { BytesPipe } from 'ngx-pipes'
5import { SortMeta } from 'primeng/components/common/sortmeta'
6import { Observable } from 'rxjs'
7import { ResultList, UserCreate, UserUpdate, User, UserRole } from '../../../../../../shared'
8import { environment } from '../../../../environments/environment'
9import { RestExtractor, RestPagination, RestService } from '../../../shared'
10import { I18n } from '@ngx-translate/i18n-polyfill'
11
12@Injectable()
13export class UserService {
14 private static BASE_USERS_URL = environment.apiUrl + '/api/v1/users/'
15 private bytesPipe = new BytesPipe()
16
17 constructor (
18 private authHttp: HttpClient,
19 private restService: RestService,
20 private restExtractor: RestExtractor,
21 private i18n: I18n
22 ) { }
23
24 addUser (userCreate: UserCreate) {
25 return this.authHttp.post(UserService.BASE_USERS_URL, userCreate)
26 .pipe(
27 map(this.restExtractor.extractDataBool),
28 catchError(err => this.restExtractor.handleError(err))
29 )
30 }
31
32 updateUser (userId: number, userUpdate: UserUpdate) {
33 return this.authHttp.put(UserService.BASE_USERS_URL + userId, userUpdate)
34 .pipe(
35 map(this.restExtractor.extractDataBool),
36 catchError(err => this.restExtractor.handleError(err))
37 )
38 }
39
40 getUser (userId: number) {
41 return this.authHttp.get<User>(UserService.BASE_USERS_URL + userId)
42 .pipe(catchError(err => this.restExtractor.handleError(err)))
43 }
44
45 getUsers (pagination: RestPagination, sort: SortMeta): Observable<ResultList<User>> {
46 let params = new HttpParams()
47 params = this.restService.addRestGetParams(params, pagination, sort)
48
49 return this.authHttp.get<ResultList<User>>(UserService.BASE_USERS_URL, { params })
50 .pipe(
51 map(res => this.restExtractor.convertResultListDateToHuman(res)),
52 map(res => this.restExtractor.applyToResultListData(res, this.formatUser.bind(this))),
53 catchError(err => this.restExtractor.handleError(err))
54 )
55 }
56
57 removeUser (user: User) {
58 return this.authHttp.delete(UserService.BASE_USERS_URL + user.id)
59 .pipe(catchError(err => this.restExtractor.handleError(err)))
60 }
61
62 banUser (user: User, reason?: string) {
63 const body = reason ? { reason } : {}
64
65 return this.authHttp.post(UserService.BASE_USERS_URL + user.id + '/block', body)
66 .pipe(catchError(err => this.restExtractor.handleError(err)))
67 }
68
69 unbanUser (user: User) {
70 return this.authHttp.post(UserService.BASE_USERS_URL + user.id + '/unblock', {})
71 .pipe(catchError(err => this.restExtractor.handleError(err)))
72 }
73
74 private formatUser (user: User) {
75 let videoQuota
76 if (user.videoQuota === -1) {
77 videoQuota = this.i18n('Unlimited')
78 } else {
79 videoQuota = this.bytesPipe.transform(user.videoQuota, 0)
80 }
81
82 const videoQuotaUsed = this.bytesPipe.transform(user.videoQuotaUsed, 0)
83
84 const roleLabels: { [ id in UserRole ]: string } = {
85 [UserRole.USER]: this.i18n('User'),
86 [UserRole.ADMINISTRATOR]: this.i18n('Administrator'),
87 [UserRole.MODERATOR]: this.i18n('Moderator')
88 }
89
90 return Object.assign(user, {
91 roleLabel: roleLabels[user.role],
92 videoQuota,
93 videoQuotaUsed
94 })
95 }
96}
diff --git a/client/src/app/+admin/users/user-edit/user-create.component.ts b/client/src/app/+admin/users/user-edit/user-create.component.ts
index 132e280b9..dd8e4efd5 100644
--- a/client/src/app/+admin/users/user-edit/user-create.component.ts
+++ b/client/src/app/+admin/users/user-edit/user-create.component.ts
@@ -1,7 +1,6 @@
1import { Component, OnInit } from '@angular/core' 1import { Component, OnInit } from '@angular/core'
2import { Router } from '@angular/router' 2import { Router } from '@angular/router'
3import { NotificationsService } from 'angular2-notifications' 3import { NotificationsService } from 'angular2-notifications'
4import { UserService } from '../shared'
5import { ServerService } from '../../../core' 4import { ServerService } from '../../../core'
6import { UserCreate, UserRole } from '../../../../../../shared' 5import { UserCreate, UserRole } from '../../../../../../shared'
7import { UserEdit } from './user-edit' 6import { UserEdit } from './user-edit'
@@ -9,6 +8,7 @@ import { I18n } from '@ngx-translate/i18n-polyfill'
9import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' 8import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service'
10import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service' 9import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service'
11import { ConfigService } from '@app/+admin/config/shared/config.service' 10import { ConfigService } from '@app/+admin/config/shared/config.service'
11import { UserService } from '@app/shared'
12 12
13@Component({ 13@Component({
14 selector: 'my-user-create', 14 selector: 'my-user-create',
diff --git a/client/src/app/+admin/users/user-edit/user-edit.ts b/client/src/app/+admin/users/user-edit/user-edit.ts
index 07b087b5b..99ce5804b 100644
--- a/client/src/app/+admin/users/user-edit/user-edit.ts
+++ b/client/src/app/+admin/users/user-edit/user-edit.ts
@@ -1,7 +1,6 @@
1import { ServerService } from '../../../core' 1import { ServerService } from '../../../core'
2import { FormReactive } from '../../../shared' 2import { FormReactive } from '../../../shared'
3import { USER_ROLE_LABELS, VideoResolution } from '../../../../../../shared' 3import { USER_ROLE_LABELS, VideoResolution } from '../../../../../../shared'
4import { EditCustomConfigComponent } from '../../../+admin/config/edit-custom-config/'
5import { ConfigService } from '@app/+admin/config/shared/config.service' 4import { ConfigService } from '@app/+admin/config/shared/config.service'
6 5
7export abstract class UserEdit extends FormReactive { 6export abstract class UserEdit extends FormReactive {
diff --git a/client/src/app/+admin/users/user-edit/user-update.component.ts b/client/src/app/+admin/users/user-edit/user-update.component.ts
index 9eb91ac95..cd3885a99 100644
--- a/client/src/app/+admin/users/user-edit/user-update.component.ts
+++ b/client/src/app/+admin/users/user-edit/user-update.component.ts
@@ -2,7 +2,6 @@ import { Component, OnDestroy, OnInit } from '@angular/core'
2import { ActivatedRoute, Router } from '@angular/router' 2import { ActivatedRoute, Router } from '@angular/router'
3import { Subscription } from 'rxjs' 3import { Subscription } from 'rxjs'
4import { NotificationsService } from 'angular2-notifications' 4import { NotificationsService } from 'angular2-notifications'
5import { UserService } from '../shared'
6import { ServerService } from '../../../core' 5import { ServerService } from '../../../core'
7import { UserEdit } from './user-edit' 6import { UserEdit } from './user-edit'
8import { User, UserUpdate } from '../../../../../../shared' 7import { User, UserUpdate } from '../../../../../../shared'
@@ -10,6 +9,7 @@ import { I18n } from '@ngx-translate/i18n-polyfill'
10import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' 9import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service'
11import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service' 10import { UserValidatorsService } from '@app/shared/forms/form-validators/user-validators.service'
12import { ConfigService } from '@app/+admin/config/shared/config.service' 11import { ConfigService } from '@app/+admin/config/shared/config.service'
12import { UserService } from '@app/shared'
13 13
14@Component({ 14@Component({
15 selector: 'my-user-update', 15 selector: 'my-user-update',
diff --git a/client/src/app/+admin/users/user-list/user-list.component.html b/client/src/app/+admin/users/user-list/user-list.component.html
index bb1b26442..eb8d30e17 100644
--- a/client/src/app/+admin/users/user-list/user-list.component.html
+++ b/client/src/app/+admin/users/user-list/user-list.component.html
@@ -10,9 +10,32 @@
10<p-table 10<p-table
11 [value]="users" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage" 11 [value]="users" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage"
12 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id" 12 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)" dataKey="id"
13 [(selection)]="selectedUsers"
13> 14>
15 <ng-template pTemplate="caption">
16 <div class="caption">
17 <div>
18 <my-action-dropdown
19 *ngIf="isInSelectionMode()" i18n-label label="Batch actions" theme="orange"
20 [actions]="bulkUserActions" [entry]="selectedUsers"
21 >
22 </my-action-dropdown>
23 </div>
24
25 <div>
26 <input
27 type="text" name="table-filter" id="table-filter" i18n-placeholder placeholder="Filter..."
28 (keyup)="onSearch($event.target.value)"
29 >
30 </div>
31 </div>
32 </ng-template>
33
14 <ng-template pTemplate="header"> 34 <ng-template pTemplate="header">
15 <tr> 35 <tr>
36 <th style="width: 40px">
37 <p-tableHeaderCheckbox></p-tableHeaderCheckbox>
38 </th>
16 <th style="width: 40px"></th> 39 <th style="width: 40px"></th>
17 <th i18n pSortableColumn="username">Username <p-sortIcon field="username"></p-sortIcon></th> 40 <th i18n pSortableColumn="username">Username <p-sortIcon field="username"></p-sortIcon></th>
18 <th i18n>Email</th> 41 <th i18n>Email</th>
@@ -25,22 +48,30 @@
25 48
26 <ng-template pTemplate="body" let-expanded="expanded" let-user> 49 <ng-template pTemplate="body" let-expanded="expanded" let-user>
27 50
28 <tr [ngClass]="{ banned: user.blocked }"> 51 <tr [pSelectableRow]="user" [ngClass]="{ banned: user.blocked }">
52 <td>
53 <p-tableCheckbox [value]="user"></p-tableCheckbox>
54 </td>
55
29 <td> 56 <td>
30 <span *ngIf="user.blockedReason" class="expander" [pRowToggler]="user"> 57 <span *ngIf="user.blockedReason" class="expander" [pRowToggler]="user">
31 <i [ngClass]="expanded ? 'glyphicon glyphicon-menu-down' : 'glyphicon glyphicon-menu-right'"></i> 58 <i [ngClass]="expanded ? 'glyphicon glyphicon-menu-down' : 'glyphicon glyphicon-menu-right'"></i>
32 </span> 59 </span>
33 </td> 60 </td>
61
34 <td> 62 <td>
35 {{ user.username }} 63 <a i18n-title title="Go to the account page" target="_blank" rel="noopener noreferrer" [routerLink]="[ '/accounts/' + user.username ]">
36 <span *ngIf="user.blocked" class="banned-info">(banned)</span> 64 {{ user.username }}
65 <span i18n *ngIf="user.blocked" class="banned-info">(banned)</span>
66 </a>
37 </td> 67 </td>
38 <td>{{ user.email }}</td> 68 <td>{{ user.email }}</td>
39 <td>{{ user.videoQuotaUsed }} / {{ user.videoQuota }}</td> 69 <td>{{ user.videoQuotaUsed }} / {{ user.videoQuota }}</td>
40 <td>{{ user.roleLabel }}</td> 70 <td>{{ user.roleLabel }}</td>
41 <td>{{ user.createdAt }}</td> 71 <td>{{ user.createdAt }}</td>
42 <td class="action-cell"> 72 <td class="action-cell">
43 <my-action-dropdown i18n-label label="Actions" [actions]="userActions" [entry]="user"></my-action-dropdown> 73 <my-user-moderation-dropdown *ngIf="!isInSelectionMode()" [user]="user" (userChanged)="onUserChanged()" (userDeleted)="onUserChanged()">
74 </my-user-moderation-dropdown>
44 </td> 75 </td>
45 </tr> 76 </tr>
46 </ng-template> 77 </ng-template>
@@ -55,4 +86,4 @@
55 </ng-template> 86 </ng-template>
56</p-table> 87</p-table>
57 88
58<my-user-ban-modal #userBanModal (userBanned)="onUserBanned()"></my-user-ban-modal> \ No newline at end of file 89<my-user-ban-modal #userBanModal (userBanned)="onUsersBanned()"></my-user-ban-modal>
diff --git a/client/src/app/+admin/users/user-list/user-list.component.scss b/client/src/app/+admin/users/user-list/user-list.component.scss
index 47291918d..f235769f0 100644
--- a/client/src/app/+admin/users/user-list/user-list.component.scss
+++ b/client/src/app/+admin/users/user-list/user-list.component.scss
@@ -15,4 +15,12 @@ tr.banned {
15 15
16.ban-reason-label { 16.ban-reason-label {
17 font-weight: $font-semibold; 17 font-weight: $font-semibold;
18}
19
20.caption {
21 justify-content: space-between;
22
23 input {
24 @include peertube-input-text(250px);
25 }
18} \ No newline at end of file 26} \ No newline at end of file
diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts
index 100ffc00e..3859af9ff 100644
--- a/client/src/app/+admin/users/user-list/user-list.component.ts
+++ b/client/src/app/+admin/users/user-list/user-list.component.ts
@@ -2,13 +2,11 @@ import { Component, OnInit, ViewChild } from '@angular/core'
2import { NotificationsService } from 'angular2-notifications' 2import { NotificationsService } from 'angular2-notifications'
3import { SortMeta } from 'primeng/components/common/sortmeta' 3import { SortMeta } from 'primeng/components/common/sortmeta'
4import { ConfirmService } from '../../../core' 4import { ConfirmService } from '../../../core'
5import { RestPagination, RestTable } from '../../../shared' 5import { RestPagination, RestTable, UserService } from '../../../shared'
6import { UserService } from '../shared'
7import { I18n } from '@ngx-translate/i18n-polyfill' 6import { I18n } from '@ngx-translate/i18n-polyfill'
8import { DropdownAction } from '@app/shared/buttons/action-dropdown.component'
9import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
10import { UserBanModalComponent } from '@app/+admin/users/user-list/user-ban-modal.component'
11import { User } from '../../../../../../shared' 7import { User } from '../../../../../../shared'
8import { UserBanModalComponent } from '@app/shared/moderation'
9import { DropdownAction } from '@app/shared/buttons/action-dropdown.component'
12 10
13@Component({ 11@Component({
14 selector: 'my-user-list', 12 selector: 'my-user-list',
@@ -23,9 +21,9 @@ export class UserListComponent extends RestTable implements OnInit {
23 rowsPerPage = 10 21 rowsPerPage = 10
24 sort: SortMeta = { field: 'createdAt', order: 1 } 22 sort: SortMeta = { field: 'createdAt', order: 1 }
25 pagination: RestPagination = { count: this.rowsPerPage, start: 0 } 23 pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
26 userActions: DropdownAction<User>[] = []
27 24
28 private openedModal: NgbModalRef 25 selectedUsers: User[] = []
26 bulkUserActions: DropdownAction<User[]>[] = []
29 27
30 constructor ( 28 constructor (
31 private notificationsService: NotificationsService, 29 private notificationsService: NotificationsService,
@@ -34,84 +32,80 @@ export class UserListComponent extends RestTable implements OnInit {
34 private i18n: I18n 32 private i18n: I18n
35 ) { 33 ) {
36 super() 34 super()
35 }
37 36
38 this.userActions = [ 37 ngOnInit () {
39 { 38 this.initialize()
40 label: this.i18n('Edit'), 39
41 linkBuilder: this.getRouterUserEditLink 40 this.bulkUserActions = [
42 },
43 { 41 {
44 label: this.i18n('Delete'), 42 label: this.i18n('Delete'),
45 handler: user => this.removeUser(user) 43 handler: users => this.removeUsers(users)
46 }, 44 },
47 { 45 {
48 label: this.i18n('Ban'), 46 label: this.i18n('Ban'),
49 handler: user => this.openBanUserModal(user), 47 handler: users => this.openBanUserModal(users),
50 isDisplayed: user => !user.blocked 48 isDisplayed: users => users.every(u => u.blocked === false)
51 }, 49 },
52 { 50 {
53 label: this.i18n('Unban'), 51 label: this.i18n('Unban'),
54 handler: user => this.unbanUser(user), 52 handler: users => this.unbanUsers(users),
55 isDisplayed: user => user.blocked 53 isDisplayed: users => users.every(u => u.blocked === true)
56 } 54 }
57 ] 55 ]
58 } 56 }
59 57
60 ngOnInit () { 58 openBanUserModal (users: User[]) {
61 this.loadSort() 59 for (const user of users) {
62 } 60 if (user.username === 'root') {
63 61 this.notificationsService.error(this.i18n('Error'), this.i18n('You cannot ban root.'))
64 hideBanUserModal () { 62 return
65 this.openedModal.close() 63 }
66 }
67
68 openBanUserModal (user: User) {
69 if (user.username === 'root') {
70 this.notificationsService.error(this.i18n('Error'), this.i18n('You cannot ban root.'))
71 return
72 } 64 }
73 65
74 this.userBanModal.openModal(user) 66 this.userBanModal.openModal(users)
75 } 67 }
76 68
77 onUserBanned () { 69 onUsersBanned () {
78 this.loadData() 70 this.loadData()
79 } 71 }
80 72
81 async unbanUser (user: User) { 73 async unbanUsers (users: User[]) {
82 const message = this.i18n('Do you really want to unban {{username}}?', { username: user.username }) 74 const message = this.i18n('Do you really want to unban {{num}} users?', { num: users.length })
75
83 const res = await this.confirmService.confirm(message, this.i18n('Unban')) 76 const res = await this.confirmService.confirm(message, this.i18n('Unban'))
84 if (res === false) return 77 if (res === false) return
85 78
86 this.userService.unbanUser(user) 79 this.userService.unbanUsers(users)
87 .subscribe( 80 .subscribe(
88 () => { 81 () => {
89 this.notificationsService.success( 82 const message = this.i18n('{{num}} users unbanned.', { num: users.length })
90 this.i18n('Success'), 83
91 this.i18n('User {{username}} unbanned.', { username: user.username }) 84 this.notificationsService.success(this.i18n('Success'), message)
92 ) 85 this.loadData()
93 this.loadData() 86 },
94 }, 87
95 88 err => this.notificationsService.error(this.i18n('Error'), err.message)
96 err => this.notificationsService.error(this.i18n('Error'), err.message) 89 )
97 )
98 } 90 }
99 91
100 async removeUser (user: User) { 92 async removeUsers (users: User[]) {
101 if (user.username === 'root') { 93 for (const user of users) {
102 this.notificationsService.error(this.i18n('Error'), this.i18n('You cannot delete root.')) 94 if (user.username === 'root') {
103 return 95 this.notificationsService.error(this.i18n('Error'), this.i18n('You cannot delete root.'))
96 return
97 }
104 } 98 }
105 99
106 const message = this.i18n('If you remove this user, you will not be able to create another with the same username!') 100 const message = this.i18n('If you remove these users, you will not be able to create others with the same username!')
107 const res = await this.confirmService.confirm(message, this.i18n('Delete')) 101 const res = await this.confirmService.confirm(message, this.i18n('Delete'))
108 if (res === false) return 102 if (res === false) return
109 103
110 this.userService.removeUser(user).subscribe( 104 this.userService.removeUser(users).subscribe(
111 () => { 105 () => {
112 this.notificationsService.success( 106 this.notificationsService.success(
113 this.i18n('Success'), 107 this.i18n('Success'),
114 this.i18n('User {{username}} deleted.', { username: user.username }) 108 this.i18n('{{num}} users deleted.', { num: users.length })
115 ) 109 )
116 this.loadData() 110 this.loadData()
117 }, 111 },
@@ -120,12 +114,14 @@ export class UserListComponent extends RestTable implements OnInit {
120 ) 114 )
121 } 115 }
122 116
123 getRouterUserEditLink (user: User) { 117 isInSelectionMode () {
124 return [ '/admin', 'users', 'update', user.id ] 118 return this.selectedUsers.length !== 0
125 } 119 }
126 120
127 protected loadData () { 121 protected loadData () {
128 this.userService.getUsers(this.pagination, this.sort) 122 this.selectedUsers = []
123
124 this.userService.getUsers(this.pagination, this.sort, this.search)
129 .subscribe( 125 .subscribe(
130 resultList => { 126 resultList => {
131 this.users = resultList.data 127 this.users = resultList.data
diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.html b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.html
new file mode 100644
index 000000000..a96a11f5e
--- /dev/null
+++ b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.html
@@ -0,0 +1,26 @@
1<div class="admin-sub-header">
2 <div i18n class="form-sub-title">Muted accounts</div>
3</div>
4
5<p-table
6 [value]="blockedAccounts" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage"
7 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)"
8>
9
10 <ng-template pTemplate="header">
11 <tr>
12 <th i18n>Account</th>
13 <th i18n pSortableColumn="createdAt">Muted at <p-sortIcon field="createdAt"></p-sortIcon></th>
14 </tr>
15 </ng-template>
16
17 <ng-template pTemplate="body" let-accountBlock>
18 <tr>
19 <td>{{ accountBlock.blockedAccount.nameWithHost }}</td>
20 <td>{{ accountBlock.createdAt }}</td>
21 <td class="action-cell">
22 <button class="unblock-button" (click)="unblockAccount(accountBlock)" i18n>Unmute</button>
23 </td>
24 </tr>
25 </ng-template>
26</p-table>
diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.scss b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.scss
new file mode 100644
index 000000000..6028b75ea
--- /dev/null
+++ b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.scss
@@ -0,0 +1,7 @@
1@import '_variables';
2@import '_mixins';
3
4.unblock-button {
5 @include peertube-button;
6 @include grey-button;
7} \ No newline at end of file
diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts
new file mode 100644
index 000000000..fbad28410
--- /dev/null
+++ b/client/src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts
@@ -0,0 +1,59 @@
1import { Component, OnInit } from '@angular/core'
2import { NotificationsService } from 'angular2-notifications'
3import { I18n } from '@ngx-translate/i18n-polyfill'
4import { RestPagination, RestTable } from '@app/shared'
5import { SortMeta } from 'primeng/components/common/sortmeta'
6import { BlocklistService, AccountBlock } from '@app/shared/blocklist'
7
8@Component({
9 selector: 'my-account-blocklist',
10 styleUrls: [ './my-account-blocklist.component.scss' ],
11 templateUrl: './my-account-blocklist.component.html'
12})
13export class MyAccountBlocklistComponent extends RestTable implements OnInit {
14 blockedAccounts: AccountBlock[] = []
15 totalRecords = 0
16 rowsPerPage = 10
17 sort: SortMeta = { field: 'createdAt', order: -1 }
18 pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
19
20 constructor (
21 private notificationsService: NotificationsService,
22 private blocklistService: BlocklistService,
23 private i18n: I18n
24 ) {
25 super()
26 }
27
28 ngOnInit () {
29 this.initialize()
30 }
31
32 unblockAccount (accountBlock: AccountBlock) {
33 const blockedAccount = accountBlock.blockedAccount
34
35 this.blocklistService.unblockAccountByUser(blockedAccount)
36 .subscribe(
37 () => {
38 this.notificationsService.success(
39 this.i18n('Success'),
40 this.i18n('Account {{nameWithHost}} unmuted.', { nameWithHost: blockedAccount.nameWithHost })
41 )
42
43 this.loadData()
44 }
45 )
46 }
47
48 protected loadData () {
49 return this.blocklistService.getUserAccountBlocklist(this.pagination, this.sort)
50 .subscribe(
51 resultList => {
52 this.blockedAccounts = resultList.data
53 this.totalRecords = resultList.total
54 },
55
56 err => this.notificationsService.error(this.i18n('Error'), err.message)
57 )
58 }
59}
diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html
new file mode 100644
index 000000000..329cfb08f
--- /dev/null
+++ b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html
@@ -0,0 +1,27 @@
1<div class="admin-sub-header">
2 <div i18n class="form-sub-title">Muted instances</div>
3</div>
4
5<p-table
6 [value]="blockedServers" [lazy]="true" [paginator]="true" [totalRecords]="totalRecords" [rows]="rowsPerPage"
7 [sortField]="sort.field" [sortOrder]="sort.order" (onLazyLoad)="loadLazy($event)"
8>
9
10 <ng-template pTemplate="header">
11 <tr>
12 <th i18n>Instance</th>
13 <th i18n pSortableColumn="createdAt">Muted at <p-sortIcon field="createdAt"></p-sortIcon></th>
14 <th></th>
15 </tr>
16 </ng-template>
17
18 <ng-template pTemplate="body" let-serverBlock>
19 <tr>
20 <td>{{ serverBlock.blockedServer.host }}</td>
21 <td>{{ serverBlock.createdAt }}</td>
22 <td class="action-cell">
23 <button class="unblock-button" (click)="unblockServer(serverBlock)" i18n>Unmute</button>
24 </td>
25 </tr>
26 </ng-template>
27</p-table>
diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.scss b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.scss
new file mode 100644
index 000000000..6028b75ea
--- /dev/null
+++ b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.scss
@@ -0,0 +1,7 @@
1@import '_variables';
2@import '_mixins';
3
4.unblock-button {
5 @include peertube-button;
6 @include grey-button;
7} \ No newline at end of file
diff --git a/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts
new file mode 100644
index 000000000..b411d6926
--- /dev/null
+++ b/client/src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts
@@ -0,0 +1,60 @@
1import { Component, OnInit } from '@angular/core'
2import { NotificationsService } from 'angular2-notifications'
3import { I18n } from '@ngx-translate/i18n-polyfill'
4import { RestPagination, RestTable } from '@app/shared'
5import { SortMeta } from 'primeng/components/common/sortmeta'
6import { ServerBlock } from '../../../../../shared'
7import { BlocklistService } from '@app/shared/blocklist'
8
9@Component({
10 selector: 'my-account-server-blocklist',
11 styleUrls: [ './my-account-server-blocklist.component.scss' ],
12 templateUrl: './my-account-server-blocklist.component.html'
13})
14export class MyAccountServerBlocklistComponent extends RestTable implements OnInit {
15 blockedServers: ServerBlock[] = []
16 totalRecords = 0
17 rowsPerPage = 10
18 sort: SortMeta = { field: 'createdAt', order: -1 }
19 pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
20
21 constructor (
22 private notificationsService: NotificationsService,
23 private blocklistService: BlocklistService,
24 private i18n: I18n
25 ) {
26 super()
27 }
28
29 ngOnInit () {
30 this.initialize()
31 }
32
33 unblockServer (serverBlock: ServerBlock) {
34 const host = serverBlock.blockedServer.host
35
36 this.blocklistService.unblockServerByUser(host)
37 .subscribe(
38 () => {
39 this.notificationsService.success(
40 this.i18n('Success'),
41 this.i18n('Instance {{host}} unmuted.', { host })
42 )
43
44 this.loadData()
45 }
46 )
47 }
48
49 protected loadData () {
50 return this.blocklistService.getUserServerBlocklist(this.pagination, this.sort)
51 .subscribe(
52 resultList => {
53 this.blockedServers = resultList.data
54 this.totalRecords = resultList.total
55 },
56
57 err => this.notificationsService.error(this.i18n('Error'), err.message)
58 )
59 }
60}
diff --git a/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts b/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts
index 13517b9f4..0b51ac13c 100644
--- a/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts
+++ b/client/src/app/+my-account/my-account-ownership/my-account-ownership.component.ts
@@ -31,19 +31,7 @@ export class MyAccountOwnershipComponent extends RestTable implements OnInit {
31 } 31 }
32 32
33 ngOnInit () { 33 ngOnInit () {
34 this.loadSort() 34 this.initialize()
35 }
36
37 protected loadData () {
38 return this.videoOwnershipService.getOwnershipChanges(this.pagination, this.sort)
39 .subscribe(
40 resultList => {
41 this.videoChangeOwnerships = resultList.data
42 this.totalRecords = resultList.total
43 },
44
45 err => this.notificationsService.error(this.i18n('Error'), err.message)
46 )
47 } 35 }
48 36
49 createByString (account: Account) { 37 createByString (account: Account) {
@@ -65,4 +53,16 @@ export class MyAccountOwnershipComponent extends RestTable implements OnInit {
65 err => this.notificationsService.error(this.i18n('Error'), err.message) 53 err => this.notificationsService.error(this.i18n('Error'), err.message)
66 ) 54 )
67 } 55 }
56
57 protected loadData () {
58 return this.videoOwnershipService.getOwnershipChanges(this.pagination, this.sort)
59 .subscribe(
60 resultList => {
61 this.videoChangeOwnerships = resultList.data
62 this.totalRecords = resultList.total
63 },
64
65 err => this.notificationsService.error(this.i18n('Error'), err.message)
66 )
67 }
68} 68}
diff --git a/client/src/app/+my-account/my-account-routing.module.ts b/client/src/app/+my-account/my-account-routing.module.ts
index 4b2168e35..601e517b4 100644
--- a/client/src/app/+my-account/my-account-routing.module.ts
+++ b/client/src/app/+my-account/my-account-routing.module.ts
@@ -11,6 +11,8 @@ import { MyAccountVideoChannelUpdateComponent } from '@app/+my-account/my-accoun
11import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-video-imports/my-account-video-imports.component' 11import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-video-imports/my-account-video-imports.component'
12import { MyAccountSubscriptionsComponent } from '@app/+my-account/my-account-subscriptions/my-account-subscriptions.component' 12import { MyAccountSubscriptionsComponent } from '@app/+my-account/my-account-subscriptions/my-account-subscriptions.component'
13import { MyAccountOwnershipComponent } from '@app/+my-account/my-account-ownership/my-account-ownership.component' 13import { MyAccountOwnershipComponent } from '@app/+my-account/my-account-ownership/my-account-ownership.component'
14import { MyAccountBlocklistComponent } from '@app/+my-account/my-account-blocklist/my-account-blocklist.component'
15import { MyAccountServerBlocklistComponent } from '@app/+my-account/my-account-blocklist/my-account-server-blocklist.component'
14 16
15const myAccountRoutes: Routes = [ 17const myAccountRoutes: Routes = [
16 { 18 {
@@ -94,6 +96,24 @@ const myAccountRoutes: Routes = [
94 title: 'Ownership changes' 96 title: 'Ownership changes'
95 } 97 }
96 } 98 }
99 },
100 {
101 path: 'blocklist/accounts',
102 component: MyAccountBlocklistComponent,
103 data: {
104 meta: {
105 title: 'Muted accounts'
106 }
107 }
108 },
109 {
110 path: 'blocklist/servers',
111 component: MyAccountServerBlocklistComponent,
112 data: {
113 meta: {
114 title: 'Muted instances'
115 }
116 }
97 } 117 }
98 ] 118 ]
99 } 119 }
diff --git a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html
index 96629940f..8be8a66cc 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html
+++ b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html
@@ -16,6 +16,11 @@
16 </div> 16 </div>
17 17
18 <my-peertube-checkbox 18 <my-peertube-checkbox
19 inputName="webTorrentEnabled" formControlName="webTorrentEnabled"
20 i18n-labelText labelText="Use WebTorrent to exchange parts of the video with others"
21 ></my-peertube-checkbox>
22
23 <my-peertube-checkbox
19 inputName="autoPlayVideo" formControlName="autoPlayVideo" 24 inputName="autoPlayVideo" formControlName="autoPlayVideo"
20 i18n-labelText labelText="Automatically plays video" 25 i18n-labelText labelText="Automatically plays video"
21 ></my-peertube-checkbox> 26 ></my-peertube-checkbox>
diff --git a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts
index 7089b2057..6c9a7ce75 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts
+++ b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts
@@ -29,12 +29,14 @@ export class MyAccountVideoSettingsComponent extends FormReactive implements OnI
29 ngOnInit () { 29 ngOnInit () {
30 this.buildForm({ 30 this.buildForm({
31 nsfwPolicy: null, 31 nsfwPolicy: null,
32 webTorrentEnabled: null,
32 autoPlayVideo: null 33 autoPlayVideo: null
33 }) 34 })
34 35
35 this.userInformationLoaded.subscribe(() => { 36 this.userInformationLoaded.subscribe(() => {
36 this.form.patchValue({ 37 this.form.patchValue({
37 nsfwPolicy: this.user.nsfwPolicy, 38 nsfwPolicy: this.user.nsfwPolicy,
39 webTorrentEnabled: this.user.webTorrentEnabled,
38 autoPlayVideo: this.user.autoPlayVideo === true 40 autoPlayVideo: this.user.autoPlayVideo === true
39 }) 41 })
40 }) 42 })
@@ -42,9 +44,11 @@ export class MyAccountVideoSettingsComponent extends FormReactive implements OnI
42 44
43 updateDetails () { 45 updateDetails () {
44 const nsfwPolicy = this.form.value['nsfwPolicy'] 46 const nsfwPolicy = this.form.value['nsfwPolicy']
47 const webTorrentEnabled = this.form.value['webTorrentEnabled']
45 const autoPlayVideo = this.form.value['autoPlayVideo'] 48 const autoPlayVideo = this.form.value['autoPlayVideo']
46 const details: UserUpdateMe = { 49 const details: UserUpdateMe = {
47 nsfwPolicy, 50 nsfwPolicy,
51 webTorrentEnabled,
48 autoPlayVideo 52 autoPlayVideo
49 } 53 }
50 54
diff --git a/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts b/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts
index 56697030b..5d43956f2 100644
--- a/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts
+++ b/client/src/app/+my-account/my-account-video-channels/my-account-video-channel-update.component.ts
@@ -1,4 +1,4 @@
1import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core' 1import { Component, OnDestroy, OnInit } from '@angular/core'
2import { ActivatedRoute, Router } from '@angular/router' 2import { ActivatedRoute, Router } from '@angular/router'
3import { NotificationsService } from 'angular2-notifications' 3import { NotificationsService } from 'angular2-notifications'
4import { MyAccountVideoChannelEdit } from './my-account-video-channel-edit' 4import { MyAccountVideoChannelEdit } from './my-account-video-channel-edit'
@@ -17,11 +17,9 @@ import { VideoChannelValidatorsService } from '@app/shared/forms/form-validators
17 styleUrls: [ './my-account-video-channel-edit.component.scss' ] 17 styleUrls: [ './my-account-video-channel-edit.component.scss' ]
18}) 18})
19export class MyAccountVideoChannelUpdateComponent extends MyAccountVideoChannelEdit implements OnInit, OnDestroy { 19export class MyAccountVideoChannelUpdateComponent extends MyAccountVideoChannelEdit implements OnInit, OnDestroy {
20 @ViewChild('avatarfileInput') avatarfileInput
21
22 error: string 20 error: string
23
24 videoChannelToUpdate: VideoChannel 21 videoChannelToUpdate: VideoChannel
22
25 private paramsSub: Subscription 23 private paramsSub: Subscription
26 24
27 constructor ( 25 constructor (
diff --git a/client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.ts b/client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.ts
index d9fb20446..5b920c98d 100644
--- a/client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.ts
+++ b/client/src/app/+my-account/my-account-video-imports/my-account-video-imports.component.ts
@@ -27,7 +27,7 @@ export class MyAccountVideoImportsComponent extends RestTable implements OnInit
27 } 27 }
28 28
29 ngOnInit () { 29 ngOnInit () {
30 this.loadSort() 30 this.initialize()
31 } 31 }
32 32
33 isVideoImportSuccess (videoImport: VideoImport) { 33 isVideoImportSuccess (videoImport: VideoImport) {
diff --git a/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts b/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts
index 7560f0128..2d88ac760 100644
--- a/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts
+++ b/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts
@@ -169,7 +169,7 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni
169 169
170 private spliceVideosById (id: number) { 170 private spliceVideosById (id: number) {
171 for (const key of Object.keys(this.loadedPages)) { 171 for (const key of Object.keys(this.loadedPages)) {
172 const videos = this.loadedPages[ key ] 172 const videos: Video[] = this.loadedPages[ key ]
173 const index = videos.findIndex(v => v.id === id) 173 const index = videos.findIndex(v => v.id === id)
174 174
175 if (index !== -1) { 175 if (index !== -1) {
diff --git a/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.html b/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.html
index 69b198faa..7c0df850d 100644
--- a/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.html
+++ b/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.html
@@ -22,9 +22,9 @@
22 </span> 22 </span>
23 23
24 <input 24 <input
25 type="submit" i18n-value value="Submit" class="action-button-submit" 25 type="submit" i18n-value value="Submit" class="action-button-submit"
26 [disabled]="!form.valid" 26 [disabled]="!form.valid"
27 (click)="close()" 27 (click)="close()"
28 /> 28 />
29 </div> 29 </div>
30 </div> 30 </div>
diff --git a/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts b/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts
index 7437b939a..9f94f3c13 100644
--- a/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts
+++ b/client/src/app/+my-account/my-account-videos/video-change-ownership/video-change-ownership.component.ts
@@ -49,7 +49,7 @@ export class VideoChangeOwnershipComponent extends FormReactive implements OnIni
49 .catch((_) => _) // Called when closing (cancel) the modal without validating, do nothing 49 .catch((_) => _) // Called when closing (cancel) the modal without validating, do nothing
50 } 50 }
51 51
52 search (event) { 52 search (event: { query: string }) {
53 const query = event.query 53 const query = event.query
54 this.userService.autocomplete(query) 54 this.userService.autocomplete(query)
55 .subscribe( 55 .subscribe(
diff --git a/client/src/app/+my-account/my-account.component.html b/client/src/app/+my-account/my-account.component.html
index b602fd69f..41333c25a 100644
--- a/client/src/app/+my-account/my-account.component.html
+++ b/client/src/app/+my-account/my-account.component.html
@@ -19,7 +19,21 @@
19 </div> 19 </div>
20 </div> 20 </div>
21 21
22 <a i18n routerLink="/my-account/ownership" routerLinkActive="active" class="title-page">Ownership changes</a> 22 <div ngbDropdown class="misc">
23 <span role="button" class="title-page" [ngClass]="{ active: miscLabel !== '' }" ngbDropdownToggle>
24 <ng-container i18n>Misc</ng-container>
25 <ng-container *ngIf="miscLabel"> - {{ miscLabel }}</ng-container>
26 </span>
27
28 <div ngbDropdownMenu>
29 <a class="dropdown-item" i18n routerLink="/my-account/blocklist/accounts">Muted accounts</a>
30
31 <a class="dropdown-item" i18n routerLink="/my-account/blocklist/servers">Muted instances</a>
32
33 <a class="dropdown-item" i18n routerLink="/my-account/ownership">Ownership changes</a>
34 </div>
35 </div>
36
23 </div> 37 </div>
24 38
25 <div class="margin-content"> 39 <div class="margin-content">
diff --git a/client/src/app/+my-account/my-account.component.scss b/client/src/app/+my-account/my-account.component.scss
index 20b2639b5..6243c6dcf 100644
--- a/client/src/app/+my-account/my-account.component.scss
+++ b/client/src/app/+my-account/my-account.component.scss
@@ -1,4 +1,4 @@
1.my-library { 1.my-library, .misc {
2 span[role=button] { 2 span[role=button] {
3 cursor: pointer; 3 cursor: pointer;
4 } 4 }
diff --git a/client/src/app/+my-account/my-account.component.ts b/client/src/app/+my-account/my-account.component.ts
index bad60a8fb..d728caf07 100644
--- a/client/src/app/+my-account/my-account.component.ts
+++ b/client/src/app/+my-account/my-account.component.ts
@@ -13,6 +13,7 @@ import { Subscription } from 'rxjs'
13export class MyAccountComponent implements OnInit, OnDestroy { 13export class MyAccountComponent implements OnInit, OnDestroy {
14 14
15 libraryLabel = '' 15 libraryLabel = ''
16 miscLabel = ''
16 17
17 private routeSub: Subscription 18 private routeSub: Subscription
18 19
@@ -23,11 +24,11 @@ export class MyAccountComponent implements OnInit, OnDestroy {
23 ) {} 24 ) {}
24 25
25 ngOnInit () { 26 ngOnInit () {
26 this.updateLibraryLabel(this.router.url) 27 this.updateLabels(this.router.url)
27 28
28 this.routeSub = this.router.events 29 this.routeSub = this.router.events
29 .pipe(filter(event => event instanceof NavigationStart)) 30 .pipe(filter(event => event instanceof NavigationStart))
30 .subscribe((event: NavigationStart) => this.updateLibraryLabel(event.url)) 31 .subscribe((event: NavigationStart) => this.updateLabels(event.url))
31 } 32 }
32 33
33 ngOnDestroy () { 34 ngOnDestroy () {
@@ -40,7 +41,7 @@ export class MyAccountComponent implements OnInit, OnDestroy {
40 return importConfig.http.enabled || importConfig.torrent.enabled 41 return importConfig.http.enabled || importConfig.torrent.enabled
41 } 42 }
42 43
43 private updateLibraryLabel (url: string) { 44 private updateLabels (url: string) {
44 const [ path ] = url.split('?') 45 const [ path ] = url.split('?')
45 46
46 if (path.startsWith('/my-account/video-channels')) { 47 if (path.startsWith('/my-account/video-channels')) {
@@ -54,5 +55,13 @@ export class MyAccountComponent implements OnInit, OnDestroy {
54 } else { 55 } else {
55 this.libraryLabel = '' 56 this.libraryLabel = ''
56 } 57 }
58
59 if (path.startsWith('/my-account/blocklist/accounts')) {
60 this.miscLabel = this.i18n('Muted accounts')
61 } else if (path.startsWith('/my-account/blocklist/servers')) {
62 this.miscLabel = this.i18n('Muted instances')
63 } else {
64 this.miscLabel = ''
65 }
57 } 66 }
58} 67}
diff --git a/client/src/app/+my-account/my-account.module.ts b/client/src/app/+my-account/my-account.module.ts
index ad21162a8..017ebd57d 100644
--- a/client/src/app/+my-account/my-account.module.ts
+++ b/client/src/app/+my-account/my-account.module.ts
@@ -19,6 +19,8 @@ import { ActorAvatarInfoComponent } from '@app/+my-account/shared/actor-avatar-i
19import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-video-imports/my-account-video-imports.component' 19import { MyAccountVideoImportsComponent } from '@app/+my-account/my-account-video-imports/my-account-video-imports.component'
20import { MyAccountDangerZoneComponent } from '@app/+my-account/my-account-settings/my-account-danger-zone' 20import { MyAccountDangerZoneComponent } from '@app/+my-account/my-account-settings/my-account-danger-zone'
21import { MyAccountSubscriptionsComponent } from '@app/+my-account/my-account-subscriptions/my-account-subscriptions.component' 21import { MyAccountSubscriptionsComponent } from '@app/+my-account/my-account-subscriptions/my-account-subscriptions.component'
22import { MyAccountBlocklistComponent } from '@app/+my-account/my-account-blocklist/my-account-blocklist.component'
23import { MyAccountServerBlocklistComponent } from '@app/+my-account/my-account-blocklist/my-account-server-blocklist.component'
22 24
23@NgModule({ 25@NgModule({
24 imports: [ 26 imports: [
@@ -45,7 +47,9 @@ import { MyAccountSubscriptionsComponent } from '@app/+my-account/my-account-sub
45 ActorAvatarInfoComponent, 47 ActorAvatarInfoComponent,
46 MyAccountVideoImportsComponent, 48 MyAccountVideoImportsComponent,
47 MyAccountDangerZoneComponent, 49 MyAccountDangerZoneComponent,
48 MyAccountSubscriptionsComponent 50 MyAccountSubscriptionsComponent,
51 MyAccountBlocklistComponent,
52 MyAccountServerBlocklistComponent
49 ], 53 ],
50 54
51 exports: [ 55 exports: [
diff --git a/client/src/app/+my-account/shared/actor-avatar-info.component.ts b/client/src/app/+my-account/shared/actor-avatar-info.component.ts
index 7b80b1ed4..54bacc212 100644
--- a/client/src/app/+my-account/shared/actor-avatar-info.component.ts
+++ b/client/src/app/+my-account/shared/actor-avatar-info.component.ts
@@ -1,4 +1,4 @@
1import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core' 1import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core'
2import { ServerService } from '../../core/server' 2import { ServerService } from '../../core/server'
3import { NotificationsService } from 'angular2-notifications' 3import { NotificationsService } from 'angular2-notifications'
4import { VideoChannel } from '@app/shared/video-channel/video-channel.model' 4import { VideoChannel } from '@app/shared/video-channel/video-channel.model'
@@ -10,7 +10,7 @@ import { Account } from '@app/shared/account/account.model'
10 styleUrls: [ './actor-avatar-info.component.scss' ] 10 styleUrls: [ './actor-avatar-info.component.scss' ]
11}) 11})
12export class ActorAvatarInfoComponent { 12export class ActorAvatarInfoComponent {
13 @ViewChild('avatarfileInput') avatarfileInput 13 @ViewChild('avatarfileInput') avatarfileInput: ElementRef<HTMLInputElement>
14 14
15 @Input() actor: VideoChannel | Account 15 @Input() actor: VideoChannel | Account
16 16
diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts
index 7cd0fff1b..dc4d0bf6a 100644
--- a/client/src/app/app.component.ts
+++ b/client/src/app/app.component.ts
@@ -4,9 +4,10 @@ import { GuardsCheckStart, NavigationEnd, Router } from '@angular/router'
4import { AuthService, RedirectService, ServerService, ThemeService } from '@app/core' 4import { AuthService, RedirectService, ServerService, ThemeService } from '@app/core'
5import { is18nPath } from '../../../shared/models/i18n' 5import { is18nPath } from '../../../shared/models/i18n'
6import { ScreenService } from '@app/shared/misc/screen.service' 6import { ScreenService } from '@app/shared/misc/screen.service'
7import { skip } from 'rxjs/operators' 7import { skip, debounceTime } from 'rxjs/operators'
8import { HotkeysService, Hotkey } from 'angular2-hotkeys' 8import { HotkeysService, Hotkey } from 'angular2-hotkeys'
9import { I18n } from '@ngx-translate/i18n-polyfill' 9import { I18n } from '@ngx-translate/i18n-polyfill'
10import { fromEvent } from 'rxjs'
10 11
11@Component({ 12@Component({
12 selector: 'my-app', 13 selector: 'my-app',
@@ -28,6 +29,7 @@ export class AppComponent implements OnInit {
28 } 29 }
29 30
30 isMenuDisplayed = true 31 isMenuDisplayed = true
32 isMenuChangedByUser = false
31 33
32 customCSS: SafeHtml 34 customCSS: SafeHtml
33 35
@@ -165,6 +167,10 @@ export class AppComponent implements OnInit {
165 return false 167 return false
166 }, undefined, this.i18n('Toggle Dark theme')) 168 }, undefined, this.i18n('Toggle Dark theme'))
167 ]) 169 ])
170
171 fromEvent(window, 'resize')
172 .pipe(debounceTime(200))
173 .subscribe(() => this.onResize())
168 } 174 }
169 175
170 isUserLoggedIn () { 176 isUserLoggedIn () {
@@ -173,5 +179,10 @@ export class AppComponent implements OnInit {
173 179
174 toggleMenu () { 180 toggleMenu () {
175 this.isMenuDisplayed = !this.isMenuDisplayed 181 this.isMenuDisplayed = !this.isMenuDisplayed
182 this.isMenuChangedByUser = true
183 }
184
185 onResize () {
186 this.isMenuDisplayed = window.innerWidth >= 800 && !this.isMenuChangedByUser
176 } 187 }
177} 188}
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index 34e890b40..371199442 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -69,7 +69,7 @@ export function metaFactory (serverService: ServerService): MetaLoader {
69 providers: [ 69 providers: [
70 { 70 {
71 provide: TRANSLATIONS, 71 provide: TRANSLATIONS,
72 useFactory: (locale) => { 72 useFactory: (locale: string) => {
73 // On dev mode, test localization 73 // On dev mode, test localization
74 if (isOnDevLocale()) { 74 if (isOnDevLocale()) {
75 locale = buildFileLocale(getDevLocale()) 75 locale = buildFileLocale(getDevLocale())
diff --git a/client/src/app/core/auth/auth-user.model.ts b/client/src/app/core/auth/auth-user.model.ts
index 74ed1c580..acd13d9c5 100644
--- a/client/src/app/core/auth/auth-user.model.ts
+++ b/client/src/app/core/auth/auth-user.model.ts
@@ -72,6 +72,7 @@ export class AuthUser extends User {
72 EMAIL: 'email', 72 EMAIL: 'email',
73 USERNAME: 'username', 73 USERNAME: 'username',
74 NSFW_POLICY: 'nsfw_policy', 74 NSFW_POLICY: 'nsfw_policy',
75 WEBTORRENT_ENABLED: 'peertube-videojs-' + 'webtorrent_enabled',
75 AUTO_PLAY_VIDEO: 'auto_play_video' 76 AUTO_PLAY_VIDEO: 'auto_play_video'
76 } 77 }
77 78
@@ -87,6 +88,7 @@ export class AuthUser extends User {
87 email: peertubeLocalStorage.getItem(this.KEYS.EMAIL), 88 email: peertubeLocalStorage.getItem(this.KEYS.EMAIL),
88 role: parseInt(peertubeLocalStorage.getItem(this.KEYS.ROLE), 10) as UserRole, 89 role: parseInt(peertubeLocalStorage.getItem(this.KEYS.ROLE), 10) as UserRole,
89 nsfwPolicy: peertubeLocalStorage.getItem(this.KEYS.NSFW_POLICY) as NSFWPolicyType, 90 nsfwPolicy: peertubeLocalStorage.getItem(this.KEYS.NSFW_POLICY) as NSFWPolicyType,
91 webTorrentEnabled: peertubeLocalStorage.getItem(this.KEYS.WEBTORRENT_ENABLED) === 'true',
90 autoPlayVideo: peertubeLocalStorage.getItem(this.KEYS.AUTO_PLAY_VIDEO) === 'true' 92 autoPlayVideo: peertubeLocalStorage.getItem(this.KEYS.AUTO_PLAY_VIDEO) === 'true'
91 }, 93 },
92 Tokens.load() 94 Tokens.load()
@@ -101,6 +103,7 @@ export class AuthUser extends User {
101 peertubeLocalStorage.removeItem(this.KEYS.ID) 103 peertubeLocalStorage.removeItem(this.KEYS.ID)
102 peertubeLocalStorage.removeItem(this.KEYS.ROLE) 104 peertubeLocalStorage.removeItem(this.KEYS.ROLE)
103 peertubeLocalStorage.removeItem(this.KEYS.NSFW_POLICY) 105 peertubeLocalStorage.removeItem(this.KEYS.NSFW_POLICY)
106 peertubeLocalStorage.removeItem(this.KEYS.WEBTORRENT_ENABLED)
104 peertubeLocalStorage.removeItem(this.KEYS.AUTO_PLAY_VIDEO) 107 peertubeLocalStorage.removeItem(this.KEYS.AUTO_PLAY_VIDEO)
105 peertubeLocalStorage.removeItem(this.KEYS.EMAIL) 108 peertubeLocalStorage.removeItem(this.KEYS.EMAIL)
106 Tokens.flush() 109 Tokens.flush()
@@ -138,6 +141,7 @@ export class AuthUser extends User {
138 peertubeLocalStorage.setItem(AuthUser.KEYS.EMAIL, this.email) 141 peertubeLocalStorage.setItem(AuthUser.KEYS.EMAIL, this.email)
139 peertubeLocalStorage.setItem(AuthUser.KEYS.ROLE, this.role.toString()) 142 peertubeLocalStorage.setItem(AuthUser.KEYS.ROLE, this.role.toString())
140 peertubeLocalStorage.setItem(AuthUser.KEYS.NSFW_POLICY, this.nsfwPolicy.toString()) 143 peertubeLocalStorage.setItem(AuthUser.KEYS.NSFW_POLICY, this.nsfwPolicy.toString())
144 peertubeLocalStorage.setItem(AuthUser.KEYS.WEBTORRENT_ENABLED, JSON.stringify(this.webTorrentEnabled))
141 peertubeLocalStorage.setItem(AuthUser.KEYS.AUTO_PLAY_VIDEO, JSON.stringify(this.autoPlayVideo)) 145 peertubeLocalStorage.setItem(AuthUser.KEYS.AUTO_PLAY_VIDEO, JSON.stringify(this.autoPlayVideo))
142 this.tokens.save() 146 this.tokens.save()
143 } 147 }
diff --git a/client/src/app/core/auth/auth.service.ts b/client/src/app/core/auth/auth.service.ts
index 9c36b946e..443772c9e 100644
--- a/client/src/app/core/auth/auth.service.ts
+++ b/client/src/app/core/auth/auth.service.ts
@@ -221,7 +221,7 @@ export class AuthService {
221 } 221 }
222 222
223 refreshUserInformation () { 223 refreshUserInformation () {
224 const obj = { 224 const obj: UserLoginWithUsername = {
225 access_token: this.user.getAccessToken(), 225 access_token: this.user.getAccessToken(),
226 refresh_token: null, 226 refresh_token: null,
227 token_type: this.user.getTokenType(), 227 token_type: this.user.getTokenType(),
diff --git a/client/src/app/core/server/server.service.ts b/client/src/app/core/server/server.service.ts
index 2f1ef1fc2..da8bd26db 100644
--- a/client/src/app/core/server/server.service.ts
+++ b/client/src/app/core/server/server.service.ts
@@ -154,7 +154,7 @@ export class ServerService {
154 this.localeObservable 154 this.localeObservable
155 .pipe( 155 .pipe(
156 switchMap(translations => { 156 switchMap(translations => {
157 return this.http.get(ServerService.BASE_VIDEO_URL + attributeName) 157 return this.http.get<{ [id: string]: string }>(ServerService.BASE_VIDEO_URL + attributeName)
158 .pipe(map(data => ({ data, translations }))) 158 .pipe(map(data => ({ data, translations })))
159 }) 159 })
160 ) 160 )
diff --git a/client/src/app/core/theme/theme.service.ts b/client/src/app/core/theme/theme.service.ts
index a6eef0898..50c19ecac 100644
--- a/client/src/app/core/theme/theme.service.ts
+++ b/client/src/app/core/theme/theme.service.ts
@@ -5,7 +5,7 @@ import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage'
5export class ThemeService { 5export class ThemeService {
6 private theme = document.querySelector('body') 6 private theme = document.querySelector('body')
7 private darkTheme = false 7 private darkTheme = false
8 private previousTheme = {} 8 private previousTheme: { [ id: string ]: string } = {}
9 9
10 constructor () { 10 constructor () {
11 // initialise the alternative theme with dark theme colors 11 // initialise the alternative theme with dark theme colors
@@ -33,7 +33,7 @@ export class ThemeService {
33 } 33 }
34 } 34 }
35 35
36 private switchProperty (property, newValue?) { 36 private switchProperty (property: string, newValue?: string) {
37 const propertyOldvalue = window.getComputedStyle(this.theme).getPropertyValue('--' + property) 37 const propertyOldvalue = window.getComputedStyle(this.theme).getPropertyValue('--' + property)
38 this.theme.style.setProperty('--' + property, (newValue) ? newValue : this.previousTheme[property]) 38 this.theme.style.setProperty('--' + property, (newValue) ? newValue : this.previousTheme[property])
39 this.previousTheme[property] = propertyOldvalue 39 this.previousTheme[property] = propertyOldvalue
diff --git a/client/src/app/header/header.component.html b/client/src/app/header/header.component.html
index a04354db5..c23e0c55d 100644
--- a/client/src/app/header/header.component.html
+++ b/client/src/app/header/header.component.html
@@ -1,6 +1,6 @@
1<input 1<input
2 type="text" id="search-video" name="search-video" i18n-placeholder placeholder="Search..." 2 type="text" id="search-video" name="search-video" i18n-placeholder placeholder="Search..."
3 [(ngModel)]="searchValue" (keyup.enter)="doSearch()" 3 [(ngModel)]="searchValue" (keyup.enter)="doSearch()"
4> 4>
5<span (click)="doSearch()" class="icon icon-search"></span> 5<span (click)="doSearch()" class="icon icon-search"></span>
6 6
diff --git a/client/src/app/menu/menu.component.ts b/client/src/app/menu/menu.component.ts
index 95926f5f0..371beb4a5 100644
--- a/client/src/app/menu/menu.component.ts
+++ b/client/src/app/menu/menu.component.ts
@@ -18,7 +18,7 @@ export class MenuComponent implements OnInit {
18 userHasAdminAccess = false 18 userHasAdminAccess = false
19 helpVisible = false 19 helpVisible = false
20 20
21 private routesPerRight = { 21 private routesPerRight: { [ role in UserRight ]?: string } = {
22 [UserRight.MANAGE_USERS]: '/admin/users', 22 [UserRight.MANAGE_USERS]: '/admin/users',
23 [UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends', 23 [UserRight.MANAGE_SERVER_FOLLOW]: '/admin/friends',
24 [UserRight.MANAGE_VIDEO_ABUSES]: '/admin/moderation/video-abuses', 24 [UserRight.MANAGE_VIDEO_ABUSES]: '/admin/moderation/video-abuses',
diff --git a/client/src/app/search/search.component.ts b/client/src/app/search/search.component.ts
index 911d56843..ecffcafc1 100644
--- a/client/src/app/search/search.component.ts
+++ b/client/src/app/search/search.component.ts
@@ -1,6 +1,6 @@
1import { Component, OnDestroy, OnInit } from '@angular/core' 1import { Component, OnDestroy, OnInit } from '@angular/core'
2import { ActivatedRoute, Router } from '@angular/router' 2import { ActivatedRoute, Router } from '@angular/router'
3import { AuthService, RedirectService } from '@app/core' 3import { AuthService } from '@app/core'
4import { NotificationsService } from 'angular2-notifications' 4import { NotificationsService } from 'angular2-notifications'
5import { forkJoin, Subscription } from 'rxjs' 5import { forkJoin, Subscription } from 'rxjs'
6import { SearchService } from '@app/search/search.service' 6import { SearchService } from '@app/search/search.service'
@@ -40,7 +40,6 @@ export class SearchComponent implements OnInit, OnDestroy {
40 private route: ActivatedRoute, 40 private route: ActivatedRoute,
41 private router: Router, 41 private router: Router,
42 private metaService: MetaService, 42 private metaService: MetaService,
43 private redirectService: RedirectService,
44 private notificationsService: NotificationsService, 43 private notificationsService: NotificationsService,
45 private searchService: SearchService, 44 private searchService: SearchService,
46 private authService: AuthService 45 private authService: AuthService
diff --git a/client/src/app/shared/account/account.model.ts b/client/src/app/shared/account/account.model.ts
index 5058e372f..c5cd2051c 100644
--- a/client/src/app/shared/account/account.model.ts
+++ b/client/src/app/shared/account/account.model.ts
@@ -5,12 +5,24 @@ export class Account extends Actor implements ServerAccount {
5 displayName: string 5 displayName: string
6 description: string 6 description: string
7 nameWithHost: string 7 nameWithHost: string
8 mutedByUser: boolean
9 mutedByInstance: boolean
10 mutedServerByUser: boolean
11 mutedServerByInstance: boolean
12
13 userId?: number
8 14
9 constructor (hash: ServerAccount) { 15 constructor (hash: ServerAccount) {
10 super(hash) 16 super(hash)
11 17
12 this.displayName = hash.displayName 18 this.displayName = hash.displayName
13 this.description = hash.description 19 this.description = hash.description
20 this.userId = hash.userId
14 this.nameWithHost = Actor.CREATE_BY_STRING(this.name, this.host) 21 this.nameWithHost = Actor.CREATE_BY_STRING(this.name, this.host)
22
23 this.mutedByUser = false
24 this.mutedByInstance = false
25 this.mutedServerByUser = false
26 this.mutedServerByInstance = false
15 } 27 }
16} 28}
diff --git a/client/src/app/shared/blocklist/account-block.model.ts b/client/src/app/shared/blocklist/account-block.model.ts
new file mode 100644
index 000000000..e7b433d88
--- /dev/null
+++ b/client/src/app/shared/blocklist/account-block.model.ts
@@ -0,0 +1,14 @@
1import { AccountBlock as AccountBlockServer } from '../../../../../shared'
2import { Account } from '../account/account.model'
3
4export class AccountBlock implements AccountBlockServer {
5 byAccount: Account
6 blockedAccount: Account
7 createdAt: Date | string
8
9 constructor (block: AccountBlockServer) {
10 this.byAccount = new Account(block.byAccount)
11 this.blockedAccount = new Account(block.blockedAccount)
12 this.createdAt = block.createdAt
13 }
14}
diff --git a/client/src/app/shared/blocklist/blocklist.service.ts b/client/src/app/shared/blocklist/blocklist.service.ts
new file mode 100644
index 000000000..c1f7312f0
--- /dev/null
+++ b/client/src/app/shared/blocklist/blocklist.service.ts
@@ -0,0 +1,135 @@
1import { Injectable } from '@angular/core'
2import { environment } from '../../../environments/environment'
3import { HttpClient, HttpParams } from '@angular/common/http'
4import { RestExtractor, RestPagination, RestService } from '../rest'
5import { SortMeta } from 'primeng/api'
6import { catchError, map } from 'rxjs/operators'
7import { AccountBlock as AccountBlockServer, ResultList, ServerBlock } from '../../../../../shared'
8import { Account } from '@app/shared/account/account.model'
9import { AccountBlock } from '@app/shared/blocklist/account-block.model'
10
11@Injectable()
12export class BlocklistService {
13 static BASE_USER_BLOCKLIST_URL = environment.apiUrl + '/api/v1/users/me/blocklist'
14 static BASE_SERVER_BLOCKLIST_URL = environment.apiUrl + '/api/v1/server/blocklist'
15
16 constructor (
17 private authHttp: HttpClient,
18 private restExtractor: RestExtractor,
19 private restService: RestService
20 ) { }
21
22 /*********************** User -> Account blocklist ***********************/
23
24 getUserAccountBlocklist (pagination: RestPagination, sort: SortMeta) {
25 let params = new HttpParams()
26 params = this.restService.addRestGetParams(params, pagination, sort)
27
28 return this.authHttp.get<ResultList<AccountBlock>>(BlocklistService.BASE_USER_BLOCKLIST_URL + '/accounts', { params })
29 .pipe(
30 map(res => this.restExtractor.convertResultListDateToHuman(res)),
31 map(res => this.restExtractor.applyToResultListData(res, this.formatAccountBlock.bind(this))),
32 catchError(err => this.restExtractor.handleError(err))
33 )
34 }
35
36 blockAccountByUser (account: Account) {
37 const body = { accountName: account.nameWithHost }
38
39 return this.authHttp.post(BlocklistService.BASE_USER_BLOCKLIST_URL + '/accounts', body)
40 .pipe(catchError(err => this.restExtractor.handleError(err)))
41 }
42
43 unblockAccountByUser (account: Account) {
44 const path = BlocklistService.BASE_USER_BLOCKLIST_URL + '/accounts/' + account.nameWithHost
45
46 return this.authHttp.delete(path)
47 .pipe(catchError(err => this.restExtractor.handleError(err)))
48 }
49
50 /*********************** User -> Server blocklist ***********************/
51
52 getUserServerBlocklist (pagination: RestPagination, sort: SortMeta) {
53 let params = new HttpParams()
54 params = this.restService.addRestGetParams(params, pagination, sort)
55
56 return this.authHttp.get<ResultList<ServerBlock>>(BlocklistService.BASE_USER_BLOCKLIST_URL + '/servers', { params })
57 .pipe(
58 map(res => this.restExtractor.convertResultListDateToHuman(res)),
59 catchError(err => this.restExtractor.handleError(err))
60 )
61 }
62
63 blockServerByUser (host: string) {
64 const body = { host }
65
66 return this.authHttp.post(BlocklistService.BASE_USER_BLOCKLIST_URL + '/servers', body)
67 .pipe(catchError(err => this.restExtractor.handleError(err)))
68 }
69
70 unblockServerByUser (host: string) {
71 const path = BlocklistService.BASE_USER_BLOCKLIST_URL + '/servers/' + host
72
73 return this.authHttp.delete(path)
74 .pipe(catchError(err => this.restExtractor.handleError(err)))
75 }
76
77 /*********************** Instance -> Account blocklist ***********************/
78
79 getInstanceAccountBlocklist (pagination: RestPagination, sort: SortMeta) {
80 let params = new HttpParams()
81 params = this.restService.addRestGetParams(params, pagination, sort)
82
83 return this.authHttp.get<ResultList<AccountBlock>>(BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/accounts', { params })
84 .pipe(
85 map(res => this.restExtractor.convertResultListDateToHuman(res)),
86 map(res => this.restExtractor.applyToResultListData(res, this.formatAccountBlock.bind(this))),
87 catchError(err => this.restExtractor.handleError(err))
88 )
89 }
90
91 blockAccountByInstance (account: Account) {
92 const body = { accountName: account.nameWithHost }
93
94 return this.authHttp.post(BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/accounts', body)
95 .pipe(catchError(err => this.restExtractor.handleError(err)))
96 }
97
98 unblockAccountByInstance (account: Account) {
99 const path = BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/accounts/' + account.nameWithHost
100
101 return this.authHttp.delete(path)
102 .pipe(catchError(err => this.restExtractor.handleError(err)))
103 }
104
105 /*********************** Instance -> Server blocklist ***********************/
106
107 getInstanceServerBlocklist (pagination: RestPagination, sort: SortMeta) {
108 let params = new HttpParams()
109 params = this.restService.addRestGetParams(params, pagination, sort)
110
111 return this.authHttp.get<ResultList<ServerBlock>>(BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/servers', { params })
112 .pipe(
113 map(res => this.restExtractor.convertResultListDateToHuman(res)),
114 catchError(err => this.restExtractor.handleError(err))
115 )
116 }
117
118 blockServerByInstance (host: string) {
119 const body = { host }
120
121 return this.authHttp.post(BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/servers', body)
122 .pipe(catchError(err => this.restExtractor.handleError(err)))
123 }
124
125 unblockServerByInstance (host: string) {
126 const path = BlocklistService.BASE_SERVER_BLOCKLIST_URL + '/servers/' + host
127
128 return this.authHttp.delete(path)
129 .pipe(catchError(err => this.restExtractor.handleError(err)))
130 }
131
132 private formatAccountBlock (accountBlock: AccountBlockServer) {
133 return new AccountBlock(accountBlock)
134 }
135}
diff --git a/client/src/app/shared/blocklist/index.ts b/client/src/app/shared/blocklist/index.ts
new file mode 100644
index 000000000..5886ca07e
--- /dev/null
+++ b/client/src/app/shared/blocklist/index.ts
@@ -0,0 +1,2 @@
1export * from './blocklist.service'
2export * from './account-block.model'
diff --git a/client/src/app/shared/buttons/action-dropdown.component.html b/client/src/app/shared/buttons/action-dropdown.component.html
index 8b7241379..48230d6d8 100644
--- a/client/src/app/shared/buttons/action-dropdown.component.html
+++ b/client/src/app/shared/buttons/action-dropdown.component.html
@@ -1,17 +1,21 @@
1<div class="dropdown-root" ngbDropdown [placement]="placement"> 1<div class="dropdown-root" ngbDropdown [placement]="placement">
2 <div class="action-button" ngbDropdownToggle role="button"> 2 <div
3 <span class="icon icon-action"></span> 3 class="action-button" [ngClass]="{ small: buttonSize === 'small', grey: theme === 'grey', orange: theme === 'orange' }"
4 ngbDropdownToggle role="button"
5 >
6 <span *ngIf="!label" class="icon icon-action"></span>
7 <span *ngIf="label" class="dropdown-toggle">{{ label }}</span>
4 </div> 8 </div>
5 9
6 <div ngbDropdownMenu class="dropdown-menu"> 10 <div ngbDropdownMenu class="dropdown-menu">
7 <ng-container *ngFor="let action of actions"> 11 <ng-container *ngFor="let action of actions">
8 <div class="dropdown-item" *ngIf="action.isDisplayed === undefined || action.isDisplayed(entry) === true"> 12 <ng-container *ngIf="action.isDisplayed === undefined || action.isDisplayed(entry) === true">
9 <a *ngIf="action.linkBuilder" class="dropdown-item" [routerLink]="action.linkBuilder(entry)">{{ action.label }}</a> 13 <a *ngIf="action.linkBuilder" class="dropdown-item" [routerLink]="action.linkBuilder(entry)">{{ action.label }}</a>
10 14
11 <span *ngIf="!action.linkBuilder" class="custom-action" class="dropdown-item" (click)="action.handler(entry)" role="button"> 15 <span *ngIf="!action.linkBuilder" class="custom-action dropdown-item" (click)="action.handler(entry)" role="button">
12 {{ action.label }} 16 {{ action.label }}
13 </span> 17 </span>
14 </div> 18 </ng-container>
15 </ng-container> 19 </ng-container>
16 </div> 20 </div>
17</div> \ No newline at end of file 21</div> \ No newline at end of file
diff --git a/client/src/app/shared/buttons/action-dropdown.component.scss b/client/src/app/shared/buttons/action-dropdown.component.scss
index 615511093..92c4d1d2c 100644
--- a/client/src/app/shared/buttons/action-dropdown.component.scss
+++ b/client/src/app/shared/buttons/action-dropdown.component.scss
@@ -3,7 +3,14 @@
3 3
4.action-button { 4.action-button {
5 @include peertube-button; 5 @include peertube-button;
6 @include grey-button; 6
7 &.grey {
8 @include grey-button;
9 }
10
11 &.orange {
12 @include orange-button;
13 }
7 14
8 display: inline-block; 15 display: inline-block;
9 padding: 0 10px; 16 padding: 0 10px;
@@ -22,11 +29,27 @@
22 background-image: url('../../../assets/images/video/more.svg'); 29 background-image: url('../../../assets/images/video/more.svg');
23 top: -1px; 30 top: -1px;
24 } 31 }
32
33 &.small {
34 font-size: 14px;
35 height: 20px;
36 line-height: 20px;
37 }
38}
39
40.dropdown-toggle::after {
41 position: relative;
42 top: 1px;
25} 43}
26 44
27.dropdown-menu { 45.dropdown-menu {
28 .dropdown-item { 46 .dropdown-item {
29 cursor: pointer; 47 cursor: pointer;
30 color: #000 !important; 48 color: #000 !important;
49
50 a, span {
51 display: block;
52 width: 100%;
53 }
31 } 54 }
32} \ No newline at end of file 55} \ No newline at end of file
diff --git a/client/src/app/shared/buttons/action-dropdown.component.ts b/client/src/app/shared/buttons/action-dropdown.component.ts
index 17f9cc618..d8026ef41 100644
--- a/client/src/app/shared/buttons/action-dropdown.component.ts
+++ b/client/src/app/shared/buttons/action-dropdown.component.ts
@@ -2,9 +2,9 @@ import { Component, Input } from '@angular/core'
2 2
3export type DropdownAction<T> = { 3export type DropdownAction<T> = {
4 label?: string 4 label?: string
5 handler?: (T) => any 5 handler?: (a: T) => any
6 linkBuilder?: (T) => (string | number)[] 6 linkBuilder?: (a: T) => (string | number)[]
7 isDisplayed?: (T) => boolean 7 isDisplayed?: (a: T) => boolean
8} 8}
9 9
10@Component({ 10@Component({
@@ -16,5 +16,8 @@ export type DropdownAction<T> = {
16export class ActionDropdownComponent<T> { 16export class ActionDropdownComponent<T> {
17 @Input() actions: DropdownAction<T>[] = [] 17 @Input() actions: DropdownAction<T>[] = []
18 @Input() entry: T 18 @Input() entry: T
19 @Input() placement = 'left' 19 @Input() placement = 'bottom-left'
20 @Input() buttonSize: 'normal' | 'small' = 'normal'
21 @Input() label: string
22 @Input() theme: 'orange' | 'grey' = 'grey'
20} 23}
diff --git a/client/src/app/shared/buttons/button.component.ts b/client/src/app/shared/buttons/button.component.ts
index 967cb1409..1a1162f09 100644
--- a/client/src/app/shared/buttons/button.component.ts
+++ b/client/src/app/shared/buttons/button.component.ts
@@ -8,9 +8,9 @@ import { Component, Input } from '@angular/core'
8 8
9export class ButtonComponent { 9export class ButtonComponent {
10 @Input() label = '' 10 @Input() label = ''
11 @Input() className = undefined 11 @Input() className: string = undefined
12 @Input() icon = undefined 12 @Input() icon: string = undefined
13 @Input() title = undefined 13 @Input() title: string = undefined
14 14
15 getTitle () { 15 getTitle () {
16 return this.title || this.label 16 return this.title || this.label
diff --git a/client/src/app/shared/buttons/edit-button.component.ts b/client/src/app/shared/buttons/edit-button.component.ts
index 7abaacc26..1fe4f7b30 100644
--- a/client/src/app/shared/buttons/edit-button.component.ts
+++ b/client/src/app/shared/buttons/edit-button.component.ts
@@ -8,5 +8,5 @@ import { Component, Input } from '@angular/core'
8 8
9export class EditButtonComponent { 9export class EditButtonComponent {
10 @Input() label: string 10 @Input() label: string
11 @Input() routerLink = [] 11 @Input() routerLink: string[] = []
12} 12}
diff --git a/client/src/app/shared/forms/form-validators/user-validators.service.ts b/client/src/app/shared/forms/form-validators/user-validators.service.ts
index 1fd1cdf68..d14fa4777 100644
--- a/client/src/app/shared/forms/form-validators/user-validators.service.ts
+++ b/client/src/app/shared/forms/form-validators/user-validators.service.ts
@@ -101,11 +101,11 @@ export class UserValidatorsService {
101 this.USER_DESCRIPTION = { 101 this.USER_DESCRIPTION = {
102 VALIDATORS: [ 102 VALIDATORS: [
103 Validators.minLength(3), 103 Validators.minLength(3),
104 Validators.maxLength(250) 104 Validators.maxLength(1000)
105 ], 105 ],
106 MESSAGES: { 106 MESSAGES: {
107 'minlength': this.i18n('Description must be at least 3 characters long.'), 107 'minlength': this.i18n('Description must be at least 3 characters long.'),
108 'maxlength': this.i18n('Description cannot be more than 250 characters long.') 108 'maxlength': this.i18n('Description cannot be more than 1000 characters long.')
109 } 109 }
110 } 110 }
111 111
diff --git a/client/src/app/shared/forms/form-validators/video-change-ownership-validators.service.ts b/client/src/app/shared/forms/form-validators/video-change-ownership-validators.service.ts
index 087b80b44..c6fbb7538 100644
--- a/client/src/app/shared/forms/form-validators/video-change-ownership-validators.service.ts
+++ b/client/src/app/shared/forms/form-validators/video-change-ownership-validators.service.ts
@@ -1,5 +1,5 @@
1import { I18n } from '@ngx-translate/i18n-polyfill' 1import { I18n } from '@ngx-translate/i18n-polyfill'
2import { Validators } from '@angular/forms' 2import { AbstractControl, ValidationErrors, Validators } from '@angular/forms'
3import { Injectable } from '@angular/core' 3import { Injectable } from '@angular/core'
4import { BuildFormValidator } from '@app/shared' 4import { BuildFormValidator } from '@app/shared'
5 5
@@ -9,10 +9,19 @@ export class VideoChangeOwnershipValidatorsService {
9 9
10 constructor (private i18n: I18n) { 10 constructor (private i18n: I18n) {
11 this.USERNAME = { 11 this.USERNAME = {
12 VALIDATORS: [ Validators.required ], 12 VALIDATORS: [ Validators.required, this.localAccountValidator ],
13 MESSAGES: { 13 MESSAGES: {
14 'required': this.i18n('The username is required.') 14 'required': this.i18n('The username is required.'),
15 'localAccountOnly': this.i18n('You can only transfer ownership to a local account')
15 } 16 }
16 } 17 }
17 } 18 }
19
20 localAccountValidator (control: AbstractControl): ValidationErrors {
21 if (control.value.includes('@')) {
22 return { 'localAccountOnly': true }
23 }
24
25 return null
26 }
18} 27}
diff --git a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts
index 1ce3a0dca..f62ff65f7 100644
--- a/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts
+++ b/client/src/app/shared/forms/form-validators/video-channel-validators.service.ts
@@ -42,22 +42,22 @@ export class VideoChannelValidatorsService {
42 this.VIDEO_CHANNEL_DESCRIPTION = { 42 this.VIDEO_CHANNEL_DESCRIPTION = {
43 VALIDATORS: [ 43 VALIDATORS: [
44 Validators.minLength(3), 44 Validators.minLength(3),
45 Validators.maxLength(500) 45 Validators.maxLength(1000)
46 ], 46 ],
47 MESSAGES: { 47 MESSAGES: {
48 'minlength': i18n('Description must be at least 3 characters long.'), 48 'minlength': i18n('Description must be at least 3 characters long.'),
49 'maxlength': i18n('Description cannot be more than 500 characters long.') 49 'maxlength': i18n('Description cannot be more than 1000 characters long.')
50 } 50 }
51 } 51 }
52 52
53 this.VIDEO_CHANNEL_SUPPORT = { 53 this.VIDEO_CHANNEL_SUPPORT = {
54 VALIDATORS: [ 54 VALIDATORS: [
55 Validators.minLength(3), 55 Validators.minLength(3),
56 Validators.maxLength(500) 56 Validators.maxLength(1000)
57 ], 57 ],
58 MESSAGES: { 58 MESSAGES: {
59 'minlength': i18n('Support text must be at least 3 characters long.'), 59 'minlength': i18n('Support text must be at least 3 characters long.'),
60 'maxlength': i18n('Support text cannot be more than 500 characters long.') 60 'maxlength': i18n('Support text cannot be more than 1000 characters long.')
61 } 61 }
62 } 62 }
63 } 63 }
diff --git a/client/src/app/shared/forms/form-validators/video-validators.service.ts b/client/src/app/shared/forms/form-validators/video-validators.service.ts
index 396be6f3b..81ed0666f 100644
--- a/client/src/app/shared/forms/form-validators/video-validators.service.ts
+++ b/client/src/app/shared/forms/form-validators/video-validators.service.ts
@@ -79,10 +79,10 @@ export class VideoValidatorsService {
79 } 79 }
80 80
81 this.VIDEO_SUPPORT = { 81 this.VIDEO_SUPPORT = {
82 VALIDATORS: [ Validators.minLength(3), Validators.maxLength(500) ], 82 VALIDATORS: [ Validators.minLength(3), Validators.maxLength(1000) ],
83 MESSAGES: { 83 MESSAGES: {
84 'minlength': this.i18n('Video support must be at least 3 characters long.'), 84 'minlength': this.i18n('Video support must be at least 3 characters long.'),
85 'maxlength': this.i18n('Video support cannot be more than 500 characters long.') 85 'maxlength': this.i18n('Video support cannot be more than 1000 characters long.')
86 } 86 }
87 } 87 }
88 88
diff --git a/client/src/app/shared/forms/peertube-checkbox.component.html b/client/src/app/shared/forms/peertube-checkbox.component.html
index 38691f050..fb3006b53 100644
--- a/client/src/app/shared/forms/peertube-checkbox.component.html
+++ b/client/src/app/shared/forms/peertube-checkbox.component.html
@@ -1,4 +1,4 @@
1<div class="form-group"> 1<div class="root">
2 <label class="form-group-checkbox"> 2 <label class="form-group-checkbox">
3 <input type="checkbox" [(ngModel)]="checked" (ngModelChange)="onModelChange()" [id]="inputName" [disabled]="isDisabled" /> 3 <input type="checkbox" [(ngModel)]="checked" (ngModelChange)="onModelChange()" [id]="inputName" [disabled]="isDisabled" />
4 <span role="checkbox" [attr.aria-checked]="checked"></span> 4 <span role="checkbox" [attr.aria-checked]="checked"></span>
diff --git a/client/src/app/shared/forms/peertube-checkbox.component.scss b/client/src/app/shared/forms/peertube-checkbox.component.scss
index ee133f190..6e4e20775 100644
--- a/client/src/app/shared/forms/peertube-checkbox.component.scss
+++ b/client/src/app/shared/forms/peertube-checkbox.component.scss
@@ -1,7 +1,7 @@
1@import '_variables'; 1@import '_variables';
2@import '_mixins'; 2@import '_mixins';
3 3
4.form-group { 4.root {
5 display: flex; 5 display: flex;
6 6
7 .form-group-checkbox { 7 .form-group-checkbox {
@@ -20,6 +20,10 @@
20 } 20 }
21 } 21 }
22 22
23 label {
24 margin-bottom: 0;
25 }
26
23 my-help { 27 my-help {
24 position: relative; 28 position: relative;
25 top: -2px; 29 top: -2px;
diff --git a/client/src/app/shared/guards/can-deactivate-guard.service.ts b/client/src/app/shared/guards/can-deactivate-guard.service.ts
index e2a79e8c4..3a35fcfb3 100644
--- a/client/src/app/shared/guards/can-deactivate-guard.service.ts
+++ b/client/src/app/shared/guards/can-deactivate-guard.service.ts
@@ -4,8 +4,10 @@ import { Observable } from 'rxjs'
4import { ConfirmService } from '../../core/index' 4import { ConfirmService } from '../../core/index'
5import { I18n } from '@ngx-translate/i18n-polyfill' 5import { I18n } from '@ngx-translate/i18n-polyfill'
6 6
7export type CanComponentDeactivateResult = { text?: string, canDeactivate: Observable<boolean> | boolean }
8
7export interface CanComponentDeactivate { 9export interface CanComponentDeactivate {
8 canDeactivate: () => { text?: string, canDeactivate: Observable<boolean> | boolean } 10 canDeactivate: () => CanComponentDeactivateResult
9} 11}
10 12
11@Injectable() 13@Injectable()
diff --git a/client/src/app/shared/misc/peertube-local-storage.ts b/client/src/app/shared/misc/peertube-local-storage.ts
index 260f994b6..fb5c45acf 100644
--- a/client/src/app/shared/misc/peertube-local-storage.ts
+++ b/client/src/app/shared/misc/peertube-local-storage.ts
@@ -6,7 +6,7 @@ class MemoryStorage {
6 [key: string]: any 6 [key: string]: any
7 [index: number]: string 7 [index: number]: string
8 8
9 getItem (key) { 9 getItem (key: any) {
10 const stringKey = String(key) 10 const stringKey = String(key)
11 if (valuesMap.has(key)) { 11 if (valuesMap.has(key)) {
12 return String(valuesMap.get(stringKey)) 12 return String(valuesMap.get(stringKey))
@@ -15,11 +15,11 @@ class MemoryStorage {
15 return null 15 return null
16 } 16 }
17 17
18 setItem (key, val) { 18 setItem (key: any, val: any) {
19 valuesMap.set(String(key), String(val)) 19 valuesMap.set(String(key), String(val))
20 } 20 }
21 21
22 removeItem (key) { 22 removeItem (key: any) {
23 valuesMap.delete(key) 23 valuesMap.delete(key)
24 } 24 }
25 25
diff --git a/client/src/app/shared/misc/utils.ts b/client/src/app/shared/misc/utils.ts
index c8b7ebc67..78be2e5dd 100644
--- a/client/src/app/shared/misc/utils.ts
+++ b/client/src/app/shared/misc/utils.ts
@@ -102,7 +102,7 @@ function objectToFormData (obj: any, form?: FormData, namespace?: string) {
102 return fd 102 return fd
103} 103}
104 104
105function lineFeedToHtml (obj: object, keyToNormalize: string) { 105function lineFeedToHtml (obj: any, keyToNormalize: string) {
106 return immutableAssign(obj, { 106 return immutableAssign(obj, {
107 [keyToNormalize]: obj[keyToNormalize].replace(/\r?\n|\r/g, '<br />') 107 [keyToNormalize]: obj[keyToNormalize].replace(/\r?\n|\r/g, '<br />')
108 }) 108 })
diff --git a/client/src/app/shared/moderation/index.ts b/client/src/app/shared/moderation/index.ts
new file mode 100644
index 000000000..9a77c64c0
--- /dev/null
+++ b/client/src/app/shared/moderation/index.ts
@@ -0,0 +1,2 @@
1export * from './user-ban-modal.component'
2export * from './user-moderation-dropdown.component'
diff --git a/client/src/app/+admin/users/user-list/user-ban-modal.component.html b/client/src/app/shared/moderation/user-ban-modal.component.html
index b2958caa4..fa5cb7404 100644
--- a/client/src/app/+admin/users/user-list/user-ban-modal.component.html
+++ b/client/src/app/shared/moderation/user-ban-modal.component.html
@@ -1,6 +1,6 @@
1<ng-template #modal> 1<ng-template #modal>
2 <div class="modal-header"> 2 <div class="modal-header">
3 <h4 i18n class="modal-title">Ban {{ userToBan.username }}</h4> 3 <h4 i18n class="modal-title">Ban</h4>
4 <span class="close" aria-hidden="true" (click)="hideBanUserModal()"></span> 4 <span class="close" aria-hidden="true" (click)="hideBanUserModal()"></span>
5 </div> 5 </div>
6 6
diff --git a/client/src/app/+admin/users/user-list/user-ban-modal.component.scss b/client/src/app/shared/moderation/user-ban-modal.component.scss
index 84562f15c..84562f15c 100644
--- a/client/src/app/+admin/users/user-list/user-ban-modal.component.scss
+++ b/client/src/app/shared/moderation/user-ban-modal.component.scss
diff --git a/client/src/app/+admin/users/user-list/user-ban-modal.component.ts b/client/src/app/shared/moderation/user-ban-modal.component.ts
index 4fd4d561c..60bd442dd 100644
--- a/client/src/app/+admin/users/user-list/user-ban-modal.component.ts
+++ b/client/src/app/shared/moderation/user-ban-modal.component.ts
@@ -1,12 +1,12 @@
1import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core' 1import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'
2import { NotificationsService } from 'angular2-notifications' 2import { NotificationsService } from 'angular2-notifications'
3import { FormReactive, UserValidatorsService } from '../../../shared'
4import { UserService } from '../shared'
5import { I18n } from '@ngx-translate/i18n-polyfill' 3import { I18n } from '@ngx-translate/i18n-polyfill'
6import { NgbModal } from '@ng-bootstrap/ng-bootstrap' 4import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
7import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' 5import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
8import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' 6import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service'
9import { User } from '../../../../../../shared' 7import { FormReactive, UserValidatorsService } from '@app/shared/forms'
8import { UserService } from '@app/shared/users'
9import { User } from '../../../../../shared'
10 10
11@Component({ 11@Component({
12 selector: 'my-user-ban-modal', 12 selector: 'my-user-ban-modal',
@@ -15,9 +15,9 @@ import { User } from '../../../../../../shared'
15}) 15})
16export class UserBanModalComponent extends FormReactive implements OnInit { 16export class UserBanModalComponent extends FormReactive implements OnInit {
17 @ViewChild('modal') modal: NgbModal 17 @ViewChild('modal') modal: NgbModal
18 @Output() userBanned = new EventEmitter<User>() 18 @Output() userBanned = new EventEmitter<User | User[]>()
19 19
20 private userToBan: User 20 private usersToBan: User | User[]
21 private openedModal: NgbModalRef 21 private openedModal: NgbModalRef
22 22
23 constructor ( 23 constructor (
@@ -37,28 +37,29 @@ export class UserBanModalComponent extends FormReactive implements OnInit {
37 }) 37 })
38 } 38 }
39 39
40 openModal (user: User) { 40 openModal (user: User | User[]) {
41 this.userToBan = user 41 this.usersToBan = user
42 this.openedModal = this.modalService.open(this.modal) 42 this.openedModal = this.modalService.open(this.modal)
43 } 43 }
44 44
45 hideBanUserModal () { 45 hideBanUserModal () {
46 this.userToBan = undefined 46 this.usersToBan = undefined
47 this.openedModal.close() 47 this.openedModal.close()
48 } 48 }
49 49
50 async banUser () { 50 async banUser () {
51 const reason = this.form.value['reason'] || undefined 51 const reason = this.form.value['reason'] || undefined
52 52
53 this.userService.banUser(this.userToBan, reason) 53 this.userService.banUsers(this.usersToBan, reason)
54 .subscribe( 54 .subscribe(
55 () => { 55 () => {
56 this.notificationsService.success( 56 const message = Array.isArray(this.usersToBan)
57 this.i18n('Success'), 57 ? this.i18n('{{num}} users banned.', { num: this.usersToBan.length })
58 this.i18n('User {{username}} banned.', { username: this.userToBan.username }) 58 : this.i18n('User {{username}} banned.', { username: this.usersToBan.username })
59 )
60 59
61 this.userBanned.emit(this.userToBan) 60 this.notificationsService.success(this.i18n('Success'), message)
61
62 this.userBanned.emit(this.usersToBan)
62 this.hideBanUserModal() 63 this.hideBanUserModal()
63 }, 64 },
64 65
diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.html b/client/src/app/shared/moderation/user-moderation-dropdown.component.html
new file mode 100644
index 000000000..7367a7e59
--- /dev/null
+++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.html
@@ -0,0 +1,8 @@
1<ng-container *ngIf="userActions.length !== 0">
2 <my-user-ban-modal #userBanModal (userBanned)="onUserBanned()"></my-user-ban-modal>
3
4 <my-action-dropdown
5 [actions]="userActions" [entry]="{ user: user, account: account }"
6 [buttonSize]="buttonSize" [placement]="placement"
7 ></my-action-dropdown>
8</ng-container> \ No newline at end of file
diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.scss b/client/src/app/shared/moderation/user-moderation-dropdown.component.scss
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.scss
diff --git a/client/src/app/shared/moderation/user-moderation-dropdown.component.ts b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts
new file mode 100644
index 000000000..908f0b8e0
--- /dev/null
+++ b/client/src/app/shared/moderation/user-moderation-dropdown.component.ts
@@ -0,0 +1,331 @@
1import { Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core'
2import { NotificationsService } from 'angular2-notifications'
3import { I18n } from '@ngx-translate/i18n-polyfill'
4import { DropdownAction } from '@app/shared/buttons/action-dropdown.component'
5import { UserBanModalComponent } from '@app/shared/moderation/user-ban-modal.component'
6import { UserService } from '@app/shared/users'
7import { AuthService, ConfirmService } from '@app/core'
8import { User, UserRight } from '../../../../../shared/models/users'
9import { Account } from '@app/shared/account/account.model'
10import { BlocklistService } from '@app/shared/blocklist'
11
12@Component({
13 selector: 'my-user-moderation-dropdown',
14 templateUrl: './user-moderation-dropdown.component.html',
15 styleUrls: [ './user-moderation-dropdown.component.scss' ]
16})
17export class UserModerationDropdownComponent implements OnChanges {
18 @ViewChild('userBanModal') userBanModal: UserBanModalComponent
19
20 @Input() user: User
21 @Input() account: Account
22
23 @Input() buttonSize: 'normal' | 'small' = 'normal'
24 @Input() placement = 'left'
25
26 @Output() userChanged = new EventEmitter()
27 @Output() userDeleted = new EventEmitter()
28
29 userActions: DropdownAction<{ user: User, account: Account }>[] = []
30
31 constructor (
32 private authService: AuthService,
33 private notificationsService: NotificationsService,
34 private confirmService: ConfirmService,
35 private userService: UserService,
36 private blocklistService: BlocklistService,
37 private i18n: I18n
38 ) { }
39
40 ngOnChanges () {
41 this.buildActions()
42 }
43
44 openBanUserModal (user: User) {
45 if (user.username === 'root') {
46 this.notificationsService.error(this.i18n('Error'), this.i18n('You cannot ban root.'))
47 return
48 }
49
50 this.userBanModal.openModal(user)
51 }
52
53 onUserBanned () {
54 this.userChanged.emit()
55 }
56
57 async unbanUser (user: User) {
58 const message = this.i18n('Do you really want to unban {{username}}?', { username: user.username })
59 const res = await this.confirmService.confirm(message, this.i18n('Unban'))
60 if (res === false) return
61
62 this.userService.unbanUsers(user)
63 .subscribe(
64 () => {
65 this.notificationsService.success(
66 this.i18n('Success'),
67 this.i18n('User {{username}} unbanned.', { username: user.username })
68 )
69
70 this.userChanged.emit()
71 },
72
73 err => this.notificationsService.error(this.i18n('Error'), err.message)
74 )
75 }
76
77 async removeUser (user: User) {
78 if (user.username === 'root') {
79 this.notificationsService.error(this.i18n('Error'), this.i18n('You cannot delete root.'))
80 return
81 }
82
83 const message = this.i18n('If you remove this user, you will not be able to create another with the same username!')
84 const res = await this.confirmService.confirm(message, this.i18n('Delete'))
85 if (res === false) return
86
87 this.userService.removeUser(user).subscribe(
88 () => {
89 this.notificationsService.success(
90 this.i18n('Success'),
91 this.i18n('User {{username}} deleted.', { username: user.username })
92 )
93 this.userDeleted.emit()
94 },
95
96 err => this.notificationsService.error(this.i18n('Error'), err.message)
97 )
98 }
99
100 blockAccountByUser (account: Account) {
101 this.blocklistService.blockAccountByUser(account)
102 .subscribe(
103 () => {
104 this.notificationsService.success(
105 this.i18n('Success'),
106 this.i18n('Account {{nameWithHost}} muted.', { nameWithHost: account.nameWithHost })
107 )
108
109 this.account.mutedByUser = true
110 this.userChanged.emit()
111 },
112
113 err => this.notificationsService.error(this.i18n('Error'), err.message)
114 )
115 }
116
117 unblockAccountByUser (account: Account) {
118 this.blocklistService.unblockAccountByUser(account)
119 .subscribe(
120 () => {
121 this.notificationsService.success(
122 this.i18n('Success'),
123 this.i18n('Account {{nameWithHost}} unmuted.', { nameWithHost: account.nameWithHost })
124 )
125
126 this.account.mutedByUser = false
127 this.userChanged.emit()
128 },
129
130 err => this.notificationsService.error(this.i18n('Error'), err.message)
131 )
132 }
133
134 blockServerByUser (host: string) {
135 this.blocklistService.blockServerByUser(host)
136 .subscribe(
137 () => {
138 this.notificationsService.success(
139 this.i18n('Success'),
140 this.i18n('Instance {{host}} muted.', { host })
141 )
142
143 this.account.mutedServerByUser = true
144 this.userChanged.emit()
145 },
146
147 err => this.notificationsService.error(this.i18n('Error'), err.message)
148 )
149 }
150
151 unblockServerByUser (host: string) {
152 this.blocklistService.unblockServerByUser(host)
153 .subscribe(
154 () => {
155 this.notificationsService.success(
156 this.i18n('Success'),
157 this.i18n('Instance {{host}} unmuted.', { host })
158 )
159
160 this.account.mutedServerByUser = false
161 this.userChanged.emit()
162 },
163
164 err => this.notificationsService.error(this.i18n('Error'), err.message)
165 )
166 }
167
168 blockAccountByInstance (account: Account) {
169 this.blocklistService.blockAccountByInstance(account)
170 .subscribe(
171 () => {
172 this.notificationsService.success(
173 this.i18n('Success'),
174 this.i18n('Account {{nameWithHost}} muted by the instance.', { nameWithHost: account.nameWithHost })
175 )
176
177 this.account.mutedByInstance = true
178 this.userChanged.emit()
179 },
180
181 err => this.notificationsService.error(this.i18n('Error'), err.message)
182 )
183 }
184
185 unblockAccountByInstance (account: Account) {
186 this.blocklistService.unblockAccountByInstance(account)
187 .subscribe(
188 () => {
189 this.notificationsService.success(
190 this.i18n('Success'),
191 this.i18n('Account {{nameWithHost}} unmuted by the instance.', { nameWithHost: account.nameWithHost })
192 )
193
194 this.account.mutedByInstance = false
195 this.userChanged.emit()
196 },
197
198 err => this.notificationsService.error(this.i18n('Error'), err.message)
199 )
200 }
201
202 blockServerByInstance (host: string) {
203 this.blocklistService.blockServerByInstance(host)
204 .subscribe(
205 () => {
206 this.notificationsService.success(
207 this.i18n('Success'),
208 this.i18n('Instance {{host}} muted by the instance.', { host })
209 )
210
211 this.account.mutedServerByInstance = true
212 this.userChanged.emit()
213 },
214
215 err => this.notificationsService.error(this.i18n('Error'), err.message)
216 )
217 }
218
219 unblockServerByInstance (host: string) {
220 this.blocklistService.unblockServerByInstance(host)
221 .subscribe(
222 () => {
223 this.notificationsService.success(
224 this.i18n('Success'),
225 this.i18n('Instance {{host}} unmuted by the instance.', { host })
226 )
227
228 this.account.mutedServerByInstance = false
229 this.userChanged.emit()
230 },
231
232 err => this.notificationsService.error(this.i18n('Error'), err.message)
233 )
234 }
235
236 getRouterUserEditLink (user: User) {
237 return [ '/admin', 'users', 'update', user.id ]
238 }
239
240 private buildActions () {
241 this.userActions = []
242
243 if (this.authService.isLoggedIn()) {
244 const authUser = this.authService.getUser()
245
246 if (this.user && authUser.id === this.user.id) return
247
248 if (this.user && authUser.hasRight(UserRight.MANAGE_USERS)) {
249 this.userActions = this.userActions.concat([
250 {
251 label: this.i18n('Edit'),
252 linkBuilder: ({ user }) => this.getRouterUserEditLink(user)
253 },
254 {
255 label: this.i18n('Delete'),
256 handler: ({ user }) => this.removeUser(user)
257 },
258 {
259 label: this.i18n('Ban'),
260 handler: ({ user }: { user: User }) => this.openBanUserModal(user),
261 isDisplayed: ({ user }: { user: User }) => !user.blocked
262 },
263 {
264 label: this.i18n('Unban'),
265 handler: ({ user }: { user: User }) => this.unbanUser(user),
266 isDisplayed: ({ user }: { user: User }) => user.blocked
267 }
268 ])
269 }
270
271 // Actions on accounts/servers
272 if (this.account) {
273 // User actions
274 this.userActions = this.userActions.concat([
275 {
276 label: this.i18n('Mute this account'),
277 isDisplayed: ({ account }: { account: Account }) => account.mutedByUser === false,
278 handler: ({ account }: { account: Account }) => this.blockAccountByUser(account)
279 },
280 {
281 label: this.i18n('Unmute this account'),
282 isDisplayed: ({ account }: { account: Account }) => account.mutedByUser === true,
283 handler: ({ account }: { account: Account }) => this.unblockAccountByUser(account)
284 },
285 {
286 label: this.i18n('Mute the instance'),
287 isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === false,
288 handler: ({ account }: { account: Account }) => this.blockServerByUser(account.host)
289 },
290 {
291 label: this.i18n('Unmute the instance'),
292 isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === true,
293 handler: ({ account }: { account: Account }) => this.unblockServerByUser(account.host)
294 }
295 ])
296
297 // Instance actions
298 if (authUser.hasRight(UserRight.MANAGE_ACCOUNTS_BLOCKLIST)) {
299 this.userActions = this.userActions.concat([
300 {
301 label: this.i18n('Mute this account by your instance'),
302 isDisplayed: ({ account }: { account: Account }) => account.mutedByInstance === false,
303 handler: ({ account }: { account: Account }) => this.blockAccountByInstance(account)
304 },
305 {
306 label: this.i18n('Unmute this account by your instance'),
307 isDisplayed: ({ account }: { account: Account }) => account.mutedByInstance === true,
308 handler: ({ account }: { account: Account }) => this.unblockAccountByInstance(account)
309 }
310 ])
311 }
312
313 // Instance actions
314 if (authUser.hasRight(UserRight.MANAGE_SERVERS_BLOCKLIST)) {
315 this.userActions = this.userActions.concat([
316 {
317 label: this.i18n('Mute the instance by your instance'),
318 isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === false,
319 handler: ({ account }: { account: Account }) => this.blockServerByInstance(account.host)
320 },
321 {
322 label: this.i18n('Unmute the instance by your instance'),
323 isDisplayed: ({ account }: { account: Account }) => !account.userId && account.mutedServerByInstance === true,
324 handler: ({ account }: { account: Account }) => this.unblockServerByInstance(account.host)
325 }
326 ])
327 }
328 }
329 }
330 }
331}
diff --git a/client/src/app/shared/overview/videos-overview.model.ts b/client/src/app/shared/overview/videos-overview.model.ts
index cf02bdb3d..c8eafc8e8 100644
--- a/client/src/app/shared/overview/videos-overview.model.ts
+++ b/client/src/app/shared/overview/videos-overview.model.ts
@@ -16,4 +16,5 @@ export class VideosOverview implements VideosOverviewServer {
16 tag: string 16 tag: string
17 videos: Video[] 17 videos: Video[]
18 }[] 18 }[]
19 [key: string]: any
19} 20}
diff --git a/client/src/app/shared/rest/rest-extractor.service.ts b/client/src/app/shared/rest/rest-extractor.service.ts
index 6492aa66d..f149569ef 100644
--- a/client/src/app/shared/rest/rest-extractor.service.ts
+++ b/client/src/app/shared/rest/rest-extractor.service.ts
@@ -33,7 +33,7 @@ export class RestExtractor {
33 return this.applyToResultListData(result, this.convertDateToHuman, [ fieldsToConvert ]) 33 return this.applyToResultListData(result, this.convertDateToHuman, [ fieldsToConvert ])
34 } 34 }
35 35
36 convertDateToHuman (target: object, fieldsToConvert: string[]) { 36 convertDateToHuman (target: { [ id: string ]: string }, fieldsToConvert: string[]) {
37 fieldsToConvert.forEach(field => target[field] = dateToHuman(target[field])) 37 fieldsToConvert.forEach(field => target[field] = dateToHuman(target[field]))
38 38
39 return target 39 return target
@@ -83,7 +83,7 @@ export class RestExtractor {
83 errorMessage = err 83 errorMessage = err
84 } 84 }
85 85
86 const errorObj = { 86 const errorObj: { message: string, status: string, body: string } = {
87 message: errorMessage, 87 message: errorMessage,
88 status: undefined, 88 status: undefined,
89 body: undefined 89 body: undefined
diff --git a/client/src/app/shared/rest/rest-table.ts b/client/src/app/shared/rest/rest-table.ts
index fe1a91d2d..884588207 100644
--- a/client/src/app/shared/rest/rest-table.ts
+++ b/client/src/app/shared/rest/rest-table.ts
@@ -1,8 +1,9 @@
1import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage' 1import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage'
2import { LazyLoadEvent } from 'primeng/components/common/lazyloadevent' 2import { LazyLoadEvent } from 'primeng/components/common/lazyloadevent'
3import { SortMeta } from 'primeng/components/common/sortmeta' 3import { SortMeta } from 'primeng/components/common/sortmeta'
4
5import { RestPagination } from './rest-pagination' 4import { RestPagination } from './rest-pagination'
5import { Subject } from 'rxjs'
6import { debounceTime, distinctUntilChanged } from 'rxjs/operators'
6 7
7export abstract class RestTable { 8export abstract class RestTable {
8 9
@@ -11,9 +12,14 @@ export abstract class RestTable {
11 abstract sort: SortMeta 12 abstract sort: SortMeta
12 abstract pagination: RestPagination 13 abstract pagination: RestPagination
13 14
15 protected search: string
16 private searchStream: Subject<string>
14 private sortLocalStorageKey = 'rest-table-sort-' + this.constructor.name 17 private sortLocalStorageKey = 'rest-table-sort-' + this.constructor.name
15 18
16 protected abstract loadData (): void 19 initialize () {
20 this.loadSort()
21 this.initSearch()
22 }
17 23
18 loadSort () { 24 loadSort () {
19 const result = peertubeLocalStorage.getItem(this.sortLocalStorageKey) 25 const result = peertubeLocalStorage.getItem(this.sortLocalStorageKey)
@@ -46,4 +52,23 @@ export abstract class RestTable {
46 peertubeLocalStorage.setItem(this.sortLocalStorageKey, JSON.stringify(this.sort)) 52 peertubeLocalStorage.setItem(this.sortLocalStorageKey, JSON.stringify(this.sort))
47 } 53 }
48 54
55 initSearch () {
56 this.searchStream = new Subject()
57
58 this.searchStream
59 .pipe(
60 debounceTime(400),
61 distinctUntilChanged()
62 )
63 .subscribe(search => {
64 this.search = search
65 this.loadData()
66 })
67 }
68
69 onSearch (search: string) {
70 this.searchStream.next(search)
71 }
72
73 protected abstract loadData (): void
49} 74}
diff --git a/client/src/app/shared/rest/rest.service.ts b/client/src/app/shared/rest/rest.service.ts
index 4560c2024..e6d4e6e5e 100644
--- a/client/src/app/shared/rest/rest.service.ts
+++ b/client/src/app/shared/rest/rest.service.ts
@@ -32,7 +32,7 @@ export class RestService {
32 return newParams 32 return newParams
33 } 33 }
34 34
35 addObjectParams (params: HttpParams, object: object) { 35 addObjectParams (params: HttpParams, object: { [ name: string ]: any }) {
36 for (const name of Object.keys(object)) { 36 for (const name of Object.keys(object)) {
37 const value = object[name] 37 const value = object[name]
38 if (!value) continue 38 if (!value) continue
diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts
index 076f1d275..0ec2a9b15 100644
--- a/client/src/app/shared/shared.module.ts
+++ b/client/src/app/shared/shared.module.ts
@@ -25,7 +25,7 @@ import { VideoAbuseService } from './video-abuse'
25import { VideoBlacklistService } from './video-blacklist' 25import { VideoBlacklistService } from './video-blacklist'
26import { VideoOwnershipService } from './video-ownership' 26import { VideoOwnershipService } from './video-ownership'
27import { VideoMiniatureComponent } from './video/video-miniature.component' 27import { VideoMiniatureComponent } from './video/video-miniature.component'
28import { VideoFeedComponent } from './video/video-feed.component' 28import { FeedComponent } from './video/feed.component'
29import { VideoThumbnailComponent } from './video/video-thumbnail.component' 29import { VideoThumbnailComponent } from './video/video-thumbnail.component'
30import { VideoService } from './video/video.service' 30import { VideoService } from './video/video.service'
31import { AccountService } from '@app/shared/account/account.service' 31import { AccountService } from '@app/shared/account/account.service'
@@ -56,6 +56,9 @@ import { NgbDropdownModule, NgbModalModule, NgbPopoverModule, NgbTabsetModule, N
56import { SubscribeButtonComponent, RemoteSubscribeComponent, UserSubscriptionService } from '@app/shared/user-subscription' 56import { SubscribeButtonComponent, RemoteSubscribeComponent, UserSubscriptionService } from '@app/shared/user-subscription'
57import { InstanceFeaturesTableComponent } from '@app/shared/instance/instance-features-table.component' 57import { InstanceFeaturesTableComponent } from '@app/shared/instance/instance-features-table.component'
58import { OverviewService } from '@app/shared/overview' 58import { OverviewService } from '@app/shared/overview'
59import { UserBanModalComponent } from '@app/shared/moderation'
60import { UserModerationDropdownComponent } from '@app/shared/moderation/user-moderation-dropdown.component'
61import { BlocklistService } from '@app/shared/blocklist'
59 62
60@NgModule({ 63@NgModule({
61 imports: [ 64 imports: [
@@ -79,7 +82,7 @@ import { OverviewService } from '@app/shared/overview'
79 LoaderComponent, 82 LoaderComponent,
80 VideoThumbnailComponent, 83 VideoThumbnailComponent,
81 VideoMiniatureComponent, 84 VideoMiniatureComponent,
82 VideoFeedComponent, 85 FeedComponent,
83 ButtonComponent, 86 ButtonComponent,
84 DeleteButtonComponent, 87 DeleteButtonComponent,
85 EditButtonComponent, 88 EditButtonComponent,
@@ -94,7 +97,9 @@ import { OverviewService } from '@app/shared/overview'
94 PeertubeCheckboxComponent, 97 PeertubeCheckboxComponent,
95 SubscribeButtonComponent, 98 SubscribeButtonComponent,
96 RemoteSubscribeComponent, 99 RemoteSubscribeComponent,
97 InstanceFeaturesTableComponent 100 InstanceFeaturesTableComponent,
101 UserBanModalComponent,
102 UserModerationDropdownComponent
98 ], 103 ],
99 104
100 exports: [ 105 exports: [
@@ -117,7 +122,7 @@ import { OverviewService } from '@app/shared/overview'
117 LoaderComponent, 122 LoaderComponent,
118 VideoThumbnailComponent, 123 VideoThumbnailComponent,
119 VideoMiniatureComponent, 124 VideoMiniatureComponent,
120 VideoFeedComponent, 125 FeedComponent,
121 ButtonComponent, 126 ButtonComponent,
122 DeleteButtonComponent, 127 DeleteButtonComponent,
123 EditButtonComponent, 128 EditButtonComponent,
@@ -130,6 +135,8 @@ import { OverviewService } from '@app/shared/overview'
130 SubscribeButtonComponent, 135 SubscribeButtonComponent,
131 RemoteSubscribeComponent, 136 RemoteSubscribeComponent,
132 InstanceFeaturesTableComponent, 137 InstanceFeaturesTableComponent,
138 UserBanModalComponent,
139 UserModerationDropdownComponent,
133 140
134 NumberFormatterPipe, 141 NumberFormatterPipe,
135 ObjectLengthPipe, 142 ObjectLengthPipe,
@@ -166,6 +173,7 @@ import { OverviewService } from '@app/shared/overview'
166 OverviewService, 173 OverviewService,
167 VideoChangeOwnershipValidatorsService, 174 VideoChangeOwnershipValidatorsService,
168 VideoAcceptOwnershipValidatorsService, 175 VideoAcceptOwnershipValidatorsService,
176 BlocklistService,
169 177
170 I18nPrimengCalendarService, 178 I18nPrimengCalendarService,
171 ScreenService, 179 ScreenService,
diff --git a/client/src/app/shared/users/user.model.ts b/client/src/app/shared/users/user.model.ts
index 877f1bf3a..7c840ffa7 100644
--- a/client/src/app/shared/users/user.model.ts
+++ b/client/src/app/shared/users/user.model.ts
@@ -18,6 +18,7 @@ export type UserConstructorHash = {
18 videoQuota?: number, 18 videoQuota?: number,
19 videoQuotaDaily?: number, 19 videoQuotaDaily?: number,
20 nsfwPolicy?: NSFWPolicyType, 20 nsfwPolicy?: NSFWPolicyType,
21 webTorrentEnabled?: boolean,
21 autoPlayVideo?: boolean, 22 autoPlayVideo?: boolean,
22 createdAt?: Date, 23 createdAt?: Date,
23 account?: AccountServerModel, 24 account?: AccountServerModel,
@@ -32,6 +33,7 @@ export class User implements UserServerModel {
32 email: string 33 email: string
33 role: UserRole 34 role: UserRole
34 nsfwPolicy: NSFWPolicyType 35 nsfwPolicy: NSFWPolicyType
36 webTorrentEnabled: boolean
35 autoPlayVideo: boolean 37 autoPlayVideo: boolean
36 videoQuota: number 38 videoQuota: number
37 videoQuotaDaily: number 39 videoQuotaDaily: number
@@ -52,6 +54,7 @@ export class User implements UserServerModel {
52 this.videoQuota = hash.videoQuota 54 this.videoQuota = hash.videoQuota
53 this.videoQuotaDaily = hash.videoQuotaDaily 55 this.videoQuotaDaily = hash.videoQuotaDaily
54 this.nsfwPolicy = hash.nsfwPolicy 56 this.nsfwPolicy = hash.nsfwPolicy
57 this.webTorrentEnabled = hash.webTorrentEnabled
55 this.autoPlayVideo = hash.autoPlayVideo 58 this.autoPlayVideo = hash.autoPlayVideo
56 this.createdAt = hash.createdAt 59 this.createdAt = hash.createdAt
57 this.blocked = hash.blocked 60 this.blocked = hash.blocked
diff --git a/client/src/app/shared/users/user.service.ts b/client/src/app/shared/users/user.service.ts
index bd5cd45d4..27a81f0a2 100644
--- a/client/src/app/shared/users/user.service.ts
+++ b/client/src/app/shared/users/user.service.ts
@@ -1,21 +1,27 @@
1import { Observable } from 'rxjs' 1import { from, Observable } from 'rxjs'
2import { catchError, map } from 'rxjs/operators' 2import { catchError, concatMap, map, toArray } from 'rxjs/operators'
3import { HttpClient, HttpParams } from '@angular/common/http' 3import { HttpClient, HttpParams } from '@angular/common/http'
4import { Injectable } from '@angular/core' 4import { Injectable } from '@angular/core'
5import { UserCreate, UserUpdateMe, UserVideoQuota } from '../../../../../shared' 5import { ResultList, User, UserCreate, UserRole, UserUpdate, UserUpdateMe, UserVideoQuota } from '../../../../../shared'
6import { environment } from '../../../environments/environment' 6import { environment } from '../../../environments/environment'
7import { RestExtractor } from '../rest' 7import { RestExtractor, RestPagination, RestService } from '../rest'
8import { Avatar } from '../../../../../shared/models/avatars/avatar.model' 8import { Avatar } from '../../../../../shared/models/avatars/avatar.model'
9import { SortMeta } from 'primeng/api'
10import { BytesPipe } from 'ngx-pipes'
11import { I18n } from '@ngx-translate/i18n-polyfill'
9 12
10@Injectable() 13@Injectable()
11export class UserService { 14export class UserService {
12 static BASE_USERS_URL = environment.apiUrl + '/api/v1/users/' 15 static BASE_USERS_URL = environment.apiUrl + '/api/v1/users/'
13 16
17 private bytesPipe = new BytesPipe()
18
14 constructor ( 19 constructor (
15 private authHttp: HttpClient, 20 private authHttp: HttpClient,
16 private restExtractor: RestExtractor 21 private restExtractor: RestExtractor,
17 ) { 22 private restService: RestService,
18 } 23 private i18n: I18n
24 ) { }
19 25
20 changePassword (currentPassword: string, newPassword: string) { 26 changePassword (currentPassword: string, newPassword: string) {
21 const url = UserService.BASE_USERS_URL + 'me' 27 const url = UserService.BASE_USERS_URL + 'me'
@@ -128,4 +134,98 @@ export class UserService {
128 .get<string[]>(url, { params }) 134 .get<string[]>(url, { params })
129 .pipe(catchError(res => this.restExtractor.handleError(res))) 135 .pipe(catchError(res => this.restExtractor.handleError(res)))
130 } 136 }
137
138 /* ###### Admin methods ###### */
139
140 addUser (userCreate: UserCreate) {
141 return this.authHttp.post(UserService.BASE_USERS_URL, userCreate)
142 .pipe(
143 map(this.restExtractor.extractDataBool),
144 catchError(err => this.restExtractor.handleError(err))
145 )
146 }
147
148 updateUser (userId: number, userUpdate: UserUpdate) {
149 return this.authHttp.put(UserService.BASE_USERS_URL + userId, userUpdate)
150 .pipe(
151 map(this.restExtractor.extractDataBool),
152 catchError(err => this.restExtractor.handleError(err))
153 )
154 }
155
156 getUser (userId: number) {
157 return this.authHttp.get<User>(UserService.BASE_USERS_URL + userId)
158 .pipe(catchError(err => this.restExtractor.handleError(err)))
159 }
160
161 getUsers (pagination: RestPagination, sort: SortMeta, search?: string): Observable<ResultList<User>> {
162 let params = new HttpParams()
163 params = this.restService.addRestGetParams(params, pagination, sort)
164
165 if (search) params = params.append('search', search)
166
167 return this.authHttp.get<ResultList<User>>(UserService.BASE_USERS_URL, { params })
168 .pipe(
169 map(res => this.restExtractor.convertResultListDateToHuman(res)),
170 map(res => this.restExtractor.applyToResultListData(res, this.formatUser.bind(this))),
171 catchError(err => this.restExtractor.handleError(err))
172 )
173 }
174
175 removeUser (usersArg: User | User[]) {
176 const users = Array.isArray(usersArg) ? usersArg : [ usersArg ]
177
178 return from(users)
179 .pipe(
180 concatMap(u => this.authHttp.delete(UserService.BASE_USERS_URL + u.id)),
181 toArray(),
182 catchError(err => this.restExtractor.handleError(err))
183 )
184 }
185
186 banUsers (usersArg: User | User[], reason?: string) {
187 const body = reason ? { reason } : {}
188 const users = Array.isArray(usersArg) ? usersArg : [ usersArg ]
189
190 return from(users)
191 .pipe(
192 concatMap(u => this.authHttp.post(UserService.BASE_USERS_URL + u.id + '/block', body)),
193 toArray(),
194 catchError(err => this.restExtractor.handleError(err))
195 )
196 }
197
198 unbanUsers (usersArg: User | User[]) {
199 const users = Array.isArray(usersArg) ? usersArg : [ usersArg ]
200
201 return from(users)
202 .pipe(
203 concatMap(u => this.authHttp.post(UserService.BASE_USERS_URL + u.id + '/unblock', {})),
204 toArray(),
205 catchError(err => this.restExtractor.handleError(err))
206 )
207 }
208
209 private formatUser (user: User) {
210 let videoQuota
211 if (user.videoQuota === -1) {
212 videoQuota = this.i18n('Unlimited')
213 } else {
214 videoQuota = this.bytesPipe.transform(user.videoQuota, 0)
215 }
216
217 const videoQuotaUsed = this.bytesPipe.transform(user.videoQuotaUsed, 0)
218
219 const roleLabels: { [ id in UserRole ]: string } = {
220 [UserRole.USER]: this.i18n('User'),
221 [UserRole.ADMINISTRATOR]: this.i18n('Administrator'),
222 [UserRole.MODERATOR]: this.i18n('Moderator')
223 }
224
225 return Object.assign(user, {
226 roleLabel: roleLabels[user.role],
227 videoQuota,
228 videoQuotaUsed
229 })
230 }
131} 231}
diff --git a/client/src/app/shared/video/abstract-video-list.html b/client/src/app/shared/video/abstract-video-list.html
index d543ab7c1..29492351b 100644
--- a/client/src/app/shared/video/abstract-video-list.html
+++ b/client/src/app/shared/video/abstract-video-list.html
@@ -1,8 +1,18 @@
1<div [ngClass]="{ 'margin-content': marginContent }"> 1<div [ngClass]="{ 'margin-content': marginContent }">
2 <div *ngIf="titlePage" class="title-page title-page-single"> 2 <div class="videos-header">
3 {{ titlePage }} 3 <div *ngIf="titlePage" class="title-page title-page-single">
4 {{ titlePage }}
5 </div>
6 <my-feed [syndicationItems]="syndicationItems"></my-feed>
7
8 <div class="moderation-block" *ngIf="displayModerationBlock">
9 <my-peertube-checkbox
10 (change)="toggleModerationDisplay()"
11 inputName="display-unlisted-private" i18n-labelText labelText="Display unlisted and private videos"
12 >
13 </my-peertube-checkbox>
14 </div>
4 </div> 15 </div>
5 <my-video-feed [syndicationItems]="syndicationItems"></my-video-feed>
6 16
7 <div class="no-results" i18n *ngIf="pagination.totalItems === 0">No results.</div> 17 <div class="no-results" i18n *ngIf="pagination.totalItems === 0">No results.</div>
8 <div 18 <div
diff --git a/client/src/app/shared/video/abstract-video-list.scss b/client/src/app/shared/video/abstract-video-list.scss
index 3f9c73a29..9fb3fd4d6 100644
--- a/client/src/app/shared/video/abstract-video-list.scss
+++ b/client/src/app/shared/video/abstract-video-list.scss
@@ -8,12 +8,27 @@
8 } 8 }
9} 9}
10 10
11.title-page.title-page-single { 11.videos-header {
12 margin-right: 5px; 12 display: flex;
13} 13 height: 80px;
14 align-items: center;
15
16 .title-page.title-page-single {
17 margin: 0 5px 0 0;
18 }
14 19
15my-video-feed { 20 my-feed {
16 display: inline-block; 21 display: inline-block;
22 position: relative;
23 top: 1px;
24 }
25
26 .moderation-block {
27 display: flex;
28 flex-grow: 1;
29 justify-content: flex-end;
30 align-items: center;
31 }
17} 32}
18 33
19@media screen and (max-width: 500px) { 34@media screen and (max-width: 500px) {
diff --git a/client/src/app/shared/video/abstract-video-list.ts b/client/src/app/shared/video/abstract-video-list.ts
index 6a758ebe0..2d32dd6ad 100644
--- a/client/src/app/shared/video/abstract-video-list.ts
+++ b/client/src/app/shared/video/abstract-video-list.ts
@@ -12,6 +12,7 @@ import { Video } from './video.model'
12import { I18n } from '@ngx-translate/i18n-polyfill' 12import { I18n } from '@ngx-translate/i18n-polyfill'
13import { ScreenService } from '@app/shared/misc/screen.service' 13import { ScreenService } from '@app/shared/misc/screen.service'
14import { OwnerDisplayType } from '@app/shared/video/video-miniature.component' 14import { OwnerDisplayType } from '@app/shared/video/video-miniature.component'
15import { Syndication } from '@app/shared/video/syndication.model'
15 16
16export abstract class AbstractVideoList implements OnInit, OnDestroy { 17export abstract class AbstractVideoList implements OnInit, OnDestroy {
17 private static LINES_PER_PAGE = 4 18 private static LINES_PER_PAGE = 4
@@ -27,7 +28,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
27 sort: VideoSortField = '-publishedAt' 28 sort: VideoSortField = '-publishedAt'
28 categoryOneOf?: number 29 categoryOneOf?: number
29 defaultSort: VideoSortField = '-publishedAt' 30 defaultSort: VideoSortField = '-publishedAt'
30 syndicationItems = [] 31 syndicationItems: Syndication[] = []
31 32
32 loadOnInit = true 33 loadOnInit = true
33 marginContent = true 34 marginContent = true
@@ -37,6 +38,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
37 videoPages: Video[][] = [] 38 videoPages: Video[][] = []
38 ownerDisplayType: OwnerDisplayType = 'account' 39 ownerDisplayType: OwnerDisplayType = 'account'
39 firstLoadedPage: number 40 firstLoadedPage: number
41 displayModerationBlock = false
40 42
41 protected baseVideoWidth = 215 43 protected baseVideoWidth = 215
42 protected baseVideoHeight = 205 44 protected baseVideoHeight = 205
@@ -58,7 +60,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
58 private resizeSubscription: Subscription 60 private resizeSubscription: Subscription
59 61
60 abstract getVideosObservable (page: number): Observable<{ videos: Video[], totalVideos: number}> 62 abstract getVideosObservable (page: number): Observable<{ videos: Video[], totalVideos: number}>
61 abstract generateSyndicationList () 63 abstract generateSyndicationList (): void
62 64
63 get user () { 65 get user () {
64 return this.authService.getUser() 66 return this.authService.getUser()
@@ -83,7 +85,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
83 85
84 pageByVideoId (index: number, page: Video[]) { 86 pageByVideoId (index: number, page: Video[]) {
85 // Video are unique in all pages 87 // Video are unique in all pages
86 return page[0].id 88 return page.length !== 0 ? page[0].id : 0
87 } 89 }
88 90
89 videoById (index: number, video: Video) { 91 videoById (index: number, video: Video) {
@@ -160,6 +162,10 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
160 ) 162 )
161 } 163 }
162 164
165 toggleModerationDisplay () {
166 throw new Error('toggleModerationDisplay is not implemented')
167 }
168
163 protected hasMoreVideos () { 169 protected hasMoreVideos () {
164 // No results 170 // No results
165 if (this.pagination.totalItems === 0) return false 171 if (this.pagination.totalItems === 0) return false
@@ -206,7 +212,9 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
206 protected setNewRouteParams () { 212 protected setNewRouteParams () {
207 const paramsObject = this.buildRouteParams() 213 const paramsObject = this.buildRouteParams()
208 214
209 const queryParams = Object.keys(paramsObject).map(p => p + '=' + paramsObject[p]).join('&') 215 const queryParams = Object.keys(paramsObject)
216 .map(p => p + '=' + paramsObject[p])
217 .join('&')
210 this.location.replaceState(this.currentRoute, queryParams) 218 this.location.replaceState(this.currentRoute, queryParams)
211 } 219 }
212 220
diff --git a/client/src/app/shared/video/video-feed.component.html b/client/src/app/shared/video/feed.component.html
index 16116ba88..16116ba88 100644
--- a/client/src/app/shared/video/video-feed.component.html
+++ b/client/src/app/shared/video/feed.component.html
diff --git a/client/src/app/shared/video/video-feed.component.scss b/client/src/app/shared/video/feed.component.scss
index 385764be0..385764be0 100644
--- a/client/src/app/shared/video/video-feed.component.scss
+++ b/client/src/app/shared/video/feed.component.scss
diff --git a/client/src/app/shared/video/feed.component.ts b/client/src/app/shared/video/feed.component.ts
new file mode 100644
index 000000000..12507458f
--- /dev/null
+++ b/client/src/app/shared/video/feed.component.ts
@@ -0,0 +1,11 @@
1import { Component, Input } from '@angular/core'
2import { Syndication } from '@app/shared/video/syndication.model'
3
4@Component({
5 selector: 'my-feed',
6 styleUrls: [ './feed.component.scss' ],
7 templateUrl: './feed.component.html'
8})
9export class FeedComponent {
10 @Input() syndicationItems: Syndication[]
11}
diff --git a/client/src/app/shared/video/syndication.model.ts b/client/src/app/shared/video/syndication.model.ts
new file mode 100644
index 000000000..c59ab01e8
--- /dev/null
+++ b/client/src/app/shared/video/syndication.model.ts
@@ -0,0 +1,7 @@
1import { FeedFormat } from '../../../../../shared/models/feeds/feed-format.enum'
2
3export interface Syndication {
4 format: FeedFormat,
5 label: string,
6 url: string
7}
diff --git a/client/src/app/shared/video/video-edit.model.ts b/client/src/app/shared/video/video-edit.model.ts
index 0046be964..fc772a3cf 100644
--- a/client/src/app/shared/video/video-edit.model.ts
+++ b/client/src/app/shared/video/video-edit.model.ts
@@ -49,14 +49,14 @@ export class VideoEdit implements VideoUpdate {
49 } 49 }
50 } 50 }
51 51
52 patch (values: Object) { 52 patch (values: { [ id: string ]: string }) {
53 Object.keys(values).forEach((key) => { 53 Object.keys(values).forEach((key) => {
54 this[ key ] = values[ key ] 54 this[ key ] = values[ key ]
55 }) 55 })
56 56
57 // If schedule publication, the video is private and will be changed to public privacy 57 // If schedule publication, the video is private and will be changed to public privacy
58 if (parseInt(values['privacy'], 10) === VideoEdit.SPECIAL_SCHEDULED_PRIVACY) { 58 if (parseInt(values['privacy'], 10) === VideoEdit.SPECIAL_SCHEDULED_PRIVACY) {
59 const updateAt = (values['schedulePublicationAt'] as Date) 59 const updateAt = new Date(values['schedulePublicationAt'])
60 updateAt.setSeconds(0) 60 updateAt.setSeconds(0)
61 61
62 this.privacy = VideoPrivacy.PRIVATE 62 this.privacy = VideoPrivacy.PRIVATE
diff --git a/client/src/app/shared/video/video-feed.component.ts b/client/src/app/shared/video/video-feed.component.ts
deleted file mode 100644
index 6922153c0..000000000
--- a/client/src/app/shared/video/video-feed.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
1import { Component, Input } from '@angular/core'
2
3@Component({
4 selector: 'my-video-feed',
5 styleUrls: [ './video-feed.component.scss' ],
6 templateUrl: './video-feed.component.html'
7})
8export class VideoFeedComponent {
9 @Input() syndicationItems
10}
diff --git a/client/src/app/shared/video/video-miniature.component.html b/client/src/app/shared/video/video-miniature.component.html
index cfc483018..277a0cf35 100644
--- a/client/src/app/shared/video/video-miniature.component.html
+++ b/client/src/app/shared/video/video-miniature.component.html
@@ -8,6 +8,9 @@
8 [routerLink]="[ '/videos/watch', video.uuid ]" [attr.title]="video.name" [ngClass]="{ 'blur-filter': isVideoBlur }" 8 [routerLink]="[ '/videos/watch', video.uuid ]" [attr.title]="video.name" [ngClass]="{ 'blur-filter': isVideoBlur }"
9 > 9 >
10 {{ video.name }} 10 {{ video.name }}
11
12 <span *ngIf="isUnlistedVideo()" class="badge badge-warning" i18n>Unlisted</span>
13 <span *ngIf="isPrivateVideo()" class="badge badge-danger" i18n>Private</span>
11 </a> 14 </a>
12 15
13 <span i18n class="video-miniature-created-at-views">{{ video.publishedAt | myFromNow }} - {{ video.views | myNumberFormatter }} views</span> 16 <span i18n class="video-miniature-created-at-views">{{ video.publishedAt | myFromNow }} - {{ video.views | myNumberFormatter }} views</span>
diff --git a/client/src/app/shared/video/video-miniature.component.ts b/client/src/app/shared/video/video-miniature.component.ts
index 7e8692b0b..2f951a1f1 100644
--- a/client/src/app/shared/video/video-miniature.component.ts
+++ b/client/src/app/shared/video/video-miniature.component.ts
@@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core
2import { User } from '../users' 2import { User } from '../users'
3import { Video } from './video.model' 3import { Video } from './video.model'
4import { ServerService } from '@app/core' 4import { ServerService } from '@app/core'
5import { VideoPrivacy } from '../../../../../shared'
5 6
6export type OwnerDisplayType = 'account' | 'videoChannel' | 'auto' 7export type OwnerDisplayType = 'account' | 'videoChannel' | 'auto'
7 8
@@ -49,4 +50,12 @@ export class VideoMiniatureComponent implements OnInit {
49 displayOwnerVideoChannel () { 50 displayOwnerVideoChannel () {
50 return this.ownerDisplayTypeChosen === 'videoChannel' 51 return this.ownerDisplayTypeChosen === 'videoChannel'
51 } 52 }
53
54 isUnlistedVideo () {
55 return this.video.privacy.id === VideoPrivacy.UNLISTED
56 }
57
58 isPrivateVideo () {
59 return this.video.privacy.id === VideoPrivacy.PRIVATE
60 }
52} 61}
diff --git a/client/src/app/shared/video/video-thumbnail.component.html b/client/src/app/shared/video/video-thumbnail.component.html
index c1d45ea18..d25666916 100644
--- a/client/src/app/shared/video/video-thumbnail.component.html
+++ b/client/src/app/shared/video/video-thumbnail.component.html
@@ -2,9 +2,11 @@
2 [routerLink]="['/videos/watch', video.uuid]" [attr.title]="video.name" 2 [routerLink]="['/videos/watch', video.uuid]" [attr.title]="video.name"
3 class="video-thumbnail" 3 class="video-thumbnail"
4> 4>
5<img alt="" [attr.aria-labelledby]="video.name" [attr.src]="getImageUrl()" [ngClass]="{ 'blur-filter': nsfw }" /> 5 <img alt="" [attr.aria-labelledby]="video.name" [attr.src]="getImageUrl()" [ngClass]="{ 'blur-filter': nsfw }" />
6 6
7<div class="video-thumbnail-overlay"> 7 <div class="video-thumbnail-overlay">{{ video.durationLabel }}</div>
8 {{ video.durationLabel }} 8
9</div> 9 <div class="progress-bar" *ngIf="video.userHistory?.currentTime">
10 <div [ngStyle]="{ 'width.%': getProgressPercent() }"></div>
11 </div>
10</a> 12</a>
diff --git a/client/src/app/shared/video/video-thumbnail.component.scss b/client/src/app/shared/video/video-thumbnail.component.scss
index 1dd8e5338..4772edaf0 100644
--- a/client/src/app/shared/video/video-thumbnail.component.scss
+++ b/client/src/app/shared/video/video-thumbnail.component.scss
@@ -29,6 +29,19 @@
29 } 29 }
30 } 30 }
31 31
32 .progress-bar {
33 height: 3px;
34 width: 100%;
35 position: relative;
36 top: -3px;
37 background-color: rgba(0, 0, 0, 0.20);
38
39 div {
40 height: 100%;
41 background-color: var(--mainColor);
42 }
43 }
44
32 .video-thumbnail-overlay { 45 .video-thumbnail-overlay {
33 position: absolute; 46 position: absolute;
34 right: 5px; 47 right: 5px;
diff --git a/client/src/app/shared/video/video-thumbnail.component.ts b/client/src/app/shared/video/video-thumbnail.component.ts
index 86d8f6f74..ca43700c7 100644
--- a/client/src/app/shared/video/video-thumbnail.component.ts
+++ b/client/src/app/shared/video/video-thumbnail.component.ts
@@ -22,4 +22,12 @@ export class VideoThumbnailComponent {
22 22
23 return this.video.thumbnailUrl 23 return this.video.thumbnailUrl
24 } 24 }
25
26 getProgressPercent () {
27 if (!this.video.userHistory) return 0
28
29 const currentTime = this.video.userHistory.currentTime
30
31 return (currentTime / this.video.duration) * 100
32 }
25} 33}
diff --git a/client/src/app/shared/video/video.model.ts b/client/src/app/shared/video/video.model.ts
index 80794faa6..b92c96450 100644
--- a/client/src/app/shared/video/video.model.ts
+++ b/client/src/app/shared/video/video.model.ts
@@ -66,6 +66,10 @@ export class Video implements VideoServerModel {
66 avatar: Avatar 66 avatar: Avatar
67 } 67 }
68 68
69 userHistory?: {
70 currentTime: number
71 }
72
69 static buildClientUrl (videoUUID: string) { 73 static buildClientUrl (videoUUID: string) {
70 return '/videos/watch/' + videoUUID 74 return '/videos/watch/' + videoUUID
71 } 75 }
@@ -116,6 +120,8 @@ export class Video implements VideoServerModel {
116 120
117 this.blacklisted = hash.blacklisted 121 this.blacklisted = hash.blacklisted
118 this.blacklistedReason = hash.blacklistedReason 122 this.blacklistedReason = hash.blacklistedReason
123
124 this.userHistory = hash.userHistory
119 } 125 }
120 126
121 isVideoNSFWForUser (user: User, serverConfig: ServerConfig) { 127 isVideoNSFWForUser (user: User, serverConfig: ServerConfig) {
diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts
index 2255a18a2..65297d7a1 100644
--- a/client/src/app/shared/video/video.service.ts
+++ b/client/src/app/shared/video/video.service.ts
@@ -58,6 +58,10 @@ export class VideoService implements VideosProvider {
58 return VideoService.BASE_VIDEO_URL + uuid + '/views' 58 return VideoService.BASE_VIDEO_URL + uuid + '/views'
59 } 59 }
60 60
61 getUserWatchingVideoUrl (uuid: string) {
62 return VideoService.BASE_VIDEO_URL + uuid + '/watching'
63 }
64
61 getVideo (uuid: string): Observable<VideoDetails> { 65 getVideo (uuid: string): Observable<VideoDetails> {
62 return this.serverService.localeObservable 66 return this.serverService.localeObservable
63 .pipe( 67 .pipe(
@@ -270,9 +274,9 @@ export class VideoService implements VideosProvider {
270 274
271 loadCompleteDescription (descriptionPath: string) { 275 loadCompleteDescription (descriptionPath: string) {
272 return this.authHttp 276 return this.authHttp
273 .get(environment.apiUrl + descriptionPath) 277 .get<{ description: string }>(environment.apiUrl + descriptionPath)
274 .pipe( 278 .pipe(
275 map(res => res[ 'description' ]), 279 map(res => res.description),
276 catchError(err => this.restExtractor.handleError(err)) 280 catchError(err => this.restExtractor.handleError(err))
277 ) 281 )
278 } 282 }
diff --git a/client/src/app/signup/signup.component.html b/client/src/app/signup/signup.component.html
index aad4b5be3..531a97814 100644
--- a/client/src/app/signup/signup.component.html
+++ b/client/src/app/signup/signup.component.html
@@ -51,7 +51,7 @@
51 <div class="form-group form-group-terms"> 51 <div class="form-group form-group-terms">
52 <my-peertube-checkbox 52 <my-peertube-checkbox
53 inputName="terms" formControlName="terms" 53 inputName="terms" formControlName="terms"
54 i18n-labelHtml labelHtml="I have read and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance" 54 i18n-labelHtml labelHtml="I am at least 16 years old and agree to the <a href='/about/instance#terms-section' target='_blank'rel='noopener noreferrer'>Terms</a> of this instance"
55 ></my-peertube-checkbox> 55 ></my-peertube-checkbox>
56 56
57 <div *ngIf="formErrors.terms" class="form-error"> 57 <div *ngIf="formErrors.terms" class="form-error">
diff --git a/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts b/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts
index 07c33030a..796fbe531 100644
--- a/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts
+++ b/client/src/app/videos/+video-edit/shared/video-caption-add-modal.component.ts
@@ -5,6 +5,7 @@ import { VideoCaptionsValidatorsService } from '@app/shared/forms/form-validator
5import { ServerService } from '@app/core' 5import { ServerService } from '@app/core'
6import { VideoCaptionEdit } from '@app/shared/video-caption/video-caption-edit.model' 6import { VideoCaptionEdit } from '@app/shared/video-caption/video-caption-edit.model'
7import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' 7import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'
8import { VideoConstant } from '../../../../../../shared'
8 9
9@Component({ 10@Component({
10 selector: 'my-video-caption-add-modal', 11 selector: 'my-video-caption-add-modal',
@@ -19,7 +20,7 @@ export class VideoCaptionAddModalComponent extends FormReactive implements OnIni
19 20
20 @ViewChild('modal') modal: ElementRef 21 @ViewChild('modal') modal: ElementRef
21 22
22 videoCaptionLanguages = [] 23 videoCaptionLanguages: VideoConstant<string>[] = []
23 24
24 private openedModal: NgbModalRef 25 private openedModal: NgbModalRef
25 private closingModal = false 26 private closingModal = false
diff --git a/client/src/app/videos/+video-edit/shared/video-edit.component.scss b/client/src/app/videos/+video-edit/shared/video-edit.component.scss
index b039d7ad4..25db8e8ed 100644
--- a/client/src/app/videos/+video-edit/shared/video-edit.component.scss
+++ b/client/src/app/videos/+video-edit/shared/video-edit.component.scss
@@ -5,6 +5,11 @@
5 @include peertube-select-container(auto); 5 @include peertube-select-container(auto);
6} 6}
7 7
8my-peertube-checkbox {
9 display: block;
10 margin-bottom: 1rem;
11}
12
8.video-edit { 13.video-edit {
9 height: 100%; 14 height: 100%;
10 min-height: 300px; 15 min-height: 300px;
diff --git a/client/src/app/videos/+video-edit/shared/video-edit.component.ts b/client/src/app/videos/+video-edit/shared/video-edit.component.ts
index eb9396d70..a56733e57 100644
--- a/client/src/app/videos/+video-edit/shared/video-edit.component.ts
+++ b/client/src/app/videos/+video-edit/shared/video-edit.component.ts
@@ -48,7 +48,7 @@ export class VideoEditComponent implements OnInit, OnDestroy {
48 calendarTimezone: string 48 calendarTimezone: string
49 calendarDateFormat: string 49 calendarDateFormat: string
50 50
51 private schedulerInterval 51 private schedulerInterval: any
52 private firstPatchDone = false 52 private firstPatchDone = false
53 private initialVideoCaptions: string[] = [] 53 private initialVideoCaptions: string[] = []
54 54
@@ -77,13 +77,13 @@ export class VideoEditComponent implements OnInit, OnDestroy {
77 } 77 }
78 78
79 updateForm () { 79 updateForm () {
80 const defaultValues = { 80 const defaultValues: any = {
81 nsfw: 'false', 81 nsfw: 'false',
82 commentsEnabled: 'true', 82 commentsEnabled: 'true',
83 waitTranscoding: 'true', 83 waitTranscoding: 'true',
84 tags: [] 84 tags: []
85 } 85 }
86 const obj = { 86 const obj: any = {
87 name: this.videoValidatorsService.VIDEO_NAME, 87 name: this.videoValidatorsService.VIDEO_NAME,
88 privacy: this.videoValidatorsService.VIDEO_PRIVACY, 88 privacy: this.videoValidatorsService.VIDEO_PRIVACY,
89 channelId: this.videoValidatorsService.VIDEO_CHANNEL, 89 channelId: this.videoValidatorsService.VIDEO_CHANNEL,
diff --git a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts
index 0f7184ff8..e13c06ce9 100644
--- a/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts
+++ b/client/src/app/videos/+video-edit/video-add-components/video-import-torrent.component.ts
@@ -1,4 +1,4 @@
1import { Component, EventEmitter, OnInit, Output, ViewChild } from '@angular/core' 1import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'
2import { Router } from '@angular/router' 2import { Router } from '@angular/router'
3import { NotificationsService } from 'angular2-notifications' 3import { NotificationsService } from 'angular2-notifications'
4import { VideoPrivacy, VideoUpdate } from '../../../../../../shared/models/videos' 4import { VideoPrivacy, VideoUpdate } from '../../../../../../shared/models/videos'
@@ -23,7 +23,7 @@ import { VideoImportService } from '@app/shared/video-import'
23}) 23})
24export class VideoImportTorrentComponent extends VideoSend implements OnInit, CanComponentDeactivate { 24export class VideoImportTorrentComponent extends VideoSend implements OnInit, CanComponentDeactivate {
25 @Output() firstStepDone = new EventEmitter<string>() 25 @Output() firstStepDone = new EventEmitter<string>()
26 @ViewChild('torrentfileInput') torrentfileInput 26 @ViewChild('torrentfileInput') torrentfileInput: ElementRef<HTMLInputElement>
27 27
28 videoFileName: string 28 videoFileName: string
29 magnetUri = '' 29 magnetUri = ''
@@ -64,7 +64,7 @@ export class VideoImportTorrentComponent extends VideoSend implements OnInit, Ca
64 } 64 }
65 65
66 fileChange () { 66 fileChange () {
67 const torrentfile = this.torrentfileInput.nativeElement.files[0] as File 67 const torrentfile = this.torrentfileInput.nativeElement.files[0]
68 if (!torrentfile) return 68 if (!torrentfile) return
69 69
70 this.importVideo(torrentfile) 70 this.importVideo(torrentfile)
diff --git a/client/src/app/videos/+video-edit/video-add-components/video-send.ts b/client/src/app/videos/+video-edit/video-add-components/video-send.ts
index 6d1bac3f2..1bf22e1a9 100644
--- a/client/src/app/videos/+video-edit/video-add-components/video-send.ts
+++ b/client/src/app/videos/+video-edit/video-add-components/video-send.ts
@@ -3,7 +3,6 @@ import { LoadingBarService } from '@ngx-loading-bar/core'
3import { NotificationsService } from 'angular2-notifications' 3import { NotificationsService } from 'angular2-notifications'
4import { catchError, switchMap, tap } from 'rxjs/operators' 4import { catchError, switchMap, tap } from 'rxjs/operators'
5import { FormReactive } from '@app/shared' 5import { FormReactive } from '@app/shared'
6import { CanComponentDeactivate } from '@app/shared/guards/can-deactivate-guard.service'
7import { VideoConstant, VideoPrivacy } from '../../../../../../shared' 6import { VideoConstant, VideoPrivacy } from '../../../../../../shared'
8import { AuthService, ServerService } from '@app/core' 7import { AuthService, ServerService } from '@app/core'
9import { VideoService } from '@app/shared/video/video.service' 8import { VideoService } from '@app/shared/video/video.service'
@@ -11,8 +10,9 @@ import { VideoCaptionEdit } from '@app/shared/video-caption/video-caption-edit.m
11import { VideoCaptionService } from '@app/shared/video-caption' 10import { VideoCaptionService } from '@app/shared/video-caption'
12import { VideoEdit } from '@app/shared/video/video-edit.model' 11import { VideoEdit } from '@app/shared/video/video-edit.model'
13import { populateAsyncUserVideoChannels } from '@app/shared/misc/utils' 12import { populateAsyncUserVideoChannels } from '@app/shared/misc/utils'
13import { CanComponentDeactivateResult } from '@app/shared/guards/can-deactivate-guard.service'
14 14
15export abstract class VideoSend extends FormReactive implements OnInit, CanComponentDeactivate { 15export abstract class VideoSend extends FormReactive implements OnInit {
16 userVideoChannels: { id: number, label: string, support: string }[] = [] 16 userVideoChannels: { id: number, label: string, support: string }[] = []
17 videoPrivacies: VideoConstant<VideoPrivacy>[] = [] 17 videoPrivacies: VideoConstant<VideoPrivacy>[] = []
18 videoCaptions: VideoCaptionEdit[] = [] 18 videoCaptions: VideoCaptionEdit[] = []
@@ -30,7 +30,7 @@ export abstract class VideoSend extends FormReactive implements OnInit, CanCompo
30 protected videoService: VideoService 30 protected videoService: VideoService
31 protected videoCaptionService: VideoCaptionService 31 protected videoCaptionService: VideoCaptionService
32 32
33 abstract canDeactivate () 33 abstract canDeactivate (): CanComponentDeactivateResult
34 34
35 ngOnInit () { 35 ngOnInit () {
36 this.buildForm({}) 36 this.buildForm({})
diff --git a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts
index 941dc5441..8e2d0deaf 100644
--- a/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts
+++ b/client/src/app/videos/+video-edit/video-add-components/video-upload.component.ts
@@ -1,5 +1,5 @@
1import { HttpEventType, HttpResponse } from '@angular/common/http' 1import { HttpEventType, HttpResponse } from '@angular/common/http'
2import { Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core' 2import { Component, ElementRef, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'
3import { Router } from '@angular/router' 3import { Router } from '@angular/router'
4import { LoadingBarService } from '@ngx-loading-bar/core' 4import { LoadingBarService } from '@ngx-loading-bar/core'
5import { NotificationsService } from 'angular2-notifications' 5import { NotificationsService } from 'angular2-notifications'
@@ -25,7 +25,7 @@ import { VideoCaptionService } from '@app/shared/video-caption'
25}) 25})
26export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy, CanComponentDeactivate { 26export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy, CanComponentDeactivate {
27 @Output() firstStepDone = new EventEmitter<string>() 27 @Output() firstStepDone = new EventEmitter<string>()
28 @ViewChild('videofileInput') videofileInput 28 @ViewChild('videofileInput') videofileInput: ElementRef<HTMLInputElement>
29 29
30 // So that it can be accessed in the template 30 // So that it can be accessed in the template
31 readonly SPECIAL_SCHEDULED_PRIVACY = VideoEdit.SPECIAL_SCHEDULED_PRIVACY 31 readonly SPECIAL_SCHEDULED_PRIVACY = VideoEdit.SPECIAL_SCHEDULED_PRIVACY
@@ -110,7 +110,7 @@ export class VideoUploadComponent extends VideoSend implements OnInit, OnDestroy
110 } 110 }
111 111
112 uploadFirstStep () { 112 uploadFirstStep () {
113 const videofile = this.videofileInput.nativeElement.files[0] as File 113 const videofile = this.videofileInput.nativeElement.files[0]
114 if (!videofile) return 114 if (!videofile) return
115 115
116 // Cannot upload videos > 8GB for now 116 // Cannot upload videos > 8GB for now
diff --git a/client/src/app/videos/+video-watch/comment/linkifier.service.ts b/client/src/app/videos/+video-watch/comment/linkifier.service.ts
index 3f4072efd..4f4ec1e5d 100644
--- a/client/src/app/videos/+video-watch/comment/linkifier.service.ts
+++ b/client/src/app/videos/+video-watch/comment/linkifier.service.ts
@@ -1,7 +1,8 @@
1import { Injectable } from '@angular/core' 1import { Injectable } from '@angular/core'
2import { getAbsoluteAPIUrl } from '@app/shared/misc/utils' 2import { getAbsoluteAPIUrl } from '@app/shared/misc/utils'
3import * as linkify from 'linkifyjs' 3// FIXME: use @types/linkify when https://github.com/DefinitelyTyped/DefinitelyTyped/pull/29682/files is merged?
4import * as linkifyHtml from 'linkifyjs/html' 4const linkify = require('linkifyjs')
5const linkifyHtml = require('linkifyjs/html')
5 6
6@Injectable() 7@Injectable()
7export class LinkifierService { 8export class LinkifierService {
@@ -40,7 +41,7 @@ export class LinkifierService {
40 const TT_UNDERSCORE = TT.UNDERSCORE 41 const TT_UNDERSCORE = TT.UNDERSCORE
41 const TT_DOT = TT.DOT 42 const TT_DOT = TT.DOT
42 43
43 function MENTION (value) { 44 function MENTION (value: any) {
44 this.v = value 45 this.v = value
45 } 46 }
46 47
diff --git a/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts b/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts
index fb7de0e04..ba3c0398e 100644
--- a/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts
+++ b/client/src/app/videos/+video-watch/comment/video-comment-add.component.ts
@@ -76,7 +76,7 @@ export class VideoCommentAddComponent extends FormReactive implements OnInit {
76 this.formValidated() 76 this.formValidated()
77 } 77 }
78 78
79 openVisitorModal (event) { 79 openVisitorModal (event: any) {
80 if (this.user === null) { // we only open it for visitors 80 if (this.user === null) { // we only open it for visitors
81 // fixing ng-bootstrap ModalService and the "Expression Changed After It Has Been Checked" Error 81 // fixing ng-bootstrap ModalService and the "Expression Changed After It Has Been Checked" Error
82 event.srcElement.blur() 82 event.srcElement.blur()
diff --git a/client/src/app/videos/+video-watch/comment/video-comment.component.ts b/client/src/app/videos/+video-watch/comment/video-comment.component.ts
index e90008de9..00f0460a1 100644
--- a/client/src/app/videos/+video-watch/comment/video-comment.component.ts
+++ b/client/src/app/videos/+video-watch/comment/video-comment.component.ts
@@ -26,7 +26,7 @@ export class VideoCommentComponent implements OnInit, OnChanges {
26 @Output() resetReply = new EventEmitter() 26 @Output() resetReply = new EventEmitter()
27 27
28 sanitizedCommentHTML = '' 28 sanitizedCommentHTML = ''
29 newParentComments = [] 29 newParentComments: VideoComment[] = []
30 30
31 constructor ( 31 constructor (
32 private linkifierService: LinkifierService, 32 private linkifierService: LinkifierService,
diff --git a/client/src/app/videos/+video-watch/comment/video-comment.model.ts b/client/src/app/videos/+video-watch/comment/video-comment.model.ts
index fe591811e..824fb24c3 100644
--- a/client/src/app/videos/+video-watch/comment/video-comment.model.ts
+++ b/client/src/app/videos/+video-watch/comment/video-comment.model.ts
@@ -14,7 +14,7 @@ export class VideoComment implements VideoCommentServerModel {
14 account: AccountInterface 14 account: AccountInterface
15 totalReplies: number 15 totalReplies: number
16 by: string 16 by: string
17 accountAvatarUrl 17 accountAvatarUrl: string
18 18
19 constructor (hash: VideoCommentServerModel) { 19 constructor (hash: VideoCommentServerModel) {
20 this.id = hash.id 20 this.id = hash.id
diff --git a/client/src/app/videos/+video-watch/comment/video-comment.service.ts b/client/src/app/videos/+video-watch/comment/video-comment.service.ts
index 9bcb4b7de..921447d5b 100644
--- a/client/src/app/videos/+video-watch/comment/video-comment.service.ts
+++ b/client/src/app/videos/+video-watch/comment/video-comment.service.ts
@@ -30,9 +30,9 @@ export class VideoCommentService {
30 const url = VideoCommentService.BASE_VIDEO_URL + videoId + '/comment-threads' 30 const url = VideoCommentService.BASE_VIDEO_URL + videoId + '/comment-threads'
31 const normalizedComment = lineFeedToHtml(comment, 'text') 31 const normalizedComment = lineFeedToHtml(comment, 'text')
32 32
33 return this.authHttp.post(url, normalizedComment) 33 return this.authHttp.post<{ comment: VideoCommentServerModel }>(url, normalizedComment)
34 .pipe( 34 .pipe(
35 map(data => this.extractVideoComment(data['comment'])), 35 map(data => this.extractVideoComment(data.comment)),
36 catchError(err => this.restExtractor.handleError(err)) 36 catchError(err => this.restExtractor.handleError(err))
37 ) 37 )
38 } 38 }
@@ -41,9 +41,9 @@ export class VideoCommentService {
41 const url = VideoCommentService.BASE_VIDEO_URL + videoId + '/comments/' + inReplyToCommentId 41 const url = VideoCommentService.BASE_VIDEO_URL + videoId + '/comments/' + inReplyToCommentId
42 const normalizedComment = lineFeedToHtml(comment, 'text') 42 const normalizedComment = lineFeedToHtml(comment, 'text')
43 43
44 return this.authHttp.post(url, normalizedComment) 44 return this.authHttp.post<{ comment: VideoCommentServerModel }>(url, normalizedComment)
45 .pipe( 45 .pipe(
46 map(data => this.extractVideoComment(data[ 'comment' ])), 46 map(data => this.extractVideoComment(data.comment)),
47 catchError(err => this.restExtractor.handleError(err)) 47 catchError(err => this.restExtractor.handleError(err))
48 ) 48 )
49 } 49 }
diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.html b/client/src/app/videos/+video-watch/comment/video-comments.component.html
index 42e129d65..44016d8ad 100644
--- a/client/src/app/videos/+video-watch/comment/video-comments.component.html
+++ b/client/src/app/videos/+video-watch/comment/video-comments.component.html
@@ -4,7 +4,7 @@
4 Comments 4 Comments
5 </div> 5 </div>
6 6
7 <my-video-feed [syndicationItems]="syndicationItems"></my-video-feed> 7 <my-feed [syndicationItems]="syndicationItems"></my-feed>
8 </div> 8 </div>
9 9
10 <ng-template [ngIf]="video.commentsEnabled === true"> 10 <ng-template [ngIf]="video.commentsEnabled === true">
diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.scss b/client/src/app/videos/+video-watch/comment/video-comments.component.scss
index dbb44c66c..575e331e4 100644
--- a/client/src/app/videos/+video-watch/comment/video-comments.component.scss
+++ b/client/src/app/videos/+video-watch/comment/video-comments.component.scss
@@ -23,7 +23,7 @@
23 margin-right: 0; 23 margin-right: 0;
24} 24}
25 25
26my-video-feed { 26my-feed {
27 display: inline-block; 27 display: inline-block;
28 margin-left: 5px; 28 margin-left: 5px;
29} 29}
diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.ts b/client/src/app/videos/+video-watch/comment/video-comments.component.ts
index c864d82b7..8850eccd8 100644
--- a/client/src/app/videos/+video-watch/comment/video-comments.component.ts
+++ b/client/src/app/videos/+video-watch/comment/video-comments.component.ts
@@ -12,6 +12,7 @@ import { VideoDetails } from '../../../shared/video/video-details.model'
12import { VideoComment } from './video-comment.model' 12import { VideoComment } from './video-comment.model'
13import { VideoCommentService } from './video-comment.service' 13import { VideoCommentService } from './video-comment.service'
14import { I18n } from '@ngx-translate/i18n-polyfill' 14import { I18n } from '@ngx-translate/i18n-polyfill'
15import { Syndication } from '@app/shared/video/syndication.model'
15 16
16@Component({ 17@Component({
17 selector: 'my-video-comments', 18 selector: 'my-video-comments',
@@ -35,7 +36,7 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy {
35 threadComments: { [ id: number ]: VideoCommentThreadTree } = {} 36 threadComments: { [ id: number ]: VideoCommentThreadTree } = {}
36 threadLoading: { [ id: number ]: boolean } = {} 37 threadLoading: { [ id: number ]: boolean } = {}
37 38
38 syndicationItems = [] 39 syndicationItems: Syndication[] = []
39 40
40 private sub: Subscription 41 private sub: Subscription
41 42
diff --git a/client/src/app/videos/+video-watch/video-watch.component.scss b/client/src/app/videos/+video-watch/video-watch.component.scss
index f31e4694a..2586a2204 100644
--- a/client/src/app/videos/+video-watch/video-watch.component.scss
+++ b/client/src/app/videos/+video-watch/video-watch.component.scss
@@ -162,7 +162,7 @@ $other-videos-width: 260px;
162 } 162 }
163 } 163 }
164 164
165 my-video-feed { 165 my-feed {
166 margin-left: 5px; 166 margin-left: 5px;
167 margin-top: 1px; 167 margin-top: 1px;
168 } 168 }
diff --git a/client/src/app/videos/+video-watch/video-watch.component.ts b/client/src/app/videos/+video-watch/video-watch.component.ts
index ea10b22ad..65b974037 100644
--- a/client/src/app/videos/+video-watch/video-watch.component.ts
+++ b/client/src/app/videos/+video-watch/video-watch.component.ts
@@ -7,7 +7,9 @@ import { VideoSupportComponent } from '@app/videos/+video-watch/modal/video-supp
7import { MetaService } from '@ngx-meta/core' 7import { MetaService } from '@ngx-meta/core'
8import { NotificationsService } from 'angular2-notifications' 8import { NotificationsService } from 'angular2-notifications'
9import { forkJoin, Subscription } from 'rxjs' 9import { forkJoin, Subscription } from 'rxjs'
10import * as videojs from 'video.js' 10// FIXME: something weird with our path definition in tsconfig and typings
11// @ts-ignore
12import videojs from 'video.js'
11import 'videojs-hotkeys' 13import 'videojs-hotkeys'
12import { Hotkey, HotkeysService } from 'angular2-hotkeys' 14import { Hotkey, HotkeysService } from 'angular2-hotkeys'
13import * as WebTorrent from 'webtorrent' 15import * as WebTorrent from 'webtorrent'
@@ -369,7 +371,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
369 ) 371 )
370 } 372 }
371 373
372 private async onVideoFetched (video: VideoDetails, videoCaptions: VideoCaption[], startTime = 0) { 374 private async onVideoFetched (video: VideoDetails, videoCaptions: VideoCaption[], startTimeFromUrl: number) {
373 this.video = video 375 this.video = video
374 376
375 // Re init attributes 377 // Re init attributes
@@ -377,6 +379,10 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
377 this.completeDescriptionShown = false 379 this.completeDescriptionShown = false
378 this.remoteServerDown = false 380 this.remoteServerDown = false
379 381
382 let startTime = startTimeFromUrl || (this.video.userHistory ? this.video.userHistory.currentTime : 0)
383 // Don't start the video if we are at the end
384 if (this.video.duration - startTime <= 1) startTime = 0
385
380 if (this.video.isVideoNSFWForUser(this.user, this.serverService.getConfig())) { 386 if (this.video.isVideoNSFWForUser(this.user, this.serverService.getConfig())) {
381 const res = await this.confirmService.confirm( 387 const res = await this.confirmService.confirm(
382 this.i18n('This video contains mature or explicit content. Are you sure you want to watch it?'), 388 this.i18n('This video contains mature or explicit content. Are you sure you want to watch it?'),
@@ -414,7 +420,12 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
414 poster: this.video.previewUrl, 420 poster: this.video.previewUrl,
415 startTime, 421 startTime,
416 theaterMode: true, 422 theaterMode: true,
417 language: this.localeId 423 language: this.localeId,
424
425 userWatching: this.user ? {
426 url: this.videoService.getUserWatchingVideoUrl(this.video.uuid),
427 authorizationHeader: this.authService.getRequestHeaderValue()
428 } : undefined
418 }) 429 })
419 430
420 if (this.videojsLocaleLoaded === false) { 431 if (this.videojsLocaleLoaded === false) {
@@ -426,7 +437,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
426 this.zone.runOutsideAngular(async () => { 437 this.zone.runOutsideAngular(async () => {
427 videojs(this.playerElement, videojsOptions, function () { 438 videojs(this.playerElement, videojsOptions, function () {
428 self.player = this 439 self.player = this
429 this.on('customError', (event, data) => self.handleError(data.err)) 440 this.on('customError', ({ err }: { err: any }) => self.handleError(err))
430 441
431 addContextMenu(self.player, self.video.embedUrl) 442 addContextMenu(self.player, self.video.embedUrl)
432 }) 443 })
@@ -439,7 +450,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
439 this.checkUserRating() 450 this.checkUserRating()
440 } 451 }
441 452
442 private setRating (nextRating) { 453 private setRating (nextRating: VideoRateType) {
443 let method 454 let method
444 switch (nextRating) { 455 switch (nextRating) {
445 case 'like': 456 case 'like':
@@ -461,7 +472,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
461 this.userRating = nextRating 472 this.userRating = nextRating
462 }, 473 },
463 474
464 err => this.notificationsService.error(this.i18n('Error'), err.message) 475 (err: { message: string }) => this.notificationsService.error(this.i18n('Error'), err.message)
465 ) 476 )
466 } 477 }
467 478
diff --git a/client/src/app/videos/video-list/video-local.component.ts b/client/src/app/videos/video-list/video-local.component.ts
index c91c639ca..9d000cf2e 100644
--- a/client/src/app/videos/video-list/video-local.component.ts
+++ b/client/src/app/videos/video-list/video-local.component.ts
@@ -10,6 +10,7 @@ import { VideoService } from '../../shared/video/video.service'
10import { VideoFilter } from '../../../../../shared/models/videos/video-query.type' 10import { VideoFilter } from '../../../../../shared/models/videos/video-query.type'
11import { I18n } from '@ngx-translate/i18n-polyfill' 11import { I18n } from '@ngx-translate/i18n-polyfill'
12import { ScreenService } from '@app/shared/misc/screen.service' 12import { ScreenService } from '@app/shared/misc/screen.service'
13import { UserRight } from '../../../../../shared/models/users'
13 14
14@Component({ 15@Component({
15 selector: 'my-videos-local', 16 selector: 'my-videos-local',
@@ -40,6 +41,11 @@ export class VideoLocalComponent extends AbstractVideoList implements OnInit, On
40 ngOnInit () { 41 ngOnInit () {
41 super.ngOnInit() 42 super.ngOnInit()
42 43
44 if (this.authService.isLoggedIn()) {
45 const user = this.authService.getUser()
46 this.displayModerationBlock = user.hasRight(UserRight.SEE_ALL_VIDEOS)
47 }
48
43 this.generateSyndicationList() 49 this.generateSyndicationList()
44 } 50 }
45 51
@@ -56,4 +62,10 @@ export class VideoLocalComponent extends AbstractVideoList implements OnInit, On
56 generateSyndicationList () { 62 generateSyndicationList () {
57 this.syndicationItems = this.videoService.getVideoFeedUrls(this.sort, this.filter, this.categoryOneOf) 63 this.syndicationItems = this.videoService.getVideoFeedUrls(this.sort, this.filter, this.categoryOneOf)
58 } 64 }
65
66 toggleModerationDisplay () {
67 this.filter = this.filter === 'local' ? 'all-local' as 'all-local' : 'local' as 'local'
68
69 this.reloadVideos()
70 }
59} 71}
diff --git a/client/src/assets/player/peertube-chunk-store.ts b/client/src/assets/player/peertube-chunk-store.ts
index 767e46821..54cc0ea64 100644
--- a/client/src/assets/player/peertube-chunk-store.ts
+++ b/client/src/assets/player/peertube-chunk-store.ts
@@ -40,15 +40,15 @@ export class PeertubeChunkStore extends EventEmitter {
40 // If the store is full 40 // If the store is full
41 private memoryChunks: { [ id: number ]: Buffer | true } = {} 41 private memoryChunks: { [ id: number ]: Buffer | true } = {}
42 private databaseName: string 42 private databaseName: string
43 private putBulkTimeout 43 private putBulkTimeout: any
44 private cleanerInterval 44 private cleanerInterval: any
45 private db: ChunkDatabase 45 private db: ChunkDatabase
46 private expirationDB: ExpirationDatabase 46 private expirationDB: ExpirationDatabase
47 private readonly length: number 47 private readonly length: number
48 private readonly lastChunkLength: number 48 private readonly lastChunkLength: number
49 private readonly lastChunkIndex: number 49 private readonly lastChunkIndex: number
50 50
51 constructor (chunkLength: number, opts) { 51 constructor (chunkLength: number, opts: any) {
52 super() 52 super()
53 53
54 this.databaseName = 'webtorrent-chunks-' 54 this.databaseName = 'webtorrent-chunks-'
@@ -76,7 +76,7 @@ export class PeertubeChunkStore extends EventEmitter {
76 this.runCleaner() 76 this.runCleaner()
77 } 77 }
78 78
79 put (index: number, buf: Buffer, cb: Function) { 79 put (index: number, buf: Buffer, cb: (err?: Error) => void) {
80 const isLastChunk = (index === this.lastChunkIndex) 80 const isLastChunk = (index === this.lastChunkIndex)
81 if (isLastChunk && buf.length !== this.lastChunkLength) { 81 if (isLastChunk && buf.length !== this.lastChunkLength) {
82 return this.nextTick(cb, new Error('Last chunk length must be ' + this.lastChunkLength)) 82 return this.nextTick(cb, new Error('Last chunk length must be ' + this.lastChunkLength))
@@ -113,13 +113,13 @@ export class PeertubeChunkStore extends EventEmitter {
113 }, PeertubeChunkStore.BUFFERING_PUT_MS) 113 }, PeertubeChunkStore.BUFFERING_PUT_MS)
114 } 114 }
115 115
116 get (index: number, opts, cb) { 116 get (index: number, opts: any, cb: (err?: Error, buf?: Buffer) => void): void {
117 if (typeof opts === 'function') return this.get(index, null, opts) 117 if (typeof opts === 'function') return this.get(index, null, opts)
118 118
119 // IndexDB could be slow, use our memory index first 119 // IndexDB could be slow, use our memory index first
120 const memoryChunk = this.memoryChunks[index] 120 const memoryChunk = this.memoryChunks[index]
121 if (memoryChunk === undefined) { 121 if (memoryChunk === undefined) {
122 const err = new Error('Chunk not found') 122 const err = new Error('Chunk not found') as any
123 err['notFound'] = true 123 err['notFound'] = true
124 124
125 return process.nextTick(() => cb(err)) 125 return process.nextTick(() => cb(err))
@@ -146,11 +146,11 @@ export class PeertubeChunkStore extends EventEmitter {
146 }) 146 })
147 } 147 }
148 148
149 close (db) { 149 close (cb: (err?: Error) => void) {
150 return this.destroy(db) 150 return this.destroy(cb)
151 } 151 }
152 152
153 async destroy (cb) { 153 async destroy (cb: (err?: Error) => void) {
154 try { 154 try {
155 if (this.pendingPut) { 155 if (this.pendingPut) {
156 clearTimeout(this.putBulkTimeout) 156 clearTimeout(this.putBulkTimeout)
@@ -225,7 +225,7 @@ export class PeertubeChunkStore extends EventEmitter {
225 } 225 }
226 } 226 }
227 227
228 private nextTick (cb, err, val?) { 228 private nextTick <T> (cb: (err?: Error, val?: T) => void, err: Error, val?: T) {
229 process.nextTick(() => cb(err, val), undefined) 229 process.nextTick(() => cb(err, val), undefined)
230 } 230 }
231} 231}
diff --git a/client/src/assets/player/peertube-link-button.ts b/client/src/assets/player/peertube-link-button.ts
index 715207bc0..de9a49de9 100644
--- a/client/src/assets/player/peertube-link-button.ts
+++ b/client/src/assets/player/peertube-link-button.ts
@@ -1,11 +1,13 @@
1import * as videojs from 'video.js'
2import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' 1import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
3import { buildVideoLink } from './utils' 2import { buildVideoLink } from './utils'
3// FIXME: something weird with our path definition in tsconfig and typings
4// @ts-ignore
5import { Player } from 'video.js'
4 6
5const Button: VideoJSComponentInterface = videojsUntyped.getComponent('Button') 7const Button: VideoJSComponentInterface = videojsUntyped.getComponent('Button')
6class PeerTubeLinkButton extends Button { 8class PeerTubeLinkButton extends Button {
7 9
8 constructor (player: videojs.Player, options) { 10 constructor (player: Player, options: any) {
9 super(player, options) 11 super(player, options)
10 } 12 }
11 13
diff --git a/client/src/assets/player/peertube-load-progress-bar.ts b/client/src/assets/player/peertube-load-progress-bar.ts
index aedc641e4..af276d1b2 100644
--- a/client/src/assets/player/peertube-load-progress-bar.ts
+++ b/client/src/assets/player/peertube-load-progress-bar.ts
@@ -1,10 +1,13 @@
1import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' 1import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
2// FIXME: something weird with our path definition in tsconfig and typings
3// @ts-ignore
4import { Player } from 'video.js'
2 5
3const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Component') 6const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Component')
4 7
5class PeerTubeLoadProgressBar extends Component { 8class PeerTubeLoadProgressBar extends Component {
6 9
7 constructor (player, options) { 10 constructor (player: Player, options: any) {
8 super(player, options) 11 super(player, options)
9 this.partEls_ = [] 12 this.partEls_ = []
10 this.on(player, 'progress', this.update) 13 this.on(player, 'progress', this.update)
diff --git a/client/src/assets/player/peertube-player-local-storage.ts b/client/src/assets/player/peertube-player-local-storage.ts
index dac54c5a4..3ac5fe58a 100644
--- a/client/src/assets/player/peertube-player-local-storage.ts
+++ b/client/src/assets/player/peertube-player-local-storage.ts
@@ -10,6 +10,13 @@ function getStoredVolume () {
10 return undefined 10 return undefined
11} 11}
12 12
13function getStoredWebTorrentEnabled (): boolean {
14 const value = getLocalStorage('webtorrent_enabled')
15 if (value !== null && value !== undefined) return value === 'true'
16
17 return false
18}
19
13function getStoredMute () { 20function getStoredMute () {
14 const value = getLocalStorage('mute') 21 const value = getLocalStorage('mute')
15 if (value !== null && value !== undefined) return value === 'true' 22 if (value !== null && value !== undefined) return value === 'true'
@@ -56,6 +63,7 @@ function getAverageBandwidthInStore () {
56 63
57export { 64export {
58 getStoredVolume, 65 getStoredVolume,
66 getStoredWebTorrentEnabled,
59 getStoredMute, 67 getStoredMute,
60 getStoredTheater, 68 getStoredTheater,
61 saveVolumeInStore, 69 saveVolumeInStore,
diff --git a/client/src/assets/player/peertube-player.ts b/client/src/assets/player/peertube-player.ts
index 1bf6c9267..db63071cb 100644
--- a/client/src/assets/player/peertube-player.ts
+++ b/client/src/assets/player/peertube-player.ts
@@ -10,10 +10,14 @@ import './webtorrent-info-button'
10import './peertube-videojs-plugin' 10import './peertube-videojs-plugin'
11import './peertube-load-progress-bar' 11import './peertube-load-progress-bar'
12import './theater-button' 12import './theater-button'
13import { VideoJSCaption, videojsUntyped } from './peertube-videojs-typings' 13import { UserWatching, VideoJSCaption, videojsUntyped } from './peertube-videojs-typings'
14import { buildVideoEmbed, buildVideoLink, copyToClipboard } from './utils' 14import { buildVideoEmbed, buildVideoLink, copyToClipboard } from './utils'
15import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '../../../../shared/models/i18n/i18n' 15import { getCompleteLocale, getShortLocale, is18nLocale, isDefaultLocale } from '../../../../shared/models/i18n/i18n'
16 16
17// FIXME: something weird with our path definition in tsconfig and typings
18// @ts-ignore
19import { Player } from 'video.js'
20
17// Change 'Playback Rate' to 'Speed' (smaller for our settings menu) 21// Change 'Playback Rate' to 'Speed' (smaller for our settings menu)
18videojsUntyped.getComponent('PlaybackRateMenuButton').prototype.controlText_ = 'Speed' 22videojsUntyped.getComponent('PlaybackRateMenuButton').prototype.controlText_ = 'Speed'
19// Change Captions to Subtitles/CC 23// Change Captions to Subtitles/CC
@@ -34,10 +38,13 @@ function getVideojsOptions (options: {
34 startTime: number | string 38 startTime: number | string
35 theaterMode: boolean, 39 theaterMode: boolean,
36 videoCaptions: VideoJSCaption[], 40 videoCaptions: VideoJSCaption[],
41
37 language?: string, 42 language?: string,
38 controls?: boolean, 43 controls?: boolean,
39 muted?: boolean, 44 muted?: boolean,
40 loop?: boolean 45 loop?: boolean
46
47 userWatching?: UserWatching
41}) { 48}) {
42 const videojsOptions = { 49 const videojsOptions = {
43 // We don't use text track settings for now 50 // We don't use text track settings for now
@@ -57,7 +64,8 @@ function getVideojsOptions (options: {
57 playerElement: options.playerElement, 64 playerElement: options.playerElement,
58 videoViewUrl: options.videoViewUrl, 65 videoViewUrl: options.videoViewUrl,
59 videoDuration: options.videoDuration, 66 videoDuration: options.videoDuration,
60 startTime: options.startTime 67 startTime: options.startTime,
68 userWatching: options.userWatching
61 } 69 }
62 }, 70 },
63 controlBar: { 71 controlBar: {
@@ -71,12 +79,12 @@ function getVideojsOptions (options: {
71 enableVolumeScroll: false, 79 enableVolumeScroll: false,
72 enableModifiersForNumbers: false, 80 enableModifiersForNumbers: false,
73 81
74 fullscreenKey: function (event) { 82 fullscreenKey: function (event: KeyboardEvent) {
75 // fullscreen with the f key or Ctrl+Enter 83 // fullscreen with the f key or Ctrl+Enter
76 return event.key === 'f' || (event.ctrlKey && event.key === 'Enter') 84 return event.key === 'f' || (event.ctrlKey && event.key === 'Enter')
77 }, 85 },
78 86
79 seekStep: function (event) { 87 seekStep: function (event: KeyboardEvent) {
80 // mimic VLC seek behavior, and default to 5 (original value is 5). 88 // mimic VLC seek behavior, and default to 5 (original value is 5).
81 if (event.ctrlKey && event.altKey) { 89 if (event.ctrlKey && event.altKey) {
82 return 5 * 60 90 return 5 * 60
@@ -91,26 +99,26 @@ function getVideojsOptions (options: {
91 99
92 customKeys: { 100 customKeys: {
93 increasePlaybackRateKey: { 101 increasePlaybackRateKey: {
94 key: function (event) { 102 key: function (event: KeyboardEvent) {
95 return event.key === '>' 103 return event.key === '>'
96 }, 104 },
97 handler: function (player) { 105 handler: function (player: Player) {
98 player.playbackRate((player.playbackRate() + 0.1).toFixed(2)) 106 player.playbackRate((player.playbackRate() + 0.1).toFixed(2))
99 } 107 }
100 }, 108 },
101 decreasePlaybackRateKey: { 109 decreasePlaybackRateKey: {
102 key: function (event) { 110 key: function (event: KeyboardEvent) {
103 return event.key === '<' 111 return event.key === '<'
104 }, 112 },
105 handler: function (player) { 113 handler: function (player: Player) {
106 player.playbackRate((player.playbackRate() - 0.1).toFixed(2)) 114 player.playbackRate((player.playbackRate() - 0.1).toFixed(2))
107 } 115 }
108 }, 116 },
109 frameByFrame: { 117 frameByFrame: {
110 key: function (event) { 118 key: function (event: KeyboardEvent) {
111 return event.key === '.' 119 return event.key === '.'
112 }, 120 },
113 handler: function (player, options, event) { 121 handler: function (player: Player) {
114 player.pause() 122 player.pause()
115 // Calculate movement distance (assuming 30 fps) 123 // Calculate movement distance (assuming 30 fps)
116 const dist = 1 / 30 124 const dist = 1 / 30
diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts
index adc376e94..40da5f1f7 100644
--- a/client/src/assets/player/peertube-videojs-plugin.ts
+++ b/client/src/assets/player/peertube-videojs-plugin.ts
@@ -1,21 +1,32 @@
1// FIXME: something weird with our path definition in tsconfig and typings
2// @ts-ignore
1import * as videojs from 'video.js' 3import * as videojs from 'video.js'
4
2import * as WebTorrent from 'webtorrent' 5import * as WebTorrent from 'webtorrent'
3import { VideoFile } from '../../../../shared/models/videos/video.model' 6import { VideoFile } from '../../../../shared/models/videos/video.model'
4import { renderVideo } from './video-renderer' 7import { renderVideo } from './video-renderer'
5import './settings-menu-button' 8import './settings-menu-button'
6import { PeertubePluginOptions, VideoJSCaption, VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' 9import { PeertubePluginOptions, UserWatching, VideoJSCaption, VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
7import { isMobile, timeToInt, videoFileMaxByResolution, videoFileMinByResolution } from './utils' 10import { isMobile, timeToInt, videoFileMaxByResolution, videoFileMinByResolution } from './utils'
8import * as CacheChunkStore from 'cache-chunk-store'
9import { PeertubeChunkStore } from './peertube-chunk-store' 11import { PeertubeChunkStore } from './peertube-chunk-store'
10import { 12import {
11 getAverageBandwidthInStore, 13 getAverageBandwidthInStore,
12 getStoredMute, 14 getStoredMute,
13 getStoredVolume, 15 getStoredVolume,
16 getStoredWebTorrentEnabled,
14 saveAverageBandwidth, 17 saveAverageBandwidth,
15 saveMuteInStore, 18 saveMuteInStore,
16 saveVolumeInStore 19 saveVolumeInStore
17} from './peertube-player-local-storage' 20} from './peertube-player-local-storage'
18 21
22const CacheChunkStore = require('cache-chunk-store')
23
24type PlayOptions = {
25 forcePlay?: boolean,
26 seek?: number,
27 delay?: number
28}
29
19const Plugin: VideoJSComponentInterface = videojs.getPlugin('plugin') 30const Plugin: VideoJSComponentInterface = videojs.getPlugin('plugin')
20class PeerTubePlugin extends Plugin { 31class PeerTubePlugin extends Plugin {
21 private readonly playerElement: HTMLVideoElement 32 private readonly playerElement: HTMLVideoElement
@@ -32,7 +43,8 @@ class PeerTubePlugin extends Plugin {
32 AUTO_QUALITY_THRESHOLD_PERCENT: 30, // Bandwidth should be 30% more important than a resolution bitrate to change to it 43 AUTO_QUALITY_THRESHOLD_PERCENT: 30, // Bandwidth should be 30% more important than a resolution bitrate to change to it
33 AUTO_QUALITY_OBSERVATION_TIME: 10000, // Wait 10 seconds after having change the resolution before another check 44 AUTO_QUALITY_OBSERVATION_TIME: 10000, // Wait 10 seconds after having change the resolution before another check
34 AUTO_QUALITY_HIGHER_RESOLUTION_DELAY: 5000, // Buffering higher resolution during 5 seconds 45 AUTO_QUALITY_HIGHER_RESOLUTION_DELAY: 5000, // Buffering higher resolution during 5 seconds
35 BANDWIDTH_AVERAGE_NUMBER_OF_VALUES: 5 // Last 5 seconds to build average bandwidth 46 BANDWIDTH_AVERAGE_NUMBER_OF_VALUES: 5, // Last 5 seconds to build average bandwidth
47 USER_WATCHING_VIDEO_INTERVAL: 5000 // Every 5 seconds, notify the user is watching the video
36 } 48 }
37 49
38 private readonly webtorrent = new WebTorrent({ 50 private readonly webtorrent = new WebTorrent({
@@ -56,20 +68,22 @@ class PeerTubePlugin extends Plugin {
56 private torrent: WebTorrent.Torrent 68 private torrent: WebTorrent.Torrent
57 private videoCaptions: VideoJSCaption[] 69 private videoCaptions: VideoJSCaption[]
58 70
59 private renderer 71 private renderer: any
60 private fakeRenderer 72 private fakeRenderer: any
61 private destoyingFakeRenderer = false 73 private destoyingFakeRenderer = false
62 74
63 private autoResolution = true 75 private autoResolution = true
64 private forbidAutoResolution = false 76 private forbidAutoResolution = false
65 private isAutoResolutionObservation = false 77 private isAutoResolutionObservation = false
78 private playerRefusedP2P = false
66 79
67 private videoViewInterval 80 private videoViewInterval: any
68 private torrentInfoInterval 81 private torrentInfoInterval: any
69 private autoQualityInterval 82 private autoQualityInterval: any
70 private addTorrentDelay 83 private userWatchingVideoInterval: any
71 private qualityObservationTimer 84 private addTorrentDelay: any
72 private runAutoQualitySchedulerTimer 85 private qualityObservationTimer: any
86 private runAutoQualitySchedulerTimer: any
73 87
74 private downloadSpeeds: number[] = [] 88 private downloadSpeeds: number[] = []
75 89
@@ -78,6 +92,7 @@ class PeerTubePlugin extends Plugin {
78 92
79 // Disable auto play on iOS 93 // Disable auto play on iOS
80 this.autoplay = options.autoplay && this.isIOS() === false 94 this.autoplay = options.autoplay && this.isIOS() === false
95 this.playerRefusedP2P = !getStoredWebTorrentEnabled()
81 96
82 this.startTime = timeToInt(options.startTime) 97 this.startTime = timeToInt(options.startTime)
83 this.videoFiles = options.videoFiles 98 this.videoFiles = options.videoFiles
@@ -100,6 +115,8 @@ class PeerTubePlugin extends Plugin {
100 this.runTorrentInfoScheduler() 115 this.runTorrentInfoScheduler()
101 this.runViewAdd() 116 this.runViewAdd()
102 117
118 if (options.userWatching) this.runUserWatchVideo(options.userWatching)
119
103 this.player.one('play', () => { 120 this.player.one('play', () => {
104 // Don't run immediately scheduler, wait some seconds the TCP connections are made 121 // Don't run immediately scheduler, wait some seconds the TCP connections are made
105 this.runAutoQualitySchedulerTimer = setTimeout(() => this.runAutoQualityScheduler(), this.CONSTANTS.AUTO_QUALITY_SCHEDULER) 122 this.runAutoQualitySchedulerTimer = setTimeout(() => this.runAutoQualityScheduler(), this.CONSTANTS.AUTO_QUALITY_SCHEDULER)
@@ -121,6 +138,8 @@ class PeerTubePlugin extends Plugin {
121 clearInterval(this.torrentInfoInterval) 138 clearInterval(this.torrentInfoInterval)
122 clearInterval(this.autoQualityInterval) 139 clearInterval(this.autoQualityInterval)
123 140
141 if (this.userWatchingVideoInterval) clearInterval(this.userWatchingVideoInterval)
142
124 // Don't need to destroy renderer, video player will be destroyed 143 // Don't need to destroy renderer, video player will be destroyed
125 this.flushVideoFile(this.currentVideoFile, false) 144 this.flushVideoFile(this.currentVideoFile, false)
126 145
@@ -172,6 +191,15 @@ class PeerTubePlugin extends Plugin {
172 const previousVideoFile = this.currentVideoFile 191 const previousVideoFile = this.currentVideoFile
173 this.currentVideoFile = videoFile 192 this.currentVideoFile = videoFile
174 193
194 // Don't try on iOS that does not support MediaSource
195 // Or don't use P2P if webtorrent is disabled
196 if (this.isIOS() || this.playerRefusedP2P) {
197 return this.fallbackToHttp(options, () => {
198 this.player.playbackRate(oldPlaybackRate)
199 return done()
200 })
201 }
202
175 this.addTorrent(this.currentVideoFile.magnetUri, previousVideoFile, options, () => { 203 this.addTorrent(this.currentVideoFile.magnetUri, previousVideoFile, options, () => {
176 this.player.playbackRate(oldPlaybackRate) 204 this.player.playbackRate(oldPlaybackRate)
177 return done() 205 return done()
@@ -242,18 +270,14 @@ class PeerTubePlugin extends Plugin {
242 private addTorrent ( 270 private addTorrent (
243 magnetOrTorrentUrl: string, 271 magnetOrTorrentUrl: string,
244 previousVideoFile: VideoFile, 272 previousVideoFile: VideoFile,
245 options: { 273 options: PlayOptions,
246 forcePlay?: boolean,
247 seek?: number,
248 delay?: number
249 },
250 done: Function 274 done: Function
251 ) { 275 ) {
252 console.log('Adding ' + magnetOrTorrentUrl + '.') 276 console.log('Adding ' + magnetOrTorrentUrl + '.')
253 277
254 const oldTorrent = this.torrent 278 const oldTorrent = this.torrent
255 const torrentOptions = { 279 const torrentOptions = {
256 store: (chunkLength, storeOpts) => new CacheChunkStore(new PeertubeChunkStore(chunkLength, storeOpts), { 280 store: (chunkLength: number, storeOpts: any) => new CacheChunkStore(new PeertubeChunkStore(chunkLength, storeOpts), {
257 max: 100 281 max: 100
258 }) 282 })
259 } 283 }
@@ -282,7 +306,7 @@ class PeerTubePlugin extends Plugin {
282 renderVideo(torrent.files[ 0 ], this.playerElement, renderVideoOptions, (err, renderer) => { 306 renderVideo(torrent.files[ 0 ], this.playerElement, renderVideoOptions, (err, renderer) => {
283 this.renderer = renderer 307 this.renderer = renderer
284 308
285 if (err) return this.fallbackToHttp(done) 309 if (err) return this.fallbackToHttp(options, done)
286 310
287 return this.tryToPlay(err => { 311 return this.tryToPlay(err => {
288 if (err) return done(err) 312 if (err) return done(err)
@@ -290,13 +314,13 @@ class PeerTubePlugin extends Plugin {
290 if (options.seek) this.seek(options.seek) 314 if (options.seek) this.seek(options.seek)
291 if (options.forcePlay === false && paused === true) this.player.pause() 315 if (options.forcePlay === false && paused === true) this.player.pause()
292 316
293 return done(err) 317 return done()
294 }) 318 })
295 }) 319 })
296 }, options.delay || 0) 320 }, options.delay || 0)
297 }) 321 })
298 322
299 this.torrent.on('error', err => console.error(err)) 323 this.torrent.on('error', (err: any) => console.error(err))
300 324
301 this.torrent.on('warning', (err: any) => { 325 this.torrent.on('warning', (err: any) => {
302 // We don't support HTTP tracker but we don't care -> we use the web socket tracker 326 // We don't support HTTP tracker but we don't care -> we use the web socket tracker
@@ -324,13 +348,13 @@ class PeerTubePlugin extends Plugin {
324 }) 348 })
325 } 349 }
326 350
327 private tryToPlay (done?: Function) { 351 private tryToPlay (done?: (err?: Error) => void) {
328 if (!done) done = function () { /* empty */ } 352 if (!done) done = function () { /* empty */ }
329 353
330 const playPromise = this.player.play() 354 const playPromise = this.player.play()
331 if (playPromise !== undefined) { 355 if (playPromise !== undefined) {
332 return playPromise.then(done) 356 return playPromise.then(done)
333 .catch(err => { 357 .catch((err: Error) => {
334 if (err.message.indexOf('The play() request was interrupted by a call to pause()') !== -1) { 358 if (err.message.indexOf('The play() request was interrupted by a call to pause()') !== -1) {
335 return 359 return
336 } 360 }
@@ -426,12 +450,6 @@ class PeerTubePlugin extends Plugin {
426 return this.updateVideoFile(undefined, { forcePlay: true, seek: this.startTime }) 450 return this.updateVideoFile(undefined, { forcePlay: true, seek: this.startTime })
427 } 451 }
428 452
429 // Don't try on iOS that does not support MediaSource
430 if (this.isIOS()) {
431 this.currentVideoFile = this.pickAverageVideoFile()
432 return this.fallbackToHttp(undefined, false)
433 }
434
435 // Proxy first play 453 // Proxy first play
436 const oldPlay = this.player.play.bind(this.player) 454 const oldPlay = this.player.play.bind(this.player)
437 this.player.play = () => { 455 this.player.play = () => {
@@ -524,6 +542,21 @@ class PeerTubePlugin extends Plugin {
524 }, 1000) 542 }, 1000)
525 } 543 }
526 544
545 private runUserWatchVideo (options: UserWatching) {
546 let lastCurrentTime = 0
547
548 this.userWatchingVideoInterval = setInterval(() => {
549 const currentTime = Math.floor(this.player.currentTime())
550
551 if (currentTime - lastCurrentTime >= 1) {
552 lastCurrentTime = currentTime
553
554 this.notifyUserIsWatching(currentTime, options.url, options.authorizationHeader)
555 .catch(err => console.error('Cannot notify user is watching.', err))
556 }
557 }, this.CONSTANTS.USER_WATCHING_VIDEO_INTERVAL)
558 }
559
527 private clearVideoViewInterval () { 560 private clearVideoViewInterval () {
528 if (this.videoViewInterval !== undefined) { 561 if (this.videoViewInterval !== undefined) {
529 clearInterval(this.videoViewInterval) 562 clearInterval(this.videoViewInterval)
@@ -537,7 +570,18 @@ class PeerTubePlugin extends Plugin {
537 return fetch(this.videoViewUrl, { method: 'POST' }) 570 return fetch(this.videoViewUrl, { method: 'POST' })
538 } 571 }
539 572
540 private fallbackToHttp (done?: Function, play = true) { 573 private notifyUserIsWatching (currentTime: number, url: string, authorizationHeader: string) {
574 const body = new URLSearchParams()
575 body.append('currentTime', currentTime.toString())
576
577 const headers = new Headers({ 'Authorization': authorizationHeader })
578
579 return fetch(url, { method: 'PUT', body, headers })
580 }
581
582 private fallbackToHttp (options: PlayOptions, done?: Function) {
583 const paused = this.player.paused()
584
541 this.disableAutoResolution(true) 585 this.disableAutoResolution(true)
542 586
543 this.flushVideoFile(this.currentVideoFile, true) 587 this.flushVideoFile(this.currentVideoFile, true)
@@ -549,9 +593,15 @@ class PeerTubePlugin extends Plugin {
549 const httpUrl = this.currentVideoFile.fileUrl 593 const httpUrl = this.currentVideoFile.fileUrl
550 this.player.src = this.savePlayerSrcFunction 594 this.player.src = this.savePlayerSrcFunction
551 this.player.src(httpUrl) 595 this.player.src(httpUrl)
552 if (play) this.tryToPlay()
553 596
554 if (done) return done() 597 return this.tryToPlay(err => {
598 if (err && done) return done(err)
599
600 if (options.seek) this.seek(options.seek)
601 if (options.forcePlay === false && paused === true) this.player.pause()
602
603 if (done) return done()
604 })
555 } 605 }
556 606
557 private handleError (err: Error | string) { 607 private handleError (err: Error | string) {
@@ -581,7 +631,7 @@ class PeerTubePlugin extends Plugin {
581 this.player.options_.inactivityTimeout = saveInactivityTimeout 631 this.player.options_.inactivityTimeout = saveInactivityTimeout
582 } 632 }
583 633
584 const settingsDialog = this.player.children_.find(c => c.name_ === 'SettingsDialog') 634 const settingsDialog = this.player.children_.find((c: any) => c.name_ === 'SettingsDialog')
585 635
586 this.player.controlBar.on('mouseenter', () => disableInactivity()) 636 this.player.controlBar.on('mouseenter', () => disableInactivity())
587 settingsDialog.on('mouseenter', () => disableInactivity()) 637 settingsDialog.on('mouseenter', () => disableInactivity())
@@ -657,7 +707,7 @@ class PeerTubePlugin extends Plugin {
657 const percent = time / this.player_.duration() 707 const percent = time / this.player_.duration()
658 return percent >= 1 ? 1 : percent 708 return percent >= 1 ? 1 : percent
659 } 709 }
660 SeekBar.prototype.handleMouseMove = function handleMouseMove (event) { 710 SeekBar.prototype.handleMouseMove = function handleMouseMove (event: any) {
661 let newTime = this.calculateDistance(event) * this.player_.duration() 711 let newTime = this.calculateDistance(event) * this.player_.duration()
662 if (newTime === this.player_.duration()) { 712 if (newTime === this.player_.duration()) {
663 newTime = newTime - 0.1 713 newTime = newTime - 0.1
diff --git a/client/src/assets/player/peertube-videojs-typings.ts b/client/src/assets/player/peertube-videojs-typings.ts
index 993d5ee6b..d127230fa 100644
--- a/client/src/assets/player/peertube-videojs-typings.ts
+++ b/client/src/assets/player/peertube-videojs-typings.ts
@@ -1,4 +1,7 @@
1// FIXME: something weird with our path definition in tsconfig and typings
2// @ts-ignore
1import * as videojs from 'video.js' 3import * as videojs from 'video.js'
4
2import { VideoFile } from '../../../../shared/models/videos/video.model' 5import { VideoFile } from '../../../../shared/models/videos/video.model'
3import { PeerTubePlugin } from './peertube-videojs-plugin' 6import { PeerTubePlugin } from './peertube-videojs-plugin'
4 7
@@ -11,9 +14,9 @@ declare namespace videojs {
11interface VideoJSComponentInterface { 14interface VideoJSComponentInterface {
12 _player: videojs.Player 15 _player: videojs.Player
13 16
14 new (player: videojs.Player, options?: any) 17 new (player: videojs.Player, options?: any): any
15 18
16 registerComponent (name: string, obj: any) 19 registerComponent (name: string, obj: any): any
17} 20}
18 21
19type VideoJSCaption = { 22type VideoJSCaption = {
@@ -22,6 +25,11 @@ type VideoJSCaption = {
22 src: string 25 src: string
23} 26}
24 27
28type UserWatching = {
29 url: string,
30 authorizationHeader: string
31}
32
25type PeertubePluginOptions = { 33type PeertubePluginOptions = {
26 videoFiles: VideoFile[] 34 videoFiles: VideoFile[]
27 playerElement: HTMLVideoElement 35 playerElement: HTMLVideoElement
@@ -30,6 +38,8 @@ type PeertubePluginOptions = {
30 startTime: number | string 38 startTime: number | string
31 autoplay: boolean, 39 autoplay: boolean,
32 videoCaptions: VideoJSCaption[] 40 videoCaptions: VideoJSCaption[]
41
42 userWatching?: UserWatching
33} 43}
34 44
35// videojs typings don't have some method we need 45// videojs typings don't have some method we need
@@ -39,5 +49,6 @@ export {
39 VideoJSComponentInterface, 49 VideoJSComponentInterface,
40 PeertubePluginOptions, 50 PeertubePluginOptions,
41 videojsUntyped, 51 videojsUntyped,
42 VideoJSCaption 52 VideoJSCaption,
53 UserWatching
43} 54}
diff --git a/client/src/assets/player/resolution-menu-button.ts b/client/src/assets/player/resolution-menu-button.ts
index d53a24151..a3c1108ca 100644
--- a/client/src/assets/player/resolution-menu-button.ts
+++ b/client/src/assets/player/resolution-menu-button.ts
@@ -1,4 +1,7 @@
1import * as videojs from 'video.js' 1// FIXME: something weird with our path definition in tsconfig and typings
2// @ts-ignore
3import { Player } from 'video.js'
4
2import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' 5import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
3import { ResolutionMenuItem } from './resolution-menu-item' 6import { ResolutionMenuItem } from './resolution-menu-item'
4 7
@@ -7,7 +10,7 @@ const MenuButton: VideoJSComponentInterface = videojsUntyped.getComponent('MenuB
7class ResolutionMenuButton extends MenuButton { 10class ResolutionMenuButton extends MenuButton {
8 label: HTMLElement 11 label: HTMLElement
9 12
10 constructor (player: videojs.Player, options) { 13 constructor (player: Player, options: any) {
11 super(player, options) 14 super(player, options)
12 this.player = player 15 this.player = player
13 16
diff --git a/client/src/assets/player/resolution-menu-item.ts b/client/src/assets/player/resolution-menu-item.ts
index 0ab0f53b5..b54fd91ef 100644
--- a/client/src/assets/player/resolution-menu-item.ts
+++ b/client/src/assets/player/resolution-menu-item.ts
@@ -1,10 +1,13 @@
1import * as videojs from 'video.js' 1// FIXME: something weird with our path definition in tsconfig and typings
2// @ts-ignore
3import { Player } from 'video.js'
4
2import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' 5import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
3 6
4const MenuItem: VideoJSComponentInterface = videojsUntyped.getComponent('MenuItem') 7const MenuItem: VideoJSComponentInterface = videojsUntyped.getComponent('MenuItem')
5class ResolutionMenuItem extends MenuItem { 8class ResolutionMenuItem extends MenuItem {
6 9
7 constructor (player: videojs.Player, options) { 10 constructor (player: Player, options: any) {
8 const currentResolutionId = player.peertube().getCurrentResolutionId() 11 const currentResolutionId = player.peertube().getCurrentResolutionId()
9 options.selectable = true 12 options.selectable = true
10 options.selected = options.id === currentResolutionId 13 options.selected = options.id === currentResolutionId
@@ -18,7 +21,7 @@ class ResolutionMenuItem extends MenuItem {
18 player.peertube().on('autoResolutionUpdate', () => this.updateSelection()) 21 player.peertube().on('autoResolutionUpdate', () => this.updateSelection())
19 } 22 }
20 23
21 handleClick (event) { 24 handleClick (event: any) {
22 if (this.id === -1 && this.player_.peertube().isAutoResolutionForbidden()) return 25 if (this.id === -1 && this.player_.peertube().isAutoResolutionForbidden()) return
23 26
24 super.handleClick(event) 27 super.handleClick(event)
diff --git a/client/src/assets/player/settings-menu-button.ts b/client/src/assets/player/settings-menu-button.ts
index b51c52506..aa7281727 100644
--- a/client/src/assets/player/settings-menu-button.ts
+++ b/client/src/assets/player/settings-menu-button.ts
@@ -1,7 +1,10 @@
1// Author: Yanko Shterev 1// Author: Yanko Shterev
2// Thanks https://github.com/yshterev/videojs-settings-menu 2// Thanks https://github.com/yshterev/videojs-settings-menu
3 3
4// FIXME: something weird with our path definition in tsconfig and typings
5// @ts-ignore
4import * as videojs from 'video.js' 6import * as videojs from 'video.js'
7
5import { SettingsMenuItem } from './settings-menu-item' 8import { SettingsMenuItem } from './settings-menu-item'
6import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' 9import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
7import { toTitleCase } from './utils' 10import { toTitleCase } from './utils'
@@ -11,7 +14,7 @@ const Menu: VideoJSComponentInterface = videojsUntyped.getComponent('Menu')
11const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Component') 14const Component: VideoJSComponentInterface = videojsUntyped.getComponent('Component')
12 15
13class SettingsButton extends Button { 16class SettingsButton extends Button {
14 constructor (player: videojs.Player, options) { 17 constructor (player: videojs.Player, options: any) {
15 super(player, options) 18 super(player, options)
16 19
17 this.playerComponent = player 20 this.playerComponent = player
@@ -48,7 +51,7 @@ class SettingsButton extends Button {
48 } 51 }
49 } 52 }
50 53
51 onDisposeSettingsItem (event, name: string) { 54 onDisposeSettingsItem (event: any, name: string) {
52 if (name === undefined) { 55 if (name === undefined) {
53 let children = this.menu.children() 56 let children = this.menu.children()
54 57
@@ -74,7 +77,7 @@ class SettingsButton extends Button {
74 } 77 }
75 } 78 }
76 79
77 onAddSettingsItem (event, data) { 80 onAddSettingsItem (event: any, data: any) {
78 const [ entry, options ] = data 81 const [ entry, options ] = data
79 82
80 this.addMenuItem(entry, options) 83 this.addMenuItem(entry, options)
@@ -120,7 +123,7 @@ class SettingsButton extends Button {
120 this.resetChildren() 123 this.resetChildren()
121 } 124 }
122 125
123 getComponentSize (element) { 126 getComponentSize (element: any) {
124 let width: number = null 127 let width: number = null
125 let height: number = null 128 let height: number = null
126 129
@@ -178,7 +181,7 @@ class SettingsButton extends Button {
178 this.panelChild.addChild(this.menu) 181 this.panelChild.addChild(this.menu)
179 } 182 }
180 183
181 addMenuItem (entry, options) { 184 addMenuItem (entry: any, options: any) {
182 const openSubMenu = function () { 185 const openSubMenu = function () {
183 if (videojsUntyped.dom.hasClass(this.el_, 'open')) { 186 if (videojsUntyped.dom.hasClass(this.el_, 'open')) {
184 videojsUntyped.dom.removeClass(this.el_, 'open') 187 videojsUntyped.dom.removeClass(this.el_, 'open')
@@ -218,7 +221,7 @@ class SettingsButton extends Button {
218} 221}
219 222
220class SettingsPanel extends Component { 223class SettingsPanel extends Component {
221 constructor (player: videojs.Player, options) { 224 constructor (player: videojs.Player, options: any) {
222 super(player, options) 225 super(player, options)
223 } 226 }
224 227
@@ -232,7 +235,7 @@ class SettingsPanel extends Component {
232} 235}
233 236
234class SettingsPanelChild extends Component { 237class SettingsPanelChild extends Component {
235 constructor (player: videojs.Player, options) { 238 constructor (player: videojs.Player, options: any) {
236 super(player, options) 239 super(player, options)
237 } 240 }
238 241
@@ -246,7 +249,7 @@ class SettingsPanelChild extends Component {
246} 249}
247 250
248class SettingsDialog extends Component { 251class SettingsDialog extends Component {
249 constructor (player: videojs.Player, options) { 252 constructor (player: videojs.Player, options: any) {
250 super(player, options) 253 super(player, options)
251 this.hide() 254 this.hide()
252 } 255 }
diff --git a/client/src/assets/player/settings-menu-item.ts b/client/src/assets/player/settings-menu-item.ts
index 665ce6fc2..698f4627a 100644
--- a/client/src/assets/player/settings-menu-item.ts
+++ b/client/src/assets/player/settings-menu-item.ts
@@ -1,7 +1,10 @@
1// Author: Yanko Shterev 1// Author: Yanko Shterev
2// Thanks https://github.com/yshterev/videojs-settings-menu 2// Thanks https://github.com/yshterev/videojs-settings-menu
3 3
4// FIXME: something weird with our path definition in tsconfig and typings
5// @ts-ignore
4import * as videojs from 'video.js' 6import * as videojs from 'video.js'
7
5import { toTitleCase } from './utils' 8import { toTitleCase } from './utils'
6import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' 9import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
7 10
@@ -10,7 +13,7 @@ const component: VideoJSComponentInterface = videojsUntyped.getComponent('Compon
10 13
11class SettingsMenuItem extends MenuItem { 14class SettingsMenuItem extends MenuItem {
12 15
13 constructor (player: videojs.Player, options, entry: string, menuButton: VideoJSComponentInterface) { 16 constructor (player: videojs.Player, options: any, entry: string, menuButton: VideoJSComponentInterface) {
14 super(player, options) 17 super(player, options)
15 18
16 this.settingsButton = menuButton 19 this.settingsButton = menuButton
@@ -55,7 +58,7 @@ class SettingsMenuItem extends MenuItem {
55 this.transitionEndHandler = this.onTransitionEnd.bind(this) 58 this.transitionEndHandler = this.onTransitionEnd.bind(this)
56 } 59 }
57 60
58 onSubmenuClick (event) { 61 onSubmenuClick (event: any) {
59 let target = null 62 let target = null
60 63
61 if (event.type === 'tap') { 64 if (event.type === 'tap') {
@@ -150,7 +153,7 @@ class SettingsMenuItem extends MenuItem {
150 * 153 *
151 * @method PrefixedEvent 154 * @method PrefixedEvent
152 */ 155 */
153 PrefixedEvent (element, type, callback, action = 'addEvent') { 156 PrefixedEvent (element: any, type: any, callback: any, action = 'addEvent') {
154 let prefix = ['webkit', 'moz', 'MS', 'o', ''] 157 let prefix = ['webkit', 'moz', 'MS', 'o', '']
155 158
156 for (let p = 0; p < prefix.length; p++) { 159 for (let p = 0; p < prefix.length; p++) {
@@ -166,7 +169,7 @@ class SettingsMenuItem extends MenuItem {
166 } 169 }
167 } 170 }
168 171
169 onTransitionEnd (event) { 172 onTransitionEnd (event: any) {
170 if (event.propertyName !== 'margin-right') { 173 if (event.propertyName !== 'margin-right') {
171 return 174 return
172 } 175 }
@@ -229,8 +232,8 @@ class SettingsMenuItem extends MenuItem {
229 ) 232 )
230 } 233 }
231 234
232 update (event?: Event) { 235 update (event?: any) {
233 let target = null 236 let target: HTMLElement = null
234 let subMenu = this.subMenu.name() 237 let subMenu = this.subMenu.name()
235 238
236 if (event && event.type === 'tap') { 239 if (event && event.type === 'tap') {
diff --git a/client/src/assets/player/theater-button.ts b/client/src/assets/player/theater-button.ts
index 5cf0b6425..4f8fede3d 100644
--- a/client/src/assets/player/theater-button.ts
+++ b/client/src/assets/player/theater-button.ts
@@ -1,3 +1,7 @@
1// FIXME: something weird with our path definition in tsconfig and typings
2// @ts-ignore
3import * as videojs from 'video.js'
4
1import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings' 5import { VideoJSComponentInterface, videojsUntyped } from './peertube-videojs-typings'
2import { saveTheaterInStore, getStoredTheater } from './peertube-player-local-storage' 6import { saveTheaterInStore, getStoredTheater } from './peertube-player-local-storage'
3 7
@@ -6,7 +10,7 @@ class TheaterButton extends Button {
6 10
7 private static readonly THEATER_MODE_CLASS = 'vjs-theater-enabled' 11 private static readonly THEATER_MODE_CLASS = 'vjs-theater-enabled'
8 12
9 constructor (player, options) { 13 constructor (player: videojs.Player, options: any) {
10 super(player, options) 14 super(player, options)
11 15
12 const enabled = getStoredTheater() 16 const enabled = getStoredTheater()
diff --git a/client/src/assets/player/utils.ts b/client/src/assets/player/utils.ts
index cf4f60f55..c87287482 100644
--- a/client/src/assets/player/utils.ts
+++ b/client/src/assets/player/utils.ts
@@ -12,7 +12,7 @@ const dictionaryBytes: Array<{max: number, type: string}> = [
12 { max: 1073741824, type: 'MB' }, 12 { max: 1073741824, type: 'MB' },
13 { max: 1.0995116e12, type: 'GB' } 13 { max: 1.0995116e12, type: 'GB' }
14] 14]
15function bytes (value) { 15function bytes (value: number) {
16 const format = dictionaryBytes.find(d => value < d.max) || dictionaryBytes[dictionaryBytes.length - 1] 16 const format = dictionaryBytes.find(d => value < d.max) || dictionaryBytes[dictionaryBytes.length - 1]
17 const calc = Math.floor(value / (format.max / 1024)).toString() 17 const calc = Math.floor(value / (format.max / 1024)).toString()
18 18
diff --git a/client/src/assets/player/video-renderer.ts b/client/src/assets/player/video-renderer.ts
index 2cb05a448..a3415937b 100644
--- a/client/src/assets/player/video-renderer.ts
+++ b/client/src/assets/player/video-renderer.ts
@@ -1,9 +1,9 @@
1// Thanks: https://github.com/feross/render-media 1// Thanks: https://github.com/feross/render-media
2// TODO: use render-media once https://github.com/feross/render-media/issues/32 is fixed 2// TODO: use render-media once https://github.com/feross/render-media/issues/32 is fixed
3 3
4import * as MediaElementWrapper from 'mediasource' 4const MediaElementWrapper = require('mediasource')
5import { extname } from 'path' 5import { extname } from 'path'
6import * as videostream from 'videostream' 6const videostream = require('videostream')
7 7
8const VIDEOSTREAM_EXTS = [ 8const VIDEOSTREAM_EXTS = [
9 '.m4a', 9 '.m4a',
@@ -17,7 +17,7 @@ type RenderMediaOptions = {
17} 17}
18 18
19function renderVideo ( 19function renderVideo (
20 file, 20 file: any,
21 elem: HTMLVideoElement, 21 elem: HTMLVideoElement,
22 opts: RenderMediaOptions, 22 opts: RenderMediaOptions,
23 callback: (err: Error, renderer: any) => void 23 callback: (err: Error, renderer: any) => void
@@ -27,11 +27,11 @@ function renderVideo (
27 return renderMedia(file, elem, opts, callback) 27 return renderMedia(file, elem, opts, callback)
28} 28}
29 29
30function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, callback: (err: Error, renderer?: any) => void) { 30function renderMedia (file: any, elem: HTMLVideoElement, opts: RenderMediaOptions, callback: (err: Error, renderer?: any) => void) {
31 const extension = extname(file.name).toLowerCase() 31 const extension = extname(file.name).toLowerCase()
32 let preparedElem = undefined 32 let preparedElem: any = undefined
33 let currentTime = 0 33 let currentTime = 0
34 let renderer 34 let renderer: any
35 35
36 try { 36 try {
37 if (VIDEOSTREAM_EXTS.indexOf(extension) >= 0) { 37 if (VIDEOSTREAM_EXTS.indexOf(extension) >= 0) {
@@ -45,7 +45,7 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca
45 45
46 function useVideostream () { 46 function useVideostream () {
47 prepareElem() 47 prepareElem()
48 preparedElem.addEventListener('error', function onError (err) { 48 preparedElem.addEventListener('error', function onError (err: Error) {
49 preparedElem.removeEventListener('error', onError) 49 preparedElem.removeEventListener('error', onError)
50 50
51 return callback(err) 51 return callback(err)
@@ -58,7 +58,7 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca
58 const codecs = getCodec(file.name, useVP9) 58 const codecs = getCodec(file.name, useVP9)
59 59
60 prepareElem() 60 prepareElem()
61 preparedElem.addEventListener('error', function onError (err) { 61 preparedElem.addEventListener('error', function onError (err: Error) {
62 preparedElem.removeEventListener('error', onError) 62 preparedElem.removeEventListener('error', onError)
63 63
64 // Try with vp9 before returning an error 64 // Try with vp9 before returning an error
@@ -102,7 +102,7 @@ function renderMedia (file, elem: HTMLVideoElement, opts: RenderMediaOptions, ca
102 } 102 }
103} 103}
104 104
105function validateFile (file) { 105function validateFile (file: any) {
106 if (file == null) { 106 if (file == null) {
107 throw new Error('file cannot be null or undefined') 107 throw new Error('file cannot be null or undefined')
108 } 108 }
diff --git a/client/src/assets/player/webtorrent-info-button.ts b/client/src/assets/player/webtorrent-info-button.ts
index deef253ce..c3c1af951 100644
--- a/client/src/assets/player/webtorrent-info-button.ts
+++ b/client/src/assets/player/webtorrent-info-button.ts
@@ -65,7 +65,7 @@ class WebtorrentInfoButton extends Button {
65 subDivHttp.appendChild(subDivHttpText) 65 subDivHttp.appendChild(subDivHttpText)
66 div.appendChild(subDivHttp) 66 div.appendChild(subDivHttp)
67 67
68 this.player_.peertube().on('torrentInfo', (event, data) => { 68 this.player_.peertube().on('torrentInfo', (event: any, data: any) => {
69 // We are in HTTP fallback 69 // We are in HTTP fallback
70 if (!data) { 70 if (!data) {
71 subDivHttp.className = 'vjs-peertube-displayed' 71 subDivHttp.className = 'vjs-peertube-displayed'
diff --git a/client/src/locale/source/angular_en_US.xml b/client/src/locale/source/angular_en_US.xml
index 7f91bd550..e3c4e66a3 100644
--- a/client/src/locale/source/angular_en_US.xml
+++ b/client/src/locale/source/angular_en_US.xml
@@ -205,12 +205,12 @@
205 <context context-type="linenumber">18</context> 205 <context context-type="linenumber">18</context>
206 </context-group> 206 </context-group>
207 <context-group purpose="location"> 207 <context-group purpose="location">
208 <context context-type="sourcefile">app/login/login.component.html</context> 208 <context context-type="sourcefile">app/shared/moderation/user-ban-modal.component.html</context>
209 <context context-type="linenumber">72</context> 209 <context context-type="linenumber">22</context>
210 </context-group> 210 </context-group>
211 <context-group purpose="location"> 211 <context-group purpose="location">
212 <context context-type="sourcefile">app/+admin/users/user-list/user-ban-modal.component.html</context> 212 <context context-type="sourcefile">app/login/login.component.html</context>
213 <context context-type="linenumber">22</context> 213 <context context-type="linenumber">72</context>
214 </context-group> 214 </context-group>
215 <context-group purpose="location"> 215 <context-group purpose="location">
216 <context context-type="sourcefile">app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html</context> 216 <context context-type="sourcefile">app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.html</context>
@@ -226,11 +226,23 @@
226 <context context-type="sourcefile">app/shared/forms/reactive-file.component.html</context> 226 <context context-type="sourcefile">app/shared/forms/reactive-file.component.html</context>
227 <context context-type="linenumber">11</context> 227 <context context-type="linenumber">11</context>
228 </context-group> 228 </context-group>
229 </trans-unit><trans-unit id="4b3963c6d0863118fe9e9e33447d12be3c2db081" datatype="html">
230 <source>Unlisted</source>
231 <context-group purpose="location">
232 <context context-type="sourcefile">app/shared/video/video-miniature.component.html</context>
233 <context context-type="linenumber">12</context>
234 </context-group>
235 </trans-unit><trans-unit id="ddd8a4986d2d1717a274a5a0fbed04988a819e69" datatype="html">
236 <source>Private</source>
237 <context-group purpose="location">
238 <context context-type="sourcefile">app/shared/video/video-miniature.component.html</context>
239 <context context-type="linenumber">13</context>
240 </context-group>
229 </trans-unit><trans-unit id="9d5f16f0233b39fa2cd843321407a7358c323ad8" datatype="html"> 241 </trans-unit><trans-unit id="9d5f16f0233b39fa2cd843321407a7358c323ad8" datatype="html">
230 <source>&lt;x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/&gt; - &lt;x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/&gt; views</source> 242 <source>&lt;x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/&gt; - &lt;x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/&gt; views</source>
231 <context-group purpose="location"> 243 <context-group purpose="location">
232 <context context-type="sourcefile">app/shared/video/video-miniature.component.html</context> 244 <context context-type="sourcefile">app/shared/video/video-miniature.component.html</context>
233 <context context-type="linenumber">13</context> 245 <context context-type="linenumber">16</context>
234 </context-group> 246 </context-group>
235 </trans-unit><trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html"> 247 </trans-unit><trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7" datatype="html">
236 <source>Delete</source> 248 <source>Delete</source>
@@ -260,6 +272,10 @@
260 <context context-type="sourcefile">app/shared/buttons/edit-button.component.html</context> 272 <context context-type="sourcefile">app/shared/buttons/edit-button.component.html</context>
261 <context context-type="linenumber">5</context> 273 <context context-type="linenumber">5</context>
262 </context-group> 274 </context-group>
275 <context-group purpose="location">
276 <context context-type="sourcefile">app/shared/buttons/edit-button.component.html</context>
277 <context context-type="linenumber">1</context>
278 </context-group>
263 </trans-unit><trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d" datatype="html"> 279 </trans-unit><trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d" datatype="html">
264 <source>Truncated preview</source> 280 <source>Truncated preview</source>
265 <context-group purpose="location"> 281 <context-group purpose="location">
@@ -372,7 +388,7 @@
372 </context-group> 388 </context-group>
373 <context-group purpose="location"> 389 <context-group purpose="location">
374 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context> 390 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
375 <context context-type="linenumber">19</context> 391 <context context-type="linenumber">42</context>
376 </context-group> 392 </context-group>
377 </trans-unit><trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85" datatype="html"> 393 </trans-unit><trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85" datatype="html">
378 <source> 394 <source>
@@ -382,6 +398,40 @@
382 <context context-type="sourcefile">app/shared/instance/instance-features-table.component.html</context> 398 <context context-type="sourcefile">app/shared/instance/instance-features-table.component.html</context>
383 <context context-type="linenumber">14</context> 399 <context context-type="linenumber">14</context>
384 </context-group> 400 </context-group>
401 </trans-unit><trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0" datatype="html">
402 <source>Ban</source>
403 <context-group purpose="location">
404 <context context-type="sourcefile">app/shared/moderation/user-ban-modal.component.html</context>
405 <context context-type="linenumber">3</context>
406 </context-group>
407 </trans-unit><trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125" datatype="html">
408 <source>Reason...</source>
409 <context-group purpose="location">
410 <context context-type="sourcefile">app/shared/moderation/user-ban-modal.component.html</context>
411 <context context-type="linenumber">10</context>
412 </context-group>
413 <context-group purpose="location">
414 <context context-type="sourcefile">app/videos/+video-watch/modal/video-report.component.html</context>
415 <context context-type="linenumber">11</context>
416 </context-group>
417 <context-group purpose="location">
418 <context context-type="sourcefile">app/videos/+video-watch/modal/video-blacklist.component.html</context>
419 <context context-type="linenumber">11</context>
420 </context-group>
421 </trans-unit><trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251" datatype="html">
422 <source>
423 A banned user will no longer be able to login.
424 </source>
425 <context-group purpose="location">
426 <context context-type="sourcefile">app/shared/moderation/user-ban-modal.component.html</context>
427 <context context-type="linenumber">17</context>
428 </context-group>
429 </trans-unit><trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020" datatype="html">
430 <source>Ban this user</source>
431 <context-group purpose="location">
432 <context context-type="sourcefile">app/shared/moderation/user-ban-modal.component.html</context>
433 <context context-type="linenumber">25</context>
434 </context-group>
385 </trans-unit><trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea" datatype="html"> 435 </trans-unit><trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea" datatype="html">
386 <source> 436 <source>
387 Login 437 Login
@@ -518,7 +568,7 @@
518 </context-group> 568 </context-group>
519 <context-group purpose="location"> 569 <context-group purpose="location">
520 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context> 570 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
521 <context context-type="linenumber">18</context> 571 <context context-type="linenumber">41</context>
522 </context-group> 572 </context-group>
523 <context-group purpose="location"> 573 <context-group purpose="location">
524 <context context-type="sourcefile">app/+verify-account/verify-account-ask-send-email/verify-account-ask-send-email.component.html</context> 574 <context context-type="sourcefile">app/+verify-account/verify-account-ask-send-email/verify-account-ask-send-email.component.html</context>
@@ -594,8 +644,8 @@
594 <context context-type="sourcefile">app/signup/signup.component.html</context> 644 <context context-type="sourcefile">app/signup/signup.component.html</context>
595 <context context-type="linenumber">16</context> 645 <context context-type="linenumber">16</context>
596 </context-group> 646 </context-group>
597 </trans-unit><trans-unit id="2ac776627e18565d7ae85cd7f4cd033bc5d0c88b" datatype="html"> 647 </trans-unit><trans-unit id="7fe213724c4c0a4112c40c673884acb98a0a3b92" datatype="html">
598 <source>I have read and agree to the &lt;a href=&apos;/about/instance#terms-section&apos; target=&apos;_blank&apos;rel=&apos;noopener noreferrer&apos;&gt;Terms&lt;/a&gt; of this instance</source> 648 <source>I am at least 16 years old and agree to the &lt;a href=&apos;/about/instance#terms-section&apos; target=&apos;_blank&apos;rel=&apos;noopener noreferrer&apos;&gt;Terms&lt;/a&gt; of this instance</source>
599 <context-group purpose="location"> 649 <context-group purpose="location">
600 <context context-type="sourcefile">app/signup/signup.component.html</context> 650 <context context-type="sourcefile">app/signup/signup.component.html</context>
601 <context context-type="linenumber">54</context> 651 <context context-type="linenumber">54</context>
@@ -634,8 +684,11 @@
634 <context context-type="sourcefile">app/search/search.component.html</context> 684 <context context-type="sourcefile">app/search/search.component.html</context>
635 <context context-type="linenumber">6</context> 685 <context context-type="linenumber">6</context>
636 </context-group> 686 </context-group>
637 </trans-unit><trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6" datatype="html"> 687 </trans-unit><trans-unit id="7c603b9ed878097782e2b8908f662e2344b46061" datatype="html">
638 <source>Filters</source> 688 <source>
689 Filters
690 &lt;x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/&gt;&lt;x id="INTERPOLATION" equiv-text="{{ numberOfFilters() }}"/&gt;&lt;x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/&gt;
691 </source>
639 <context-group purpose="location"> 692 <context-group purpose="location">
640 <context context-type="sourcefile">app/search/search.component.html</context> 693 <context context-type="sourcefile">app/search/search.component.html</context>
641 <context context-type="linenumber">16</context> 694 <context context-type="linenumber">16</context>
@@ -646,19 +699,19 @@
646 </source> 699 </source>
647 <context-group purpose="location"> 700 <context-group purpose="location">
648 <context context-type="sourcefile">app/search/search.component.html</context> 701 <context context-type="sourcefile">app/search/search.component.html</context>
649 <context context-type="linenumber">25</context> 702 <context context-type="linenumber">28</context>
650 </context-group> 703 </context-group>
651 </trans-unit><trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a" datatype="html"> 704 </trans-unit><trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a" datatype="html">
652 <source>&lt;x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/&gt; subscribers</source> 705 <source>&lt;x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/&gt; subscribers</source>
653 <context-group purpose="location"> 706 <context-group purpose="location">
654 <context context-type="sourcefile">app/search/search.component.html</context> 707 <context context-type="sourcefile">app/search/search.component.html</context>
655 <context context-type="linenumber">41</context> 708 <context context-type="linenumber">44</context>
656 </context-group> 709 </context-group>
657 </trans-unit><trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883" datatype="html"> 710 </trans-unit><trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883" datatype="html">
658 <source>&lt;x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/&gt; - &lt;x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/&gt; views</source> 711 <source>&lt;x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/&gt; - &lt;x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/&gt; views</source>
659 <context-group purpose="location"> 712 <context-group purpose="location">
660 <context context-type="sourcefile">app/search/search.component.html</context> 713 <context context-type="sourcefile">app/search/search.component.html</context>
661 <context context-type="linenumber">52</context> 714 <context context-type="linenumber">55</context>
662 </context-group> 715 </context-group>
663 </trans-unit><trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96" datatype="html"> 716 </trans-unit><trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96" datatype="html">
664 <source>Change the language</source> 717 <source>Change the language</source>
@@ -716,7 +769,7 @@
716 </context-group> 769 </context-group>
717 <context-group purpose="location"> 770 <context-group purpose="location">
718 <context context-type="sourcefile">app/+accounts/accounts.component.html</context> 771 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
719 <context context-type="linenumber">17</context> 772 <context context-type="linenumber">29</context>
720 </context-group> 773 </context-group>
721 <context-group purpose="location"> 774 <context-group purpose="location">
722 <context context-type="sourcefile">app/+video-channels/video-channels.component.html</context> 775 <context context-type="sourcefile">app/+video-channels/video-channels.component.html</context>
@@ -772,7 +825,7 @@
772 </context-group> 825 </context-group>
773 <context-group purpose="location"> 826 <context-group purpose="location">
774 <context context-type="sourcefile">app/+accounts/accounts.component.html</context> 827 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
775 <context context-type="linenumber">21</context> 828 <context context-type="linenumber">33</context>
776 </context-group> 829 </context-group>
777 <context-group purpose="location"> 830 <context-group purpose="location">
778 <context context-type="sourcefile">app/+video-channels/video-channels.component.html</context> 831 <context context-type="sourcefile">app/+video-channels/video-channels.component.html</context>
@@ -902,23 +955,49 @@
902 <context context-type="sourcefile">app/search/search-filters.component.html</context> 955 <context context-type="sourcefile">app/search/search-filters.component.html</context>
903 <context context-type="linenumber">94</context> 956 <context context-type="linenumber">94</context>
904 </context-group> 957 </context-group>
958 </trans-unit><trans-unit id="41ed53a3f1d4dfc57011d0aba13b8b074e8b41b6" datatype="html">
959 <source>Display unlisted and private videos</source>
960 <context-group purpose="location">
961 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
962 <context context-type="linenumber">11</context>
963 </context-group>
964 <context-group purpose="location">
965 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
966 <context context-type="linenumber">11</context>
967 </context-group>
968 <context-group purpose="location">
969 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
970 <context context-type="linenumber">11</context>
971 </context-group>
972 <context-group purpose="location">
973 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
974 <context context-type="linenumber">11</context>
975 </context-group>
976 <context-group purpose="location">
977 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
978 <context context-type="linenumber">11</context>
979 </context-group>
980 <context-group purpose="location">
981 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
982 <context context-type="linenumber">11</context>
983 </context-group>
905 </trans-unit><trans-unit id="c31161d1661884f54fbc5635aad5ce8d4803897e" datatype="html"> 984 </trans-unit><trans-unit id="c31161d1661884f54fbc5635aad5ce8d4803897e" datatype="html">
906 <source>No results.</source> 985 <source>No results.</source>
907 <context-group purpose="location"> 986 <context-group purpose="location">
908 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context> 987 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
909 <context context-type="linenumber">7</context> 988 <context context-type="linenumber">17</context>
910 </context-group> 989 </context-group>
911 <context-group purpose="location"> 990 <context-group purpose="location">
912 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context> 991 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
913 <context context-type="linenumber">7</context> 992 <context context-type="linenumber">17</context>
914 </context-group> 993 </context-group>
915 <context-group purpose="location"> 994 <context-group purpose="location">
916 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context> 995 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
917 <context context-type="linenumber">7</context> 996 <context context-type="linenumber">17</context>
918 </context-group> 997 </context-group>
919 <context-group purpose="location"> 998 <context-group purpose="location">
920 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context> 999 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
921 <context context-type="linenumber">7</context> 1000 <context context-type="linenumber">17</context>
922 </context-group> 1001 </context-group>
923 <context-group purpose="location"> 1002 <context-group purpose="location">
924 <context context-type="sourcefile">app/videos/video-list/video-overview.component.html</context> 1003 <context context-type="sourcefile">app/videos/video-list/video-overview.component.html</context>
@@ -926,7 +1005,7 @@
926 </context-group> 1005 </context-group>
927 <context-group purpose="location"> 1006 <context-group purpose="location">
928 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context> 1007 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
929 <context context-type="linenumber">7</context> 1008 <context context-type="linenumber">17</context>
930 </context-group> 1009 </context-group>
931 <context-group purpose="location"> 1010 <context-group purpose="location">
932 <context context-type="sourcefile">app/+my-account/my-account-videos/my-account-videos.component.html</context> 1011 <context context-type="sourcefile">app/+my-account/my-account-videos/my-account-videos.component.html</context>
@@ -934,7 +1013,7 @@
934 </context-group> 1013 </context-group>
935 <context-group purpose="location"> 1014 <context-group purpose="location">
936 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context> 1015 <context context-type="sourcefile">app/shared/video/abstract-video-list.html</context>
937 <context context-type="linenumber">7</context> 1016 <context context-type="linenumber">17</context>
938 </context-group> 1017 </context-group>
939 </trans-unit><trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6" datatype="html"> 1018 </trans-unit><trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6" datatype="html">
940 <source> 1019 <source>
@@ -974,6 +1053,14 @@
974 <context context-type="sourcefile">app/+admin/config/edit-custom-config/edit-custom-config.component.html</context> 1053 <context context-type="sourcefile">app/+admin/config/edit-custom-config/edit-custom-config.component.html</context>
975 <context context-type="linenumber">8</context> 1054 <context context-type="linenumber">8</context>
976 </context-group> 1055 </context-group>
1056 <context-group purpose="location">
1057 <context context-type="sourcefile">app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html</context>
1058 <context context-type="linenumber">8</context>
1059 </context-group>
1060 <context-group purpose="location">
1061 <context context-type="sourcefile">app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html</context>
1062 <context context-type="linenumber">12</context>
1063 </context-group>
977 </trans-unit><trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390" datatype="html"> 1064 </trans-unit><trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390" datatype="html">
978 <source>PeerTube</source> 1065 <source>PeerTube</source>
979 <context-group purpose="location"> 1066 <context-group purpose="location">
@@ -1221,9 +1308,9 @@
1221 <context context-type="sourcefile">app/+about/about-peertube/about-peertube.component.html</context> 1308 <context context-type="sourcefile">app/+about/about-peertube/about-peertube.component.html</context>
1222 <context context-type="linenumber">83</context> 1309 <context context-type="linenumber">83</context>
1223 </context-group> 1310 </context-group>
1224 </trans-unit><trans-unit id="d8f1c6b816aaf1ebcb936a705dbe88bcef28eaa8" datatype="html"> 1311 </trans-unit><trans-unit id="b1372cb61ca791a0f7f95bf31c86c97df142adc4" datatype="html">
1225 <source> 1312 <source>
1226 PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. 1313 PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released.
1227 In the meantime, we want to test different ideas related to this issue: 1314 In the meantime, we want to test different ideas related to this issue:
1228 </source> 1315 </source>
1229 <context-group purpose="location"> 1316 <context-group purpose="location">
@@ -1260,17 +1347,47 @@
1260 <context context-type="sourcefile">app/+about/about-peertube/about-peertube.component.html</context> 1347 <context context-type="sourcefile">app/+about/about-peertube/about-peertube.component.html</context>
1261 <context context-type="linenumber">95</context> 1348 <context context-type="linenumber">95</context>
1262 </context-group> 1349 </context-group>
1350 </trans-unit><trans-unit id="bd2edf99dd6562385ccec19a7ab2d1898e626605" datatype="html">
1351 <source>Banned</source>
1352 <context-group purpose="location">
1353 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
1354 <context context-type="linenumber">12</context>
1355 </context-group>
1356 </trans-unit><trans-unit id="62a557fcfdbd25a31d1a0332294f94a466fee809" datatype="html">
1357 <source>Muted</source>
1358 <context-group purpose="location">
1359 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
1360 <context context-type="linenumber">13</context>
1361 </context-group>
1362 </trans-unit><trans-unit id="48bbf6dbdb22e0ef4bd257eae2ab356f2ea66c89" datatype="html">
1363 <source>Muted by your instance</source>
1364 <context-group purpose="location">
1365 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
1366 <context context-type="linenumber">14</context>
1367 </context-group>
1368 </trans-unit><trans-unit id="44bd08a7ec1e407356620967d65d8fe2d8639d0a" datatype="html">
1369 <source>Instance muted</source>
1370 <context-group purpose="location">
1371 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
1372 <context context-type="linenumber">15</context>
1373 </context-group>
1374 </trans-unit><trans-unit id="1a6443bb7ed01046dd83cf78806f795f1204ffa1" datatype="html">
1375 <source>Instance muted by your instance</source>
1376 <context-group purpose="location">
1377 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
1378 <context context-type="linenumber">16</context>
1379 </context-group>
1263 </trans-unit><trans-unit id="a835d8a12e14eb96919245a0bbafd8069c146578" datatype="html"> 1380 </trans-unit><trans-unit id="a835d8a12e14eb96919245a0bbafd8069c146578" datatype="html">
1264 <source>&lt;x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/&gt; subscribers</source> 1381 <source>&lt;x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/&gt; subscribers</source>
1265 <context-group purpose="location"> 1382 <context-group purpose="location">
1266 <context context-type="sourcefile">app/+accounts/accounts.component.html</context> 1383 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
1267 <context context-type="linenumber">12</context> 1384 <context context-type="linenumber">24</context>
1268 </context-group> 1385 </context-group>
1269 </trans-unit><trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8" datatype="html"> 1386 </trans-unit><trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8" datatype="html">
1270 <source>Video channels</source> 1387 <source>Video channels</source>
1271 <context-group purpose="location"> 1388 <context-group purpose="location">
1272 <context context-type="sourcefile">app/+accounts/accounts.component.html</context> 1389 <context context-type="sourcefile">app/+accounts/accounts.component.html</context>
1273 <context context-type="linenumber">19</context> 1390 <context context-type="linenumber">31</context>
1274 </context-group> 1391 </context-group>
1275 </trans-unit><trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a" datatype="html"> 1392 </trans-unit><trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a" datatype="html">
1276 <source>Stats</source> 1393 <source>Stats</source>
@@ -1320,7 +1437,7 @@
1320 </context-group> 1437 </context-group>
1321 <context-group purpose="location"> 1438 <context-group purpose="location">
1322 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context> 1439 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1323 <context context-type="linenumber">9</context> 1440 <context context-type="linenumber">18</context>
1324 </context-group> 1441 </context-group>
1325 <context-group purpose="location"> 1442 <context-group purpose="location">
1326 <context context-type="sourcefile">app/+my-account/my-account-video-channels/my-account-video-channel-edit.component.html</context> 1443 <context context-type="sourcefile">app/+my-account/my-account-video-channels/my-account-video-channel-edit.component.html</context>
@@ -1444,8 +1561,8 @@
1444 <context context-type="sourcefile">app/videos/+video-edit/video-add-components/video-import-torrent.component.html</context> 1561 <context context-type="sourcefile">app/videos/+video-edit/video-add-components/video-import-torrent.component.html</context>
1445 <context context-type="linenumber">42</context> 1562 <context context-type="linenumber">42</context>
1446 </context-group> 1563 </context-group>
1447 </trans-unit><trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce" datatype="html"> 1564 </trans-unit><trans-unit id="29aa67f13fd34a2421ff9d7de7d5142790676b9e" datatype="html">
1448 <source>Video import with HTTP enabled</source> 1565 <source>Video import with HTTP URL (i.e. YouTube) enabled</source>
1449 <context-group purpose="location"> 1566 <context-group purpose="location">
1450 <context context-type="sourcefile">app/+admin/config/edit-custom-config/edit-custom-config.component.html</context> 1567 <context context-type="sourcefile">app/+admin/config/edit-custom-config/edit-custom-config.component.html</context>
1451 <context context-type="linenumber">115</context> 1568 <context context-type="linenumber">115</context>
@@ -1704,15 +1821,29 @@
1704 <context context-type="sourcefile">app/+admin/follows/following-add/following-add.component.html</context> 1821 <context context-type="sourcefile">app/+admin/follows/following-add/following-add.component.html</context>
1705 <context context-type="linenumber">21</context> 1822 <context context-type="linenumber">21</context>
1706 </context-group> 1823 </context-group>
1824 </trans-unit><trans-unit id="25925fc5826bc5b3eeae7c45b08b0ed74b9e2954" datatype="html">
1825 <source>Filter...</source>
1826 <context-group purpose="location">
1827 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1828 <context context-type="linenumber">8</context>
1829 </context-group>
1830 <context-group purpose="location">
1831 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context>
1832 <context context-type="linenumber">9</context>
1833 </context-group>
1834 <context-group purpose="location">
1835 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
1836 <context context-type="linenumber">27</context>
1837 </context-group>
1707 </trans-unit><trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html"> 1838 </trans-unit><trans-unit id="45cc8ca94b5a50842a9a8ef804a5ab089a38ae5c" datatype="html">
1708 <source>ID</source> 1839 <source>ID</source>
1709 <context-group purpose="location"> 1840 <context-group purpose="location">
1710 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context> 1841 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1711 <context context-type="linenumber">7</context> 1842 <context context-type="linenumber">16</context>
1712 </context-group> 1843 </context-group>
1713 <context-group purpose="location"> 1844 <context-group purpose="location">
1714 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context> 1845 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context>
1715 <context context-type="linenumber">7</context> 1846 <context context-type="linenumber">18</context>
1716 </context-group> 1847 </context-group>
1717 <context-group purpose="location"> 1848 <context-group purpose="location">
1718 <context context-type="sourcefile">app/+admin/jobs/jobs-list/jobs-list.component.html</context> 1849 <context context-type="sourcefile">app/+admin/jobs/jobs-list/jobs-list.component.html</context>
@@ -1722,27 +1853,27 @@
1722 <source>Score</source> 1853 <source>Score</source>
1723 <context-group purpose="location"> 1854 <context-group purpose="location">
1724 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context> 1855 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1725 <context context-type="linenumber">8</context> 1856 <context context-type="linenumber">17</context>
1726 </context-group> 1857 </context-group>
1727 </trans-unit><trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html"> 1858 </trans-unit><trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767" datatype="html">
1728 <source>Host</source> 1859 <source>Host</source>
1729 <context-group purpose="location"> 1860 <context-group purpose="location">
1730 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context> 1861 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1731 <context context-type="linenumber">10</context> 1862 <context context-type="linenumber">19</context>
1732 </context-group> 1863 </context-group>
1733 <context-group purpose="location"> 1864 <context-group purpose="location">
1734 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context> 1865 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context>
1735 <context context-type="linenumber">8</context> 1866 <context context-type="linenumber">19</context>
1736 </context-group> 1867 </context-group>
1737 </trans-unit><trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html"> 1868 </trans-unit><trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b" datatype="html">
1738 <source>State</source> 1869 <source>State</source>
1739 <context-group purpose="location"> 1870 <context-group purpose="location">
1740 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context> 1871 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1741 <context context-type="linenumber">11</context> 1872 <context context-type="linenumber">20</context>
1742 </context-group> 1873 </context-group>
1743 <context-group purpose="location"> 1874 <context-group purpose="location">
1744 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context> 1875 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context>
1745 <context context-type="linenumber">9</context> 1876 <context context-type="linenumber">20</context>
1746 </context-group> 1877 </context-group>
1747 <context-group purpose="location"> 1878 <context-group purpose="location">
1748 <context context-type="sourcefile">app/+admin/jobs/jobs-list/jobs-list.component.html</context> 1879 <context context-type="sourcefile">app/+admin/jobs/jobs-list/jobs-list.component.html</context>
@@ -1756,11 +1887,11 @@
1756 <source>Created &lt;x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/&gt;&lt;x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/&gt;</source> 1887 <source>Created &lt;x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/&gt;&lt;x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/&gt;</source>
1757 <context-group purpose="location"> 1888 <context-group purpose="location">
1758 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context> 1889 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1759 <context context-type="linenumber">12</context> 1890 <context context-type="linenumber">21</context>
1760 </context-group> 1891 </context-group>
1761 <context-group purpose="location"> 1892 <context-group purpose="location">
1762 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context> 1893 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context>
1763 <context context-type="linenumber">10</context> 1894 <context context-type="linenumber">21</context>
1764 </context-group> 1895 </context-group>
1765 <context-group purpose="location"> 1896 <context-group purpose="location">
1766 <context context-type="sourcefile">app/+admin/jobs/jobs-list/jobs-list.component.html</context> 1897 <context context-type="sourcefile">app/+admin/jobs/jobs-list/jobs-list.component.html</context>
@@ -1768,7 +1899,7 @@
1768 </context-group> 1899 </context-group>
1769 <context-group purpose="location"> 1900 <context-group purpose="location">
1770 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context> 1901 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
1771 <context context-type="linenumber">21</context> 1902 <context context-type="linenumber">44</context>
1772 </context-group> 1903 </context-group>
1773 <context-group purpose="location"> 1904 <context-group purpose="location">
1774 <context context-type="sourcefile">app/+admin/moderation/video-abuse-list/video-abuse-list.component.html</context> 1905 <context context-type="sourcefile">app/+admin/moderation/video-abuse-list/video-abuse-list.component.html</context>
@@ -1782,27 +1913,27 @@
1782 <source>Accepted</source> 1913 <source>Accepted</source>
1783 <context-group purpose="location"> 1914 <context-group purpose="location">
1784 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context> 1915 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1785 <context context-type="linenumber">23</context> 1916 <context context-type="linenumber">32</context>
1786 </context-group> 1917 </context-group>
1787 <context-group purpose="location"> 1918 <context-group purpose="location">
1788 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context> 1919 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context>
1789 <context context-type="linenumber">21</context> 1920 <context context-type="linenumber">32</context>
1790 </context-group> 1921 </context-group>
1791 </trans-unit><trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506" datatype="html"> 1922 </trans-unit><trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506" datatype="html">
1792 <source>Pending</source> 1923 <source>Pending</source>
1793 <context-group purpose="location"> 1924 <context-group purpose="location">
1794 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context> 1925 <context context-type="sourcefile">app/+admin/follows/followers-list/followers-list.component.html</context>
1795 <context context-type="linenumber">24</context> 1926 <context context-type="linenumber">33</context>
1796 </context-group> 1927 </context-group>
1797 <context-group purpose="location"> 1928 <context-group purpose="location">
1798 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context> 1929 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context>
1799 <context context-type="linenumber">22</context> 1930 <context context-type="linenumber">33</context>
1800 </context-group> 1931 </context-group>
1801 </trans-unit><trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8" datatype="html"> 1932 </trans-unit><trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8" datatype="html">
1802 <source>Redundancy allowed</source> 1933 <source>Redundancy allowed</source>
1803 <context-group purpose="location"> 1934 <context-group purpose="location">
1804 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context> 1935 <context context-type="sourcefile">app/+admin/follows/following-list/following-list.component.html</context>
1805 <context context-type="linenumber">11</context> 1936 <context context-type="linenumber">22</context>
1806 </context-group> 1937 </context-group>
1807 </trans-unit><trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479" datatype="html"> 1938 </trans-unit><trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479" datatype="html">
1808 <source>Manage follows</source> 1939 <source>Manage follows</source>
@@ -1908,7 +2039,7 @@
1908 </context-group> 2039 </context-group>
1909 <context-group purpose="location"> 2040 <context-group purpose="location">
1910 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context> 2041 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
1911 <context context-type="linenumber">20</context> 2042 <context context-type="linenumber">43</context>
1912 </context-group> 2043 </context-group>
1913 </trans-unit><trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345" datatype="html"> 2044 </trans-unit><trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345" datatype="html">
1914 <source> 2045 <source>
@@ -1933,71 +2064,45 @@
1933 <context context-type="sourcefile">app/+admin/users/user-edit/user-edit.component.html</context> 2064 <context context-type="sourcefile">app/+admin/users/user-edit/user-edit.component.html</context>
1934 <context context-type="linenumber">72</context> 2065 <context context-type="linenumber">72</context>
1935 </context-group> 2066 </context-group>
1936 </trans-unit><trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33" datatype="html">
1937 <source>Ban &lt;x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/&gt;</source>
1938 <context-group purpose="location">
1939 <context context-type="sourcefile">app/+admin/users/user-list/user-ban-modal.component.html</context>
1940 <context context-type="linenumber">3</context>
1941 </context-group>
1942 </trans-unit><trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125" datatype="html">
1943 <source>Reason...</source>
1944 <context-group purpose="location">
1945 <context context-type="sourcefile">app/+admin/users/user-list/user-ban-modal.component.html</context>
1946 <context context-type="linenumber">10</context>
1947 </context-group>
1948 <context-group purpose="location">
1949 <context context-type="sourcefile">app/videos/+video-watch/modal/video-report.component.html</context>
1950 <context context-type="linenumber">11</context>
1951 </context-group>
1952 <context-group purpose="location">
1953 <context context-type="sourcefile">app/videos/+video-watch/modal/video-blacklist.component.html</context>
1954 <context context-type="linenumber">11</context>
1955 </context-group>
1956 </trans-unit><trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251" datatype="html">
1957 <source>
1958 A banned user will no longer be able to login.
1959 </source>
1960 <context-group purpose="location">
1961 <context context-type="sourcefile">app/+admin/users/user-list/user-ban-modal.component.html</context>
1962 <context context-type="linenumber">17</context>
1963 </context-group>
1964 </trans-unit><trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020" datatype="html">
1965 <source>Ban this user</source>
1966 <context-group purpose="location">
1967 <context context-type="sourcefile">app/+admin/users/user-list/user-ban-modal.component.html</context>
1968 <context context-type="linenumber">25</context>
1969 </context-group>
1970 </trans-unit><trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f" datatype="html"> 2067 </trans-unit><trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f" datatype="html">
1971 <source>Users list</source> 2068 <source>Users list</source>
1972 <context-group purpose="location"> 2069 <context-group purpose="location">
1973 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context> 2070 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
1974 <context context-type="linenumber">2</context> 2071 <context context-type="linenumber">2</context>
1975 </context-group> 2072 </context-group>
2073 </trans-unit><trans-unit id="ea762ca1d74c96d8568ac68482778f52ca531cc4" datatype="html">
2074 <source>Batch actions</source>
2075 <context-group purpose="location">
2076 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
2077 <context context-type="linenumber">19</context>
2078 </context-group>
1976 </trans-unit><trans-unit id="08ea8692dc2a7050026df26fc39b22960bde9de5" datatype="html"> 2079 </trans-unit><trans-unit id="08ea8692dc2a7050026df26fc39b22960bde9de5" datatype="html">
1977 <source>Username &lt;x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/&gt;&lt;x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/&gt;</source> 2080 <source>Username &lt;x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/&gt;&lt;x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/&gt;</source>
1978 <context-group purpose="location"> 2081 <context-group purpose="location">
1979 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context> 2082 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
1980 <context context-type="linenumber">17</context> 2083 <context context-type="linenumber">40</context>
1981 </context-group> 2084 </context-group>
1982 </trans-unit><trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c" datatype="html"> 2085 </trans-unit><trans-unit id="adba7c8b43e42581460fbe5d08b5cb5ab60eba4b" datatype="html">
1983 <source>Actions</source> 2086 <source>(banned)</source>
1984 <context-group purpose="location"> 2087 <context-group purpose="location">
1985 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context> 2088 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
1986 <context context-type="linenumber">43</context> 2089 <context context-type="linenumber">65</context>
1987 </context-group> 2090 </context-group>
2091 </trans-unit><trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c" datatype="html">
2092 <source>Go to the account page</source>
1988 <context-group purpose="location"> 2093 <context-group purpose="location">
1989 <context context-type="sourcefile">app/+admin/moderation/video-abuse-list/video-abuse-list.component.html</context> 2094 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
1990 <context context-type="linenumber">44</context> 2095 <context context-type="linenumber">63</context>
1991 </context-group> 2096 </context-group>
1992 <context-group purpose="location"> 2097 <context-group purpose="location">
1993 <context context-type="sourcefile">app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html</context> 2098 <context context-type="sourcefile">app/videos/+video-watch/video-watch.component.html</context>
1994 <context context-type="linenumber">33</context> 2099 <context context-type="linenumber">133</context>
1995 </context-group> 2100 </context-group>
1996 </trans-unit><trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee" datatype="html"> 2101 </trans-unit><trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee" datatype="html">
1997 <source>Ban reason:</source> 2102 <source>Ban reason:</source>
1998 <context-group purpose="location"> 2103 <context-group purpose="location">
1999 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context> 2104 <context context-type="sourcefile">app/+admin/users/user-list/user-list.component.html</context>
2000 <context context-type="linenumber">51</context> 2105 <context context-type="linenumber">82</context>
2001 </context-group> 2106 </context-group>
2002 </trans-unit><trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f" datatype="html"> 2107 </trans-unit><trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f" datatype="html">
2003 <source>Moderation comment</source> 2108 <source>Moderation comment</source>
@@ -2069,6 +2174,16 @@
2069 <context context-type="sourcefile">app/+my-account/my-account-ownership/my-account-ownership.component.html</context> 2174 <context context-type="sourcefile">app/+my-account/my-account-ownership/my-account-ownership.component.html</context>
2070 <context context-type="linenumber">33</context> 2175 <context context-type="linenumber">33</context>
2071 </context-group> 2176 </context-group>
2177 </trans-unit><trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c" datatype="html">
2178 <source>Actions</source>
2179 <context-group purpose="location">
2180 <context context-type="sourcefile">app/+admin/moderation/video-abuse-list/video-abuse-list.component.html</context>
2181 <context context-type="linenumber">44</context>
2182 </context-group>
2183 <context-group purpose="location">
2184 <context context-type="sourcefile">app/+admin/moderation/video-blacklist-list/video-blacklist-list.component.html</context>
2185 <context context-type="linenumber">33</context>
2186 </context-group>
2072 </trans-unit><trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2" datatype="html"> 2187 </trans-unit><trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2" datatype="html">
2073 <source>Reason:</source> 2188 <source>Reason:</source>
2074 <context-group purpose="location"> 2189 <context-group purpose="location">
@@ -2123,6 +2238,72 @@
2123 <context context-type="sourcefile">app/+admin/moderation/moderation.component.html</context> 2238 <context context-type="sourcefile">app/+admin/moderation/moderation.component.html</context>
2124 <context context-type="linenumber">7</context> 2239 <context context-type="linenumber">7</context>
2125 </context-group> 2240 </context-group>
2241 </trans-unit><trans-unit id="b1ff109b26ae8f08650415454b9098c43eba2e2c" datatype="html">
2242 <source>Muted accounts</source>
2243 <context-group purpose="location">
2244 <context context-type="sourcefile">app/+admin/moderation/moderation.component.html</context>
2245 <context context-type="linenumber">9</context>
2246 </context-group>
2247 <context-group purpose="location">
2248 <context context-type="sourcefile">app/+my-account/my-account.component.html</context>
2249 <context context-type="linenumber">29</context>
2250 </context-group>
2251 <context-group purpose="location">
2252 <context context-type="sourcefile">app/+my-account/my-account-blocklist/my-account-blocklist.component.html</context>
2253 <context context-type="linenumber">2</context>
2254 </context-group>
2255 </trans-unit><trans-unit id="bd0611346af048015e0a1275091ef68ce98832d2" datatype="html">
2256 <source>Muted servers</source>
2257 <context-group purpose="location">
2258 <context context-type="sourcefile">app/+admin/moderation/moderation.component.html</context>
2259 <context context-type="linenumber">11</context>
2260 </context-group>
2261 </trans-unit><trans-unit id="29881a45dafbe5aa05cd9d0441a4c0c2fb06df92" datatype="html">
2262 <source>Account</source>
2263 <context-group purpose="location">
2264 <context context-type="sourcefile">app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html</context>
2265 <context context-type="linenumber">8</context>
2266 </context-group>
2267 <context-group purpose="location">
2268 <context context-type="sourcefile">app/+my-account/my-account-blocklist/my-account-blocklist.component.html</context>
2269 <context context-type="linenumber">12</context>
2270 </context-group>
2271 </trans-unit><trans-unit id="079e99cce11c87b142e80fdd14dae98a61012fc4" datatype="html">
2272 <source>Muted at &lt;x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/&gt;&lt;x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/&gt;</source>
2273 <context-group purpose="location">
2274 <context context-type="sourcefile">app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html</context>
2275 <context context-type="linenumber">9</context>
2276 </context-group>
2277 <context-group purpose="location">
2278 <context context-type="sourcefile">app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html</context>
2279 <context context-type="linenumber">9</context>
2280 </context-group>
2281 <context-group purpose="location">
2282 <context context-type="sourcefile">app/+my-account/my-account-blocklist/my-account-blocklist.component.html</context>
2283 <context context-type="linenumber">13</context>
2284 </context-group>
2285 <context-group purpose="location">
2286 <context context-type="sourcefile">app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html</context>
2287 <context context-type="linenumber">13</context>
2288 </context-group>
2289 </trans-unit><trans-unit id="1f689fada9748a830117f5b429a88ef8629082a8" datatype="html">
2290 <source>Unmute</source>
2291 <context-group purpose="location">
2292 <context context-type="sourcefile">app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.html</context>
2293 <context context-type="linenumber">18</context>
2294 </context-group>
2295 <context-group purpose="location">
2296 <context context-type="sourcefile">app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.html</context>
2297 <context context-type="linenumber">19</context>
2298 </context-group>
2299 <context-group purpose="location">
2300 <context context-type="sourcefile">app/+my-account/my-account-blocklist/my-account-blocklist.component.html</context>
2301 <context context-type="linenumber">22</context>
2302 </context-group>
2303 <context-group purpose="location">
2304 <context context-type="sourcefile">app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html</context>
2305 <context context-type="linenumber">23</context>
2306 </context-group>
2126 </trans-unit><trans-unit id="efad4be364b8fb5c73cbfcc7acccd542f9d84ad6" datatype="html"> 2307 </trans-unit><trans-unit id="efad4be364b8fb5c73cbfcc7acccd542f9d84ad6" datatype="html">
2127 <source>My settings</source> 2308 <source>My settings</source>
2128 <context-group purpose="location"> 2309 <context-group purpose="location">
@@ -2159,11 +2340,27 @@
2159 <context context-type="sourcefile">app/+my-account/my-account.component.html</context> 2340 <context context-type="sourcefile">app/+my-account/my-account.component.html</context>
2160 <context context-type="linenumber">18</context> 2341 <context context-type="linenumber">18</context>
2161 </context-group> 2342 </context-group>
2343 </trans-unit><trans-unit id="46aa32e581922d6d2c3d7bc4c87209ad5808b029" datatype="html">
2344 <source>Misc</source>
2345 <context-group purpose="location">
2346 <context context-type="sourcefile">app/+my-account/my-account.component.html</context>
2347 <context context-type="linenumber">24</context>
2348 </context-group>
2349 </trans-unit><trans-unit id="2bc7533f8c8e7d183950ba1094a0acd9efc22e5e" datatype="html">
2350 <source>Muted instances</source>
2351 <context-group purpose="location">
2352 <context context-type="sourcefile">app/+my-account/my-account.component.html</context>
2353 <context context-type="linenumber">31</context>
2354 </context-group>
2355 <context-group purpose="location">
2356 <context context-type="sourcefile">app/+my-account/my-account-blocklist/my-account-server-blocklist.component.html</context>
2357 <context context-type="linenumber">2</context>
2358 </context-group>
2162 </trans-unit><trans-unit id="73022f1676784c4f9b8cdbb322e52b02ccc800b7" datatype="html"> 2359 </trans-unit><trans-unit id="73022f1676784c4f9b8cdbb322e52b02ccc800b7" datatype="html">
2163 <source>Ownership changes</source> 2360 <source>Ownership changes</source>
2164 <context-group purpose="location"> 2361 <context-group purpose="location">
2165 <context context-type="sourcefile">app/+my-account/my-account.component.html</context> 2362 <context context-type="sourcefile">app/+my-account/my-account.component.html</context>
2166 <context context-type="linenumber">22</context> 2363 <context context-type="linenumber">33</context>
2167 </context-group> 2364 </context-group>
2168 </trans-unit><trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48" datatype="html"> 2365 </trans-unit><trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48" datatype="html">
2169 <source>Video quota:</source> 2366 <source>Video quota:</source>
@@ -2437,17 +2634,23 @@ When you will upload a video in this channel, the video support field will be au
2437 <context context-type="sourcefile">app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html</context> 2634 <context context-type="sourcefile">app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html</context>
2438 <context context-type="linenumber">3</context> 2635 <context context-type="linenumber">3</context>
2439 </context-group> 2636 </context-group>
2637 </trans-unit><trans-unit id="d044c51156e295824813a866dba9545bdb59466b" datatype="html">
2638 <source>Use WebTorrent to exchange parts of the video with others</source>
2639 <context-group purpose="location">
2640 <context context-type="sourcefile">app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html</context>
2641 <context context-type="linenumber">20</context>
2642 </context-group>
2440 </trans-unit><trans-unit id="fb17c44abac2d1ed2a54cdd28bae289dc0b9a1c2" datatype="html"> 2643 </trans-unit><trans-unit id="fb17c44abac2d1ed2a54cdd28bae289dc0b9a1c2" datatype="html">
2441 <source>Automatically plays video</source> 2644 <source>Automatically plays video</source>
2442 <context-group purpose="location"> 2645 <context-group purpose="location">
2443 <context context-type="sourcefile">app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html</context> 2646 <context context-type="sourcefile">app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html</context>
2444 <context context-type="linenumber">20</context> 2647 <context context-type="linenumber">25</context>
2445 </context-group> 2648 </context-group>
2446 </trans-unit><trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html"> 2649 </trans-unit><trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe" datatype="html">
2447 <source>Save</source> 2650 <source>Save</source>
2448 <context-group purpose="location"> 2651 <context-group purpose="location">
2449 <context context-type="sourcefile">app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html</context> 2652 <context context-type="sourcefile">app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html</context>
2450 <context context-type="linenumber">23</context> 2653 <context context-type="linenumber">28</context>
2451 </context-group> 2654 </context-group>
2452 </trans-unit><trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba" datatype="html"> 2655 </trans-unit><trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba" datatype="html">
2453 <source>Update my profile</source> 2656 <source>Update my profile</source>
@@ -3155,12 +3358,6 @@ When you will upload a video in this channel, the video support field will be au
3155 <context context-type="sourcefile">app/videos/+video-watch/video-watch.component.html</context> 3358 <context context-type="sourcefile">app/videos/+video-watch/video-watch.component.html</context>
3156 <context context-type="linenumber">134</context> 3359 <context context-type="linenumber">134</context>
3157 </context-group> 3360 </context-group>
3158 </trans-unit><trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c" datatype="html">
3159 <source>Go to the account page</source>
3160 <context-group purpose="location">
3161 <context context-type="sourcefile">app/videos/+video-watch/video-watch.component.html</context>
3162 <context context-type="linenumber">133</context>
3163 </context-group>
3164 </trans-unit><trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b" datatype="html"> 3361 </trans-unit><trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b" datatype="html">
3165 <source>Show more</source> 3362 <source>Show more</source>
3166 <context-group purpose="location"> 3363 <context-group purpose="location">
@@ -3223,23 +3420,17 @@ When you will upload a video in this channel, the video support field will be au
3223 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context> 3420 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context>
3224 <context context-type="linenumber">3</context> 3421 <context context-type="linenumber">3</context>
3225 </context-group> 3422 </context-group>
3226 </trans-unit><trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5" datatype="html">
3227 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@&lt;x id="INTERPOLATION" equiv-text="{{video.account.name}}"/&gt;@&lt;x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/&gt;&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href=&apos;https://github.com/Chocobozzz/PeerTube/issues/224&apos;&gt;#224&lt;/a&gt;.</source>
3228 <context-group purpose="location">
3229 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context>
3230 <context context-type="linenumber">8</context>
3231 </context-group>
3232 </trans-unit><trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4" datatype="html"> 3423 </trans-unit><trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4" datatype="html">
3233 <source>No comments.</source> 3424 <source>No comments.</source>
3234 <context-group purpose="location"> 3425 <context-group purpose="location">
3235 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context> 3426 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context>
3236 <context context-type="linenumber">18</context> 3427 <context context-type="linenumber">17</context>
3237 </context-group> 3428 </context-group>
3238 </trans-unit><trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e" datatype="html"> 3429 </trans-unit><trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e" datatype="html">
3239 <source>View all &lt;x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/&gt; replies</source> 3430 <source>View all &lt;x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/&gt; replies</source>
3240 <context-group purpose="location"> 3431 <context-group purpose="location">
3241 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context> 3432 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context>
3242 <context context-type="linenumber">55</context> 3433 <context context-type="linenumber">54</context>
3243 </context-group> 3434 </context-group>
3244 </trans-unit><trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828" datatype="html"> 3435 </trans-unit><trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828" datatype="html">
3245 <source> 3436 <source>
@@ -3247,7 +3438,7 @@ When you will upload a video in this channel, the video support field will be au
3247 </source> 3438 </source>
3248 <context-group purpose="location"> 3439 <context-group purpose="location">
3249 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context> 3440 <context context-type="sourcefile">app/videos/+video-watch/comment/video-comments.component.html</context>
3250 <context context-type="linenumber">64</context> 3441 <context context-type="linenumber">63</context>
3251 </context-group> 3442 </context-group>
3252 </trans-unit><trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e" datatype="html"> 3443 </trans-unit><trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e" datatype="html">
3253 <source>Add comment...</source> 3444 <source>Add comment...</source>
@@ -3354,50 +3545,16 @@ When you will upload a video in this channel, the video support field will be au
3354 <context context-type="linenumber">1</context> 3545 <context context-type="linenumber">1</context>
3355 </context-group> 3546 </context-group>
3356 </trans-unit> 3547 </trans-unit>
3357 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6" datatype="html"> 3548 <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">
3358 <source>240p</source> 3549 <source>Error</source>
3359 <context-group purpose="location">
3360 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3361 <context context-type="linenumber">1</context>
3362 </context-group>
3363 </trans-unit>
3364 <trans-unit id="c8cfad7e7a16c57c42535331b65cb7de40d8402e" datatype="html">
3365 <source>360p</source>
3366 <context-group purpose="location">
3367 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3368 <context context-type="linenumber">1</context>
3369 </context-group>
3370 </trans-unit>
3371 <trans-unit id="48f0af5a0d0bea4e84b27eaf41b19c85a531c2a5" datatype="html">
3372 <source>480p</source>
3373 <context-group purpose="location">
3374 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3375 <context context-type="linenumber">1</context>
3376 </context-group>
3377 </trans-unit>
3378 <trans-unit id="6f06138daf6363746ff26bfc0cb2491c09cdfdf2" datatype="html">
3379 <source>720p</source>
3380 <context-group purpose="location">
3381 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3382 <context context-type="linenumber">1</context>
3383 </context-group>
3384 </trans-unit>
3385 <trans-unit id="65c94f9beb6fe957808c40060da280cc7ace7ab9" datatype="html">
3386 <source>1080p</source>
3387 <context-group purpose="location"> 3550 <context-group purpose="location">
3388 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context> 3551 <context context-type="sourcefile">src/app/+accounts/accounts.component.ts</context>
3389 <context context-type="linenumber">1</context> 3552 <context context-type="linenumber">1</context>
3390 </context-group> 3553 </context-group>
3391 </trans-unit>
3392 <trans-unit id="421a937491f19774d17eefa1d24816dae1a9f111" datatype="html">
3393 <source>Auto (via ffmpeg)</source>
3394 <context-group purpose="location"> 3554 <context-group purpose="location">
3395 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context> 3555 <context context-type="sourcefile">src/app/+accounts/accounts.component.ts</context>
3396 <context context-type="linenumber">1</context> 3556 <context context-type="linenumber">1</context>
3397 </context-group> 3557 </context-group>
3398 </trans-unit>
3399 <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d" datatype="html">
3400 <source>Error</source>
3401 <context-group purpose="location"> 3558 <context-group purpose="location">
3402 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context> 3559 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3403 <context context-type="linenumber">1</context> 3560 <context context-type="linenumber">1</context>
@@ -3431,6 +3588,14 @@ When you will upload a video in this channel, the video support field will be au
3431 <context context-type="linenumber">1</context> 3588 <context context-type="linenumber">1</context>
3432 </context-group> 3589 </context-group>
3433 <context-group purpose="location"> 3590 <context-group purpose="location">
3591 <context context-type="sourcefile">src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts</context>
3592 <context context-type="linenumber">1</context>
3593 </context-group>
3594 <context-group purpose="location">
3595 <context context-type="sourcefile">src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts</context>
3596 <context context-type="linenumber">1</context>
3597 </context-group>
3598 <context-group purpose="location">
3434 <context context-type="sourcefile">src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.ts</context> 3599 <context context-type="sourcefile">src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.ts</context>
3435 <context context-type="linenumber">1</context> 3600 <context context-type="linenumber">1</context>
3436 </context-group> 3601 </context-group>
@@ -3455,7 +3620,7 @@ When you will upload a video in this channel, the video support field will be au
3455 <context context-type="linenumber">1</context> 3620 <context context-type="linenumber">1</context>
3456 </context-group> 3621 </context-group>
3457 <context-group purpose="location"> 3622 <context-group purpose="location">
3458 <context context-type="sourcefile">src/app/+admin/users/user-list/user-ban-modal.component.ts</context> 3623 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
3459 <context context-type="linenumber">1</context> 3624 <context context-type="linenumber">1</context>
3460 </context-group> 3625 </context-group>
3461 <context-group purpose="location"> 3626 <context-group purpose="location">
@@ -3475,7 +3640,11 @@ When you will upload a video in this channel, the video support field will be au
3475 <context context-type="linenumber">1</context> 3640 <context context-type="linenumber">1</context>
3476 </context-group> 3641 </context-group>
3477 <context-group purpose="location"> 3642 <context-group purpose="location">
3478 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 3643 <context context-type="sourcefile">src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts</context>
3644 <context context-type="linenumber">1</context>
3645 </context-group>
3646 <context-group purpose="location">
3647 <context context-type="sourcefile">src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts</context>
3479 <context context-type="linenumber">1</context> 3648 <context context-type="linenumber">1</context>
3480 </context-group> 3649 </context-group>
3481 <context-group purpose="location"> 3650 <context-group purpose="location">
@@ -3563,6 +3732,58 @@ When you will upload a video in this channel, the video support field will be au
3563 <context context-type="linenumber">1</context> 3732 <context context-type="linenumber">1</context>
3564 </context-group> 3733 </context-group>
3565 <context-group purpose="location"> 3734 <context-group purpose="location">
3735 <context context-type="sourcefile">src/app/shared/moderation/user-ban-modal.component.ts</context>
3736 <context context-type="linenumber">1</context>
3737 </context-group>
3738 <context-group purpose="location">
3739 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3740 <context context-type="linenumber">1</context>
3741 </context-group>
3742 <context-group purpose="location">
3743 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3744 <context context-type="linenumber">1</context>
3745 </context-group>
3746 <context-group purpose="location">
3747 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3748 <context context-type="linenumber">1</context>
3749 </context-group>
3750 <context-group purpose="location">
3751 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3752 <context context-type="linenumber">1</context>
3753 </context-group>
3754 <context-group purpose="location">
3755 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3756 <context context-type="linenumber">1</context>
3757 </context-group>
3758 <context-group purpose="location">
3759 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3760 <context context-type="linenumber">1</context>
3761 </context-group>
3762 <context-group purpose="location">
3763 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3764 <context context-type="linenumber">1</context>
3765 </context-group>
3766 <context-group purpose="location">
3767 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3768 <context context-type="linenumber">1</context>
3769 </context-group>
3770 <context-group purpose="location">
3771 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3772 <context context-type="linenumber">1</context>
3773 </context-group>
3774 <context-group purpose="location">
3775 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3776 <context context-type="linenumber">1</context>
3777 </context-group>
3778 <context-group purpose="location">
3779 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3780 <context context-type="linenumber">1</context>
3781 </context-group>
3782 <context-group purpose="location">
3783 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
3784 <context context-type="linenumber">1</context>
3785 </context-group>
3786 <context-group purpose="location">
3566 <context context-type="sourcefile">src/app/shared/user-subscription/subscribe-button.component.ts</context> 3787 <context context-type="sourcefile">src/app/shared/user-subscription/subscribe-button.component.ts</context>
3567 <context context-type="linenumber">1</context> 3788 <context context-type="linenumber">1</context>
3568 </context-group> 3789 </context-group>
@@ -3667,36 +3888,43 @@ When you will upload a video in this channel, the video support field will be au
3667 <context context-type="linenumber">1</context> 3888 <context context-type="linenumber">1</context>
3668 </context-group> 3889 </context-group>
3669 </trans-unit> 3890 </trans-unit>
3670 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed" datatype="html"> 3891 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6" datatype="html">
3671 <source>You set custom &lt;x id="INTERPOLATION" equiv-text="{{customizationsText}}"/&gt;. </source> 3892 <source>240p</source>
3672 <context-group purpose="location"> 3893 <context-group purpose="location">
3673 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context> 3894 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3674 <context context-type="linenumber">1</context> 3895 <context context-type="linenumber">1</context>
3675 </context-group> 3896 </context-group>
3676 </trans-unit> 3897 </trans-unit>
3677 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e" datatype="html"> 3898 <trans-unit id="c8cfad7e7a16c57c42535331b65cb7de40d8402e" datatype="html">
3678 <source>This could lead to security issues or bugs if you do not understand it. </source> 3899 <source>360p</source>
3679 <context-group purpose="location"> 3900 <context-group purpose="location">
3680 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context> 3901 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3681 <context context-type="linenumber">1</context> 3902 <context context-type="linenumber">1</context>
3682 </context-group> 3903 </context-group>
3683 </trans-unit> 3904 </trans-unit>
3684 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0" datatype="html"> 3905 <trans-unit id="48f0af5a0d0bea4e84b27eaf41b19c85a531c2a5" datatype="html">
3685 <source>Are you sure you want to update the configuration?</source> 3906 <source>480p</source>
3686 <context-group purpose="location"> 3907 <context-group purpose="location">
3687 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context> 3908 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3688 <context context-type="linenumber">1</context> 3909 <context context-type="linenumber">1</context>
3689 </context-group> 3910 </context-group>
3690 </trans-unit> 3911 </trans-unit>
3691 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119" datatype="html"> 3912 <trans-unit id="6f06138daf6363746ff26bfc0cb2491c09cdfdf2" datatype="html">
3692 <source>Please type</source> 3913 <source>720p</source>
3693 <context-group purpose="location"> 3914 <context-group purpose="location">
3694 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context> 3915 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3695 <context context-type="linenumber">1</context> 3916 <context context-type="linenumber">1</context>
3696 </context-group> 3917 </context-group>
3697 </trans-unit> 3918 </trans-unit>
3698 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d" datatype="html"> 3919 <trans-unit id="65c94f9beb6fe957808c40060da280cc7ace7ab9" datatype="html">
3699 <source>to confirm.</source> 3920 <source>1080p</source>
3921 <context-group purpose="location">
3922 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3923 <context context-type="linenumber">1</context>
3924 </context-group>
3925 </trans-unit>
3926 <trans-unit id="421a937491f19774d17eefa1d24816dae1a9f111" datatype="html">
3927 <source>Auto (via ffmpeg)</source>
3700 <context-group purpose="location"> 3928 <context-group purpose="location">
3701 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context> 3929 <context context-type="sourcefile">src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts</context>
3702 <context context-type="linenumber">1</context> 3930 <context context-type="linenumber">1</context>
@@ -3721,6 +3949,14 @@ When you will upload a video in this channel, the video support field will be au
3721 <context context-type="linenumber">1</context> 3949 <context context-type="linenumber">1</context>
3722 </context-group> 3950 </context-group>
3723 <context-group purpose="location"> 3951 <context-group purpose="location">
3952 <context context-type="sourcefile">src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts</context>
3953 <context context-type="linenumber">1</context>
3954 </context-group>
3955 <context-group purpose="location">
3956 <context context-type="sourcefile">src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts</context>
3957 <context context-type="linenumber">1</context>
3958 </context-group>
3959 <context-group purpose="location">
3724 <context context-type="sourcefile">src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.ts</context> 3960 <context context-type="sourcefile">src/app/+admin/moderation/video-abuse-list/moderation-comment-modal.component.ts</context>
3725 <context context-type="linenumber">1</context> 3961 <context context-type="linenumber">1</context>
3726 </context-group> 3962 </context-group>
@@ -3741,7 +3977,7 @@ When you will upload a video in this channel, the video support field will be au
3741 <context context-type="linenumber">1</context> 3977 <context context-type="linenumber">1</context>
3742 </context-group> 3978 </context-group>
3743 <context-group purpose="location"> 3979 <context-group purpose="location">
3744 <context context-type="sourcefile">src/app/+admin/users/user-list/user-ban-modal.component.ts</context> 3980 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
3745 <context context-type="linenumber">1</context> 3981 <context context-type="linenumber">1</context>
3746 </context-group> 3982 </context-group>
3747 <context-group purpose="location"> 3983 <context-group purpose="location">
@@ -3749,7 +3985,11 @@ When you will upload a video in this channel, the video support field will be au
3749 <context context-type="linenumber">1</context> 3985 <context context-type="linenumber">1</context>
3750 </context-group> 3986 </context-group>
3751 <context-group purpose="location"> 3987 <context-group purpose="location">
3752 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 3988 <context context-type="sourcefile">src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts</context>
3989 <context context-type="linenumber">1</context>
3990 </context-group>
3991 <context-group purpose="location">
3992 <context context-type="sourcefile">src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts</context>
3753 <context context-type="linenumber">1</context> 3993 <context context-type="linenumber">1</context>
3754 </context-group> 3994 </context-group>
3755 <context-group purpose="location"> 3995 <context-group purpose="location">
@@ -3817,6 +4057,50 @@ When you will upload a video in this channel, the video support field will be au
3817 <context context-type="linenumber">1</context> 4057 <context context-type="linenumber">1</context>
3818 </context-group> 4058 </context-group>
3819 <context-group purpose="location"> 4059 <context-group purpose="location">
4060 <context context-type="sourcefile">src/app/shared/moderation/user-ban-modal.component.ts</context>
4061 <context context-type="linenumber">1</context>
4062 </context-group>
4063 <context-group purpose="location">
4064 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4065 <context context-type="linenumber">1</context>
4066 </context-group>
4067 <context-group purpose="location">
4068 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4069 <context context-type="linenumber">1</context>
4070 </context-group>
4071 <context-group purpose="location">
4072 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4073 <context context-type="linenumber">1</context>
4074 </context-group>
4075 <context-group purpose="location">
4076 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4077 <context context-type="linenumber">1</context>
4078 </context-group>
4079 <context-group purpose="location">
4080 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4081 <context context-type="linenumber">1</context>
4082 </context-group>
4083 <context-group purpose="location">
4084 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4085 <context context-type="linenumber">1</context>
4086 </context-group>
4087 <context-group purpose="location">
4088 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4089 <context context-type="linenumber">1</context>
4090 </context-group>
4091 <context-group purpose="location">
4092 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4093 <context context-type="linenumber">1</context>
4094 </context-group>
4095 <context-group purpose="location">
4096 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4097 <context context-type="linenumber">1</context>
4098 </context-group>
4099 <context-group purpose="location">
4100 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4101 <context context-type="linenumber">1</context>
4102 </context-group>
4103 <context-group purpose="location">
3820 <context context-type="sourcefile">src/app/signup/signup.component.ts</context> 4104 <context context-type="sourcefile">src/app/signup/signup.component.ts</context>
3821 <context context-type="linenumber">1</context> 4105 <context context-type="linenumber">1</context>
3822 </context-group> 4106 </context-group>
@@ -3879,11 +4163,11 @@ When you will upload a video in this channel, the video support field will be au
3879 <context context-type="linenumber">1</context> 4163 <context context-type="linenumber">1</context>
3880 </context-group> 4164 </context-group>
3881 <context-group purpose="location"> 4165 <context-group purpose="location">
3882 <context context-type="sourcefile">src/app/+admin/users/shared/user.service.ts</context> 4166 <context context-type="sourcefile">src/app/+my-account/my-account-settings/my-account-settings.component.ts</context>
3883 <context context-type="linenumber">1</context> 4167 <context context-type="linenumber">1</context>
3884 </context-group> 4168 </context-group>
3885 <context-group purpose="location"> 4169 <context-group purpose="location">
3886 <context context-type="sourcefile">src/app/+my-account/my-account-settings/my-account-settings.component.ts</context> 4170 <context context-type="sourcefile">src/app/shared/users/user.service.ts</context>
3887 <context context-type="linenumber">1</context> 4171 <context context-type="linenumber">1</context>
3888 </context-group> 4172 </context-group>
3889 </trans-unit> 4173 </trans-unit>
@@ -4046,6 +4330,20 @@ When you will upload a video in this channel, the video support field will be au
4046 <context context-type="linenumber">1</context> 4330 <context context-type="linenumber">1</context>
4047 </context-group> 4331 </context-group>
4048 </trans-unit> 4332 </trans-unit>
4333 <trans-unit id="53cc0f4a4566c4139c65f93b5dce2fe8302e78da" datatype="html">
4334 <source>Account &lt;x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/&gt; unmuted by your instance.</source>
4335 <context-group purpose="location">
4336 <context context-type="sourcefile">src/app/+admin/moderation/instance-blocklist/instance-account-blocklist.component.ts</context>
4337 <context context-type="linenumber">1</context>
4338 </context-group>
4339 </trans-unit>
4340 <trans-unit id="468b52e3c04fb9a3d8c8213555dfcad0cbcae330" datatype="html">
4341 <source>Instance &lt;x id="INTERPOLATION" equiv-text="{{host}}"/&gt; unmuted by your instance.</source>
4342 <context-group purpose="location">
4343 <context context-type="sourcefile">src/app/+admin/moderation/instance-blocklist/instance-server-blocklist.component.ts</context>
4344 <context context-type="linenumber">1</context>
4345 </context-group>
4346 </trans-unit>
4049 <trans-unit id="800cd3cdf47751b576587259ba3a1bc0a7f435b6" datatype="html"> 4347 <trans-unit id="800cd3cdf47751b576587259ba3a1bc0a7f435b6" datatype="html">
4050 <source>Comment updated.</source> 4348 <source>Comment updated.</source>
4051 <context-group purpose="location"> 4349 <context-group purpose="location">
@@ -4053,6 +4351,13 @@ When you will upload a video in this channel, the video support field will be au
4053 <context context-type="linenumber">1</context> 4351 <context context-type="linenumber">1</context>
4054 </context-group> 4352 </context-group>
4055 </trans-unit> 4353 </trans-unit>
4354 <trans-unit id="586bee8c27a761611eb05661524cc7ca944b5978" datatype="html">
4355 <source>Delete this report</source>
4356 <context-group purpose="location">
4357 <context context-type="sourcefile">src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts</context>
4358 <context context-type="linenumber">1</context>
4359 </context-group>
4360 </trans-unit>
4056 <trans-unit id="cf3b28ba29a907b334ab0e6dccd080a60ba23321" datatype="html"> 4361 <trans-unit id="cf3b28ba29a907b334ab0e6dccd080a60ba23321" datatype="html">
4057 <source>Update moderation comment</source> 4362 <source>Update moderation comment</source>
4058 <context-group purpose="location"> 4363 <context-group purpose="location">
@@ -4074,8 +4379,8 @@ When you will upload a video in this channel, the video support field will be au
4074 <context context-type="linenumber">1</context> 4379 <context context-type="linenumber">1</context>
4075 </context-group> 4380 </context-group>
4076 </trans-unit> 4381 </trans-unit>
4077 <trans-unit id="01a909e58239b5dde966ef97a79c656d2c452e03" datatype="html"> 4382 <trans-unit id="73b70e37cddaa6494d8a666b6cba90dc80595599" datatype="html">
4078 <source>Do you really want to delete this abuse?</source> 4383 <source>Do you really want to delete this abuse report?</source>
4079 <context-group purpose="location"> 4384 <context-group purpose="location">
4080 <context context-type="sourcefile">src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts</context> 4385 <context context-type="sourcefile">src/app/+admin/moderation/video-abuse-list/video-abuse-list.component.ts</context>
4081 <context context-type="linenumber">1</context> 4386 <context context-type="linenumber">1</context>
@@ -4110,13 +4415,6 @@ When you will upload a video in this channel, the video support field will be au
4110 <context context-type="linenumber">1</context> 4415 <context context-type="linenumber">1</context>
4111 </context-group> 4416 </context-group>
4112 </trans-unit> 4417 </trans-unit>
4113 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf" datatype="html">
4114 <source>Moderator</source>
4115 <context-group purpose="location">
4116 <context context-type="sourcefile">src/app/+admin/users/shared/user.service.ts</context>
4117 <context context-type="linenumber">1</context>
4118 </context-group>
4119 </trans-unit>
4120 <trans-unit id="364463fab6c5714118d6449561a0f8de1cc10bfa" datatype="html"> 4418 <trans-unit id="364463fab6c5714118d6449561a0f8de1cc10bfa" datatype="html">
4121 <source>User &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt; created.</source> 4419 <source>User &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt; created.</source>
4122 <context-group purpose="location"> 4420 <context-group purpose="location">
@@ -4138,28 +4436,22 @@ When you will upload a video in this channel, the video support field will be au
4138 <context context-type="linenumber">1</context> 4436 <context context-type="linenumber">1</context>
4139 </context-group> 4437 </context-group>
4140 </trans-unit> 4438 </trans-unit>
4141 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd" datatype="html"> 4439 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8" datatype="html">
4142 <source>User &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt; banned.</source> 4440 <source>Unban</source>
4143 <context-group purpose="location"> 4441 <context-group purpose="location">
4144 <context context-type="sourcefile">src/app/+admin/users/user-list/user-ban-modal.component.ts</context> 4442 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
4145 <context context-type="linenumber">1</context> 4443 <context context-type="linenumber">1</context>
4146 </context-group> 4444 </context-group>
4147 </trans-unit>
4148 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0" datatype="html">
4149 <source>Ban</source>
4150 <context-group purpose="location"> 4445 <context-group purpose="location">
4151 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4446 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
4152 <context context-type="linenumber">1</context> 4447 <context context-type="linenumber">1</context>
4153 </context-group> 4448 </context-group>
4154 </trans-unit>
4155 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8" datatype="html">
4156 <source>Unban</source>
4157 <context-group purpose="location"> 4449 <context-group purpose="location">
4158 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4450 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4159 <context context-type="linenumber">1</context> 4451 <context context-type="linenumber">1</context>
4160 </context-group> 4452 </context-group>
4161 <context-group purpose="location"> 4453 <context-group purpose="location">
4162 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4454 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4163 <context context-type="linenumber">1</context> 4455 <context context-type="linenumber">1</context>
4164 </context-group> 4456 </context-group>
4165 </trans-unit> 4457 </trans-unit>
@@ -4169,16 +4461,20 @@ When you will upload a video in this channel, the video support field will be au
4169 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4461 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
4170 <context context-type="linenumber">1</context> 4462 <context context-type="linenumber">1</context>
4171 </context-group> 4463 </context-group>
4464 <context-group purpose="location">
4465 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4466 <context context-type="linenumber">1</context>
4467 </context-group>
4172 </trans-unit> 4468 </trans-unit>
4173 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734" datatype="html"> 4469 <trans-unit id="98119091712a8ca72905e3b4c1cf60649af7565e" datatype="html">
4174 <source>Do you really want to unban &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt;?</source> 4470 <source>Do you really want to unban &lt;x id="INTERPOLATION" equiv-text="{{num}}"/&gt; users?</source>
4175 <context-group purpose="location"> 4471 <context-group purpose="location">
4176 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4472 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
4177 <context context-type="linenumber">1</context> 4473 <context context-type="linenumber">1</context>
4178 </context-group> 4474 </context-group>
4179 </trans-unit> 4475 </trans-unit>
4180 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd" datatype="html"> 4476 <trans-unit id="6121be086a51c4c73bbdd8aebdddd9744c8f1ffd" datatype="html">
4181 <source>User &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt; unbanned.</source> 4477 <source>&lt;x id="INTERPOLATION" equiv-text="{{num}}"/&gt; users unbanned.</source>
4182 <context-group purpose="location"> 4478 <context-group purpose="location">
4183 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4479 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
4184 <context context-type="linenumber">1</context> 4480 <context context-type="linenumber">1</context>
@@ -4190,21 +4486,47 @@ When you will upload a video in this channel, the video support field will be au
4190 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4486 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
4191 <context context-type="linenumber">1</context> 4487 <context context-type="linenumber">1</context>
4192 </context-group> 4488 </context-group>
4489 <context-group purpose="location">
4490 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4491 <context context-type="linenumber">1</context>
4492 </context-group>
4193 </trans-unit> 4493 </trans-unit>
4194 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603" datatype="html"> 4494 <trans-unit id="9de914fe915cc730efc57e81c987188a24d3ac51" datatype="html">
4195 <source>If you remove this user, you will not be able to create another with the same username!</source> 4495 <source>If you remove these users, you will not be able to create others with the same username!</source>
4196 <context-group purpose="location"> 4496 <context-group purpose="location">
4197 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4497 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
4198 <context context-type="linenumber">1</context> 4498 <context context-type="linenumber">1</context>
4199 </context-group> 4499 </context-group>
4200 </trans-unit> 4500 </trans-unit>
4201 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a" datatype="html"> 4501 <trans-unit id="b708d332e3f89b24745e749fa530210f0bdea329" datatype="html">
4202 <source>User &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt; deleted.</source> 4502 <source>&lt;x id="INTERPOLATION" equiv-text="{{num}}"/&gt; users deleted.</source>
4203 <context-group purpose="location"> 4503 <context-group purpose="location">
4204 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context> 4504 <context context-type="sourcefile">src/app/+admin/users/user-list/user-list.component.ts</context>
4205 <context context-type="linenumber">1</context> 4505 <context context-type="linenumber">1</context>
4206 </context-group> 4506 </context-group>
4207 </trans-unit> 4507 </trans-unit>
4508 <trans-unit id="2667ca38672421a0a7a22343d2a0060ee41246de" datatype="html">
4509 <source>Account &lt;x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/&gt; unmuted.</source>
4510 <context-group purpose="location">
4511 <context context-type="sourcefile">src/app/+my-account/my-account-blocklist/my-account-blocklist.component.ts</context>
4512 <context context-type="linenumber">1</context>
4513 </context-group>
4514 <context-group purpose="location">
4515 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4516 <context context-type="linenumber">1</context>
4517 </context-group>
4518 </trans-unit>
4519 <trans-unit id="c6af80b42938d4a49e6f6c4f60ce26228916994c" datatype="html">
4520 <source>Instance &lt;x id="INTERPOLATION" equiv-text="{{host}}"/&gt; unmuted.</source>
4521 <context-group purpose="location">
4522 <context context-type="sourcefile">src/app/+my-account/my-account-blocklist/my-account-server-blocklist.component.ts</context>
4523 <context context-type="linenumber">1</context>
4524 </context-group>
4525 <context-group purpose="location">
4526 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
4527 <context context-type="linenumber">1</context>
4528 </context-group>
4529 </trans-unit>
4208 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e" datatype="html"> 4530 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e" datatype="html">
4209 <source>Ownership accepted</source> 4531 <source>Ownership accepted</source>
4210 <context-group purpose="location"> 4532 <context-group purpose="location">
@@ -4286,6 +4608,13 @@ When you will upload a video in this channel, the video support field will be au
4286 <context context-type="linenumber">1</context> 4608 <context context-type="linenumber">1</context>
4287 </context-group> 4609 </context-group>
4288 </trans-unit> 4610 </trans-unit>
4611 <trans-unit id="f359f6adf6cccca7770019f947ed594169ee7d47" datatype="html">
4612 <source>This name already exists on this instance.</source>
4613 <context-group purpose="location">
4614 <context context-type="sourcefile">src/app/+my-account/my-account-video-channels/my-account-video-channel-create.component.ts</context>
4615 <context context-type="linenumber">1</context>
4616 </context-group>
4617 </trans-unit>
4289 <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html"> 4618 <trans-unit id="70a67e04629f6d412db0a12d51820b480788d795" datatype="html">
4290 <source>Create</source> 4619 <source>Create</source>
4291 <context-group purpose="location"> 4620 <context-group purpose="location">
@@ -4427,6 +4756,101 @@ When you will upload a video in this channel, the video support field will be au
4427 <context context-type="linenumber">1</context> 4756 <context context-type="linenumber">1</context>
4428 </context-group> 4757 </context-group>
4429 </trans-unit> 4758 </trans-unit>
4759 <trans-unit id="ff6becacbce7fc0943b0af0df4dd67e5e11bf598" datatype="html">
4760 <source>Subscribe to the account</source>
4761 <context-group purpose="location">
4762 <context context-type="sourcefile">src/app/+video-channels/video-channels.component.ts</context>
4763 <context context-type="linenumber">1</context>
4764 </context-group>
4765 <context-group purpose="location">
4766 <context context-type="sourcefile">src/app/videos/+video-watch/video-watch.component.ts</context>
4767 <context context-type="linenumber">1</context>
4768 </context-group>
4769 </trans-unit>
4770 <trans-unit id="1c95cc372311830f936b39f73c5d6d20c0b16013" datatype="html">
4771 <source>Focus the search bar</source>
4772 <context-group purpose="location">
4773 <context context-type="sourcefile">src/app/app.component.ts</context>
4774 <context context-type="linenumber">1</context>
4775 </context-group>
4776 </trans-unit>
4777 <trans-unit id="b19ee83cbd2b735fd081b9aa483a890578019099" datatype="html">
4778 <source>Toggle the left menu</source>
4779 <context-group purpose="location">
4780 <context context-type="sourcefile">src/app/app.component.ts</context>
4781 <context context-type="linenumber">1</context>
4782 </context-group>
4783 </trans-unit>
4784 <trans-unit id="b54759e30f7c1983940cdacb8eb03f102a869084" datatype="html">
4785 <source>Go to the videos overview page</source>
4786 <context-group purpose="location">
4787 <context context-type="sourcefile">src/app/app.component.ts</context>
4788 <context context-type="linenumber">1</context>
4789 </context-group>
4790 </trans-unit>
4791 <trans-unit id="1e919c88a3f889d6659288e69d3e178da0ea7ab0" datatype="html">
4792 <source>Go to the trending videos page</source>
4793 <context-group purpose="location">
4794 <context context-type="sourcefile">src/app/app.component.ts</context>
4795 <context context-type="linenumber">1</context>
4796 </context-group>
4797 </trans-unit>
4798 <trans-unit id="249618dcdd7fbdc863c0714e2eb9e8940bc9c37d" datatype="html">
4799 <source>Go to the recently added videos page</source>
4800 <context-group purpose="location">
4801 <context context-type="sourcefile">src/app/app.component.ts</context>
4802 <context context-type="linenumber">1</context>
4803 </context-group>
4804 </trans-unit>
4805 <trans-unit id="7e194daef3a3509128c4300d4c7c292c49ebf3f5" datatype="html">
4806 <source>Go to the local videos page</source>
4807 <context-group purpose="location">
4808 <context context-type="sourcefile">src/app/app.component.ts</context>
4809 <context context-type="linenumber">1</context>
4810 </context-group>
4811 </trans-unit>
4812 <trans-unit id="f1fb6204f39a7338e5110b2f113643c9288496ba" datatype="html">
4813 <source>Go to the videos upload page</source>
4814 <context-group purpose="location">
4815 <context context-type="sourcefile">src/app/app.component.ts</context>
4816 <context context-type="linenumber">1</context>
4817 </context-group>
4818 </trans-unit>
4819 <trans-unit id="0ed7b40c11da9d4565af9c041df20c15bc6be97e" datatype="html">
4820 <source>Toggle Dark theme</source>
4821 <context-group purpose="location">
4822 <context context-type="sourcefile">src/app/app.component.ts</context>
4823 <context context-type="linenumber">1</context>
4824 </context-group>
4825 </trans-unit>
4826 <trans-unit id="badd4b24618ccc8a34620acb9053fc654b9612b2" datatype="html">
4827 <source>Go to my subscriptions</source>
4828 <context-group purpose="location">
4829 <context context-type="sourcefile">src/app/core/auth/auth.service.ts</context>
4830 <context context-type="linenumber">1</context>
4831 </context-group>
4832 </trans-unit>
4833 <trans-unit id="b7184b5a236618e8edd747529869c392ab6dace1" datatype="html">
4834 <source>Go to my videos</source>
4835 <context-group purpose="location">
4836 <context context-type="sourcefile">src/app/core/auth/auth.service.ts</context>
4837 <context context-type="linenumber">1</context>
4838 </context-group>
4839 </trans-unit>
4840 <trans-unit id="acf985bd42886b9b3030b5f68f0e8417c39b40a7" datatype="html">
4841 <source>Go to my imports</source>
4842 <context-group purpose="location">
4843 <context context-type="sourcefile">src/app/core/auth/auth.service.ts</context>
4844 <context context-type="linenumber">1</context>
4845 </context-group>
4846 </trans-unit>
4847 <trans-unit id="cfe3c51f0ae9385dc2ce6df740d87e5514aa9390" datatype="html">
4848 <source>Go to my channels</source>
4849 <context-group purpose="location">
4850 <context context-type="sourcefile">src/app/core/auth/auth.service.ts</context>
4851 <context context-type="linenumber">1</context>
4852 </context-group>
4853 </trans-unit>
4430 <trans-unit id="edeaa933b09690523e46977e11064e9c655d77d7" datatype="html"> 4854 <trans-unit id="edeaa933b09690523e46977e11064e9c655d77d7" datatype="html">
4431 <source>Cannot retrieve OAuth Client credentials: &lt;x id="INTERPOLATION" equiv-text="{{errorText}}"/&gt;. 4855 <source>Cannot retrieve OAuth Client credentials: &lt;x id="INTERPOLATION" equiv-text="{{errorText}}"/&gt;.
4432</source> 4856</source>
@@ -4848,12 +5272,16 @@ When you will upload a video in this channel, the video support field will be au
4848 <context context-type="linenumber">1</context> 5272 <context context-type="linenumber">1</context>
4849 </context-group> 5273 </context-group>
4850 </trans-unit> 5274 </trans-unit>
4851 <trans-unit id="916a6e4fd83ece1dc54c6135eb3b8cd064b4bac3" datatype="html"> 5275 <trans-unit id="a4179e366d4aa335f1ddd0a13e9109c71a9338d0" datatype="html">
4852 <source>Description cannot be more than 250 characters long.</source> 5276 <source>Description cannot be more than 1000 characters long.</source>
4853 <context-group purpose="location"> 5277 <context-group purpose="location">
4854 <context context-type="sourcefile">src/app/shared/forms/form-validators/user-validators.service.ts</context> 5278 <context context-type="sourcefile">src/app/shared/forms/form-validators/user-validators.service.ts</context>
4855 <context context-type="linenumber">1</context> 5279 <context context-type="linenumber">1</context>
4856 </context-group> 5280 </context-group>
5281 <context-group purpose="location">
5282 <context context-type="sourcefile">src/app/shared/forms/form-validators/video-channel-validators.service.ts</context>
5283 <context context-type="linenumber">1</context>
5284 </context-group>
4857 </trans-unit> 5285 </trans-unit>
4858 <trans-unit id="4a3ebc6ddb6b6677aed7b04eb503f9ddd0cfe561" datatype="html"> 5286 <trans-unit id="4a3ebc6ddb6b6677aed7b04eb503f9ddd0cfe561" datatype="html">
4859 <source>You must to agree with the instance terms in order to registering on it.</source> 5287 <source>You must to agree with the instance terms in order to registering on it.</source>
@@ -4960,6 +5388,13 @@ When you will upload a video in this channel, the video support field will be au
4960 <context context-type="linenumber">1</context> 5388 <context context-type="linenumber">1</context>
4961 </context-group> 5389 </context-group>
4962 </trans-unit> 5390 </trans-unit>
5391 <trans-unit id="c8465c3773699dd075e0147e264d2e232f605803" datatype="html">
5392 <source>You can only transfer ownership to a local account</source>
5393 <context-group purpose="location">
5394 <context context-type="sourcefile">src/app/shared/forms/form-validators/video-change-ownership-validators.service.ts</context>
5395 <context context-type="linenumber">1</context>
5396 </context-group>
5397 </trans-unit>
4963 <trans-unit id="541087322c34e8b26954fd67ff4fc80d1a6c1b33" datatype="html"> 5398 <trans-unit id="541087322c34e8b26954fd67ff4fc80d1a6c1b33" datatype="html">
4964 <source>Name is required.</source> 5399 <source>Name is required.</source>
4965 <context-group purpose="location"> 5400 <context-group purpose="location">
@@ -4988,13 +5423,6 @@ When you will upload a video in this channel, the video support field will be au
4988 <context context-type="linenumber">1</context> 5423 <context context-type="linenumber">1</context>
4989 </context-group> 5424 </context-group>
4990 </trans-unit> 5425 </trans-unit>
4991 <trans-unit id="fac936be125163a8494f3d7e7f21d65c7e4f1ff6" datatype="html">
4992 <source>Description cannot be more than 500 characters long.</source>
4993 <context-group purpose="location">
4994 <context context-type="sourcefile">src/app/shared/forms/form-validators/video-channel-validators.service.ts</context>
4995 <context context-type="linenumber">1</context>
4996 </context-group>
4997 </trans-unit>
4998 <trans-unit id="e7182e21e9566cc81c83f92727461322f71fd69b" datatype="html"> 5426 <trans-unit id="e7182e21e9566cc81c83f92727461322f71fd69b" datatype="html">
4999 <source>Support text must be at least 3 characters long.</source> 5427 <source>Support text must be at least 3 characters long.</source>
5000 <context-group purpose="location"> 5428 <context-group purpose="location">
@@ -5002,8 +5430,8 @@ When you will upload a video in this channel, the video support field will be au
5002 <context context-type="linenumber">1</context> 5430 <context context-type="linenumber">1</context>
5003 </context-group> 5431 </context-group>
5004 </trans-unit> 5432 </trans-unit>
5005 <trans-unit id="3fe80c71378e127dda2dda9dbcd66b059d362813" datatype="html"> 5433 <trans-unit id="15ec53d9ee65cb930c5f5d10ae2e8dd3fd44fc85" datatype="html">
5006 <source>Support text cannot be more than 500 characters long.</source> 5434 <source>Support text cannot be more than 1000 characters long.</source>
5007 <context-group purpose="location"> 5435 <context-group purpose="location">
5008 <context context-type="sourcefile">src/app/shared/forms/form-validators/video-channel-validators.service.ts</context> 5436 <context context-type="sourcefile">src/app/shared/forms/form-validators/video-channel-validators.service.ts</context>
5009 <context context-type="linenumber">1</context> 5437 <context context-type="linenumber">1</context>
@@ -5100,8 +5528,8 @@ When you will upload a video in this channel, the video support field will be au
5100 <context context-type="linenumber">1</context> 5528 <context context-type="linenumber">1</context>
5101 </context-group> 5529 </context-group>
5102 </trans-unit> 5530 </trans-unit>
5103 <trans-unit id="e61f1c05121fa5effa6ccddf5be6dcf1c822ff4b" datatype="html"> 5531 <trans-unit id="f17de746af56840511cae11559539b6d8b6955ad" datatype="html">
5104 <source>Video support cannot be more than 500 characters long.</source> 5532 <source>Video support cannot be more than 1000 characters long.</source>
5105 <context-group purpose="location"> 5533 <context-group purpose="location">
5106 <context context-type="sourcefile">src/app/shared/forms/form-validators/video-validators.service.ts</context> 5534 <context context-type="sourcefile">src/app/shared/forms/form-validators/video-validators.service.ts</context>
5107 <context context-type="linenumber">1</context> 5535 <context context-type="linenumber">1</context>
@@ -5662,6 +6090,146 @@ When you will upload a video in this channel, the video support field will be au
5662 <context context-type="linenumber">1</context> 6090 <context context-type="linenumber">1</context>
5663 </context-group> 6091 </context-group>
5664 </trans-unit> 6092 </trans-unit>
6093 <trans-unit id="f9b4f2d8146c789cd40314f640ec4e88efbaf681" datatype="html">
6094 <source>&lt;x id="INTERPOLATION" equiv-text="{{num}}"/&gt; users banned.</source>
6095 <context-group purpose="location">
6096 <context context-type="sourcefile">src/app/shared/moderation/user-ban-modal.component.ts</context>
6097 <context context-type="linenumber">1</context>
6098 </context-group>
6099 </trans-unit>
6100 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd" datatype="html">
6101 <source>User &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt; banned.</source>
6102 <context-group purpose="location">
6103 <context context-type="sourcefile">src/app/shared/moderation/user-ban-modal.component.ts</context>
6104 <context context-type="linenumber">1</context>
6105 </context-group>
6106 </trans-unit>
6107 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734" datatype="html">
6108 <source>Do you really want to unban &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt;?</source>
6109 <context-group purpose="location">
6110 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6111 <context context-type="linenumber">1</context>
6112 </context-group>
6113 </trans-unit>
6114 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd" datatype="html">
6115 <source>User &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt; unbanned.</source>
6116 <context-group purpose="location">
6117 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6118 <context context-type="linenumber">1</context>
6119 </context-group>
6120 </trans-unit>
6121 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603" datatype="html">
6122 <source>If you remove this user, you will not be able to create another with the same username!</source>
6123 <context-group purpose="location">
6124 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6125 <context context-type="linenumber">1</context>
6126 </context-group>
6127 </trans-unit>
6128 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a" datatype="html">
6129 <source>User &lt;x id="INTERPOLATION" equiv-text="{{username}}"/&gt; deleted.</source>
6130 <context-group purpose="location">
6131 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6132 <context context-type="linenumber">1</context>
6133 </context-group>
6134 </trans-unit>
6135 <trans-unit id="33a6319f765848a22a155cef9f1d8e645202e249" datatype="html">
6136 <source>Account &lt;x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/&gt; muted.</source>
6137 <context-group purpose="location">
6138 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6139 <context context-type="linenumber">1</context>
6140 </context-group>
6141 </trans-unit>
6142 <trans-unit id="086eda792aeb1b0d131d633b50fdd1792f5f24c6" datatype="html">
6143 <source>Instance &lt;x id="INTERPOLATION" equiv-text="{{host}}"/&gt; muted.</source>
6144 <context-group purpose="location">
6145 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6146 <context context-type="linenumber">1</context>
6147 </context-group>
6148 </trans-unit>
6149 <trans-unit id="bb72d6d1219e89d182e9fd09d853d83baf8d6499" datatype="html">
6150 <source>Account &lt;x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/&gt; muted by the instance.</source>
6151 <context-group purpose="location">
6152 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6153 <context context-type="linenumber">1</context>
6154 </context-group>
6155 </trans-unit>
6156 <trans-unit id="8686834bc4afe42c1991c6c18f0bce174a0e17a6" datatype="html">
6157 <source>Account &lt;x id="INTERPOLATION" equiv-text="{{nameWithHost}}"/&gt; unmuted by the instance.</source>
6158 <context-group purpose="location">
6159 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6160 <context context-type="linenumber">1</context>
6161 </context-group>
6162 </trans-unit>
6163 <trans-unit id="35d3509161861a610b0895bf084c781e56ba2830" datatype="html">
6164 <source>Instance &lt;x id="INTERPOLATION" equiv-text="{{host}}"/&gt; muted by the instance.</source>
6165 <context-group purpose="location">
6166 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6167 <context context-type="linenumber">1</context>
6168 </context-group>
6169 </trans-unit>
6170 <trans-unit id="978aeec5613fa97e8a5336d3599cebb23ee5a90f" datatype="html">
6171 <source>Instance &lt;x id="INTERPOLATION" equiv-text="{{host}}"/&gt; unmuted by the instance.</source>
6172 <context-group purpose="location">
6173 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6174 <context context-type="linenumber">1</context>
6175 </context-group>
6176 </trans-unit>
6177 <trans-unit id="4a09bf8724e7659fbb5ec33647529cdef7614bdc" datatype="html">
6178 <source>Mute this account</source>
6179 <context-group purpose="location">
6180 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6181 <context context-type="linenumber">1</context>
6182 </context-group>
6183 </trans-unit>
6184 <trans-unit id="d666ca3261aef72b2ddcd649d7b32af488f59952" datatype="html">
6185 <source>Unmute this account</source>
6186 <context-group purpose="location">
6187 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6188 <context context-type="linenumber">1</context>
6189 </context-group>
6190 </trans-unit>
6191 <trans-unit id="e17218983b1de76e5a920b04e1c2ecbdb6e3e06d" datatype="html">
6192 <source>Mute the instance</source>
6193 <context-group purpose="location">
6194 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6195 <context context-type="linenumber">1</context>
6196 </context-group>
6197 </trans-unit>
6198 <trans-unit id="a23514d8aca2f8633622dda0e86b399dc576a2b9" datatype="html">
6199 <source>Unmute the instance</source>
6200 <context-group purpose="location">
6201 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6202 <context context-type="linenumber">1</context>
6203 </context-group>
6204 </trans-unit>
6205 <trans-unit id="4e4107055b44eee44b6954c41120de1cb4d46432" datatype="html">
6206 <source>Mute this account by your instance</source>
6207 <context-group purpose="location">
6208 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6209 <context context-type="linenumber">1</context>
6210 </context-group>
6211 </trans-unit>
6212 <trans-unit id="a51c59cb5ecb7004a6a8ddd2855b5c52266ad957" datatype="html">
6213 <source>Unmute this account by your instance</source>
6214 <context-group purpose="location">
6215 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6216 <context context-type="linenumber">1</context>
6217 </context-group>
6218 </trans-unit>
6219 <trans-unit id="588073e831cec240d6bb0db0b133e45dab69f178" datatype="html">
6220 <source>Mute the instance by your instance</source>
6221 <context-group purpose="location">
6222 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6223 <context context-type="linenumber">1</context>
6224 </context-group>
6225 </trans-unit>
6226 <trans-unit id="676221cdabd4805901343976988c028dbf71b20a" datatype="html">
6227 <source>Unmute the instance by your instance</source>
6228 <context-group purpose="location">
6229 <context context-type="sourcefile">src/app/shared/moderation/user-moderation-dropdown.component.ts</context>
6230 <context context-type="linenumber">1</context>
6231 </context-group>
6232 </trans-unit>
5665 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac" datatype="html"> 6233 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac" datatype="html">
5666 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 6234 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
5667 <context-group purpose="location"> 6235 <context-group purpose="location">
@@ -5718,6 +6286,13 @@ When you will upload a video in this channel, the video support field will be au
5718 <context context-type="linenumber">1</context> 6286 <context context-type="linenumber">1</context>
5719 </context-group> 6287 </context-group>
5720 </trans-unit> 6288 </trans-unit>
6289 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf" datatype="html">
6290 <source>Moderator</source>
6291 <context-group purpose="location">
6292 <context context-type="sourcefile">src/app/shared/users/user.service.ts</context>
6293 <context context-type="linenumber">1</context>
6294 </context-group>
6295 </trans-unit>
5721 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb" datatype="html"> 6296 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb" datatype="html">
5722 <source>Only I can see this video</source> 6297 <source>Only I can see this video</source>
5723 <context-group purpose="location"> 6298 <context-group purpose="location">
@@ -5880,6 +6455,20 @@ When you will upload a video in this channel, the video support field will be au
5880 <context context-type="linenumber">1</context> 6455 <context context-type="linenumber">1</context>
5881 </context-group> 6456 </context-group>
5882 </trans-unit> 6457 </trans-unit>
6458 <trans-unit id="0e65067fdcc9d8725a41896cb1e229d1415a45f6" datatype="html">
6459 <source>Like the video</source>
6460 <context-group purpose="location">
6461 <context context-type="sourcefile">src/app/videos/+video-watch/video-watch.component.ts</context>
6462 <context context-type="linenumber">1</context>
6463 </context-group>
6464 </trans-unit>
6465 <trans-unit id="1a999e06e1aca0a70cd7d0e3e5c2c63d0e1885c8" datatype="html">
6466 <source>Dislike the video</source>
6467 <context-group purpose="location">
6468 <context context-type="sourcefile">src/app/videos/+video-watch/video-watch.component.ts</context>
6469 <context context-type="linenumber">1</context>
6470 </context-group>
6471 </trans-unit>
5883 <trans-unit id="f1abd89c9280323209e939fa9c30f6e5cda20c95" datatype="html"> 6472 <trans-unit id="f1abd89c9280323209e939fa9c30f6e5cda20c95" datatype="html">
5884 <source>Do you really want to delete this video?</source> 6473 <source>Do you really want to delete this video?</source>
5885 <context-group purpose="location"> 6474 <context-group purpose="location">
diff --git a/client/src/locale/source/server_en_US.xml b/client/src/locale/source/server_en_US.xml
index 8858a7a59..b6e62ce80 100644
--- a/client/src/locale/source/server_en_US.xml
+++ b/client/src/locale/source/server_en_US.xml
@@ -41,8 +41,8 @@
41 <source>Entertainment</source> 41 <source>Entertainment</source>
42 <target>undefined</target> 42 <target>undefined</target>
43 </trans-unit> 43 </trans-unit>
44 <trans-unit id="News"> 44 <trans-unit id="News &amp; Politics">
45 <source>News</source> 45 <source>News &amp; Politics</source>
46 <target>undefined</target> 46 <target>undefined</target>
47 </trans-unit> 47 </trans-unit>
48 <trans-unit id="How To"> 48 <trans-unit id="How To">
diff --git a/client/src/locale/target/angular_ar_001.xml b/client/src/locale/target/angular_ar_001.xml
index c6c3338a7..1154e07c7 100644
--- a/client/src/locale/target/angular_ar_001.xml
+++ b/client/src/locale/target/angular_ar_001.xml
@@ -154,7 +154,7 @@
154 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 154 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
155 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> مشاهدة</target> 155 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> مشاهدة</target>
156 <context-group name="null"> 156 <context-group name="null">
157 <context context-type="linenumber">13</context> 157 <context context-type="linenumber">16</context>
158 </context-group> 158 </context-group>
159 </trans-unit> 159 </trans-unit>
160 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 160 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -168,7 +168,7 @@
168 <source>Edit</source> 168 <source>Edit</source>
169 <target>تحرير</target> 169 <target>تحرير</target>
170 <context-group name="null"> 170 <context-group name="null">
171 <context context-type="linenumber">5</context> 171 <context context-type="linenumber">1</context>
172 </context-group> 172 </context-group>
173 </trans-unit> 173 </trans-unit>
174 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 174 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -196,7 +196,21 @@
196 <source>Video quota</source> 196 <source>Video quota</source>
197 <target>حصة الÙيديو</target> 197 <target>حصة الÙيديو</target>
198 <context-group name="null"> 198 <context-group name="null">
199 <context context-type="linenumber">19</context> 199 <context context-type="linenumber">42</context>
200 </context-group>
201 </trans-unit>
202 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
203 <source>Ban</source>
204 <target>حظر</target>
205 <context-group name="null">
206 <context context-type="linenumber">3</context>
207 </context-group>
208 </trans-unit>
209 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
210 <source>Reason...</source>
211 <target>السبب…</target>
212 <context-group name="null">
213 <context context-type="linenumber">11</context>
200 </context-group> 214 </context-group>
201 </trans-unit> 215 </trans-unit>
202 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 216 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
@@ -384,34 +398,27 @@
384 <context context-type="linenumber">5</context> 398 <context context-type="linenumber">5</context>
385 </context-group> 399 </context-group>
386 </trans-unit> 400 </trans-unit>
387 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
388 <source>Filters</source>
389 <target>عوامل التصÙية</target>
390 <context-group name="null">
391 <context context-type="linenumber">16</context>
392 </context-group>
393 </trans-unit>
394 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 401 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
395 <source> 402 <source>
396 No results found 403 No results found
397 </source> 404 </source>
398 <target>لم يتم العثور على أية نتيجة</target> 405 <target>لم يتم العثور على أية نتيجة</target>
399 <context-group name="null"> 406 <context-group name="null">
400 <context context-type="linenumber">25</context> 407 <context context-type="linenumber">28</context>
401 </context-group> 408 </context-group>
402 </trans-unit> 409 </trans-unit>
403 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 410 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
404 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 411 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
405 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> مشترك</target> 412 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> مشترك</target>
406 <context-group name="null"> 413 <context-group name="null">
407 <context context-type="linenumber">41</context> 414 <context context-type="linenumber">44</context>
408 </context-group> 415 </context-group>
409 </trans-unit> 416 </trans-unit>
410 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 417 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
411 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 418 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
412 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> مشاهدة</target> 419 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> مشاهدة</target>
413 <context-group name="null"> 420 <context-group name="null">
414 <context context-type="linenumber">52</context> 421 <context context-type="linenumber">55</context>
415 </context-group> 422 </context-group>
416 </trans-unit> 423 </trans-unit>
417 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 424 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -636,14 +643,14 @@
636 <source>No results.</source> 643 <source>No results.</source>
637 <target>لا نتائج</target> 644 <target>لا نتائج</target>
638 <context-group name="null"> 645 <context-group name="null">
639 <context context-type="linenumber">7</context> 646 <context context-type="linenumber">17</context>
640 </context-group> 647 </context-group>
641 </trans-unit> 648 </trans-unit>
642 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b"> 649 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b">
643 <source>Instance</source> 650 <source>Instance</source>
644 <target>مثيل الخادوم</target> 651 <target>مثيل الخادوم</target>
645 <context-group name="null"> 652 <context-group name="null">
646 <context context-type="linenumber">8</context> 653 <context context-type="linenumber">12</context>
647 </context-group> 654 </context-group>
648 </trans-unit> 655 </trans-unit>
649 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 656 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -825,14 +832,14 @@
825 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 832 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
826 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> مشترك</target> 833 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> مشترك</target>
827 <context-group name="null"> 834 <context-group name="null">
828 <context context-type="linenumber">12</context> 835 <context context-type="linenumber">24</context>
829 </context-group> 836 </context-group>
830 </trans-unit> 837 </trans-unit>
831 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 838 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
832 <source>Video channels</source> 839 <source>Video channels</source>
833 <target>قنوات الÙيديو</target> 840 <target>قنوات الÙيديو</target>
834 <context-group name="null"> 841 <context-group name="null">
835 <context context-type="linenumber">19</context> 842 <context context-type="linenumber">31</context>
836 </context-group> 843 </context-group>
837 </trans-unit> 844 </trans-unit>
838 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 845 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -947,13 +954,6 @@
947 <context context-type="linenumber">42</context> 954 <context context-type="linenumber">42</context>
948 </context-group> 955 </context-group>
949 </trans-unit> 956 </trans-unit>
950 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
951 <source>Video import with HTTP enabled</source>
952 <target>إستيراد المل٠باستخدام HTTP Ù…Ùعل</target>
953 <context-group name="null">
954 <context context-type="linenumber">115</context>
955 </context-group>
956 </trans-unit>
957 <trans-unit id="ca2283fc765b9f44b69f0175d685dc2443da6011"> 957 <trans-unit id="ca2283fc765b9f44b69f0175d685dc2443da6011">
958 <source>Administrator</source> 958 <source>Administrator</source>
959 <target>المدير</target> 959 <target>المدير</target>
@@ -1078,7 +1078,7 @@
1078 <source>Host</source> 1078 <source>Host</source>
1079 <target>المضيÙ</target> 1079 <target>المضيÙ</target>
1080 <context-group name="null"> 1080 <context-group name="null">
1081 <context context-type="linenumber">8</context> 1081 <context context-type="linenumber">19</context>
1082 </context-group> 1082 </context-group>
1083 </trans-unit> 1083 </trans-unit>
1084 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1084 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1148,7 +1148,7 @@
1148 <source>Role</source> 1148 <source>Role</source>
1149 <target>الدور</target> 1149 <target>الدور</target>
1150 <context-group name="null"> 1150 <context-group name="null">
1151 <context context-type="linenumber">20</context> 1151 <context context-type="linenumber">43</context>
1152 </context-group> 1152 </context-group>
1153 </trans-unit> 1153 </trans-unit>
1154 <trans-unit id="6ded52553dd8720fd3698b8fbc3a6d037c07b496"> 1154 <trans-unit id="6ded52553dd8720fd3698b8fbc3a6d037c07b496">
@@ -1158,13 +1158,6 @@
1158 <context context-type="linenumber">72</context> 1158 <context context-type="linenumber">72</context>
1159 </context-group> 1159 </context-group>
1160 </trans-unit> 1160 </trans-unit>
1161 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1162 <source>Reason...</source>
1163 <target>السبب…</target>
1164 <context-group name="null">
1165 <context context-type="linenumber">11</context>
1166 </context-group>
1167 </trans-unit>
1168 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1161 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1169 <source>Users list</source> 1162 <source>Users list</source>
1170 <target>قائمة المستخدÙمون</target> 1163 <target>قائمة المستخدÙمون</target>
@@ -1172,11 +1165,11 @@
1172 <context context-type="linenumber">2</context> 1165 <context context-type="linenumber">2</context>
1173 </context-group> 1166 </context-group>
1174 </trans-unit> 1167 </trans-unit>
1175 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1168 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1176 <source>Actions</source> 1169 <source>Go to the account page</source>
1177 <target>الإجراءات</target> 1170 <target>الإنتقال إلى صÙحة الحساب</target>
1178 <context-group name="null"> 1171 <context-group name="null">
1179 <context context-type="linenumber">33</context> 1172 <context context-type="linenumber">133</context>
1180 </context-group> 1173 </context-group>
1181 </trans-unit> 1174 </trans-unit>
1182 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1175 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1221,6 +1214,13 @@
1221 <context context-type="linenumber">33</context> 1214 <context context-type="linenumber">33</context>
1222 </context-group> 1215 </context-group>
1223 </trans-unit> 1216 </trans-unit>
1217 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1218 <source>Actions</source>
1219 <target>الإجراءات</target>
1220 <context-group name="null">
1221 <context context-type="linenumber">33</context>
1222 </context-group>
1223 </trans-unit>
1224 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 1224 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1225 <source>Reason:</source> 1225 <source>Reason:</source>
1226 <target>السبب:</target> 1226 <target>السبب:</target>
@@ -1467,14 +1467,14 @@
1467 <source>Automatically plays video</source> 1467 <source>Automatically plays video</source>
1468 <target>التشغيل التلقائي للÙيديو</target> 1468 <target>التشغيل التلقائي للÙيديو</target>
1469 <context-group name="null"> 1469 <context-group name="null">
1470 <context context-type="linenumber">20</context> 1470 <context context-type="linenumber">25</context>
1471 </context-group> 1471 </context-group>
1472 </trans-unit> 1472 </trans-unit>
1473 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 1473 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
1474 <source>Save</source> 1474 <source>Save</source>
1475 <target>Ø­Ùظ</target> 1475 <target>Ø­Ùظ</target>
1476 <context-group name="null"> 1476 <context-group name="null">
1477 <context context-type="linenumber">23</context> 1477 <context context-type="linenumber">28</context>
1478 </context-group> 1478 </context-group>
1479 </trans-unit> 1479 </trans-unit>
1480 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 1480 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -1782,13 +1782,6 @@
1782 <context context-type="linenumber">123</context> 1782 <context context-type="linenumber">123</context>
1783 </context-group> 1783 </context-group>
1784 </trans-unit> 1784 </trans-unit>
1785 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1786 <source>Go to the account page</source>
1787 <target>الإنتقال إلى صÙحة الحساب</target>
1788 <context-group name="null">
1789 <context context-type="linenumber">133</context>
1790 </context-group>
1791 </trans-unit>
1792 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 1785 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
1793 <source>Show more</source> 1786 <source>Show more</source>
1794 <target>عرض المزيد</target> 1787 <target>عرض المزيد</target>
@@ -1825,7 +1818,7 @@
1825 <source>No comments.</source> 1818 <source>No comments.</source>
1826 <target>ليس هناك تعليقات.</target> 1819 <target>ليس هناك تعليقات.</target>
1827 <context-group name="null"> 1820 <context-group name="null">
1828 <context context-type="linenumber">18</context> 1821 <context context-type="linenumber">17</context>
1829 </context-group> 1822 </context-group>
1830 </trans-unit> 1823 </trans-unit>
1831 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 1824 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -1834,7 +1827,7 @@
1834 </source> 1827 </source>
1835 <target>تم تعطيل التعليقات.</target> 1828 <target>تم تعطيل التعليقات.</target>
1836 <context-group name="null"> 1829 <context-group name="null">
1837 <context context-type="linenumber">64</context> 1830 <context context-type="linenumber">63</context>
1838 </context-group> 1831 </context-group>
1839 </trans-unit> 1832 </trans-unit>
1840 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 1833 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -1937,13 +1930,6 @@
1937 <context context-type="linenumber">1</context> 1930 <context context-type="linenumber">1</context>
1938 </context-group> 1931 </context-group>
1939 </trans-unit> 1932 </trans-unit>
1940 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
1941 <source>Ban</source>
1942 <target>حظر</target>
1943 <context-group name="null">
1944 <context context-type="linenumber">1</context>
1945 </context-group>
1946 </trans-unit>
1947 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 1933 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
1948 <source>Unban</source> 1934 <source>Unban</source>
1949 <target>ألغ الحظر</target> 1935 <target>ألغ الحظر</target>
@@ -1958,13 +1944,6 @@
1958 <context context-type="linenumber">1</context> 1944 <context context-type="linenumber">1</context>
1959 </context-group> 1945 </context-group>
1960 </trans-unit> 1946 </trans-unit>
1961 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
1962 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
1963 <target>هل تريد إلغاء الحظر عن <x id="INTERPOLATION" equiv-text="{{username}}"/>?</target>
1964 <context-group name="null">
1965 <context context-type="linenumber">1</context>
1966 </context-group>
1967 </trans-unit>
1968 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 1947 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
1969 <source>You cannot delete root.</source> 1948 <source>You cannot delete root.</source>
1970 <target>لا يمكنك حذ٠المسخدم الجذر</target> 1949 <target>لا يمكنك حذ٠المسخدم الجذر</target>
@@ -2539,6 +2518,13 @@
2539 <context context-type="linenumber">1</context> 2518 <context context-type="linenumber">1</context>
2540 </context-group> 2519 </context-group>
2541 </trans-unit> 2520 </trans-unit>
2521 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
2522 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
2523 <target>هل تريد إلغاء الحظر عن <x id="INTERPOLATION" equiv-text="{{username}}"/>?</target>
2524 <context-group name="null">
2525 <context context-type="linenumber">1</context>
2526 </context-group>
2527 </trans-unit>
2542 <trans-unit id="1cadbf82f0e91611321c5abd282f0c23d8ccbfa1"> 2528 <trans-unit id="1cadbf82f0e91611321c5abd282f0c23d8ccbfa1">
2543 <source>Subscribed</source> 2529 <source>Subscribed</source>
2544 <target>مشترك</target> 2530 <target>مشترك</target>
diff --git a/client/src/locale/target/angular_ca_ES.xml b/client/src/locale/target/angular_ca_ES.xml
index 1fd88b480..3e0b01658 100644
--- a/client/src/locale/target/angular_ca_ES.xml
+++ b/client/src/locale/target/angular_ca_ES.xml
@@ -7,7 +7,7 @@
7 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 7 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
8 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualitzacions</target> 8 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualitzacions</target>
9 <context-group name="null"> 9 <context-group name="null">
10 <context context-type="linenumber">13</context> 10 <context context-type="linenumber">16</context>
11 </context-group> 11 </context-group>
12 </trans-unit> 12 </trans-unit>
13 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 13 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -21,7 +21,7 @@
21 <source>Edit</source> 21 <source>Edit</source>
22 <target>Editar</target> 22 <target>Editar</target>
23 <context-group name="null"> 23 <context-group name="null">
24 <context context-type="linenumber">5</context> 24 <context context-type="linenumber">1</context>
25 </context-group> 25 </context-group>
26 </trans-unit> 26 </trans-unit>
27 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 27 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -49,7 +49,14 @@
49 <source>Video quota</source> 49 <source>Video quota</source>
50 <target>Quota de vídeo</target> 50 <target>Quota de vídeo</target>
51 <context-group name="null"> 51 <context-group name="null">
52 <context context-type="linenumber">19</context> 52 <context context-type="linenumber">42</context>
53 </context-group>
54 </trans-unit>
55 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
56 <source>Reason...</source>
57 <target>Motiu...</target>
58 <context-group name="null">
59 <context context-type="linenumber">11</context>
53 </context-group> 60 </context-group>
54 </trans-unit> 61 </trans-unit>
55 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 62 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
@@ -236,13 +243,6 @@
236 <context context-type="linenumber">6</context> 243 <context context-type="linenumber">6</context>
237 </context-group> 244 </context-group>
238 </trans-unit> 245 </trans-unit>
239 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
240 <source>Filters</source>
241 <target>Filtres</target>
242 <context-group name="null">
243 <context context-type="linenumber">16</context>
244 </context-group>
245 </trans-unit>
246 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 246 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
247 <source> 247 <source>
248 No results found 248 No results found
@@ -251,7 +251,7 @@
251 Cap resultat 251 Cap resultat
252 </target> 252 </target>
253 <context-group name="null"> 253 <context-group name="null">
254 <context context-type="linenumber">25</context> 254 <context context-type="linenumber">28</context>
255 </context-group> 255 </context-group>
256 </trans-unit> 256 </trans-unit>
257 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 257 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -419,14 +419,14 @@
419 <source>No results.</source> 419 <source>No results.</source>
420 <target>Sense resultats.</target> 420 <target>Sense resultats.</target>
421 <context-group name="null"> 421 <context-group name="null">
422 <context context-type="linenumber">7</context> 422 <context context-type="linenumber">17</context>
423 </context-group> 423 </context-group>
424 </trans-unit> 424 </trans-unit>
425 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b"> 425 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b">
426 <source>Instance</source> 426 <source>Instance</source>
427 <target>Instància</target> 427 <target>Instància</target>
428 <context-group name="null"> 428 <context-group name="null">
429 <context context-type="linenumber">8</context> 429 <context context-type="linenumber">12</context>
430 </context-group> 430 </context-group>
431 </trans-unit> 431 </trans-unit>
432 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 432 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -748,14 +748,14 @@
748 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 748 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
749 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscriptors</target> 749 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscriptors</target>
750 <context-group name="null"> 750 <context-group name="null">
751 <context context-type="linenumber">12</context> 751 <context context-type="linenumber">24</context>
752 </context-group> 752 </context-group>
753 </trans-unit> 753 </trans-unit>
754 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 754 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
755 <source>Video channels</source> 755 <source>Video channels</source>
756 <target>Canals de vídeo</target> 756 <target>Canals de vídeo</target>
757 <context-group name="null"> 757 <context-group name="null">
758 <context context-type="linenumber">19</context> 758 <context context-type="linenumber">31</context>
759 </context-group> 759 </context-group>
760 </trans-unit> 760 </trans-unit>
761 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 761 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1104,14 +1104,14 @@
1104 <source>Score</source> 1104 <source>Score</source>
1105 <target>Puntuació</target> 1105 <target>Puntuació</target>
1106 <context-group name="null"> 1106 <context-group name="null">
1107 <context context-type="linenumber">8</context> 1107 <context context-type="linenumber">17</context>
1108 </context-group> 1108 </context-group>
1109 </trans-unit> 1109 </trans-unit>
1110 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1110 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1111 <source>Host</source> 1111 <source>Host</source>
1112 <target>Amfitrió</target> 1112 <target>Amfitrió</target>
1113 <context-group name="null"> 1113 <context-group name="null">
1114 <context context-type="linenumber">8</context> 1114 <context context-type="linenumber">19</context>
1115 </context-group> 1115 </context-group>
1116 </trans-unit> 1116 </trans-unit>
1117 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1117 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1202,7 +1202,7 @@
1202 <source>Role</source> 1202 <source>Role</source>
1203 <target>Rol</target> 1203 <target>Rol</target>
1204 <context-group name="null"> 1204 <context-group name="null">
1205 <context context-type="linenumber">20</context> 1205 <context context-type="linenumber">43</context>
1206 </context-group> 1206 </context-group>
1207 </trans-unit> 1207 </trans-unit>
1208 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1208 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1218,13 +1218,6 @@
1218 <context context-type="linenumber">65</context> 1218 <context context-type="linenumber">65</context>
1219 </context-group> 1219 </context-group>
1220 </trans-unit> 1220 </trans-unit>
1221 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1222 <source>Reason...</source>
1223 <target>Motiu...</target>
1224 <context-group name="null">
1225 <context context-type="linenumber">11</context>
1226 </context-group>
1227 </trans-unit>
1228 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1221 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1229 <source>Users list</source> 1222 <source>Users list</source>
1230 <target>Llista d'usuaris</target> 1223 <target>Llista d'usuaris</target>
@@ -1236,7 +1229,14 @@
1236 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1229 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1237 <target>Nom d'usuari <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1230 <target>Nom d'usuari <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1238 <context-group name="null"> 1231 <context-group name="null">
1239 <context context-type="linenumber">17</context> 1232 <context context-type="linenumber">40</context>
1233 </context-group>
1234 </trans-unit>
1235 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1236 <source>Go to the account page</source>
1237 <target>Anar a la pàgina del compte</target>
1238 <context-group name="null">
1239 <context context-type="linenumber">133</context>
1240 </context-group> 1240 </context-group>
1241 </trans-unit> 1241 </trans-unit>
1242 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2"> 1242 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2">
@@ -1417,14 +1417,14 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplirÃ
1417 <source>Automatically plays video</source> 1417 <source>Automatically plays video</source>
1418 <target>Reprodueix vídeo automàticament</target> 1418 <target>Reprodueix vídeo automàticament</target>
1419 <context-group name="null"> 1419 <context-group name="null">
1420 <context context-type="linenumber">20</context> 1420 <context context-type="linenumber">25</context>
1421 </context-group> 1421 </context-group>
1422 </trans-unit> 1422 </trans-unit>
1423 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 1423 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
1424 <source>Save</source> 1424 <source>Save</source>
1425 <target>Desa</target> 1425 <target>Desa</target>
1426 <context-group name="null"> 1426 <context-group name="null">
1427 <context context-type="linenumber">23</context> 1427 <context context-type="linenumber">28</context>
1428 </context-group> 1428 </context-group>
1429 </trans-unit> 1429 </trans-unit>
1430 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 1430 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -1754,13 +1754,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplirÃ
1754 <context context-type="linenumber">123</context> 1754 <context context-type="linenumber">123</context>
1755 </context-group> 1755 </context-group>
1756 </trans-unit> 1756 </trans-unit>
1757 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1758 <source>Go to the account page</source>
1759 <target>Anar a la pàgina del compte</target>
1760 <context-group name="null">
1761 <context context-type="linenumber">133</context>
1762 </context-group>
1763 </trans-unit>
1764 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 1757 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
1765 <source>Show more</source> 1758 <source>Show more</source>
1766 <target>Veure més</target> 1759 <target>Veure més</target>
@@ -1811,25 +1804,18 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplirÃ
1811 <context context-type="linenumber">3</context> 1804 <context context-type="linenumber">3</context>
1812 </context-group> 1805 </context-group>
1813 </trans-unit> 1806 </trans-unit>
1814 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
1815 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
1816 <target>Pots fer comentaris a la pàgina de la teva instància on aquest vídeo està federat amb el teu compte de PeerTube o mitjançant qualsevol instància del fedivers que sigui compatible amb ActivityPub. Per exemple, amb Mastodon o Pleroma, pots escriure en el quadre de cerca &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; i torna a trobar el vídeo. S''estan treballant en poder fer comentaris directes a &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
1817 <context-group name="null">
1818 <context context-type="linenumber">8</context>
1819 </context-group>
1820 </trans-unit>
1821 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 1807 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
1822 <source>No comments.</source> 1808 <source>No comments.</source>
1823 <target>Cap comentari.</target> 1809 <target>Cap comentari.</target>
1824 <context-group name="null"> 1810 <context-group name="null">
1825 <context context-type="linenumber">18</context> 1811 <context context-type="linenumber">17</context>
1826 </context-group> 1812 </context-group>
1827 </trans-unit> 1813 </trans-unit>
1828 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 1814 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
1829 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 1815 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
1830 <target>Veure totes les <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> respostes</target> 1816 <target>Veure totes les <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> respostes</target>
1831 <context-group name="null"> 1817 <context-group name="null">
1832 <context context-type="linenumber">55</context> 1818 <context context-type="linenumber">54</context>
1833 </context-group> 1819 </context-group>
1834 </trans-unit> 1820 </trans-unit>
1835 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 1821 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -1840,7 +1826,7 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplirÃ
1840 Els comentaris estan desactivats. 1826 Els comentaris estan desactivats.
1841 </target> 1827 </target>
1842 <context-group name="null"> 1828 <context-group name="null">
1843 <context context-type="linenumber">64</context> 1829 <context context-type="linenumber">63</context>
1844 </context-group> 1830 </context-group>
1845 </trans-unit> 1831 </trans-unit>
1846 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 1832 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -1910,41 +1896,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplirÃ
1910 <context context-type="linenumber">1</context> 1896 <context context-type="linenumber">1</context>
1911 </context-group> 1897 </context-group>
1912 </trans-unit> 1898 </trans-unit>
1913 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
1914 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
1915 <target>Estableix personalitzacions <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target>
1916 <context-group name="null">
1917 <context context-type="linenumber">1</context>
1918 </context-group>
1919 </trans-unit>
1920 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
1921 <source>This could lead to security issues or bugs if you do not understand it. </source>
1922 <target>Això podria provocar problemes de seguretat o errors si no ho entens.</target>
1923 <context-group name="null">
1924 <context context-type="linenumber">1</context>
1925 </context-group>
1926 </trans-unit>
1927 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
1928 <source>Are you sure you want to update the configuration?</source>
1929 <target>Estàs segur que vols actualitzar la configuració?</target>
1930 <context-group name="null">
1931 <context context-type="linenumber">1</context>
1932 </context-group>
1933 </trans-unit>
1934 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
1935 <source>Please type</source>
1936 <target>Si us plau escriu</target>
1937 <context-group name="null">
1938 <context context-type="linenumber">1</context>
1939 </context-group>
1940 </trans-unit>
1941 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
1942 <source>to confirm.</source>
1943 <target>per confirmar.</target>
1944 <context-group name="null">
1945 <context context-type="linenumber">1</context>
1946 </context-group>
1947 </trans-unit>
1948 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 1899 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
1949 <source>Success</source> 1900 <source>Success</source>
1950 <target>Èxit</target> 1901 <target>Èxit</target>
@@ -2064,13 +2015,6 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplirÃ
2064 <context context-type="linenumber">1</context> 2015 <context context-type="linenumber">1</context>
2065 </context-group> 2016 </context-group>
2066 </trans-unit> 2017 </trans-unit>
2067 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
2068 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
2069 <target>Usuari <x id="INTERPOLATION" equiv-text="{{username}}"/> eliminat.</target>
2070 <context-group name="null">
2071 <context context-type="linenumber">1</context>
2072 </context-group>
2073 </trans-unit>
2074 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc"> 2018 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc">
2075 <source>Password updated.</source> 2019 <source>Password updated.</source>
2076 <target>Contrasenya actualitzada.</target> 2020 <target>Contrasenya actualitzada.</target>
@@ -3109,6 +3053,13 @@ Quan pugis un vídeo en aquest canal, el camp d'assistència de vídeo s'omplirÃ
3109 <context context-type="linenumber">1</context> 3053 <context context-type="linenumber">1</context>
3110 </context-group> 3054 </context-group>
3111 </trans-unit> 3055 </trans-unit>
3056 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3057 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3058 <target>Usuari <x id="INTERPOLATION" equiv-text="{{username}}"/> eliminat.</target>
3059 <context-group name="null">
3060 <context context-type="linenumber">1</context>
3061 </context-group>
3062 </trans-unit>
3112 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 3063 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
3113 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 3064 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
3114 <target>La sol·licitud és massa gran per al servidor. Contacta amb el teu administrador si vols augmentar la mida del límit.</target> 3065 <target>La sol·licitud és massa gran per al servidor. Contacta amb el teu administrador si vols augmentar la mida del límit.</target>
diff --git a/client/src/locale/target/angular_cs_CZ.xml b/client/src/locale/target/angular_cs_CZ.xml
index deed0d6b1..81644aa52 100644
--- a/client/src/locale/target/angular_cs_CZ.xml
+++ b/client/src/locale/target/angular_cs_CZ.xml
@@ -140,7 +140,7 @@
140 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 140 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
141 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> zhlédnutí</target> 141 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> zhlédnutí</target>
142 <context-group name="null"> 142 <context-group name="null">
143 <context context-type="linenumber">13</context> 143 <context context-type="linenumber">16</context>
144 </context-group> 144 </context-group>
145 </trans-unit> 145 </trans-unit>
146 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 146 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -154,7 +154,7 @@
154 <source>Edit</source> 154 <source>Edit</source>
155 <target>Upravit</target> 155 <target>Upravit</target>
156 <context-group name="null"> 156 <context-group name="null">
157 <context context-type="linenumber">5</context> 157 <context context-type="linenumber">1</context>
158 </context-group> 158 </context-group>
159 </trans-unit> 159 </trans-unit>
160 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 160 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -182,7 +182,7 @@
182 <source>Video quota</source> 182 <source>Video quota</source>
183 <target>Limit na videa</target> 183 <target>Limit na videa</target>
184 <context-group name="null"> 184 <context-group name="null">
185 <context context-type="linenumber">19</context> 185 <context context-type="linenumber">42</context>
186 </context-group> 186 </context-group>
187 </trans-unit> 187 </trans-unit>
188 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 188 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -196,6 +196,13 @@
196 <context context-type="linenumber">14</context> 196 <context context-type="linenumber">14</context>
197 </context-group> 197 </context-group>
198 </trans-unit> 198 </trans-unit>
199 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
200 <source>Reason...</source>
201 <target>Důvod...</target>
202 <context-group name="null">
203 <context context-type="linenumber">11</context>
204 </context-group>
205 </trans-unit>
199 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 206 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
200 <source> 207 <source>
201 Login 208 Login
@@ -451,14 +458,14 @@
451 <source>No results.</source> 458 <source>No results.</source>
452 <target>Žádné výsledky.</target> 459 <target>Žádné výsledky.</target>
453 <context-group name="null"> 460 <context-group name="null">
454 <context context-type="linenumber">7</context> 461 <context context-type="linenumber">17</context>
455 </context-group> 462 </context-group>
456 </trans-unit> 463 </trans-unit>
457 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b"> 464 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b">
458 <source>Instance</source> 465 <source>Instance</source>
459 <target>Instance</target> 466 <target>Instance</target>
460 <context-group name="null"> 467 <context-group name="null">
461 <context context-type="linenumber">8</context> 468 <context context-type="linenumber">12</context>
462 </context-group> 469 </context-group>
463 </trans-unit> 470 </trans-unit>
464 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 471 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -774,14 +781,14 @@
774 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 781 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
775 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> odběratelů</target> 782 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> odběratelů</target>
776 <context-group name="null"> 783 <context-group name="null">
777 <context context-type="linenumber">12</context> 784 <context context-type="linenumber">24</context>
778 </context-group> 785 </context-group>
779 </trans-unit> 786 </trans-unit>
780 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 787 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
781 <source>Video channels</source> 788 <source>Video channels</source>
782 <target>Video kanály</target> 789 <target>Video kanály</target>
783 <context-group name="null"> 790 <context-group name="null">
784 <context context-type="linenumber">19</context> 791 <context context-type="linenumber">31</context>
785 </context-group> 792 </context-group>
786 </trans-unit> 793 </trans-unit>
787 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 794 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1130,14 +1137,14 @@
1130 <source>Score</source> 1137 <source>Score</source>
1131 <target>Skóre</target> 1138 <target>Skóre</target>
1132 <context-group name="null"> 1139 <context-group name="null">
1133 <context context-type="linenumber">8</context> 1140 <context context-type="linenumber">17</context>
1134 </context-group> 1141 </context-group>
1135 </trans-unit> 1142 </trans-unit>
1136 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1143 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1137 <source>Host</source> 1144 <source>Host</source>
1138 <target>Host</target> 1145 <target>Host</target>
1139 <context-group name="null"> 1146 <context-group name="null">
1140 <context context-type="linenumber">8</context> 1147 <context context-type="linenumber">19</context>
1141 </context-group> 1148 </context-group>
1142 </trans-unit> 1149 </trans-unit>
1143 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1150 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1228,7 +1235,7 @@
1228 <source>Role</source> 1235 <source>Role</source>
1229 <target>Role</target> 1236 <target>Role</target>
1230 <context-group name="null"> 1237 <context-group name="null">
1231 <context context-type="linenumber">20</context> 1238 <context context-type="linenumber">43</context>
1232 </context-group> 1239 </context-group>
1233 </trans-unit> 1240 </trans-unit>
1234 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1241 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1244,13 +1251,6 @@
1244 <context context-type="linenumber">65</context> 1251 <context context-type="linenumber">65</context>
1245 </context-group> 1252 </context-group>
1246 </trans-unit> 1253 </trans-unit>
1247 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1248 <source>Reason...</source>
1249 <target>Důvod...</target>
1250 <context-group name="null">
1251 <context context-type="linenumber">11</context>
1252 </context-group>
1253 </trans-unit>
1254 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1254 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1255 <source>Users list</source> 1255 <source>Users list</source>
1256 <target>Seznam uživatelů</target> 1256 <target>Seznam uživatelů</target>
@@ -1262,7 +1262,14 @@
1262 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1262 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1263 <target>Uživatelské jméno <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1263 <target>Uživatelské jméno <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1264 <context-group name="null"> 1264 <context-group name="null">
1265 <context context-type="linenumber">17</context> 1265 <context context-type="linenumber">40</context>
1266 </context-group>
1267 </trans-unit>
1268 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1269 <source>Go to the account page</source>
1270 <target>Přejít na stránku kanálu</target>
1271 <context-group name="null">
1272 <context context-type="linenumber">133</context>
1266 </context-group> 1273 </context-group>
1267 </trans-unit> 1274 </trans-unit>
1268 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2"> 1275 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2">
@@ -1443,14 +1450,14 @@ When you will upload a video in this channel, the video support field will be au
1443 <source>Automatically plays video</source> 1450 <source>Automatically plays video</source>
1444 <target>Automaticky přehrávat videa</target> 1451 <target>Automaticky přehrávat videa</target>
1445 <context-group name="null"> 1452 <context-group name="null">
1446 <context context-type="linenumber">20</context> 1453 <context context-type="linenumber">25</context>
1447 </context-group> 1454 </context-group>
1448 </trans-unit> 1455 </trans-unit>
1449 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 1456 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
1450 <source>Save</source> 1457 <source>Save</source>
1451 <target>Uložit</target> 1458 <target>Uložit</target>
1452 <context-group name="null"> 1459 <context-group name="null">
1453 <context context-type="linenumber">23</context> 1460 <context context-type="linenumber">28</context>
1454 </context-group> 1461 </context-group>
1455 </trans-unit> 1462 </trans-unit>
1456 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 1463 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -1780,13 +1787,6 @@ When you will upload a video in this channel, the video support field will be au
1780 <context context-type="linenumber">123</context> 1787 <context context-type="linenumber">123</context>
1781 </context-group> 1788 </context-group>
1782 </trans-unit> 1789 </trans-unit>
1783 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1784 <source>Go to the account page</source>
1785 <target>Přejít na stránku kanálu</target>
1786 <context-group name="null">
1787 <context context-type="linenumber">133</context>
1788 </context-group>
1789 </trans-unit>
1790 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 1790 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
1791 <source>Show more</source> 1791 <source>Show more</source>
1792 <target>Zobrazit více</target> 1792 <target>Zobrazit více</target>
@@ -1837,25 +1837,18 @@ When you will upload a video in this channel, the video support field will be au
1837 <context context-type="linenumber">3</context> 1837 <context context-type="linenumber">3</context>
1838 </context-group> 1838 </context-group>
1839 </trans-unit> 1839 </trans-unit>
1840 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
1841 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
1842 <target>Můžete komentovat video na stránkách instance, kde je vaÅ¡e video federováno s PeerTube úÄtem nebo pomocí kterékoliv instance obsahující ActivityPub federaci. V instancích s Mastodon nebo Pleroma napiÅ¡te do vyhledávacího pole &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; a najdÄ›te video. Na přímém komentování se pracuje: &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
1843 <context-group name="null">
1844 <context context-type="linenumber">8</context>
1845 </context-group>
1846 </trans-unit>
1847 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 1840 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
1848 <source>No comments.</source> 1841 <source>No comments.</source>
1849 <target>Žádné komentáře</target> 1842 <target>Žádné komentáře</target>
1850 <context-group name="null"> 1843 <context-group name="null">
1851 <context context-type="linenumber">18</context> 1844 <context context-type="linenumber">17</context>
1852 </context-group> 1845 </context-group>
1853 </trans-unit> 1846 </trans-unit>
1854 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 1847 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
1855 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 1848 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
1856 <target>Zobrazit všech <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> odpovědí</target> 1849 <target>Zobrazit všech <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> odpovědí</target>
1857 <context-group name="null"> 1850 <context-group name="null">
1858 <context context-type="linenumber">55</context> 1851 <context context-type="linenumber">54</context>
1859 </context-group> 1852 </context-group>
1860 </trans-unit> 1853 </trans-unit>
1861 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 1854 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -1866,7 +1859,7 @@ When you will upload a video in this channel, the video support field will be au
1866 Komentáře k tomuto video nejsou povoleny. 1859 Komentáře k tomuto video nejsou povoleny.
1867 </target> 1860 </target>
1868 <context-group name="null"> 1861 <context-group name="null">
1869 <context context-type="linenumber">64</context> 1862 <context context-type="linenumber">63</context>
1870 </context-group> 1863 </context-group>
1871 </trans-unit> 1864 </trans-unit>
1872 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 1865 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -1936,41 +1929,6 @@ When you will upload a video in this channel, the video support field will be au
1936 <context context-type="linenumber">1</context> 1929 <context context-type="linenumber">1</context>
1937 </context-group> 1930 </context-group>
1938 </trans-unit> 1931 </trans-unit>
1939 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
1940 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
1941 <target>Nastaveno vlastní <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target>
1942 <context-group name="null">
1943 <context context-type="linenumber">1</context>
1944 </context-group>
1945 </trans-unit>
1946 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
1947 <source>This could lead to security issues or bugs if you do not understand it. </source>
1948 <target>Tato akce může vést k bezpeÄnostním problémům nebo chybám, pokud jí nerozumíte.</target>
1949 <context-group name="null">
1950 <context context-type="linenumber">1</context>
1951 </context-group>
1952 </trans-unit>
1953 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
1954 <source>Are you sure you want to update the configuration?</source>
1955 <target>Opravdu chcete aktualizovat nastavení?</target>
1956 <context-group name="null">
1957 <context context-type="linenumber">1</context>
1958 </context-group>
1959 </trans-unit>
1960 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
1961 <source>Please type</source>
1962 <target>Prosím napište</target>
1963 <context-group name="null">
1964 <context context-type="linenumber">1</context>
1965 </context-group>
1966 </trans-unit>
1967 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
1968 <source>to confirm.</source>
1969 <target>pro potvrzení.</target>
1970 <context-group name="null">
1971 <context context-type="linenumber">1</context>
1972 </context-group>
1973 </trans-unit>
1974 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 1932 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
1975 <source>Success</source> 1933 <source>Success</source>
1976 <target>Úspěšně</target> 1934 <target>Úspěšně</target>
@@ -2090,13 +2048,6 @@ When you will upload a video in this channel, the video support field will be au
2090 <context context-type="linenumber">1</context> 2048 <context context-type="linenumber">1</context>
2091 </context-group> 2049 </context-group>
2092 </trans-unit> 2050 </trans-unit>
2093 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
2094 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
2095 <target>Uživatel <x id="INTERPOLATION" equiv-text="{{username}}"/> odstraněn.</target>
2096 <context-group name="null">
2097 <context context-type="linenumber">1</context>
2098 </context-group>
2099 </trans-unit>
2100 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc"> 2051 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc">
2101 <source>Password updated.</source> 2052 <source>Password updated.</source>
2102 <target>Heslo aktualizováno.</target> 2053 <target>Heslo aktualizováno.</target>
@@ -3135,6 +3086,13 @@ When you will upload a video in this channel, the video support field will be au
3135 <context context-type="linenumber">1</context> 3086 <context context-type="linenumber">1</context>
3136 </context-group> 3087 </context-group>
3137 </trans-unit> 3088 </trans-unit>
3089 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3090 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3091 <target>Uživatel <x id="INTERPOLATION" equiv-text="{{username}}"/> odstraněn.</target>
3092 <context-group name="null">
3093 <context context-type="linenumber">1</context>
3094 </context-group>
3095 </trans-unit>
3138 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 3096 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
3139 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 3097 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
3140 <target>Požadavek je příliš velký. Prosím, kontaktujte administrátor pro navýšení limitu.</target> 3098 <target>Požadavek je příliš velký. Prosím, kontaktujte administrátor pro navýšení limitu.</target>
diff --git a/client/src/locale/target/angular_de_DE.xml b/client/src/locale/target/angular_de_DE.xml
index 12f0dda27..6f5f436e8 100644
--- a/client/src/locale/target/angular_de_DE.xml
+++ b/client/src/locale/target/angular_de_DE.xml
@@ -231,7 +231,7 @@
231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> Aufrufe</target> 232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> Aufrufe</target>
233 <context-group name="null"> 233 <context-group name="null">
234 <context context-type="linenumber">13</context> 234 <context context-type="linenumber">16</context>
235 </context-group> 235 </context-group>
236 </trans-unit> 236 </trans-unit>
237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -245,7 +245,7 @@
245 <source>Edit</source> 245 <source>Edit</source>
246 <target>Bearbeiten</target> 246 <target>Bearbeiten</target>
247 <context-group name="null"> 247 <context-group name="null">
248 <context context-type="linenumber">5</context> 248 <context context-type="linenumber">1</context>
249 </context-group> 249 </context-group>
250 </trans-unit> 250 </trans-unit>
251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -269,11 +269,112 @@
269 <context context-type="linenumber">19</context> 269 <context context-type="linenumber">19</context>
270 </context-group> 270 </context-group>
271 </trans-unit> 271 </trans-unit>
272 <trans-unit id="450025269732888db1f04cfe6033843110ab65ee">
273 <source>
274 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
275 Subscribe
276 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
277 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
278 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
279 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
280 </source>
281 <target>
282 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
283 Abonnieren
284 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
285 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
286 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
287 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
288 </target>
289 <context-group name="null">
290 <context context-type="linenumber">5</context>
291 </context-group>
292 </trans-unit>
293 <trans-unit id="c374edf3b9228d3df6d761bdc8a289e7df0096e8">
294 <source>
295 Unsubscribe
296 </source>
297 <target>
298 Abo beenden
299 </target>
300 <context-group name="null">
301 <context context-type="linenumber">18</context>
302 </context-group>
303 </trans-unit>
304 <trans-unit id="9b3287f52c239cad05ec98391553e5052ba1aa66">
305 <source>Using an ActivityPub account</source>
306 <target>Mit einem ActivityPub-Konto</target>
307 <context-group name="null">
308 <context context-type="linenumber">36</context>
309 </context-group>
310 </trans-unit>
311 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3">
312 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source>
313 <target>Mit einem Konto auf <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/> abonnieren</target>
314 <context-group name="null">
315 <context context-type="linenumber">39</context>
316 </context-group>
317 </trans-unit>
318 <trans-unit id="e7adf422424a61b71465d183f9d44bf956482ef0">
319 <source>Subscribe with your local account</source>
320 <target>Mit deinem lokalen Konto abonnieren</target>
321 <context-group name="null">
322 <context context-type="linenumber">40</context>
323 </context-group>
324 </trans-unit>
325 <trans-unit id="5047522cc670b1f4a288bce07f9b1c5061e913ed">
326 <source>Subscribe with a Mastodon account:</source>
327 <target>Mit einem Mastodon-Konto abonnieren.</target>
328 <context-group name="null">
329 <context context-type="linenumber">43</context>
330 </context-group>
331 </trans-unit>
332 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1">
333 <source>Using a syndication feed</source>
334 <target>Mit einem Feed</target>
335 <context-group name="null">
336 <context context-type="linenumber">48</context>
337 </context-group>
338 </trans-unit>
339 <trans-unit id="d5e5bc7d213694fc0414a76f0ff3085bae44268a">
340 <source>Subscribe via RSS</source>
341 <target>Ãœber RSS abonnieren</target>
342 <context-group name="null">
343 <context context-type="linenumber">49</context>
344 </context-group>
345 </trans-unit>
346 <trans-unit id="4913054c95f5ba14c351ab1b787f7abac97bfdd3">
347 <source>
348 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>Remote subscribe<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
349 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>Remote interact<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
350 </source>
351 <target>
352 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>Entfernt abonnieren<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
353 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>Entfernt interagieren<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
354 </target>
355 <context-group name="null">
356 <context context-type="linenumber">10</context>
357 </context-group>
358 </trans-unit>
359 <trans-unit id="319933e1af77ca2e35b75a5e9270a3c90e83dd4b">
360 <source>You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there.</source>
361 <target>Du kannst diesen Kanal über jede Fediverse-Instanz abonnieren, die ActivityPub unterstützt. Bei Mastodon oder Pleroma kannst du z. B. die URL des Kanals in das Suchfeld eingeben und dann das Abo starten.</target>
362 <context-group name="null">
363 <context context-type="linenumber">17</context>
364 </context-group>
365 </trans-unit>
366 <trans-unit id="2767d5461b6c622ccdeb868df8becf26bc16b99a">
367 <source>You can interact with this via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the current URL in the search box and interact with it there.</source>
368 <target>Du kannst hiermit über jede Fediverse-Instanz interagieren, die ActivityPub unterstützt. Bei Mastodon oder Pleroma kannst du z. B. die URL des Kanals in das Suchfeld eingeben und dann damit interagieren.</target>
369 <context-group name="null">
370 <context context-type="linenumber">22</context>
371 </context-group>
372 </trans-unit>
272 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b"> 373 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b">
273 <source>Video quota</source> 374 <source>Video quota</source>
274 <target>Videokontingent</target> 375 <target>Videokontingent</target>
275 <context-group name="null"> 376 <context-group name="null">
276 <context context-type="linenumber">19</context> 377 <context context-type="linenumber">42</context>
277 </context-group> 378 </context-group>
278 </trans-unit> 379 </trans-unit>
279 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 380 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -287,6 +388,38 @@
287 <context context-type="linenumber">14</context> 388 <context context-type="linenumber">14</context>
288 </context-group> 389 </context-group>
289 </trans-unit> 390 </trans-unit>
391 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
392 <source>Ban</source>
393 <target>Sperren</target>
394 <context-group name="null">
395 <context context-type="linenumber">3</context>
396 </context-group>
397 </trans-unit>
398 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
399 <source>Reason...</source>
400 <target>Grund...</target>
401 <context-group name="null">
402 <context context-type="linenumber">11</context>
403 </context-group>
404 </trans-unit>
405 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
406 <source>
407 A banned user will no longer be able to login.
408 </source>
409 <target>
410 Ein gesperrter Nutzer wird sich nicht mehr anmelden können.
411 </target>
412 <context-group name="null">
413 <context context-type="linenumber">17</context>
414 </context-group>
415 </trans-unit>
416 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
417 <source>Ban this user</source>
418 <target>Diesen Nutzer sperren.</target>
419 <context-group name="null">
420 <context context-type="linenumber">25</context>
421 </context-group>
422 </trans-unit>
290 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 423 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
291 <source> 424 <source>
292 Login 425 Login
@@ -314,7 +447,7 @@
314 </trans-unit> 447 </trans-unit>
315 <trans-unit id="51ef29329faccb28d94369897068897d1b3d0478"> 448 <trans-unit id="51ef29329faccb28d94369897068897d1b3d0478">
316 <source>Username or email address</source> 449 <source>Username or email address</source>
317 <target>Benutzername und E-Mail-Adresse</target> 450 <target>Benutzername oder E-Mail-Adresse</target>
318 <context-group name="null"> 451 <context-group name="null">
319 <context context-type="linenumber">15</context> 452 <context context-type="linenumber">15</context>
320 </context-group> 453 </context-group>
@@ -492,13 +625,6 @@ Konto erstellen</target>
492 <context context-type="linenumber">6</context> 625 <context context-type="linenumber">6</context>
493 </context-group> 626 </context-group>
494 </trans-unit> 627 </trans-unit>
495 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
496 <source>Filters</source>
497 <target>Filter</target>
498 <context-group name="null">
499 <context context-type="linenumber">16</context>
500 </context-group>
501 </trans-unit>
502 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 628 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
503 <source> 629 <source>
504 No results found 630 No results found
@@ -507,21 +633,21 @@ Konto erstellen</target>
507 Keine Ergebnisse gefunden. 633 Keine Ergebnisse gefunden.
508 </target> 634 </target>
509 <context-group name="null"> 635 <context-group name="null">
510 <context context-type="linenumber">25</context> 636 <context context-type="linenumber">28</context>
511 </context-group> 637 </context-group>
512 </trans-unit> 638 </trans-unit>
513 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 639 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
514 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 640 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
515 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> Abonnenten</target> 641 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> Abonnenten</target>
516 <context-group name="null"> 642 <context-group name="null">
517 <context context-type="linenumber">41</context> 643 <context context-type="linenumber">44</context>
518 </context-group> 644 </context-group>
519 </trans-unit> 645 </trans-unit>
520 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 646 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
521 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 647 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
522 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> Aufrufe</target> 648 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> Aufrufe</target>
523 <context-group name="null"> 649 <context-group name="null">
524 <context context-type="linenumber">52</context> 650 <context context-type="linenumber">55</context>
525 </context-group> 651 </context-group>
526 </trans-unit> 652 </trans-unit>
527 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 653 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -645,6 +771,13 @@ Konto erstellen</target>
645 <context context-type="linenumber">25</context> 771 <context context-type="linenumber">25</context>
646 </context-group> 772 </context-group>
647 </trans-unit> 773 </trans-unit>
774 <trans-unit id="4752e5e33da1c3396d3248eb8fef59bca5d00cb3">
775 <source>Show keyboard shortcuts</source>
776 <target>Zeige Tastatur-Kürzel</target>
777 <context-group name="null">
778 <context context-type="linenumber">91</context>
779 </context-group>
780 </trans-unit>
648 <trans-unit id="cf75021ac8cb9efd4f95e8880cf52c9acd265768"> 781 <trans-unit id="cf75021ac8cb9efd4f95e8880cf52c9acd265768">
649 <source>Toggle dark interface</source> 782 <source>Toggle dark interface</source>
650 <target>Dunkle Oberfläche umschalten</target> 783 <target>Dunkle Oberfläche umschalten</target>
@@ -689,7 +822,7 @@ Konto erstellen</target>
689 </trans-unit> 822 </trans-unit>
690 <trans-unit id="dc67060f94f0f2b58549f54a5c07925dffd20238"> 823 <trans-unit id="dc67060f94f0f2b58549f54a5c07925dffd20238">
691 <source>Display sensitive content</source> 824 <source>Display sensitive content</source>
692 <target>Anstößige Inhalte anzeigen</target> 825 <target>Anstößige Inhalte zeigen</target>
693 <context-group name="null"> 826 <context-group name="null">
694 <context context-type="linenumber">33</context> 827 <context context-type="linenumber">33</context>
695 </context-group> 828 </context-group>
@@ -754,7 +887,7 @@ Konto erstellen</target>
754 <source>No results.</source> 887 <source>No results.</source>
755 <target>Keine Ergebnisse.</target> 888 <target>Keine Ergebnisse.</target>
756 <context-group name="null"> 889 <context-group name="null">
757 <context context-type="linenumber">7</context> 890 <context context-type="linenumber">17</context>
758 </context-group> 891 </context-group>
759 </trans-unit> 892 </trans-unit>
760 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 893 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -768,6 +901,17 @@ Konto erstellen</target>
768 <context context-type="linenumber">6</context> 901 <context context-type="linenumber">6</context>
769 </context-group> 902 </context-group>
770 </trans-unit> 903 </trans-unit>
904 <trans-unit id="48a5d0af93b94c4575b7f76a47fb3cdee58e6919">
905 <source>
906 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
907 </source>
908 <target>
909 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
910 </target>
911 <context-group name="null">
912 <context context-type="linenumber">14</context>
913 </context-group>
914 </trans-unit>
771 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b"> 915 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b">
772 <source> 916 <source>
773 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/> 917 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>
@@ -791,7 +935,7 @@ Konto erstellen</target>
791 <source>Instance</source> 935 <source>Instance</source>
792 <target>Instanz</target> 936 <target>Instanz</target>
793 <context-group name="null"> 937 <context-group name="null">
794 <context context-type="linenumber">8</context> 938 <context context-type="linenumber">12</context>
795 </context-group> 939 </context-group>
796 </trans-unit> 940 </trans-unit>
797 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 941 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -838,7 +982,7 @@ Konto erstellen</target>
838 this instance provides a baseline quota of <x id="INTERPOLATION" equiv-text="{{ userVideoQuota | bytes: 0 }}"/> space for the videos of its users. 982 this instance provides a baseline quota of <x id="INTERPOLATION" equiv-text="{{ userVideoQuota | bytes: 0 }}"/> space for the videos of its users.
839 </source> 983 </source>
840 <target> 984 <target>
841 diese Instanz stellt für die Videos ihrer Nutzer einen Speicherplatz von <x id="INTERPOLATION" equiv-text="{{ userVideoQuota | bytes: 0 }}"/> zur Verfügung. 985 für die Videos ihrer Nutzer stellt diese Instanz einen Speicherplatz von <x id="INTERPOLATION" equiv-text="{{ userVideoQuota | bytes: 0 }}"/> zur Verfügung.
842 </target> 986 </target>
843 <context-group name="null"> 987 <context-group name="null">
844 <context context-type="linenumber">27</context> 988 <context context-type="linenumber">27</context>
@@ -849,7 +993,7 @@ Konto erstellen</target>
849 this instance provides unlimited space for the videos of its users. 993 this instance provides unlimited space for the videos of its users.
850 </source> 994 </source>
851 <target> 995 <target>
852 diese Instanz stellt unbegrenzten Speicherplatz für die Videos ihrer Nutzer zur Verfügung. 996 für die Videos ihrer Nutzer stellt diese Instanz unbegrenzten Speicherplatz zur Verfügung.
853 </target> 997 </target>
854 <context-group name="null"> 998 <context-group name="null">
855 <context context-type="linenumber">31</context> 999 <context context-type="linenumber">31</context>
@@ -879,7 +1023,7 @@ Konto erstellen</target>
879 </trans-unit> 1023 </trans-unit>
880 <trans-unit id="bd29138e1e17572596ce8f2fe61bcea6ac5fb0bf"> 1024 <trans-unit id="bd29138e1e17572596ce8f2fe61bcea6ac5fb0bf">
881 <source>PeerTube is a federated (ActivityPub) video streaming platform using P2P (WebTorrent) directly in the web browser.</source> 1025 <source>PeerTube is a federated (ActivityPub) video streaming platform using P2P (WebTorrent) directly in the web browser.</source>
882 <target>PeerTube ist eine föderierte Videostreamingplattform basierend auf dem ActivityPub-Protokoll, die P2P direkt im Browser verwendet (WebTorrent).</target> 1026 <target>PeerTube ist eine föderierte Videostreamingplattform basierend auf dem ActivityPub-Protokoll, die mit WebTorrent P2P-Technologie direkt im Browser verwendet.</target>
883 <context-group name="null"> 1027 <context-group name="null">
884 <context context-type="linenumber">6</context> 1028 <context context-type="linenumber">6</context>
885 </context-group> 1029 </context-group>
@@ -889,7 +1033,7 @@ Konto erstellen</target>
889 It is a free and open-source software, under the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>AGPLv3 licence<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. 1033 It is a free and open-source software, under the <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>AGPLv3 licence<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>.
890 </source> 1034 </source>
891 <target> 1035 <target>
892 Es ist freie Open-Source-Software, die unter der <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>AGPLv3-Lizenz<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> steht. 1036 Es handelt sich um freie Open-Source-Software, die unter der <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>AGPLv3-Lizenz<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> steht.
893 </target> 1037 </target>
894 <context-group name="null"> 1038 <context-group name="null">
895 <context context-type="linenumber">8</context> 1039 <context context-type="linenumber">8</context>
@@ -900,7 +1044,7 @@ Konto erstellen</target>
900 For more information, please visit <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>joinpeertube.org<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. 1044 For more information, please visit <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>joinpeertube.org<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>.
901 </source> 1045 </source>
902 <target> 1046 <target>
903 Besuche für weitere Informationen <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>joinpeertube.org<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>. 1047 Für weitere Informationen besuche <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>joinpeertube.org<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>.
904 </target> 1048 </target>
905 <context-group name="null"> 1049 <context-group name="null">
906 <context context-type="linenumber">12</context> 1050 <context context-type="linenumber">12</context>
@@ -919,7 +1063,7 @@ Konto erstellen</target>
919 This implies that your IP address is stored in the instance's BitTorrent tracker as long as you download or watch the video. 1063 This implies that your IP address is stored in the instance's BitTorrent tracker as long as you download or watch the video.
920 </source> 1064 </source>
921 <target> 1065 <target>
922 PeerTube verwendet das BitTorrent-Protokoll, um Bandbreite zwischen den Usern aufzuteilen. 1066 PeerTube verwendet das BitTorrent-Protokoll, um Bandbreite zwischen den Nutzern aufzuteilen.
923 Das setzt voraus, dass deine IP-Adresse auf dem BitTorrent-Tracker zwischengespeichert wird, solange du dir ein Video ansiehst oder herunterlädst. 1067 Das setzt voraus, dass deine IP-Adresse auf dem BitTorrent-Tracker zwischengespeichert wird, solange du dir ein Video ansiehst oder herunterlädst.
924 </target> 1068 </target>
925 <context-group name="null"> 1069 <context-group name="null">
@@ -939,7 +1083,7 @@ Konto erstellen</target>
939 In practice, this is much more difficult because: 1083 In practice, this is much more difficult because:
940 </source> 1084 </source>
941 <target> 1085 <target>
942 Theoretisch könnte jemand mit genug technischer Erfahrung herausfinden, welche IP-Adresse welches Video herunterlädt. 1086 Theoretisch könnte jemand mit genug technischer Erfahrung herausfinden, mit welcher IP-Adresse welches Video heruntergeladen wird.
943 In der Praxis ist das jedoch sehr schwierig, denn: 1087 In der Praxis ist das jedoch sehr schwierig, denn:
944 </target> 1088 </target>
945 <context-group name="null"> 1089 <context-group name="null">
@@ -953,7 +1097,7 @@ Konto erstellen</target>
953 </source> 1097 </source>
954 <target> 1098 <target>
955 Der Angreifer müsste für jedes Video eine separate HTTP-Anfrage senden. 1099 Der Angreifer müsste für jedes Video eine separate HTTP-Anfrage senden.
956 Möchte er alle Videos von PeerTube verfolgen, so müsste er genausoviele Anfragen senden, wie es Videos gibt. (also eine ganze Menge!) 1100 Möchte er alle Videos von PeerTube verfolgen, so müsste er genau so viele Anfragen senden, wie es Videos gibt – also möglicherweise eine ganze Menge.
957 </target> 1101 </target>
958 <context-group name="null"> 1102 <context-group name="null">
959 <context context-type="linenumber">33</context> 1103 <context context-type="linenumber">33</context>
@@ -966,7 +1110,7 @@ Konto erstellen</target>
966 </source> 1110 </source>
967 <target> 1111 <target>
968 Für jede gesendete Anfrage gibt der Tracker eine begrenzte Anzahl zufälliger Peers zurück. 1112 Für jede gesendete Anfrage gibt der Tracker eine begrenzte Anzahl zufälliger Peers zurück.
969 Wenn sich z. B. 1000 Peers im Schwarm befinden und der Tracker immer nur 20 Peer pro Anfrage versendet, müssten mindestens 50 Anfragen gesendet werden, um jeden Peer im Schwarm zu kennen. 1113 Wenn sich z. B. 1000 Peers im Schwarm befinden und der Tracker immer nur 20 Peers pro Anfrage versendet, müssten mindestens 50 Anfragen gesendet werden, um jeden Peer im Schwarm zu kennen.
970 </target> 1114 </target>
971 <context-group name="null"> 1115 <context-group name="null">
972 <context context-type="linenumber">38</context> 1116 <context context-type="linenumber">38</context>
@@ -977,7 +1121,7 @@ Konto erstellen</target>
977 Those requests have to be sent regularly to know who starts/stops watching a video. It is easy to detect that kind of behaviour 1121 Those requests have to be sent regularly to know who starts/stops watching a video. It is easy to detect that kind of behaviour
978 </source> 1122 </source>
979 <target> 1123 <target>
980 Diese Anfragen müssen regelmäßig versandt werden, damit bekannt ist, wer anfängt oder aufhört, sich ein Video anzusehen. Es ist leicht, diese Art von Verhalten zu entdecken 1124 Diese Anfragen müssten regelmäßig versendet werden, um es mitzubekommen, wenn jemand anfängt oder aufhört, sich ein Video anzusehen. Es ist leicht, derartiges Verhalten zu entdecken.
981 </target> 1125 </target>
982 <context-group name="null"> 1126 <context-group name="null">
983 <context context-type="linenumber">43</context> 1127 <context context-type="linenumber">43</context>
@@ -988,7 +1132,7 @@ Konto erstellen</target>
988 If an IP address is stored in the tracker, it doesn't mean that the person behind the IP (if this person exists) has watched the video 1132 If an IP address is stored in the tracker, it doesn't mean that the person behind the IP (if this person exists) has watched the video
989 </source> 1133 </source>
990 <target> 1134 <target>
991 Wenn eine IP im Tracker gespeichert wird, heißt das nicht unbedingt, dass die zugehörige Person das Video auch tatsächlich angesehen hat. 1135 Wenn eine IP-Adresse im Tracker gespeichert wird, heißt das nicht unbedingt, dass die zugehörige Person das Video auch tatsächlich angesehen hat.
992 </target> 1136 </target>
993 <context-group name="null"> 1137 <context-group name="null">
994 <context context-type="linenumber">47</context> 1138 <context context-type="linenumber">47</context>
@@ -1014,7 +1158,7 @@ Konto erstellen</target>
1014 <target> 1158 <target>
1015 Web-Peers sind nicht öffentlich einsehbar: Weil wir WebRTC im Browser benutzen (<x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>mit der WebTorrent-Bibliothek<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>), ist das Protokoll verschieden vom klassischen BitTorrent. 1159 Web-Peers sind nicht öffentlich einsehbar: Weil wir WebRTC im Browser benutzen (<x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>mit der WebTorrent-Bibliothek<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>), ist das Protokoll verschieden vom klassischen BitTorrent.
1016 Wenn du deinen Browser benutzt, sendest du ein Signal mit deiner IP-Adresse zum Tracker, der zufällig andere Peers aussucht, an die das Signal weitergeleitet wird. 1160 Wenn du deinen Browser benutzt, sendest du ein Signal mit deiner IP-Adresse zum Tracker, der zufällig andere Peers aussucht, an die das Signal weitergeleitet wird.
1017 Siehe <x id="START_LINK_1" ctype="x-a" equiv-text="&lt;a&gt;"/>dieses Dokument<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> für weitere Informationen 1161 Siehe <x id="START_LINK_1" ctype="x-a" equiv-text="&lt;a&gt;"/>dieses Dokument<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> für weitere Informationen.
1018 </target> 1162 </target>
1019 <context-group name="null"> 1163 <context-group name="null">
1020 <context context-type="linenumber">55</context> 1164 <context context-type="linenumber">55</context>
@@ -1026,8 +1170,8 @@ Konto erstellen</target>
1026 There are much more effective ways to get that kind of information. 1170 There are much more effective ways to get that kind of information.
1027 </source> 1171 </source>
1028 <target> 1172 <target>
1029 Das Schlimmstfall-Szenario einer durchschnittlichen Person, die ihre Freunde ausspäht ist relativ unwahrscheinlich. 1173 Das Worst-Case-Szenario eines gewöhnlichen Nutzers, der so seine Freunde ausspäht, ist relativ unwahrscheinlich.
1030 Es gibt viel effektivere Möglichkeiten, um an diese Art von Informationen zu gelangen. 1174 Es gibt viel bessere Möglichkeiten, um an diese Informationen zu gelangen.
1031 </target> 1175 </target>
1032 <context-group name="null"> 1176 <context-group name="null">
1033 <context context-type="linenumber">62</context> 1177 <context context-type="linenumber">62</context>
@@ -1079,7 +1223,7 @@ Konto erstellen</target>
1079 </trans-unit> 1223 </trans-unit>
1080 <trans-unit id="8ce78dd287b9a9dde5079916425ea66466530e41"> 1224 <trans-unit id="8ce78dd287b9a9dde5079916425ea66466530e41">
1081 <source>What will be done to mitigate this problem?</source> 1225 <source>What will be done to mitigate this problem?</source>
1082 <target>Was wird getan, um das Problem zu beheben?</target> 1226 <target>Was wird getan, um dieses Problem zu beheben?</target>
1083 <context-group name="null"> 1227 <context-group name="null">
1084 <context context-type="linenumber">83</context> 1228 <context context-type="linenumber">83</context>
1085 </context-group> 1229 </context-group>
@@ -1090,8 +1234,8 @@ Konto erstellen</target>
1090 In the meantime, we want to test different ideas related to this issue: 1234 In the meantime, we want to test different ideas related to this issue:
1091 </source> 1235 </source>
1092 <target> 1236 <target>
1093 PeerTube befindet sich noch in der Beta-Phase und möchte die besten Gegenmaßnahmen bereitstellen, wenn die Software als stabil angesehen wird. 1237 PeerTube befindet sich noch in der Beta-Phase und möchte in der stabilen Version die besten Gegenmaßnahmen bereitstellen.
1094 In der Zwischenzeit wollen wir verschiedene Ideen in diesem Zusammenhang ausprobieren: 1238 Bis dahin wollen wir verschiedene Ideen in diesem Zusammenhang ausprobieren:
1095 </target> 1239 </target>
1096 <context-group name="null"> 1240 <context-group name="null">
1097 <context context-type="linenumber">85</context> 1241 <context context-type="linenumber">85</context>
@@ -1113,7 +1257,7 @@ Konto erstellen</target>
1113 </trans-unit> 1257 </trans-unit>
1114 <trans-unit id="ba77e356eaa5c06caaf5c8734c361d1a5415fe1c"> 1258 <trans-unit id="ba77e356eaa5c06caaf5c8734c361d1a5415fe1c">
1115 <source>Ring a bell if there are unusual requests (being tested)</source> 1259 <source>Ring a bell if there are unusual requests (being tested)</source>
1116 <target>Informiere mich bei merk¼rdigen Anfragen (wird getestet).</target> 1260 <target>Bei ungewöhnlichen Anfragen darauf aufmerksam machen (wird getestet).</target>
1117 <context-group name="null"> 1261 <context-group name="null">
1118 <context context-type="linenumber">93</context> 1262 <context context-type="linenumber">93</context>
1119 </context-group> 1263 </context-group>
@@ -1136,14 +1280,14 @@ Konto erstellen</target>
1136 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1280 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1137 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> Abonnenten</target> 1281 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> Abonnenten</target>
1138 <context-group name="null"> 1282 <context-group name="null">
1139 <context context-type="linenumber">12</context> 1283 <context context-type="linenumber">24</context>
1140 </context-group> 1284 </context-group>
1141 </trans-unit> 1285 </trans-unit>
1142 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1286 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1143 <source>Video channels</source> 1287 <source>Video channels</source>
1144 <target>Kanäle</target> 1288 <target>Kanäle</target>
1145 <context-group name="null"> 1289 <context-group name="null">
1146 <context context-type="linenumber">19</context> 1290 <context context-type="linenumber">31</context>
1147 </context-group> 1291 </context-group>
1148 </trans-unit> 1292 </trans-unit>
1149 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1293 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1232,7 +1376,7 @@ Konto erstellen</target>
1232 </trans-unit> 1376 </trans-unit>
1233 <trans-unit id="aa3ef567a1ea22c1e4d0acfdc8f80bc636bf12df"> 1377 <trans-unit id="aa3ef567a1ea22c1e4d0acfdc8f80bc636bf12df">
1234 <source>With &lt;strong&gt;Do not list&lt;/strong&gt; or &lt;strong&gt;Blur thumbnails&lt;/strong&gt;, a confirmation will be requested to watch the video.</source> 1378 <source>With &lt;strong&gt;Do not list&lt;/strong&gt; or &lt;strong&gt;Blur thumbnails&lt;/strong&gt;, a confirmation will be requested to watch the video.</source>
1235 <target>Bei Wahl der Optionen &lt;strong&gt;Nicht zeigen&lt;/strong&gt; oder &lt;strong&gt;Vorschaubilder verschwommen anzeigen&lt;/strong&gt; wird vor Ansicht des Videos eine Bestätigung gefordert.</target> 1379 <target>Bei Wahl der Optionen &lt;strong&gt;Nicht zeigen&lt;/strong&gt; oder &lt;strong&gt;Miniaturansichten verschwommen anzeigen&lt;/strong&gt; wird vor Ansicht des Videos eine Bestätigung gefordert.</target>
1236 <context-group name="null"> 1380 <context-group name="null">
1237 <context context-type="linenumber">6</context> 1381 <context context-type="linenumber">6</context>
1238 </context-group> 1382 </context-group>
@@ -1246,7 +1390,7 @@ Konto erstellen</target>
1246 </trans-unit> 1390 </trans-unit>
1247 <trans-unit id="aaa900149c2ca1575ac1918d1ded33fb69830ab2"> 1391 <trans-unit id="aaa900149c2ca1575ac1918d1ded33fb69830ab2">
1248 <source>Blur thumbnails</source> 1392 <source>Blur thumbnails</source>
1249 <target>Vorschaubilder verschwommen anzeigen</target> 1393 <target>Miniaturansichten verschwommen anzeigen</target>
1250 <context-group name="null"> 1394 <context-group name="null">
1251 <context context-type="linenumber">12</context> 1395 <context context-type="linenumber">12</context>
1252 </context-group> 1396 </context-group>
@@ -1286,13 +1430,6 @@ Konto erstellen</target>
1286 <context context-type="linenumber">42</context> 1430 <context context-type="linenumber">42</context>
1287 </context-group> 1431 </context-group>
1288 </trans-unit> 1432 </trans-unit>
1289 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1290 <source>Video import with HTTP enabled</source>
1291 <target>Video-Import über HTTP aktiviert</target>
1292 <context-group name="null">
1293 <context context-type="linenumber">115</context>
1294 </context-group>
1295 </trans-unit>
1296 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1433 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1297 <source>Video import with a torrent file or a magnet URI enabled</source> 1434 <source>Video import with a torrent file or a magnet URI enabled</source>
1298 <target>Video-Import über eine Torrent-Datei oder einen Magnet-Link aktiviert</target> 1435 <target>Video-Import über eine Torrent-Datei oder einen Magnet-Link aktiviert</target>
@@ -1627,14 +1764,14 @@ Konto erstellen</target>
1627 <source>Score</source> 1764 <source>Score</source>
1628 <target>Punkte</target> 1765 <target>Punkte</target>
1629 <context-group name="null"> 1766 <context-group name="null">
1630 <context context-type="linenumber">8</context> 1767 <context context-type="linenumber">17</context>
1631 </context-group> 1768 </context-group>
1632 </trans-unit> 1769 </trans-unit>
1633 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1770 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1634 <source>Host</source> 1771 <source>Host</source>
1635 <target>Host</target> 1772 <target>Host</target>
1636 <context-group name="null"> 1773 <context-group name="null">
1637 <context context-type="linenumber">8</context> 1774 <context context-type="linenumber">19</context>
1638 </context-group> 1775 </context-group>
1639 </trans-unit> 1776 </trans-unit>
1640 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1777 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1651,11 +1788,25 @@ Konto erstellen</target>
1651 <context context-type="linenumber">11</context> 1788 <context context-type="linenumber">11</context>
1652 </context-group> 1789 </context-group>
1653 </trans-unit> 1790 </trans-unit>
1791 <trans-unit id="7823909fb1d8d313382f6f4bd842f1a7ef6f08d1">
1792 <source>Accepted</source>
1793 <target>Akzeptiert</target>
1794 <context-group name="null">
1795 <context context-type="linenumber">32</context>
1796 </context-group>
1797 </trans-unit>
1798 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506">
1799 <source>Pending</source>
1800 <target>Ausstehend</target>
1801 <context-group name="null">
1802 <context context-type="linenumber">33</context>
1803 </context-group>
1804 </trans-unit>
1654 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8"> 1805 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8">
1655 <source>Redundancy allowed</source> 1806 <source>Redundancy allowed</source>
1656 <target>Redundanz erlaubt</target> 1807 <target>Redundanz erlaubt</target>
1657 <context-group name="null"> 1808 <context-group name="null">
1658 <context context-type="linenumber">11</context> 1809 <context context-type="linenumber">22</context>
1659 </context-group> 1810 </context-group>
1660 </trans-unit> 1811 </trans-unit>
1661 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479"> 1812 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479">
@@ -1746,7 +1897,7 @@ Konto erstellen</target>
1746 <source>Role</source> 1897 <source>Role</source>
1747 <target>Benutzerrolle</target> 1898 <target>Benutzerrolle</target>
1748 <context-group name="null"> 1899 <context-group name="null">
1749 <context context-type="linenumber">20</context> 1900 <context context-type="linenumber">43</context>
1750 </context-group> 1901 </context-group>
1751 </trans-unit> 1902 </trans-unit>
1752 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1903 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1768,38 +1919,6 @@ Konto erstellen</target>
1768 <context context-type="linenumber">72</context> 1919 <context context-type="linenumber">72</context>
1769 </context-group> 1920 </context-group>
1770 </trans-unit> 1921 </trans-unit>
1771 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1772 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1773 <target><x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/> sperren</target>
1774 <context-group name="null">
1775 <context context-type="linenumber">3</context>
1776 </context-group>
1777 </trans-unit>
1778 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1779 <source>Reason...</source>
1780 <target>Grund...</target>
1781 <context-group name="null">
1782 <context context-type="linenumber">11</context>
1783 </context-group>
1784 </trans-unit>
1785 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1786 <source>
1787 A banned user will no longer be able to login.
1788 </source>
1789 <target>
1790 Ein gesperrter Nutzer wird sich nicht mehr anmelden können.
1791 </target>
1792 <context-group name="null">
1793 <context context-type="linenumber">17</context>
1794 </context-group>
1795 </trans-unit>
1796 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1797 <source>Ban this user</source>
1798 <target>Diesen Nutzer sperren.</target>
1799 <context-group name="null">
1800 <context context-type="linenumber">25</context>
1801 </context-group>
1802 </trans-unit>
1803 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1922 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1804 <source>Users list</source> 1923 <source>Users list</source>
1805 <target>Benutzerliste</target> 1924 <target>Benutzerliste</target>
@@ -1811,21 +1930,21 @@ Konto erstellen</target>
1811 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1930 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1812 <target>Benutzername <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1931 <target>Benutzername <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1813 <context-group name="null"> 1932 <context-group name="null">
1814 <context context-type="linenumber">17</context> 1933 <context context-type="linenumber">40</context>
1815 </context-group> 1934 </context-group>
1816 </trans-unit> 1935 </trans-unit>
1817 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1936 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1818 <source>Actions</source> 1937 <source>Go to the account page</source>
1819 <target>Aktionen</target> 1938 <target>Zur Kontoseite gehen</target>
1820 <context-group name="null"> 1939 <context-group name="null">
1821 <context context-type="linenumber">33</context> 1940 <context context-type="linenumber">133</context>
1822 </context-group> 1941 </context-group>
1823 </trans-unit> 1942 </trans-unit>
1824 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1943 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1825 <source>Ban reason:</source> 1944 <source>Ban reason:</source>
1826 <target>Grund für die Sperrung:</target> 1945 <target>Grund für die Sperrung:</target>
1827 <context-group name="null"> 1946 <context-group name="null">
1828 <context context-type="linenumber">51</context> 1947 <context context-type="linenumber">82</context>
1829 </context-group> 1948 </context-group>
1830 </trans-unit> 1949 </trans-unit>
1831 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1950 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1888,6 +2007,13 @@ Konto erstellen</target>
1888 <context context-type="linenumber">33</context> 2007 <context context-type="linenumber">33</context>
1889 </context-group> 2008 </context-group>
1890 </trans-unit> 2009 </trans-unit>
2010 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
2011 <source>Actions</source>
2012 <target>Aktionen</target>
2013 <context-group name="null">
2014 <context context-type="linenumber">33</context>
2015 </context-group>
2016 </trans-unit>
1891 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 2017 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1892 <source>Reason:</source> 2018 <source>Reason:</source>
1893 <target>Grund:</target> 2019 <target>Grund:</target>
@@ -1995,9 +2121,9 @@ Konto erstellen</target>
1995 </trans-unit> 2121 </trans-unit>
1996 <trans-unit id="73022f1676784c4f9b8cdbb322e52b02ccc800b7"> 2122 <trans-unit id="73022f1676784c4f9b8cdbb322e52b02ccc800b7">
1997 <source>Ownership changes</source> 2123 <source>Ownership changes</source>
1998 <target>Änderungen des Besitzers</target> 2124 <target>Besitzer ändern</target>
1999 <context-group name="null"> 2125 <context-group name="null">
2000 <context context-type="linenumber">22</context> 2126 <context context-type="linenumber">33</context>
2001 </context-group> 2127 </context-group>
2002 </trans-unit> 2128 </trans-unit>
2003 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 2129 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2226,6 +2352,13 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2226 <context context-type="linenumber">30</context> 2352 <context context-type="linenumber">30</context>
2227 </context-group> 2353 </context-group>
2228 </trans-unit> 2354 </trans-unit>
2355 <trans-unit id="0dd390d056411e1709ec97ec51c46d78600e3f7b">
2356 <source>Current password</source>
2357 <target>Aktuelles Passwort</target>
2358 <context-group name="null">
2359 <context context-type="linenumber">7</context>
2360 </context-group>
2361 </trans-unit>
2229 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229"> 2362 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229">
2230 <source>New password</source> 2363 <source>New password</source>
2231 <target>Neues Passwort</target> 2364 <target>Neues Passwort</target>
@@ -2251,14 +2384,14 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2251 <source>Automatically plays video</source> 2384 <source>Automatically plays video</source>
2252 <target>Videos automatisch abspielen</target> 2385 <target>Videos automatisch abspielen</target>
2253 <context-group name="null"> 2386 <context-group name="null">
2254 <context context-type="linenumber">20</context> 2387 <context context-type="linenumber">25</context>
2255 </context-group> 2388 </context-group>
2256 </trans-unit> 2389 </trans-unit>
2257 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2390 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2258 <source>Save</source> 2391 <source>Save</source>
2259 <target>Speichern</target> 2392 <target>Speichern</target>
2260 <context-group name="null"> 2393 <context-group name="null">
2261 <context context-type="linenumber">23</context> 2394 <context context-type="linenumber">28</context>
2262 </context-group> 2395 </context-group>
2263 </trans-unit> 2396 </trans-unit>
2264 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2397 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2289,9 +2422,16 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2289 <context context-type="linenumber">18</context> 2422 <context context-type="linenumber">18</context>
2290 </context-group> 2423 </context-group>
2291 </trans-unit> 2424 </trans-unit>
2425 <trans-unit id="d1a04ba05116499d4cf59a48a282a8bcbf5b622d">
2426 <source>Once you delete your account, there is no going back. Please be certain.</source>
2427 <target>Sobald dein Konto gelöscht ist, gibt es kein Zurück mehr. Sei dir bitte sicher.</target>
2428 <context-group name="null">
2429 <context context-type="linenumber">2</context>
2430 </context-group>
2431 </trans-unit>
2292 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45"> 2432 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45">
2293 <source>Delete your account</source> 2433 <source>Delete your account</source>
2294 <target>Lösche dein Konto</target> 2434 <target>Mein Konto löschen</target>
2295 <context-group name="null"> 2435 <context-group name="null">
2296 <context context-type="linenumber">4</context> 2436 <context context-type="linenumber">4</context>
2297 </context-group> 2437 </context-group>
@@ -2384,7 +2524,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2384 </trans-unit> 2524 </trans-unit>
2385 <trans-unit id="bfe7f34fbd4c3afa5f84a5580e0fae942cad2333"> 2525 <trans-unit id="bfe7f34fbd4c3afa5f84a5580e0fae942cad2333">
2386 <source>You can import any URL &lt;a href='https://rg3.github.io/youtube-dl/supportedsites.html' target='_blank' rel='noopener noreferrer'&gt;supported by youtube-dl&lt;/a&gt; or URL that points to a raw MP4 file. You should make sure you have diffusion rights over the content it points to, otherwise it could cause legal trouble to yourself and your instance.</source> 2526 <source>You can import any URL &lt;a href='https://rg3.github.io/youtube-dl/supportedsites.html' target='_blank' rel='noopener noreferrer'&gt;supported by youtube-dl&lt;/a&gt; or URL that points to a raw MP4 file. You should make sure you have diffusion rights over the content it points to, otherwise it could cause legal trouble to yourself and your instance.</source>
2387 <target>Du kannst von jeder URL importieren, &lt;a href='https://rg3.github.io/youtube-dl/supportedsites.html' target='_blank' rel='noopener noreferrer'&gt;die von youtube-dl unterstützt wird&lt;/a&gt; oder jeder URL, die auf eine MP4-Datei zeigt. Du solltest sicherstellen, dass du die Verbreitungsrechte für den Inhalt hast, ansonsten könnte es legale Schwierigkeiten für dich und deine Instanz verursachen.</target> 2527 <target>Du kannst von jeder URL importieren, &lt;a href='https://rg3.github.io/youtube-dl/supportedsites.html' target='_blank' rel='noopener noreferrer'&gt;die von youtube-dl unterstützt wird&lt;/a&gt; sowie von jeder URL, die auf eine MP4-Datei zeigt. Du solltest sicherstellen, dass du die Verbreitungsrechte für den Inhalt hast, ansonsten könnte es legale Schwierigkeiten für dich und deine Instanz verursachen.</target>
2388 <context-group name="null"> 2528 <context-group name="null">
2389 <context context-type="linenumber">9</context> 2529 <context context-type="linenumber">9</context>
2390 </context-group> 2530 </context-group>
@@ -2451,14 +2591,21 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2451 </trans-unit> 2591 </trans-unit>
2452 <trans-unit id="2fcbf437e001f47974d45bd03a19e0d9245fdb3b"> 2592 <trans-unit id="2fcbf437e001f47974d45bd03a19e0d9245fdb3b">
2453 <source>Select the torrent to import</source> 2593 <source>Select the torrent to import</source>
2454 <target>Wähle die Torrent-Datei für den Import</target> 2594 <target>Wähle die Torrent-Datei für den Import aus</target>
2455 <context-group name="null"> 2595 <context-group name="null">
2456 <context context-type="linenumber">6</context> 2596 <context context-type="linenumber">6</context>
2457 </context-group> 2597 </context-group>
2458 </trans-unit> 2598 </trans-unit>
2599 <trans-unit id="1b518e7f8c067fa55ea797bb1b35b4a2d31dccbc">
2600 <source>Or</source>
2601 <target>Oder</target>
2602 <context-group name="null">
2603 <context context-type="linenumber">11</context>
2604 </context-group>
2605 </trans-unit>
2459 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9"> 2606 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9">
2460 <source>Paste magnet URI</source> 2607 <source>Paste magnet URI</source>
2461 <target>Füge die Magnet URI ein</target> 2608 <target>Füge die Magnet-URI ein</target>
2462 <context-group name="null"> 2609 <context-group name="null">
2463 <context context-type="linenumber">14</context> 2610 <context context-type="linenumber">14</context>
2464 </context-group> 2611 </context-group>
@@ -2504,7 +2651,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2504 </trans-unit> 2651 </trans-unit>
2505 <trans-unit id="fc865859d33eab6fa0a8015233e4686cd544d470"> 2652 <trans-unit id="fc865859d33eab6fa0a8015233e4686cd544d470">
2506 <source>Import with URL</source> 2653 <source>Import with URL</source>
2507 <target>Importiere über einer URL</target> 2654 <target>Importiere über eine URL</target>
2508 <context-group name="null"> 2655 <context-group name="null">
2509 <context context-type="linenumber">17</context> 2656 <context context-type="linenumber">17</context>
2510 </context-group> 2657 </context-group>
@@ -2543,7 +2690,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2543 </trans-unit> 2690 </trans-unit>
2544 <trans-unit id="39702b643cfe3d5b96a4587c1b44a29fa665406c"> 2691 <trans-unit id="39702b643cfe3d5b96a4587c1b44a29fa665406c">
2545 <source>Add this caption</source> 2692 <source>Add this caption</source>
2546 <target>Diesen Untertitel hinzufügen</target> 2693 <target>Untertitel hinzufügen</target>
2547 <context-group name="null"> 2694 <context-group name="null">
2548 <context context-type="linenumber">40</context> 2695 <context context-type="linenumber">40</context>
2549 </context-group> 2696 </context-group>
@@ -2564,11 +2711,25 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2564 </trans-unit> 2711 </trans-unit>
2565 <trans-unit id="457b1cff4d8d7fad0c8742f69c413ecf5e443851"> 2712 <trans-unit id="457b1cff4d8d7fad0c8742f69c413ecf5e443851">
2566 <source>Tags could be used to suggest relevant recommendations.&lt;/br&gt;Press Enter to add a new tag.</source> 2713 <source>Tags could be used to suggest relevant recommendations.&lt;/br&gt;Press Enter to add a new tag.</source>
2567 <target>Taks können genutzt werden, um relevante Empfehlungen aussprechen zu können.&lt;/br&gt;Drücke die Eingabetaste, um einen neuen Tag hinzuzufügen.</target> 2714 <target>Tags können genutzt werden, um relevante Empfehlungen aussprechen zu können.&lt;/br&gt;Drücke die Eingabetaste, um einen neuen Tag hinzuzufügen.</target>
2568 <context-group name="null"> 2715 <context-group name="null">
2569 <context context-type="linenumber">18</context> 2716 <context context-type="linenumber">18</context>
2570 </context-group> 2717 </context-group>
2571 </trans-unit> 2718 </trans-unit>
2719 <trans-unit id="9bdd535a2817bf0b843a124bf65e4992625e7ecf">
2720 <source>+ Tag</source>
2721 <target>+ Tag</target>
2722 <context-group name="null">
2723 <context context-type="linenumber">21</context>
2724 </context-group>
2725 </trans-unit>
2726 <trans-unit id="8389e9cde2928cc27aaecbdee818a255bf7984b0">
2727 <source>Enter a new tag</source>
2728 <target>Gib einen neuen Tag ein</target>
2729 <context-group name="null">
2730 <context context-type="linenumber">21</context>
2731 </context-group>
2732 </trans-unit>
2572 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e"> 2733 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e">
2573 <source>Video descriptions are truncated by default and require manual action to expand them.</source> 2734 <source>Video descriptions are truncated by default and require manual action to expand them.</source>
2574 <target>Videobeschreibungen sind standardmäßig gekürzt und müssen manuell aufgeklappt werden.</target> 2735 <target>Videobeschreibungen sind standardmäßig gekürzt und müssen manuell aufgeklappt werden.</target>
@@ -2606,14 +2767,14 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2606 </trans-unit> 2767 </trans-unit>
2607 <trans-unit id="7e549f41b715552ffe69b85c14a690d9d81c85f0"> 2768 <trans-unit id="7e549f41b715552ffe69b85c14a690d9d81c85f0">
2608 <source>Wait transcoding before publishing the video</source> 2769 <source>Wait transcoding before publishing the video</source>
2609 <target>Warte das Transkodieren ab, bevor du das Video veröffentlichst</target> 2770 <target>Transkodieren abwarten, bevor das Video veröffentlicht wird</target>
2610 <context-group name="null"> 2771 <context-group name="null">
2611 <context context-type="linenumber">130</context> 2772 <context context-type="linenumber">130</context>
2612 </context-group> 2773 </context-group>
2613 </trans-unit> 2774 </trans-unit>
2614 <trans-unit id="24f468ce1148a096477d8dd0d00f0d1fd88d6c63"> 2775 <trans-unit id="24f468ce1148a096477d8dd0d00f0d1fd88d6c63">
2615 <source>If you decide not to wait for transcoding before publishing the video, it could be unplayable until transcoding ends.</source> 2776 <source>If you decide not to wait for transcoding before publishing the video, it could be unplayable until transcoding ends.</source>
2616 <target>Wenn du dich entschließt, dass Transkodieren nicht abzuwarten, kann das Video unabspielbar sein, bis das Transkodieren beendet ist.</target> 2777 <target>Wenn du dich entschließt, das Transkodieren nicht abzuwarten, kann das Video unabspielbar sein, bis das Transkodieren beendet ist.</target>
2617 <context-group name="null"> 2778 <context-group name="null">
2618 <context context-type="linenumber">131</context> 2779 <context context-type="linenumber">131</context>
2619 </context-group> 2780 </context-group>
@@ -2627,7 +2788,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2627 </trans-unit> 2788 </trans-unit>
2628 <trans-unit id="92bcfd1d237a2bfe48dc9f46d074ed26abc8df22"> 2789 <trans-unit id="92bcfd1d237a2bfe48dc9f46d074ed26abc8df22">
2629 <source>Add another caption</source> 2790 <source>Add another caption</source>
2630 <target>Weiteren Untertitel hinzufügen</target> 2791 <target>Weitere Untertitel hinzufügen</target>
2631 <context-group name="null"> 2792 <context-group name="null">
2632 <context context-type="linenumber">146</context> 2793 <context context-type="linenumber">146</context>
2633 </context-group> 2794 </context-group>
@@ -2694,7 +2855,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
2694 </trans-unit> 2855 </trans-unit>
2695 <trans-unit id="1dd793abd1cb8d16a7a2cb71ca5549a7111ee513"> 2856 <trans-unit id="1dd793abd1cb8d16a7a2cb71ca5549a7111ee513">
2696 <source>Upload thumbnail</source> 2857 <source>Upload thumbnail</source>
2697 <target>Vorschaubild hochladen</target> 2858 <target>Miniaturansicht hochladen</target>
2698 <context-group name="null"> 2859 <context-group name="null">
2699 <context context-type="linenumber">195</context> 2860 <context context-type="linenumber">195</context>
2700 </context-group> 2861 </context-group>
@@ -3001,13 +3162,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3001 <context context-type="linenumber">134</context> 3162 <context context-type="linenumber">134</context>
3002 </context-group> 3163 </context-group>
3003 </trans-unit> 3164 </trans-unit>
3004 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
3005 <source>Go to the account page</source>
3006 <target>Gehe zur Kontoseite</target>
3007 <context-group name="null">
3008 <context context-type="linenumber">133</context>
3009 </context-group>
3010 </trans-unit>
3011 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 3165 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
3012 <source>Show more</source> 3166 <source>Show more</source>
3013 <target>Mehr anzeigen</target> 3167 <target>Mehr anzeigen</target>
@@ -3087,25 +3241,18 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3087 <context context-type="linenumber">3</context> 3241 <context context-type="linenumber">3</context>
3088 </context-group> 3242 </context-group>
3089 </trans-unit> 3243 </trans-unit>
3090 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
3091 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
3092 <target>Du kannst entweder auf der Seite deiner Fediverse-Instanz kommentieren oder auf einer anderen, die ActivityPub unterstützt. Bei Mastodon oder Pleroma kannst du z. B. in das Suchfeld &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; eingeben und das Video wiederfinden. An der Möglichkeit zur direkten Kommentierung wird gearbeitet: &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
3093 <context-group name="null">
3094 <context context-type="linenumber">8</context>
3095 </context-group>
3096 </trans-unit>
3097 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 3244 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
3098 <source>No comments.</source> 3245 <source>No comments.</source>
3099 <target>Keine Kommentare.</target> 3246 <target>Keine Kommentare.</target>
3100 <context-group name="null"> 3247 <context-group name="null">
3101 <context context-type="linenumber">18</context> 3248 <context context-type="linenumber">17</context>
3102 </context-group> 3249 </context-group>
3103 </trans-unit> 3250 </trans-unit>
3104 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 3251 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
3105 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 3252 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
3106 <target>Zeige alle <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> Antworten</target> 3253 <target>Zeige alle <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> Antworten</target>
3107 <context-group name="null"> 3254 <context-group name="null">
3108 <context context-type="linenumber">55</context> 3255 <context context-type="linenumber">54</context>
3109 </context-group> 3256 </context-group>
3110 </trans-unit> 3257 </trans-unit>
3111 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 3258 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -3116,7 +3263,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3116 Kommentare sind abgeschaltet. 3263 Kommentare sind abgeschaltet.
3117 </target> 3264 </target>
3118 <context-group name="null"> 3265 <context-group name="null">
3119 <context context-type="linenumber">64</context> 3266 <context context-type="linenumber">63</context>
3120 </context-group> 3267 </context-group>
3121 </trans-unit> 3268 </trans-unit>
3122 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 3269 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -3137,6 +3284,57 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3137 <context context-type="linenumber">20</context> 3284 <context context-type="linenumber">20</context>
3138 </context-group> 3285 </context-group>
3139 </trans-unit> 3286 </trans-unit>
3287 <trans-unit id="8b2bb53dfb5f059f2b68cc4ac00661a865909135">
3288 <source>You are one step away from commenting</source>
3289 <target>Du bist einen Schritt vom Kommentieren entfernt</target>
3290 <context-group name="null">
3291 <context context-type="linenumber">28</context>
3292 </context-group>
3293 </trans-unit>
3294 <trans-unit id="7984a44ce86b961f4f18c9a58c638f5e8f07a225">
3295 <source>
3296 If you have an account on this instance, you can login:
3297 </source>
3298 <target>
3299 Wenn du über ein Konto auf dieser Instanz verfügst, kannst du dich anmelden.
3300 </target>
3301 <context-group name="null">
3302 <context context-type="linenumber">32</context>
3303 </context-group>
3304 </trans-unit>
3305 <trans-unit id="afe0ad39fee662489f1033e53aea3e16a7e89228">
3306 <source>login to comment</source>
3307 <target>melde dich an, um zu kommentieren</target>
3308 <context-group name="null">
3309 <context context-type="linenumber">35</context>
3310 </context-group>
3311 </trans-unit>
3312 <trans-unit id="a5a3f17c9b4876952d78363834d57280c8684e7c">
3313 <source>
3314 Otherwise you can comment using an account on any ActivityPub-compatible instance.
3315 On most platforms, you can find the video by typing its URL in the search bar and then comment it
3316 from within the software's interface.
3317 </source>
3318 <target>
3319 Ansonsten kannst du mit einem Konto einer beliebigen Instanz kommentieren, die ActitityPub unterstützt.
3320 Auf den meisten Plattformen kannst du das Video kommentieren, indem du die URL des Videos in das Suchfeld
3321 eingibst und dann den Anweisungen der Website folgst.
3322 </target>
3323 <context-group name="null">
3324 <context context-type="linenumber">36</context>
3325 </context-group>
3326 </trans-unit>
3327 <trans-unit id="968b02fbc645be799727de0d1ec3c6f9b11b20eb">
3328 <source>
3329 If you have an account on Mastodon or Pleroma, you can open it directly in their interface:
3330 </source>
3331 <target>
3332 Falls du über ein Mastodon- oder Pleroma-Konto verfügst, kannst du es dort direkt öffnen.
3333 </target>
3334 <context-group name="null">
3335 <context context-type="linenumber">41</context>
3336 </context-group>
3337 </trans-unit>
3140 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285"> 3338 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285">
3141 <source>Highlighted comment</source> 3339 <source>Highlighted comment</source>
3142 <target>Markierter Kommentar</target> 3340 <target>Markierter Kommentar</target>
@@ -3186,37 +3384,44 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3186 <context context-type="linenumber">1</context> 3384 <context context-type="linenumber">1</context>
3187 </context-group> 3385 </context-group>
3188 </trans-unit> 3386 </trans-unit>
3189 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed"> 3387 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6">
3190 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source> 3388 <source>240p</source>
3191 <target><x id="INTERPOLATION" equiv-text="{{customizationsText}}"/> wurde verändert.</target> 3389 <target>240p</target>
3390 <context-group name="null">
3391 <context context-type="linenumber">1</context>
3392 </context-group>
3393 </trans-unit>
3394 <trans-unit id="c8cfad7e7a16c57c42535331b65cb7de40d8402e">
3395 <source>360p</source>
3396 <target>360p</target>
3192 <context-group name="null"> 3397 <context-group name="null">
3193 <context context-type="linenumber">1</context> 3398 <context context-type="linenumber">1</context>
3194 </context-group> 3399 </context-group>
3195 </trans-unit> 3400 </trans-unit>
3196 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e"> 3401 <trans-unit id="48f0af5a0d0bea4e84b27eaf41b19c85a531c2a5">
3197 <source>This could lead to security issues or bugs if you do not understand it. </source> 3402 <source>480p</source>
3198 <target>Das könnte zu Sicherheitslücken führen, falls du es nicht verstehst.</target> 3403 <target>480p</target>
3199 <context-group name="null"> 3404 <context-group name="null">
3200 <context context-type="linenumber">1</context> 3405 <context context-type="linenumber">1</context>
3201 </context-group> 3406 </context-group>
3202 </trans-unit> 3407 </trans-unit>
3203 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0"> 3408 <trans-unit id="6f06138daf6363746ff26bfc0cb2491c09cdfdf2">
3204 <source>Are you sure you want to update the configuration?</source> 3409 <source>720p</source>
3205 <target>Willst du die Einstellungen wirklich aktualisieren?</target> 3410 <target>720p</target>
3206 <context-group name="null"> 3411 <context-group name="null">
3207 <context context-type="linenumber">1</context> 3412 <context context-type="linenumber">1</context>
3208 </context-group> 3413 </context-group>
3209 </trans-unit> 3414 </trans-unit>
3210 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119"> 3415 <trans-unit id="65c94f9beb6fe957808c40060da280cc7ace7ab9">
3211 <source>Please type</source> 3416 <source>1080p</source>
3212 <target>Bitte eingeben</target> 3417 <target>1080p</target>
3213 <context-group name="null"> 3418 <context-group name="null">
3214 <context context-type="linenumber">1</context> 3419 <context context-type="linenumber">1</context>
3215 </context-group> 3420 </context-group>
3216 </trans-unit> 3421 </trans-unit>
3217 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d"> 3422 <trans-unit id="421a937491f19774d17eefa1d24816dae1a9f111">
3218 <source>to confirm.</source> 3423 <source>Auto (via ffmpeg)</source>
3219 <target>zur Bestätigung.</target> 3424 <target>Automatisch (über ffmpeg)</target>
3220 <context-group name="null"> 3425 <context-group name="null">
3221 <context context-type="linenumber">1</context> 3426 <context context-type="linenumber">1</context>
3222 </context-group> 3427 </context-group>
@@ -3242,6 +3447,69 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3242 <context context-type="linenumber">1</context> 3447 <context context-type="linenumber">1</context>
3243 </context-group> 3448 </context-group>
3244 </trans-unit> 3449 </trans-unit>
3450 <trans-unit id="54adc67482fdaa0d361a2992bc91e064dc61cc9a">
3451 <source>100MB</source>
3452 <target>100MB</target>
3453 <context-group name="null">
3454 <context context-type="linenumber">1</context>
3455 </context-group>
3456 </trans-unit>
3457 <trans-unit id="cd34ef1f476d5422f49f6ed429f61fc1cfcb1174">
3458 <source>500MB</source>
3459 <target>500MB</target>
3460 <context-group name="null">
3461 <context context-type="linenumber">1</context>
3462 </context-group>
3463 </trans-unit>
3464 <trans-unit id="4a47b4beea31cac6e5970b6bc522902f545acc8b">
3465 <source>1GB</source>
3466 <target>1GB</target>
3467 <context-group name="null">
3468 <context context-type="linenumber">1</context>
3469 </context-group>
3470 </trans-unit>
3471 <trans-unit id="b26d0cac75638623098ab7e06e16b096d1f55cc8">
3472 <source>5GB</source>
3473 <target>5GB</target>
3474 <context-group name="null">
3475 <context context-type="linenumber">1</context>
3476 </context-group>
3477 </trans-unit>
3478 <trans-unit id="f9fc4e7ec6743cb6f69bea2d0859a655ed44ffae">
3479 <source>20GB</source>
3480 <target>20GB</target>
3481 <context-group name="null">
3482 <context context-type="linenumber">1</context>
3483 </context-group>
3484 </trans-unit>
3485 <trans-unit id="a56e3f92fe16d97ee4f05051ea61c466ecb51d5e">
3486 <source>50GB</source>
3487 <target>50GB</target>
3488 <context-group name="null">
3489 <context context-type="linenumber">1</context>
3490 </context-group>
3491 </trans-unit>
3492 <trans-unit id="31dcc0c63f6234ace8caa84ae1abc33d4022122d">
3493 <source>10MB</source>
3494 <target>10MB</target>
3495 <context-group name="null">
3496 <context context-type="linenumber">1</context>
3497 </context-group>
3498 </trans-unit>
3499 <trans-unit id="f2f968b6f2199b919f567702c6f23b43e5ea71af">
3500 <source>50MB</source>
3501 <target>50MB</target>
3502 <context-group name="null">
3503 <context context-type="linenumber">1</context>
3504 </context-group>
3505 </trans-unit>
3506 <trans-unit id="c31575424fe1b2a57064413f3eda7ce657c46c8a">
3507 <source>2GB</source>
3508 <target>2GB</target>
3509 <context-group name="null">
3510 <context context-type="linenumber">1</context>
3511 </context-group>
3512 </trans-unit>
3245 <trans-unit id="fc5731a28a99b25c62d43333ceebb250d60aff84"> 3513 <trans-unit id="fc5731a28a99b25c62d43333ceebb250d60aff84">
3246 <source><x id="INTERPOLATION" equiv-text="{{host}}"/> is not valid</source> 3514 <source><x id="INTERPOLATION" equiv-text="{{host}}"/> is not valid</source>
3247 <target><x id="INTERPOLATION" equiv-text="{{host}}"/> ist ungültig</target> 3515 <target><x id="INTERPOLATION" equiv-text="{{host}}"/> ist ungültig</target>
@@ -3403,20 +3671,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3403 <context context-type="linenumber">1</context> 3671 <context context-type="linenumber">1</context>
3404 </context-group> 3672 </context-group>
3405 </trans-unit> 3673 </trans-unit>
3406 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
3407 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
3408 <target>Benutzer <x id="INTERPOLATION" equiv-text="{{username}}"/> gesperrt.</target>
3409 <context-group name="null">
3410 <context context-type="linenumber">1</context>
3411 </context-group>
3412 </trans-unit>
3413 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3414 <source>Ban</source>
3415 <target>Sperren</target>
3416 <context-group name="null">
3417 <context context-type="linenumber">1</context>
3418 </context-group>
3419 </trans-unit>
3420 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 3674 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3421 <source>Unban</source> 3675 <source>Unban</source>
3422 <target>Sperre aufheben</target> 3676 <target>Sperre aufheben</target>
@@ -3431,20 +3685,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3431 <context context-type="linenumber">1</context> 3685 <context context-type="linenumber">1</context>
3432 </context-group> 3686 </context-group>
3433 </trans-unit> 3687 </trans-unit>
3434 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
3435 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
3436 <target>Möchtest du die Sperre von <x id="INTERPOLATION" equiv-text="{{username}}"/> wirklich aufheben?</target>
3437 <context-group name="null">
3438 <context context-type="linenumber">1</context>
3439 </context-group>
3440 </trans-unit>
3441 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
3442 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
3443 <target>Sperre von Benutzer <x id="INTERPOLATION" equiv-text="{{username}}"/> aufgehoben.</target>
3444 <context-group name="null">
3445 <context context-type="linenumber">1</context>
3446 </context-group>
3447 </trans-unit>
3448 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 3688 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
3449 <source>You cannot delete root.</source> 3689 <source>You cannot delete root.</source>
3450 <target>Du kannst die Wurzel nicht löschen.</target> 3690 <target>Du kannst die Wurzel nicht löschen.</target>
@@ -3452,20 +3692,6 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3452 <context context-type="linenumber">1</context> 3692 <context context-type="linenumber">1</context>
3453 </context-group> 3693 </context-group>
3454 </trans-unit> 3694 </trans-unit>
3455 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
3456 <source>If you remove this user, you will not be able to create another with the same username!</source>
3457 <target>Wenn du diesen Nutzer entfernst, wirst du keinen neuen mit dem gleichen Nutzernamen erstellen können!</target>
3458 <context-group name="null">
3459 <context context-type="linenumber">1</context>
3460 </context-group>
3461 </trans-unit>
3462 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3463 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3464 <target>Benutzer <x id="INTERPOLATION" equiv-text="{{username}}"/> entfernt.</target>
3465 <context-group name="null">
3466 <context context-type="linenumber">1</context>
3467 </context-group>
3468 </trans-unit>
3469 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e"> 3695 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3470 <source>Ownership accepted</source> 3696 <source>Ownership accepted</source>
3471 <target>Besitz geworden</target> 3697 <target>Besitz geworden</target>
@@ -3480,6 +3706,13 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
3480 <context context-type="linenumber">1</context> 3706 <context context-type="linenumber">1</context>
3481 </context-group> 3707 </context-group>
3482 </trans-unit> 3708 </trans-unit>
3709 <trans-unit id="466fc8cf56fd4e4e90fec4b900ef083d52bec38c">
3710 <source>You current password is invalid.</source>
3711 <target>Dein aktuelles Passwort ist ungültig.</target>
3712 <context-group name="null">
3713 <context context-type="linenumber">1</context>
3714 </context-group>
3715 </trans-unit>
3483 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047"> 3716 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047">
3484 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source> 3717 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source>
3485 <target>Bist du sicher, dass du dein Konto löschen möchtest? Das wird all deine Daten löschen, inkl. aller Kanäle, Videos etc.</target> 3718 <target>Bist du sicher, dass du dein Konto löschen möchtest? Das wird all deine Daten löschen, inkl. aller Kanäle, Videos etc.</target>
@@ -4807,14 +5040,14 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
4807 </trans-unit> 5040 </trans-unit>
4808 <trans-unit id="457f161d3ca706b8de263b0cd58e493d54e7d4c5"> 5041 <trans-unit id="457f161d3ca706b8de263b0cd58e493d54e7d4c5">
4809 <source><x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Markdown<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> compatible that supports:</source> 5042 <source><x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Markdown<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> compatible that supports:</source>
4810 <target>Kompatibilität mit <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Markdown<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> mit Unterstützung von:</target> 5043 <target><x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>Markdown<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>-Unterstützung von:</target>
4811 <context-group name="null"> 5044 <context-group name="null">
4812 <context context-type="linenumber">1</context> 5045 <context context-type="linenumber">1</context>
4813 </context-group> 5046 </context-group>
4814 </trans-unit> 5047 </trans-unit>
4815 <trans-unit id="ab4426b60f13c00b61d6b714d390dc629f314980"> 5048 <trans-unit id="ab4426b60f13c00b61d6b714d390dc629f314980">
4816 <source>Emphasis</source> 5049 <source>Emphasis</source>
4817 <target>Hervorhebung</target> 5050 <target>Hervorhebungen</target>
4818 <context-group name="null"> 5051 <context-group name="null">
4819 <context context-type="linenumber">1</context> 5052 <context context-type="linenumber">1</context>
4820 </context-group> 5053 </context-group>
@@ -4847,6 +5080,41 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
4847 <context context-type="linenumber">1</context> 5080 <context context-type="linenumber">1</context>
4848 </context-group> 5081 </context-group>
4849 </trans-unit> 5082 </trans-unit>
5083 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
5084 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
5085 <target>Benutzer <x id="INTERPOLATION" equiv-text="{{username}}"/> gesperrt.</target>
5086 <context-group name="null">
5087 <context context-type="linenumber">1</context>
5088 </context-group>
5089 </trans-unit>
5090 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
5091 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
5092 <target>Möchtest du die Sperre von <x id="INTERPOLATION" equiv-text="{{username}}"/> wirklich aufheben?</target>
5093 <context-group name="null">
5094 <context context-type="linenumber">1</context>
5095 </context-group>
5096 </trans-unit>
5097 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
5098 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
5099 <target>Sperre von Benutzer <x id="INTERPOLATION" equiv-text="{{username}}"/> aufgehoben.</target>
5100 <context-group name="null">
5101 <context context-type="linenumber">1</context>
5102 </context-group>
5103 </trans-unit>
5104 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
5105 <source>If you remove this user, you will not be able to create another with the same username!</source>
5106 <target>Wenn du diesen Nutzer entfernst, wirst du keinen neuen mit dem gleichen Nutzernamen erstellen können!</target>
5107 <context-group name="null">
5108 <context context-type="linenumber">1</context>
5109 </context-group>
5110 </trans-unit>
5111 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
5112 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
5113 <target>Benutzer <x id="INTERPOLATION" equiv-text="{{username}}"/> entfernt.</target>
5114 <context-group name="null">
5115 <context context-type="linenumber">1</context>
5116 </context-group>
5117 </trans-unit>
4850 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 5118 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
4851 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 5119 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
4852 <target>Die Anfrage ist zu groß. Bitte kontaktiere den Administrator, um die Obergrenze für die Größe zu erhöhen.</target> 5120 <target>Die Anfrage ist zu groß. Bitte kontaktiere den Administrator, um die Obergrenze für die Größe zu erhöhen.</target>
@@ -4903,6 +5171,13 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
4903 <context context-type="linenumber">1</context> 5171 <context context-type="linenumber">1</context>
4904 </context-group> 5172 </context-group>
4905 </trans-unit> 5173 </trans-unit>
5174 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf">
5175 <source>Moderator</source>
5176 <target>Moderator</target>
5177 <context-group name="null">
5178 <context context-type="linenumber">1</context>
5179 </context-group>
5180 </trans-unit>
4906 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb"> 5181 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb">
4907 <source>Only I can see this video</source> 5182 <source>Only I can see this video</source>
4908 <target>Nur ich kann dieses Video sehen</target> 5183 <target>Nur ich kann dieses Video sehen</target>
@@ -5066,7 +5341,7 @@ Wenn du ein Video in diesen Kanal hochlädst, wird das entsprechende Feld automa
5066 </trans-unit> 5341 </trans-unit>
5067 <trans-unit id="d5a4811e15319ad9354e1b62e9ca0131192b489e"> 5342 <trans-unit id="d5a4811e15319ad9354e1b62e9ca0131192b489e">
5068 <source><x id="INTERPOLATION" equiv-text="{{likesNumber}}"/> likes / <x id="INTERPOLATION_1" equiv-text="{{dislikesNumber}}"/> dislikes</source> 5343 <source><x id="INTERPOLATION" equiv-text="{{likesNumber}}"/> likes / <x id="INTERPOLATION_1" equiv-text="{{dislikesNumber}}"/> dislikes</source>
5069 <target><x id="INTERPOLATION" equiv-text="{{likesNumber}}"/> Likes / <x id="INTERPOLATION_1" equiv-text="{{dislikesNumber}}"/> Dislikes</target> 5344 <target><x id="INTERPOLATION" equiv-text="{{likesNumber}}"/> gefällt das / <x id="INTERPOLATION_1" equiv-text="{{dislikesNumber}}"/> gefällt das nicht</target>
5070 <context-group name="null"> 5345 <context-group name="null">
5071 <context context-type="linenumber">1</context> 5346 <context context-type="linenumber">1</context>
5072 </context-group> 5347 </context-group>
diff --git a/client/src/locale/target/angular_eo.xml b/client/src/locale/target/angular_eo.xml
index 3eb88bb99..f3d70d813 100644
--- a/client/src/locale/target/angular_eo.xml
+++ b/client/src/locale/target/angular_eo.xml
@@ -126,7 +126,7 @@
126 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 126 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
127 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> rigardoj</target> 127 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> rigardoj</target>
128 <context-group name="null"> 128 <context-group name="null">
129 <context context-type="linenumber">13</context> 129 <context context-type="linenumber">16</context>
130 </context-group> 130 </context-group>
131 </trans-unit> 131 </trans-unit>
132 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 132 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -140,7 +140,7 @@
140 <source>Edit</source> 140 <source>Edit</source>
141 <target>Redakti</target> 141 <target>Redakti</target>
142 <context-group name="null"> 142 <context-group name="null">
143 <context context-type="linenumber">5</context> 143 <context context-type="linenumber">1</context>
144 </context-group> 144 </context-group>
145 </trans-unit> 145 </trans-unit>
146 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 146 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -168,7 +168,14 @@
168 <source>Video quota</source> 168 <source>Video quota</source>
169 <target>Datumlimo por filmoj</target> 169 <target>Datumlimo por filmoj</target>
170 <context-group name="null"> 170 <context-group name="null">
171 <context context-type="linenumber">19</context> 171 <context context-type="linenumber">42</context>
172 </context-group>
173 </trans-unit>
174 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
175 <source>Reason...</source>
176 <target>Kialo…</target>
177 <context-group name="null">
178 <context context-type="linenumber">11</context>
172 </context-group> 179 </context-group>
173 </trans-unit> 180 </trans-unit>
174 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 181 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
@@ -356,13 +363,6 @@
356 <context context-type="linenumber">6</context> 363 <context context-type="linenumber">6</context>
357 </context-group> 364 </context-group>
358 </trans-unit> 365 </trans-unit>
359 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
360 <source>Filters</source>
361 <target>Filtriloj</target>
362 <context-group name="null">
363 <context context-type="linenumber">16</context>
364 </context-group>
365 </trans-unit>
366 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 366 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
367 <source> 367 <source>
368 No results found 368 No results found
@@ -371,7 +371,7 @@
371 Neniuj rezultoj troviÄis 371 Neniuj rezultoj troviÄis
372 </target> 372 </target>
373 <context-group name="null"> 373 <context-group name="null">
374 <context context-type="linenumber">25</context> 374 <context context-type="linenumber">28</context>
375 </context-group> 375 </context-group>
376 </trans-unit> 376 </trans-unit>
377 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 377 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -575,14 +575,14 @@
575 <source>No results.</source> 575 <source>No results.</source>
576 <target>Nenio troviÄis.</target> 576 <target>Nenio troviÄis.</target>
577 <context-group name="null"> 577 <context-group name="null">
578 <context context-type="linenumber">7</context> 578 <context context-type="linenumber">17</context>
579 </context-group> 579 </context-group>
580 </trans-unit> 580 </trans-unit>
581 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b"> 581 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b">
582 <source>Instance</source> 582 <source>Instance</source>
583 <target>Nodo</target> 583 <target>Nodo</target>
584 <context-group name="null"> 584 <context-group name="null">
585 <context context-type="linenumber">8</context> 585 <context context-type="linenumber">12</context>
586 </context-group> 586 </context-group>
587 </trans-unit> 587 </trans-unit>
588 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 588 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -927,14 +927,14 @@
927 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 927 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
928 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> abonantoj</target> 928 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> abonantoj</target>
929 <context-group name="null"> 929 <context-group name="null">
930 <context context-type="linenumber">12</context> 930 <context context-type="linenumber">24</context>
931 </context-group> 931 </context-group>
932 </trans-unit> 932 </trans-unit>
933 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 933 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
934 <source>Video channels</source> 934 <source>Video channels</source>
935 <target>Filmaj kanaloj</target> 935 <target>Filmaj kanaloj</target>
936 <context-group name="null"> 936 <context-group name="null">
937 <context context-type="linenumber">19</context> 937 <context context-type="linenumber">31</context>
938 </context-group> 938 </context-group>
939 </trans-unit> 939 </trans-unit>
940 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 940 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1077,13 +1077,6 @@
1077 <context context-type="linenumber">42</context> 1077 <context context-type="linenumber">42</context>
1078 </context-group> 1078 </context-group>
1079 </trans-unit> 1079 </trans-unit>
1080 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1081 <source>Video import with HTTP enabled</source>
1082 <target>Enporto de filmoj per HTTP Åaltita</target>
1083 <context-group name="null">
1084 <context context-type="linenumber">115</context>
1085 </context-group>
1086 </trans-unit>
1087 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1080 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1088 <source>Video import with a torrent file or a magnet URI enabled</source> 1081 <source>Video import with a torrent file or a magnet URI enabled</source>
1089 <target>Enporto de filmoj per torenta dosiero aÅ­ magneta ligilo Åaltita</target> 1082 <target>Enporto de filmoj per torenta dosiero aÅ­ magneta ligilo Åaltita</target>
@@ -1339,14 +1332,14 @@
1339 <source>Score</source> 1332 <source>Score</source>
1340 <target>Poentaro</target> 1333 <target>Poentaro</target>
1341 <context-group name="null"> 1334 <context-group name="null">
1342 <context context-type="linenumber">8</context> 1335 <context context-type="linenumber">17</context>
1343 </context-group> 1336 </context-group>
1344 </trans-unit> 1337 </trans-unit>
1345 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1338 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1346 <source>Host</source> 1339 <source>Host</source>
1347 <target>Gastiganto</target> 1340 <target>Gastiganto</target>
1348 <context-group name="null"> 1341 <context-group name="null">
1349 <context context-type="linenumber">8</context> 1342 <context context-type="linenumber">19</context>
1350 </context-group> 1343 </context-group>
1351 </trans-unit> 1344 </trans-unit>
1352 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1345 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1451,7 +1444,7 @@
1451 <source>Role</source> 1444 <source>Role</source>
1452 <target>Rolo</target> 1445 <target>Rolo</target>
1453 <context-group name="null"> 1446 <context-group name="null">
1454 <context context-type="linenumber">20</context> 1447 <context context-type="linenumber">43</context>
1455 </context-group> 1448 </context-group>
1456 </trans-unit> 1449 </trans-unit>
1457 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1450 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1467,13 +1460,6 @@
1467 <context context-type="linenumber">65</context> 1460 <context context-type="linenumber">65</context>
1468 </context-group> 1461 </context-group>
1469 </trans-unit> 1462 </trans-unit>
1470 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1471 <source>Reason...</source>
1472 <target>Kialo…</target>
1473 <context-group name="null">
1474 <context context-type="linenumber">11</context>
1475 </context-group>
1476 </trans-unit>
1477 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1463 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1478 <source>Users list</source> 1464 <source>Users list</source>
1479 <target>Listo de uzantoj</target> 1465 <target>Listo de uzantoj</target>
@@ -1485,7 +1471,14 @@
1485 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1471 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1486 <target>Salutnomo <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1472 <target>Salutnomo <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1487 <context-group name="null"> 1473 <context-group name="null">
1488 <context context-type="linenumber">17</context> 1474 <context context-type="linenumber">40</context>
1475 </context-group>
1476 </trans-unit>
1477 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1478 <source>Go to the account page</source>
1479 <target>Iri al paÄo de la konto</target>
1480 <context-group name="null">
1481 <context context-type="linenumber">133</context>
1489 </context-group> 1482 </context-group>
1490 </trans-unit> 1483 </trans-unit>
1491 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2"> 1484 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2">
@@ -1701,14 +1694,14 @@ Kiam vi alÅutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos
1701 <source>Automatically plays video</source> 1694 <source>Automatically plays video</source>
1702 <target>Memfare ludas filmon</target> 1695 <target>Memfare ludas filmon</target>
1703 <context-group name="null"> 1696 <context-group name="null">
1704 <context context-type="linenumber">20</context> 1697 <context context-type="linenumber">25</context>
1705 </context-group> 1698 </context-group>
1706 </trans-unit> 1699 </trans-unit>
1707 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 1700 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
1708 <source>Save</source> 1701 <source>Save</source>
1709 <target>Konservi</target> 1702 <target>Konservi</target>
1710 <context-group name="null"> 1703 <context-group name="null">
1711 <context context-type="linenumber">23</context> 1704 <context context-type="linenumber">28</context>
1712 </context-group> 1705 </context-group>
1713 </trans-unit> 1706 </trans-unit>
1714 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 1707 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2239,13 +2232,6 @@ Kiam vi alÅutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos
2239 <context context-type="linenumber">123</context> 2232 <context context-type="linenumber">123</context>
2240 </context-group> 2233 </context-group>
2241 </trans-unit> 2234 </trans-unit>
2242 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
2243 <source>Go to the account page</source>
2244 <target>Iri al paÄo de la konto</target>
2245 <context-group name="null">
2246 <context context-type="linenumber">133</context>
2247 </context-group>
2248 </trans-unit>
2249 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 2235 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
2250 <source>Show more</source> 2236 <source>Show more</source>
2251 <target>Montri pli</target> 2237 <target>Montri pli</target>
@@ -2296,25 +2282,18 @@ Kiam vi alÅutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos
2296 <context context-type="linenumber">3</context> 2282 <context context-type="linenumber">3</context>
2297 </context-group> 2283 </context-group>
2298 </trans-unit> 2284 </trans-unit>
2299 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
2300 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
2301 <target>Vi povas komenti aÅ­ sur la paÄo de via nodo, kie tiu ĉi filmo estas federata kun via konto ĉe PeerTube, aÅ­ per iu ajn nodo en fediverso, subtenanta protokolon « ActivityPub ». Ekzemple, en Mastodon aÅ­ Pleroma vi povas tajpi en serĉujon « &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; » kaj retrovi la filmon. Rektaj ebloj komenti estas prilaborataj en &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
2302 <context-group name="null">
2303 <context context-type="linenumber">8</context>
2304 </context-group>
2305 </trans-unit>
2306 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 2285 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
2307 <source>No comments.</source> 2286 <source>No comments.</source>
2308 <target>Neniuj komentoj.</target> 2287 <target>Neniuj komentoj.</target>
2309 <context-group name="null"> 2288 <context-group name="null">
2310 <context context-type="linenumber">18</context> 2289 <context context-type="linenumber">17</context>
2311 </context-group> 2290 </context-group>
2312 </trans-unit> 2291 </trans-unit>
2313 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 2292 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
2314 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 2293 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
2315 <target>Montri ĉiujn <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> respondojn</target> 2294 <target>Montri ĉiujn <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> respondojn</target>
2316 <context-group name="null"> 2295 <context-group name="null">
2317 <context context-type="linenumber">55</context> 2296 <context context-type="linenumber">54</context>
2318 </context-group> 2297 </context-group>
2319 </trans-unit> 2298 </trans-unit>
2320 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 2299 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -2325,7 +2304,7 @@ Kiam vi alÅutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos
2325 Komentoj estas malÅaltitaj. 2304 Komentoj estas malÅaltitaj.
2326 </target> 2305 </target>
2327 <context-group name="null"> 2306 <context-group name="null">
2328 <context context-type="linenumber">64</context> 2307 <context context-type="linenumber">63</context>
2329 </context-group> 2308 </context-group>
2330 </trans-unit> 2309 </trans-unit>
2331 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 2310 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -2395,41 +2374,6 @@ Kiam vi alÅutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos
2395 <context context-type="linenumber">1</context> 2374 <context context-type="linenumber">1</context>
2396 </context-group> 2375 </context-group>
2397 </trans-unit> 2376 </trans-unit>
2398 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
2399 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
2400 <target>Vi agordis propran <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target>
2401 <context-group name="null">
2402 <context context-type="linenumber">1</context>
2403 </context-group>
2404 </trans-unit>
2405 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
2406 <source>This could lead to security issues or bugs if you do not understand it. </source>
2407 <target>Tio ĉi povas estigi sekurecajn problemojn aÅ­ erarojn, se vi ne komprenas Äin.</target>
2408 <context-group name="null">
2409 <context context-type="linenumber">1</context>
2410 </context-group>
2411 </trans-unit>
2412 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
2413 <source>Are you sure you want to update the configuration?</source>
2414 <target>Ĉu vi certe volas Äisdatigi la agordon?</target>
2415 <context-group name="null">
2416 <context context-type="linenumber">1</context>
2417 </context-group>
2418 </trans-unit>
2419 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
2420 <source>Please type</source>
2421 <target>Bonvolu tajpi</target>
2422 <context-group name="null">
2423 <context context-type="linenumber">1</context>
2424 </context-group>
2425 </trans-unit>
2426 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
2427 <source>to confirm.</source>
2428 <target>por konfirmi.</target>
2429 <context-group name="null">
2430 <context context-type="linenumber">1</context>
2431 </context-group>
2432 </trans-unit>
2433 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 2377 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
2434 <source>Success</source> 2378 <source>Success</source>
2435 <target>Sukceso</target> 2379 <target>Sukceso</target>
@@ -2549,13 +2493,6 @@ Kiam vi alÅutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos
2549 <context context-type="linenumber">1</context> 2493 <context context-type="linenumber">1</context>
2550 </context-group> 2494 </context-group>
2551 </trans-unit> 2495 </trans-unit>
2552 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
2553 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
2554 <target>Uzanto <x id="INTERPOLATION" equiv-text="{{username}}"/> forigita.</target>
2555 <context-group name="null">
2556 <context context-type="linenumber">1</context>
2557 </context-group>
2558 </trans-unit>
2559 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc"> 2496 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc">
2560 <source>Password updated.</source> 2497 <source>Password updated.</source>
2561 <target>Pasvorto Äisdatigita.</target> 2498 <target>Pasvorto Äisdatigita.</target>
@@ -3741,6 +3678,13 @@ Kiam vi alÅutos filmon al tiu ĉi kanalo, la kampo pri subteno memfare enhavos
3741 <context context-type="linenumber">1</context> 3678 <context context-type="linenumber">1</context>
3742 </context-group> 3679 </context-group>
3743 </trans-unit> 3680 </trans-unit>
3681 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3682 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3683 <target>Uzanto <x id="INTERPOLATION" equiv-text="{{username}}"/> forigita.</target>
3684 <context-group name="null">
3685 <context context-type="linenumber">1</context>
3686 </context-group>
3687 </trans-unit>
3744 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 3688 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
3745 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 3689 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
3746 <target>Peto estas tro granda por la servilo. Bonvolu kontakti vian administranton se vi volas pligrandigi la limon.</target> 3690 <target>Peto estas tro granda por la servilo. Bonvolu kontakti vian administranton se vi volas pligrandigi la limon.</target>
diff --git a/client/src/locale/target/angular_es_ES.xml b/client/src/locale/target/angular_es_ES.xml
index 1c64ac9a9..a44b06b84 100644
--- a/client/src/locale/target/angular_es_ES.xml
+++ b/client/src/locale/target/angular_es_ES.xml
@@ -14,7 +14,7 @@
14 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 14 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
15 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizaciones</target> 15 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizaciones</target>
16 <context-group name="null"> 16 <context-group name="null">
17 <context context-type="linenumber">13</context> 17 <context context-type="linenumber">16</context>
18 </context-group> 18 </context-group>
19 </trans-unit> 19 </trans-unit>
20 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 20 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -28,7 +28,7 @@
28 <source>Edit</source> 28 <source>Edit</source>
29 <target>Modificar</target> 29 <target>Modificar</target>
30 <context-group name="null"> 30 <context-group name="null">
31 <context context-type="linenumber">5</context> 31 <context context-type="linenumber">1</context>
32 </context-group> 32 </context-group>
33 </trans-unit> 33 </trans-unit>
34 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 34 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -56,7 +56,14 @@
56 <source>Video quota</source> 56 <source>Video quota</source>
57 <target>Cuota de vídeo</target> 57 <target>Cuota de vídeo</target>
58 <context-group name="null"> 58 <context-group name="null">
59 <context context-type="linenumber">19</context> 59 <context context-type="linenumber">42</context>
60 </context-group>
61 </trans-unit>
62 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
63 <source>Reason...</source>
64 <target>Motivo...</target>
65 <context-group name="null">
66 <context context-type="linenumber">11</context>
60 </context-group> 67 </context-group>
61 </trans-unit> 68 </trans-unit>
62 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 69 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
@@ -241,13 +248,6 @@ Iniciar sesión</target>
241 <context context-type="linenumber">6</context> 248 <context context-type="linenumber">6</context>
242 </context-group> 249 </context-group>
243 </trans-unit> 250 </trans-unit>
244 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
245 <source>Filters</source>
246 <target>Filtros</target>
247 <context-group name="null">
248 <context context-type="linenumber">16</context>
249 </context-group>
250 </trans-unit>
251 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 251 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
252 <source> 252 <source>
253 No results found 253 No results found
@@ -256,7 +256,7 @@ Iniciar sesión</target>
256 No hubo resultados 256 No hubo resultados
257 </target> 257 </target>
258 <context-group name="null"> 258 <context-group name="null">
259 <context context-type="linenumber">25</context> 259 <context context-type="linenumber">28</context>
260 </context-group> 260 </context-group>
261 </trans-unit> 261 </trans-unit>
262 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 262 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -424,14 +424,14 @@ Iniciar sesión</target>
424 <source>No results.</source> 424 <source>No results.</source>
425 <target> Ningún resultados</target> 425 <target> Ningún resultados</target>
426 <context-group name="null"> 426 <context-group name="null">
427 <context context-type="linenumber">7</context> 427 <context context-type="linenumber">17</context>
428 </context-group> 428 </context-group>
429 </trans-unit> 429 </trans-unit>
430 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b"> 430 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b">
431 <source>Instance</source> 431 <source>Instance</source>
432 <target>Nodo</target> 432 <target>Nodo</target>
433 <context-group name="null"> 433 <context-group name="null">
434 <context context-type="linenumber">8</context> 434 <context context-type="linenumber">12</context>
435 </context-group> 435 </context-group>
436 </trans-unit> 436 </trans-unit>
437 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 437 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -776,14 +776,14 @@ Iniciar sesión</target>
776 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 776 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
777 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> suscriptores</target> 777 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> suscriptores</target>
778 <context-group name="null"> 778 <context-group name="null">
779 <context context-type="linenumber">12</context> 779 <context context-type="linenumber">24</context>
780 </context-group> 780 </context-group>
781 </trans-unit> 781 </trans-unit>
782 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 782 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
783 <source>Video channels</source> 783 <source>Video channels</source>
784 <target>Canales de vídeo</target> 784 <target>Canales de vídeo</target>
785 <context-group name="null"> 785 <context-group name="null">
786 <context context-type="linenumber">19</context> 786 <context context-type="linenumber">31</context>
787 </context-group> 787 </context-group>
788 </trans-unit> 788 </trans-unit>
789 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 789 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -912,13 +912,6 @@ Iniciar sesión</target>
912 <context context-type="linenumber">42</context> 912 <context context-type="linenumber">42</context>
913 </context-group> 913 </context-group>
914 </trans-unit> 914 </trans-unit>
915 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
916 <source>Video import with HTTP enabled</source>
917 <target>Importar video con HTTP activado</target>
918 <context-group name="null">
919 <context context-type="linenumber">115</context>
920 </context-group>
921 </trans-unit>
922 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 915 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
923 <source>Video import with a torrent file or a magnet URI enabled</source> 916 <source>Video import with a torrent file or a magnet URI enabled</source>
924 <target>Importar video con un archivo torrent o un enlace magnet activado</target> 917 <target>Importar video con un archivo torrent o un enlace magnet activado</target>
@@ -1174,14 +1167,14 @@ Iniciar sesión</target>
1174 <source>Score</source> 1167 <source>Score</source>
1175 <target>Puntuación</target> 1168 <target>Puntuación</target>
1176 <context-group name="null"> 1169 <context-group name="null">
1177 <context context-type="linenumber">8</context> 1170 <context context-type="linenumber">17</context>
1178 </context-group> 1171 </context-group>
1179 </trans-unit> 1172 </trans-unit>
1180 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1173 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1181 <source>Host</source> 1174 <source>Host</source>
1182 <target>Host</target> 1175 <target>Host</target>
1183 <context-group name="null"> 1176 <context-group name="null">
1184 <context context-type="linenumber">8</context> 1177 <context context-type="linenumber">19</context>
1185 </context-group> 1178 </context-group>
1186 </trans-unit> 1179 </trans-unit>
1187 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1180 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1286,7 +1279,7 @@ Iniciar sesión</target>
1286 <source>Role</source> 1279 <source>Role</source>
1287 <target>Rol</target> 1280 <target>Rol</target>
1288 <context-group name="null"> 1281 <context-group name="null">
1289 <context context-type="linenumber">20</context> 1282 <context context-type="linenumber">43</context>
1290 </context-group> 1283 </context-group>
1291 </trans-unit> 1284 </trans-unit>
1292 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1285 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1302,13 +1295,6 @@ Iniciar sesión</target>
1302 <context context-type="linenumber">65</context> 1295 <context context-type="linenumber">65</context>
1303 </context-group> 1296 </context-group>
1304 </trans-unit> 1297 </trans-unit>
1305 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1306 <source>Reason...</source>
1307 <target>Motivo...</target>
1308 <context-group name="null">
1309 <context context-type="linenumber">11</context>
1310 </context-group>
1311 </trans-unit>
1312 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1298 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1313 <source>Users list</source> 1299 <source>Users list</source>
1314 <target>Lista de usuarios</target> 1300 <target>Lista de usuarios</target>
@@ -1320,7 +1306,14 @@ Iniciar sesión</target>
1320 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1306 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1321 <target>Nombre de usuario <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1307 <target>Nombre de usuario <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1322 <context-group name="null"> 1308 <context-group name="null">
1323 <context context-type="linenumber">17</context> 1309 <context context-type="linenumber">40</context>
1310 </context-group>
1311 </trans-unit>
1312 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1313 <source>Go to the account page</source>
1314 <target>Ir a la página de la cuenta</target>
1315 <context-group name="null">
1316 <context context-type="linenumber">133</context>
1324 </context-group> 1317 </context-group>
1325 </trans-unit> 1318 </trans-unit>
1326 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2"> 1319 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2">
@@ -1514,14 +1507,14 @@ Cuando subas un vídeo a este canal, el campo de soporte del vídeo se rellenarÃ
1514 <source>Automatically plays video</source> 1507 <source>Automatically plays video</source>
1515 <target>Reproducir vídeo automáticamente</target> 1508 <target>Reproducir vídeo automáticamente</target>
1516 <context-group name="null"> 1509 <context-group name="null">
1517 <context context-type="linenumber">20</context> 1510 <context context-type="linenumber">25</context>
1518 </context-group> 1511 </context-group>
1519 </trans-unit> 1512 </trans-unit>
1520 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 1513 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
1521 <source>Save</source> 1514 <source>Save</source>
1522 <target>Guardar</target> 1515 <target>Guardar</target>
1523 <context-group name="null"> 1516 <context-group name="null">
1524 <context context-type="linenumber">23</context> 1517 <context context-type="linenumber">28</context>
1525 </context-group> 1518 </context-group>
1526 </trans-unit> 1519 </trans-unit>
1527 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 1520 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2052,13 +2045,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac
2052 <context context-type="linenumber">123</context> 2045 <context context-type="linenumber">123</context>
2053 </context-group> 2046 </context-group>
2054 </trans-unit> 2047 </trans-unit>
2055 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
2056 <source>Go to the account page</source>
2057 <target>Ir a la página de la cuenta</target>
2058 <context-group name="null">
2059 <context context-type="linenumber">133</context>
2060 </context-group>
2061 </trans-unit>
2062 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 2048 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
2063 <source>Show more</source> 2049 <source>Show more</source>
2064 <target>Mostrar más</target> 2050 <target>Mostrar más</target>
@@ -2109,25 +2095,18 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac
2109 <context context-type="linenumber">3</context> 2095 <context context-type="linenumber">3</context>
2110 </context-group> 2096 </context-group>
2111 </trans-unit> 2097 </trans-unit>
2112 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
2113 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
2114 <target>Puedes comentar bien a través de la página de tu nodo donde este vídeo está federado con tu cuenta de PeerTube, o bien a través de cualquier instancia del fediverso equipada con ActivityPub. Por ejemplo, con Mastodon o Pleroma puede escribir en la caja de búsqueda &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; y encontrar el vídeo. Estamos trabajando en la capacidad de comentar directamente en &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
2115 <context-group name="null">
2116 <context context-type="linenumber">8</context>
2117 </context-group>
2118 </trans-unit>
2119 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 2098 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
2120 <source>No comments.</source> 2099 <source>No comments.</source>
2121 <target>No hay comentarios</target> 2100 <target>No hay comentarios</target>
2122 <context-group name="null"> 2101 <context-group name="null">
2123 <context context-type="linenumber">18</context> 2102 <context context-type="linenumber">17</context>
2124 </context-group> 2103 </context-group>
2125 </trans-unit> 2104 </trans-unit>
2126 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 2105 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
2127 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 2106 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
2128 <target>Ver las <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> respuestas</target> 2107 <target>Ver las <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> respuestas</target>
2129 <context-group name="null"> 2108 <context-group name="null">
2130 <context context-type="linenumber">55</context> 2109 <context context-type="linenumber">54</context>
2131 </context-group> 2110 </context-group>
2132 </trans-unit> 2111 </trans-unit>
2133 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 2112 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -2138,7 +2117,7 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac
2138 Los comentarios están inhabilitados. 2117 Los comentarios están inhabilitados.
2139 </target> 2118 </target>
2140 <context-group name="null"> 2119 <context-group name="null">
2141 <context context-type="linenumber">64</context> 2120 <context context-type="linenumber">63</context>
2142 </context-group> 2121 </context-group>
2143 </trans-unit> 2122 </trans-unit>
2144 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 2123 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -2208,41 +2187,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac
2208 <context context-type="linenumber">1</context> 2187 <context context-type="linenumber">1</context>
2209 </context-group> 2188 </context-group>
2210 </trans-unit> 2189 </trans-unit>
2211 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
2212 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
2213 <target>Ajustaste de forma personalizada <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target>
2214 <context-group name="null">
2215 <context context-type="linenumber">1</context>
2216 </context-group>
2217 </trans-unit>
2218 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
2219 <source>This could lead to security issues or bugs if you do not understand it. </source>
2220 <target>Esto podría provocar problemas de seguridad o bugs si no lo entiendes. </target>
2221 <context-group name="null">
2222 <context context-type="linenumber">1</context>
2223 </context-group>
2224 </trans-unit>
2225 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
2226 <source>Are you sure you want to update the configuration?</source>
2227 <target>¿Estás seguro de que quieres actualizar la configuración?</target>
2228 <context-group name="null">
2229 <context context-type="linenumber">1</context>
2230 </context-group>
2231 </trans-unit>
2232 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
2233 <source>Please type</source>
2234 <target>Por favor escribe</target>
2235 <context-group name="null">
2236 <context context-type="linenumber">1</context>
2237 </context-group>
2238 </trans-unit>
2239 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
2240 <source>to confirm.</source>
2241 <target>para confirmar.</target>
2242 <context-group name="null">
2243 <context context-type="linenumber">1</context>
2244 </context-group>
2245 </trans-unit>
2246 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 2190 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
2247 <source>Success</source> 2191 <source>Success</source>
2248 <target>Correcto</target> 2192 <target>Correcto</target>
@@ -2362,13 +2306,6 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac
2362 <context context-type="linenumber">1</context> 2306 <context context-type="linenumber">1</context>
2363 </context-group> 2307 </context-group>
2364 </trans-unit> 2308 </trans-unit>
2365 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
2366 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
2367 <target>Usuario <x id="INTERPOLATION" equiv-text="{{username}}"/> eliminado.</target>
2368 <context-group name="null">
2369 <context context-type="linenumber">1</context>
2370 </context-group>
2371 </trans-unit>
2372 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc"> 2309 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc">
2373 <source>Password updated.</source> 2310 <source>Password updated.</source>
2374 <target>Contraseña actualizada.</target> 2311 <target>Contraseña actualizada.</target>
@@ -3561,6 +3498,13 @@ Enhorabuena, el vídeo sera importado con BitTorrent! Ya puedes añadir informac
3561 <context context-type="linenumber">1</context> 3498 <context context-type="linenumber">1</context>
3562 </context-group> 3499 </context-group>
3563 </trans-unit> 3500 </trans-unit>
3501 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3502 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3503 <target>Usuario <x id="INTERPOLATION" equiv-text="{{username}}"/> eliminado.</target>
3504 <context-group name="null">
3505 <context context-type="linenumber">1</context>
3506 </context-group>
3507 </trans-unit>
3564 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 3508 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
3565 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 3509 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
3566 <target>La petición es demasiado grande para el servidor. Por favor contacta con tu administrador si quieres aumentar el límite de tamaño.</target> 3510 <target>La petición es demasiado grande para el servidor. Por favor contacta con tu administrador si quieres aumentar el límite de tamaño.</target>
diff --git a/client/src/locale/target/angular_eu_ES.xml b/client/src/locale/target/angular_eu_ES.xml
index 20046ea3f..d47093717 100644
--- a/client/src/locale/target/angular_eu_ES.xml
+++ b/client/src/locale/target/angular_eu_ES.xml
@@ -217,7 +217,7 @@
217 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 217 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
218 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> ikustaldi</target> 218 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> ikustaldi</target>
219 <context-group name="null"> 219 <context-group name="null">
220 <context context-type="linenumber">13</context> 220 <context context-type="linenumber">16</context>
221 </context-group> 221 </context-group>
222 </trans-unit> 222 </trans-unit>
223 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 223 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -231,7 +231,7 @@
231 <source>Edit</source> 231 <source>Edit</source>
232 <target>Editatu</target> 232 <target>Editatu</target>
233 <context-group name="null"> 233 <context-group name="null">
234 <context context-type="linenumber">5</context> 234 <context context-type="linenumber">1</context>
235 </context-group> 235 </context-group>
236 </trans-unit> 236 </trans-unit>
237 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 237 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -259,7 +259,7 @@
259 <source>Video quota</source> 259 <source>Video quota</source>
260 <target>Bideo-kuota</target> 260 <target>Bideo-kuota</target>
261 <context-group name="null"> 261 <context-group name="null">
262 <context context-type="linenumber">19</context> 262 <context context-type="linenumber">42</context>
263 </context-group> 263 </context-group>
264 </trans-unit> 264 </trans-unit>
265 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 265 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -273,6 +273,38 @@
273 <context context-type="linenumber">14</context> 273 <context context-type="linenumber">14</context>
274 </context-group> 274 </context-group>
275 </trans-unit> 275 </trans-unit>
276 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
277 <source>Ban</source>
278 <target>Debekatu</target>
279 <context-group name="null">
280 <context context-type="linenumber">3</context>
281 </context-group>
282 </trans-unit>
283 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
284 <source>Reason...</source>
285 <target>Arrazoia...</target>
286 <context-group name="null">
287 <context context-type="linenumber">11</context>
288 </context-group>
289 </trans-unit>
290 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
291 <source>
292 A banned user will no longer be able to login.
293 </source>
294 <target>
295 Debekatutako erabiltzaile batek ezin izango du saioa hasi.
296 </target>
297 <context-group name="null">
298 <context context-type="linenumber">17</context>
299 </context-group>
300 </trans-unit>
301 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
302 <source>Ban this user</source>
303 <target>Debekatu erabiltzaile hau</target>
304 <context-group name="null">
305 <context context-type="linenumber">25</context>
306 </context-group>
307 </trans-unit>
276 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 308 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
277 <source> 309 <source>
278 Login 310 Login
@@ -479,13 +511,6 @@
479 <context context-type="linenumber">6</context> 511 <context context-type="linenumber">6</context>
480 </context-group> 512 </context-group>
481 </trans-unit> 513 </trans-unit>
482 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
483 <source>Filters</source>
484 <target>Iragazkiak</target>
485 <context-group name="null">
486 <context context-type="linenumber">16</context>
487 </context-group>
488 </trans-unit>
489 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 514 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
490 <source> 515 <source>
491 No results found 516 No results found
@@ -494,21 +519,21 @@
494 Ez da emaitzarik aurkitu 519 Ez da emaitzarik aurkitu
495 </target> 520 </target>
496 <context-group name="null"> 521 <context-group name="null">
497 <context context-type="linenumber">25</context> 522 <context context-type="linenumber">28</context>
498 </context-group> 523 </context-group>
499 </trans-unit> 524 </trans-unit>
500 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 525 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
501 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 526 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
502 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> harpidedun</target> 527 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> harpidedun</target>
503 <context-group name="null"> 528 <context-group name="null">
504 <context context-type="linenumber">41</context> 529 <context context-type="linenumber">44</context>
505 </context-group> 530 </context-group>
506 </trans-unit> 531 </trans-unit>
507 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 532 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
508 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 533 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
509 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> ikustaldi</target> 534 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> ikustaldi</target>
510 <context-group name="null"> 535 <context-group name="null">
511 <context context-type="linenumber">52</context> 536 <context context-type="linenumber">55</context>
512 </context-group> 537 </context-group>
513 </trans-unit> 538 </trans-unit>
514 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 539 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -741,7 +766,7 @@
741 <source>No results.</source> 766 <source>No results.</source>
742 <target>Emaitzarik ez.</target> 767 <target>Emaitzarik ez.</target>
743 <context-group name="null"> 768 <context-group name="null">
744 <context context-type="linenumber">7</context> 769 <context context-type="linenumber">17</context>
745 </context-group> 770 </context-group>
746 </trans-unit> 771 </trans-unit>
747 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 772 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -778,7 +803,7 @@
778 <source>Instance</source> 803 <source>Instance</source>
779 <target>Instantzia</target> 804 <target>Instantzia</target>
780 <context-group name="null"> 805 <context-group name="null">
781 <context context-type="linenumber">8</context> 806 <context context-type="linenumber">12</context>
782 </context-group> 807 </context-group>
783 </trans-unit> 808 </trans-unit>
784 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 809 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -1119,14 +1144,14 @@ Erabiltzaile berriek izena ematea ez da onartzen orain.</target>
1119 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1144 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1120 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> harpidedun</target> 1145 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> harpidedun</target>
1121 <context-group name="null"> 1146 <context-group name="null">
1122 <context context-type="linenumber">12</context> 1147 <context context-type="linenumber">24</context>
1123 </context-group> 1148 </context-group>
1124 </trans-unit> 1149 </trans-unit>
1125 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1150 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1126 <source>Video channels</source> 1151 <source>Video channels</source>
1127 <target>Bideo kanalak</target> 1152 <target>Bideo kanalak</target>
1128 <context-group name="null"> 1153 <context-group name="null">
1129 <context context-type="linenumber">19</context> 1154 <context context-type="linenumber">31</context>
1130 </context-group> 1155 </context-group>
1131 </trans-unit> 1156 </trans-unit>
1132 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1157 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1269,13 +1294,6 @@ Erabiltzaile berriek izena ematea ez da onartzen orain.</target>
1269 <context context-type="linenumber">42</context> 1294 <context context-type="linenumber">42</context>
1270 </context-group> 1295 </context-group>
1271 </trans-unit> 1296 </trans-unit>
1272 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1273 <source>Video import with HTTP enabled</source>
1274 <target>Bideoa HTTP bidez inportatzea gaituta</target>
1275 <context-group name="null">
1276 <context context-type="linenumber">115</context>
1277 </context-group>
1278 </trans-unit>
1279 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1297 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1280 <source>Video import with a torrent file or a magnet URI enabled</source> 1298 <source>Video import with a torrent file or a magnet URI enabled</source>
1281 <target>Bideoa torrent fitxategia edo magnet URL bidez inportatzea gaituta</target> 1299 <target>Bideoa torrent fitxategia edo magnet URL bidez inportatzea gaituta</target>
@@ -1599,14 +1617,14 @@ Erabiltzaile berriek izena ematea ez da onartzen orain.</target>
1599 <source>Score</source> 1617 <source>Score</source>
1600 <target>Puntuazioa</target> 1618 <target>Puntuazioa</target>
1601 <context-group name="null"> 1619 <context-group name="null">
1602 <context context-type="linenumber">8</context> 1620 <context context-type="linenumber">17</context>
1603 </context-group> 1621 </context-group>
1604 </trans-unit> 1622 </trans-unit>
1605 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1623 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1606 <source>Host</source> 1624 <source>Host</source>
1607 <target>Ostalaria </target> 1625 <target>Ostalaria </target>
1608 <context-group name="null"> 1626 <context-group name="null">
1609 <context context-type="linenumber">8</context> 1627 <context context-type="linenumber">19</context>
1610 </context-group> 1628 </context-group>
1611 </trans-unit> 1629 </trans-unit>
1612 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1630 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1711,7 +1729,7 @@ Erabiltzaile berriek izena ematea ez da onartzen orain.</target>
1711 <source>Role</source> 1729 <source>Role</source>
1712 <target>Rola</target> 1730 <target>Rola</target>
1713 <context-group name="null"> 1731 <context-group name="null">
1714 <context context-type="linenumber">20</context> 1732 <context context-type="linenumber">43</context>
1715 </context-group> 1733 </context-group>
1716 </trans-unit> 1734 </trans-unit>
1717 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1735 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1734,38 +1752,6 @@ Erabiltzaile berriek izena ematea ez da onartzen orain.</target>
1734 <context context-type="linenumber">72</context> 1752 <context context-type="linenumber">72</context>
1735 </context-group> 1753 </context-group>
1736 </trans-unit> 1754 </trans-unit>
1737 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1738 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1739 <target>Debekatu <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></target>
1740 <context-group name="null">
1741 <context context-type="linenumber">3</context>
1742 </context-group>
1743 </trans-unit>
1744 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1745 <source>Reason...</source>
1746 <target>Arrazoia...</target>
1747 <context-group name="null">
1748 <context context-type="linenumber">11</context>
1749 </context-group>
1750 </trans-unit>
1751 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1752 <source>
1753 A banned user will no longer be able to login.
1754 </source>
1755 <target>
1756 Debekatutako erabiltzaile batek ezin izango du saioa hasi.
1757 </target>
1758 <context-group name="null">
1759 <context context-type="linenumber">17</context>
1760 </context-group>
1761 </trans-unit>
1762 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1763 <source>Ban this user</source>
1764 <target>Debekatu erabiltzaile hau</target>
1765 <context-group name="null">
1766 <context context-type="linenumber">25</context>
1767 </context-group>
1768 </trans-unit>
1769 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1755 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1770 <source>Users list</source> 1756 <source>Users list</source>
1771 <target>Erabiltzaileen zerrenda</target> 1757 <target>Erabiltzaileen zerrenda</target>
@@ -1777,21 +1763,21 @@ Erabiltzaile berriek izena ematea ez da onartzen orain.</target>
1777 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1763 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1778 <target>Erabiltzaile-izena <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1764 <target>Erabiltzaile-izena <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1779 <context-group name="null"> 1765 <context-group name="null">
1780 <context context-type="linenumber">17</context> 1766 <context context-type="linenumber">40</context>
1781 </context-group> 1767 </context-group>
1782 </trans-unit> 1768 </trans-unit>
1783 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1769 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1784 <source>Actions</source> 1770 <source>Go to the account page</source>
1785 <target>Ekintzak</target> 1771 <target>Joan kontuaren orrira</target>
1786 <context-group name="null"> 1772 <context-group name="null">
1787 <context context-type="linenumber">33</context> 1773 <context context-type="linenumber">133</context>
1788 </context-group> 1774 </context-group>
1789 </trans-unit> 1775 </trans-unit>
1790 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1776 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1791 <source>Ban reason:</source> 1777 <source>Ban reason:</source>
1792 <target>Debekatzeko arrazoia:</target> 1778 <target>Debekatzeko arrazoia:</target>
1793 <context-group name="null"> 1779 <context-group name="null">
1794 <context context-type="linenumber">51</context> 1780 <context context-type="linenumber">82</context>
1795 </context-group> 1781 </context-group>
1796 </trans-unit> 1782 </trans-unit>
1797 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1783 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1854,6 +1840,13 @@ Erabiltzaile berriek izena ematea ez da onartzen orain.</target>
1854 <context context-type="linenumber">33</context> 1840 <context context-type="linenumber">33</context>
1855 </context-group> 1841 </context-group>
1856 </trans-unit> 1842 </trans-unit>
1843 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1844 <source>Actions</source>
1845 <target>Ekintzak</target>
1846 <context-group name="null">
1847 <context context-type="linenumber">33</context>
1848 </context-group>
1849 </trans-unit>
1857 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 1850 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1858 <source>Reason:</source> 1851 <source>Reason:</source>
1859 <target>Arrazoia:</target> 1852 <target>Arrazoia:</target>
@@ -1963,7 +1956,7 @@ Erabiltzaile berriek izena ematea ez da onartzen orain.</target>
1963 <source>Ownership changes</source> 1956 <source>Ownership changes</source>
1964 <target>Jabetza aldaketak</target> 1957 <target>Jabetza aldaketak</target>
1965 <context-group name="null"> 1958 <context-group name="null">
1966 <context context-type="linenumber">22</context> 1959 <context context-type="linenumber">33</context>
1967 </context-group> 1960 </context-group>
1968 </trans-unit> 1961 </trans-unit>
1969 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 1962 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2209,14 +2202,14 @@ Kanal honetara bideo bat igotzen duzunean, bideoa babesteko eremua testu honekin
2209 <source>Automatically plays video</source> 2202 <source>Automatically plays video</source>
2210 <target>Automatikoki abiatzen du bideoa</target> 2203 <target>Automatikoki abiatzen du bideoa</target>
2211 <context-group name="null"> 2204 <context-group name="null">
2212 <context context-type="linenumber">20</context> 2205 <context context-type="linenumber">25</context>
2213 </context-group> 2206 </context-group>
2214 </trans-unit> 2207 </trans-unit>
2215 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2208 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2216 <source>Save</source> 2209 <source>Save</source>
2217 <target>Gorde</target> 2210 <target>Gorde</target>
2218 <context-group name="null"> 2211 <context-group name="null">
2219 <context context-type="linenumber">23</context> 2212 <context context-type="linenumber">28</context>
2220 </context-group> 2213 </context-group>
2221 </trans-unit> 2214 </trans-unit>
2222 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2215 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2920,13 +2913,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu.
2920 <context context-type="linenumber">134</context> 2913 <context context-type="linenumber">134</context>
2921 </context-group> 2914 </context-group>
2922 </trans-unit> 2915 </trans-unit>
2923 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
2924 <source>Go to the account page</source>
2925 <target>Joan kontuaren orrira</target>
2926 <context-group name="null">
2927 <context context-type="linenumber">133</context>
2928 </context-group>
2929 </trans-unit>
2930 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 2916 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
2931 <source>Show more</source> 2917 <source>Show more</source>
2932 <target>Erakutsi gehiago</target> 2918 <target>Erakutsi gehiago</target>
@@ -3006,25 +2992,18 @@ Ezin izan dugu bilatzen duzun orria aurkitu.
3006 <context context-type="linenumber">3</context> 2992 <context context-type="linenumber">3</context>
3007 </context-group> 2993 </context-group>
3008 </trans-unit> 2994 </trans-unit>
3009 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
3010 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
3011 <target>Bideo hau zure PeerTube kontuarekin federatzen den zure instantziaren orrian egin dezakezu iruzkina, edo ActivityPub onartzen duen fedibertsoko edozein instantzian. Adibidez Mastodon edo Pleroma instantzietan, bilaketa kutxan &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; idatzi dezakezu bideoa aurkitzeko. Iruzkinak zuzenean egitek aukera garapenean dago: &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
3012 <context-group name="null">
3013 <context context-type="linenumber">8</context>
3014 </context-group>
3015 </trans-unit>
3016 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 2995 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
3017 <source>No comments.</source> 2996 <source>No comments.</source>
3018 <target>Iruzkinik ez.</target> 2997 <target>Iruzkinik ez.</target>
3019 <context-group name="null"> 2998 <context-group name="null">
3020 <context context-type="linenumber">18</context> 2999 <context context-type="linenumber">17</context>
3021 </context-group> 3000 </context-group>
3022 </trans-unit> 3001 </trans-unit>
3023 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 3002 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
3024 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 3003 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
3025 <target>Ikusi <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> erantzun</target> 3004 <target>Ikusi <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> erantzun</target>
3026 <context-group name="null"> 3005 <context-group name="null">
3027 <context context-type="linenumber">55</context> 3006 <context context-type="linenumber">54</context>
3028 </context-group> 3007 </context-group>
3029 </trans-unit> 3008 </trans-unit>
3030 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 3009 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -3035,7 +3014,7 @@ Ezin izan dugu bilatzen duzun orria aurkitu.
3035 Iruzkinak desgaituta daude. 3014 Iruzkinak desgaituta daude.
3036 </target> 3015 </target>
3037 <context-group name="null"> 3016 <context-group name="null">
3038 <context context-type="linenumber">64</context> 3017 <context context-type="linenumber">63</context>
3039 </context-group> 3018 </context-group>
3040 </trans-unit> 3019 </trans-unit>
3041 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 3020 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -3105,41 +3084,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu.
3105 <context context-type="linenumber">1</context> 3084 <context context-type="linenumber">1</context>
3106 </context-group> 3085 </context-group>
3107 </trans-unit> 3086 </trans-unit>
3108 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
3109 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
3110 <target><x id="INTERPOLATION" equiv-text="{{customizationsText}}"/> pertsonalizatua ezarri duzu. </target>
3111 <context-group name="null">
3112 <context context-type="linenumber">1</context>
3113 </context-group>
3114 </trans-unit>
3115 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
3116 <source>This could lead to security issues or bugs if you do not understand it. </source>
3117 <target>Honek segurtasun arazoak edo akatsak ekar litzake egindakoa ulertzen ez baduzu. </target>
3118 <context-group name="null">
3119 <context context-type="linenumber">1</context>
3120 </context-group>
3121 </trans-unit>
3122 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
3123 <source>Are you sure you want to update the configuration?</source>
3124 <target>Ziur konfigurazioa aldatu nahi duzula?</target>
3125 <context-group name="null">
3126 <context context-type="linenumber">1</context>
3127 </context-group>
3128 </trans-unit>
3129 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
3130 <source>Please type</source>
3131 <target>Idatzi</target>
3132 <context-group name="null">
3133 <context context-type="linenumber">1</context>
3134 </context-group>
3135 </trans-unit>
3136 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
3137 <source>to confirm.</source>
3138 <target>berresteko.</target>
3139 <context-group name="null">
3140 <context context-type="linenumber">1</context>
3141 </context-group>
3142 </trans-unit>
3143 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 3087 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
3144 <source>Success</source> 3088 <source>Success</source>
3145 <target>Arrakasta</target> 3089 <target>Arrakasta</target>
@@ -3301,20 +3245,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu.
3301 <context context-type="linenumber">1</context> 3245 <context context-type="linenumber">1</context>
3302 </context-group> 3246 </context-group>
3303 </trans-unit> 3247 </trans-unit>
3304 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
3305 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
3306 <target><x id="INTERPOLATION" equiv-text="{{username}}"/> erabiltzailea debekatuta.</target>
3307 <context-group name="null">
3308 <context context-type="linenumber">1</context>
3309 </context-group>
3310 </trans-unit>
3311 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3312 <source>Ban</source>
3313 <target>Debekatu</target>
3314 <context-group name="null">
3315 <context context-type="linenumber">1</context>
3316 </context-group>
3317 </trans-unit>
3318 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 3248 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3319 <source>Unban</source> 3249 <source>Unban</source>
3320 <target>Kendu debekua</target> 3250 <target>Kendu debekua</target>
@@ -3329,20 +3259,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu.
3329 <context context-type="linenumber">1</context> 3259 <context context-type="linenumber">1</context>
3330 </context-group> 3260 </context-group>
3331 </trans-unit> 3261 </trans-unit>
3332 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
3333 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
3334 <target>Ziur zaude <x id="INTERPOLATION" equiv-text="{{username}}"/> erabiltzaileari debekua kendu nahi diozula?</target>
3335 <context-group name="null">
3336 <context context-type="linenumber">1</context>
3337 </context-group>
3338 </trans-unit>
3339 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
3340 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
3341 <target><x id="INTERPOLATION" equiv-text="{{username}}"/> erabiltzaileari debekua kendu zaio.</target>
3342 <context-group name="null">
3343 <context context-type="linenumber">1</context>
3344 </context-group>
3345 </trans-unit>
3346 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 3262 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
3347 <source>You cannot delete root.</source> 3263 <source>You cannot delete root.</source>
3348 <target>Ezin duzu erroa ezabatu.</target> 3264 <target>Ezin duzu erroa ezabatu.</target>
@@ -3350,13 +3266,6 @@ Ezin izan dugu bilatzen duzun orria aurkitu.
3350 <context context-type="linenumber">1</context> 3266 <context context-type="linenumber">1</context>
3351 </context-group> 3267 </context-group>
3352 </trans-unit> 3268 </trans-unit>
3353 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3354 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3355 <target><x id="INTERPOLATION" equiv-text="{{username}}"/> erabiltzailea ezabatuta.</target>
3356 <context-group name="null">
3357 <context context-type="linenumber">1</context>
3358 </context-group>
3359 </trans-unit>
3360 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e"> 3269 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3361 <source>Ownership accepted</source> 3270 <source>Ownership accepted</source>
3362 <target>Jabetza onartuta</target> 3271 <target>Jabetza onartuta</target>
@@ -4731,6 +4640,34 @@ Ezin izan dugu bilatzen duzun orria aurkitu.
4731 <context context-type="linenumber">1</context> 4640 <context context-type="linenumber">1</context>
4732 </context-group> 4641 </context-group>
4733 </trans-unit> 4642 </trans-unit>
4643 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
4644 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
4645 <target><x id="INTERPOLATION" equiv-text="{{username}}"/> erabiltzailea debekatuta.</target>
4646 <context-group name="null">
4647 <context context-type="linenumber">1</context>
4648 </context-group>
4649 </trans-unit>
4650 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
4651 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
4652 <target>Ziur zaude <x id="INTERPOLATION" equiv-text="{{username}}"/> erabiltzaileari debekua kendu nahi diozula?</target>
4653 <context-group name="null">
4654 <context context-type="linenumber">1</context>
4655 </context-group>
4656 </trans-unit>
4657 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
4658 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
4659 <target><x id="INTERPOLATION" equiv-text="{{username}}"/> erabiltzaileari debekua kendu zaio.</target>
4660 <context-group name="null">
4661 <context context-type="linenumber">1</context>
4662 </context-group>
4663 </trans-unit>
4664 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
4665 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
4666 <target><x id="INTERPOLATION" equiv-text="{{username}}"/> erabiltzailea ezabatuta.</target>
4667 <context-group name="null">
4668 <context context-type="linenumber">1</context>
4669 </context-group>
4670 </trans-unit>
4734 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 4671 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
4735 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 4672 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
4736 <target>Eskaria luzeegia da zerbitzariarentzat. Jarri zure administratzailearekin kontaktuan muga handitu nahi baduzu.</target> 4673 <target>Eskaria luzeegia da zerbitzariarentzat. Jarri zure administratzailearekin kontaktuan muga handitu nahi baduzu.</target>
diff --git a/client/src/locale/target/angular_fa_IR.xml b/client/src/locale/target/angular_fa_IR.xml
index 149b4019a..8a965cf62 100644
--- a/client/src/locale/target/angular_fa_IR.xml
+++ b/client/src/locale/target/angular_fa_IR.xml
@@ -224,7 +224,7 @@
224 <source>Edit</source> 224 <source>Edit</source>
225 <target>ویرایش</target> 225 <target>ویرایش</target>
226 <context-group name="null"> 226 <context-group name="null">
227 <context context-type="linenumber">5</context> 227 <context context-type="linenumber">1</context>
228 </context-group> 228 </context-group>
229 </trans-unit> 229 </trans-unit>
230 <trans-unit id="f82f53a2544638939a8ba93c0fb1b0a4419c3196"> 230 <trans-unit id="f82f53a2544638939a8ba93c0fb1b0a4419c3196">
@@ -241,6 +241,13 @@
241 <context context-type="linenumber">19</context> 241 <context context-type="linenumber">19</context>
242 </context-group> 242 </context-group>
243 </trans-unit> 243 </trans-unit>
244 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
245 <source>Reason...</source>
246 <target>دلیل...</target>
247 <context-group name="null">
248 <context context-type="linenumber">11</context>
249 </context-group>
250 </trans-unit>
244 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 251 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
245 <source> 252 <source>
246 Login 253 Login
@@ -389,13 +396,6 @@
389 <context context-type="linenumber">88</context> 396 <context context-type="linenumber">88</context>
390 </context-group> 397 </context-group>
391 </trans-unit> 398 </trans-unit>
392 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
393 <source>Filters</source>
394 <target>Ùیلتر‌ها</target>
395 <context-group name="null">
396 <context context-type="linenumber">16</context>
397 </context-group>
398 </trans-unit>
399 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 399 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
400 <source> 400 <source>
401 No results found 401 No results found
@@ -404,7 +404,7 @@
404 نتیجه‌ای یاÙت نشد 404 نتیجه‌ای یاÙت نشد
405 </target> 405 </target>
406 <context-group name="null"> 406 <context-group name="null">
407 <context context-type="linenumber">25</context> 407 <context context-type="linenumber">28</context>
408 </context-group> 408 </context-group>
409 </trans-unit> 409 </trans-unit>
410 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 410 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -615,7 +615,7 @@
615 <source>No results.</source> 615 <source>No results.</source>
616 <target>بدون نتیجه.</target> 616 <target>بدون نتیجه.</target>
617 <context-group name="null"> 617 <context-group name="null">
618 <context context-type="linenumber">7</context> 618 <context context-type="linenumber">17</context>
619 </context-group> 619 </context-group>
620 </trans-unit> 620 </trans-unit>
621 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 621 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -753,14 +753,14 @@
753 <source>Score</source> 753 <source>Score</source>
754 <target>امتیاز</target> 754 <target>امتیاز</target>
755 <context-group name="null"> 755 <context-group name="null">
756 <context context-type="linenumber">8</context> 756 <context context-type="linenumber">17</context>
757 </context-group> 757 </context-group>
758 </trans-unit> 758 </trans-unit>
759 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 759 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
760 <source>Host</source> 760 <source>Host</source>
761 <target>میزبان</target> 761 <target>میزبان</target>
762 <context-group name="null"> 762 <context-group name="null">
763 <context context-type="linenumber">8</context> 763 <context context-type="linenumber">19</context>
764 </context-group> 764 </context-group>
765 </trans-unit> 765 </trans-unit>
766 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 766 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -800,14 +800,7 @@
800 <source>Role</source> 800 <source>Role</source>
801 <target>نقش</target> 801 <target>نقش</target>
802 <context-group name="null"> 802 <context-group name="null">
803 <context context-type="linenumber">20</context> 803 <context context-type="linenumber">43</context>
804 </context-group>
805 </trans-unit>
806 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
807 <source>Reason...</source>
808 <target>دلیل...</target>
809 <context-group name="null">
810 <context context-type="linenumber">11</context>
811 </context-group> 804 </context-group>
812 </trans-unit> 805 </trans-unit>
813 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 806 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
diff --git a/client/src/locale/target/angular_fr_FR.xml b/client/src/locale/target/angular_fr_FR.xml
index 2db81316b..bf9b7c762 100644
--- a/client/src/locale/target/angular_fr_FR.xml
+++ b/client/src/locale/target/angular_fr_FR.xml
@@ -231,7 +231,7 @@
231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> vues</target> 232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> vues</target>
233 <context-group name="null"> 233 <context-group name="null">
234 <context context-type="linenumber">13</context> 234 <context context-type="linenumber">16</context>
235 </context-group> 235 </context-group>
236 </trans-unit> 236 </trans-unit>
237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -245,7 +245,7 @@
245 <source>Edit</source> 245 <source>Edit</source>
246 <target>Modifier</target> 246 <target>Modifier</target>
247 <context-group name="null"> 247 <context-group name="null">
248 <context context-type="linenumber">5</context> 248 <context context-type="linenumber">1</context>
249 </context-group> 249 </context-group>
250 </trans-unit> 250 </trans-unit>
251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -301,6 +301,13 @@
301 <context context-type="linenumber">18</context> 301 <context context-type="linenumber">18</context>
302 </context-group> 302 </context-group>
303 </trans-unit> 303 </trans-unit>
304 <trans-unit id="9b3287f52c239cad05ec98391553e5052ba1aa66">
305 <source>Using an ActivityPub account</source>
306 <target>En utilisant un compte ActivityPub</target>
307 <context-group name="null">
308 <context context-type="linenumber">36</context>
309 </context-group>
310 </trans-unit>
304 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3"> 311 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3">
305 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source> 312 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source>
306 <target>S'abonner avec un compte sur <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></target> 313 <target>S'abonner avec un compte sur <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></target>
@@ -315,6 +322,13 @@
315 <context context-type="linenumber">40</context> 322 <context context-type="linenumber">40</context>
316 </context-group> 323 </context-group>
317 </trans-unit> 324 </trans-unit>
325 <trans-unit id="5047522cc670b1f4a288bce07f9b1c5061e913ed">
326 <source>Subscribe with a Mastodon account:</source>
327 <target>S'abonner avec un compte Mastodon :</target>
328 <context-group name="null">
329 <context context-type="linenumber">43</context>
330 </context-group>
331 </trans-unit>
318 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1"> 332 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1">
319 <source>Using a syndication feed</source> 333 <source>Using a syndication feed</source>
320 <target>Utilisation d'un flux de syndication</target> 334 <target>Utilisation d'un flux de syndication</target>
@@ -360,7 +374,7 @@
360 <source>Video quota</source> 374 <source>Video quota</source>
361 <target>Quota des vidéos</target> 375 <target>Quota des vidéos</target>
362 <context-group name="null"> 376 <context-group name="null">
363 <context context-type="linenumber">19</context> 377 <context context-type="linenumber">42</context>
364 </context-group> 378 </context-group>
365 </trans-unit> 379 </trans-unit>
366 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 380 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -374,6 +388,38 @@
374 <context context-type="linenumber">14</context> 388 <context context-type="linenumber">14</context>
375 </context-group> 389 </context-group>
376 </trans-unit> 390 </trans-unit>
391 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
392 <source>Ban</source>
393 <target>Bannir</target>
394 <context-group name="null">
395 <context context-type="linenumber">3</context>
396 </context-group>
397 </trans-unit>
398 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
399 <source>Reason...</source>
400 <target>Motivation…</target>
401 <context-group name="null">
402 <context context-type="linenumber">11</context>
403 </context-group>
404 </trans-unit>
405 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
406 <source>
407 A banned user will no longer be able to login.
408 </source>
409 <target>
410 Un utilisateur banni ne sera plus capable de se connecter.
411 </target>
412 <context-group name="null">
413 <context context-type="linenumber">17</context>
414 </context-group>
415 </trans-unit>
416 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
417 <source>Ban this user</source>
418 <target>Bannir cet utilisateur</target>
419 <context-group name="null">
420 <context context-type="linenumber">25</context>
421 </context-group>
422 </trans-unit>
377 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 423 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
378 <source> 424 <source>
379 Login 425 Login
@@ -579,13 +625,6 @@
579 <context context-type="linenumber">6</context> 625 <context context-type="linenumber">6</context>
580 </context-group> 626 </context-group>
581 </trans-unit> 627 </trans-unit>
582 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
583 <source>Filters</source>
584 <target>Filtres</target>
585 <context-group name="null">
586 <context context-type="linenumber">16</context>
587 </context-group>
588 </trans-unit>
589 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 628 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
590 <source> 629 <source>
591 No results found 630 No results found
@@ -594,21 +633,21 @@
594 Aucun résultat trouvé 633 Aucun résultat trouvé
595 </target> 634 </target>
596 <context-group name="null"> 635 <context-group name="null">
597 <context context-type="linenumber">25</context> 636 <context context-type="linenumber">28</context>
598 </context-group> 637 </context-group>
599 </trans-unit> 638 </trans-unit>
600 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 639 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
601 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 640 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
602 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> abonnés</target> 641 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> abonnés</target>
603 <context-group name="null"> 642 <context-group name="null">
604 <context context-type="linenumber">41</context> 643 <context context-type="linenumber">44</context>
605 </context-group> 644 </context-group>
606 </trans-unit> 645 </trans-unit>
607 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 646 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
608 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 647 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
609 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> vues</target> 648 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> vues</target>
610 <context-group name="null"> 649 <context-group name="null">
611 <context context-type="linenumber">52</context> 650 <context context-type="linenumber">55</context>
612 </context-group> 651 </context-group>
613 </trans-unit> 652 </trans-unit>
614 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 653 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -848,7 +887,7 @@
848 <source>No results.</source> 887 <source>No results.</source>
849 <target>Aucun résultat.</target> 888 <target>Aucun résultat.</target>
850 <context-group name="null"> 889 <context-group name="null">
851 <context context-type="linenumber">7</context> 890 <context context-type="linenumber">17</context>
852 </context-group> 891 </context-group>
853 </trans-unit> 892 </trans-unit>
854 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 893 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -862,6 +901,17 @@
862 <context context-type="linenumber">6</context> 901 <context context-type="linenumber">6</context>
863 </context-group> 902 </context-group>
864 </trans-unit> 903 </trans-unit>
904 <trans-unit id="48a5d0af93b94c4575b7f76a47fb3cdee58e6919">
905 <source>
906 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
907 </source>
908 <target>
909 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
910 </target>
911 <context-group name="null">
912 <context context-type="linenumber">14</context>
913 </context-group>
914 </trans-unit>
865 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b"> 915 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b">
866 <source> 916 <source>
867 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/> 917 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>
@@ -885,7 +935,7 @@
885 <source>Instance</source> 935 <source>Instance</source>
886 <target>Instance</target> 936 <target>Instance</target>
887 <context-group name="null"> 937 <context-group name="null">
888 <context context-type="linenumber">8</context> 938 <context context-type="linenumber">12</context>
889 </context-group> 939 </context-group>
890 </trans-unit> 940 </trans-unit>
891 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 941 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -1229,14 +1279,14 @@
1229 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1279 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1230 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> abonnés</target> 1280 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> abonnés</target>
1231 <context-group name="null"> 1281 <context-group name="null">
1232 <context context-type="linenumber">12</context> 1282 <context context-type="linenumber">24</context>
1233 </context-group> 1283 </context-group>
1234 </trans-unit> 1284 </trans-unit>
1235 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1285 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1236 <source>Video channels</source> 1286 <source>Video channels</source>
1237 <target>Chaînes de vidéos</target> 1287 <target>Chaînes de vidéos</target>
1238 <context-group name="null"> 1288 <context-group name="null">
1239 <context context-type="linenumber">19</context> 1289 <context context-type="linenumber">31</context>
1240 </context-group> 1290 </context-group>
1241 </trans-unit> 1291 </trans-unit>
1242 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1292 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1379,13 +1429,6 @@
1379 <context context-type="linenumber">42</context> 1429 <context context-type="linenumber">42</context>
1380 </context-group> 1430 </context-group>
1381 </trans-unit> 1431 </trans-unit>
1382 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1383 <source>Video import with HTTP enabled</source>
1384 <target>Import de vidéo avec HTTP activé</target>
1385 <context-group name="null">
1386 <context context-type="linenumber">115</context>
1387 </context-group>
1388 </trans-unit>
1389 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1432 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1390 <source>Video import with a torrent file or a magnet URI enabled</source> 1433 <source>Video import with a torrent file or a magnet URI enabled</source>
1391 <target>Import de vidéo avec un fichier torrent ou URL magnet activé</target> 1434 <target>Import de vidéo avec un fichier torrent ou URL magnet activé</target>
@@ -1720,14 +1763,14 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé
1720 <source>Score</source> 1763 <source>Score</source>
1721 <target>Score</target> 1764 <target>Score</target>
1722 <context-group name="null"> 1765 <context-group name="null">
1723 <context context-type="linenumber">8</context> 1766 <context context-type="linenumber">17</context>
1724 </context-group> 1767 </context-group>
1725 </trans-unit> 1768 </trans-unit>
1726 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1769 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1727 <source>Host</source> 1770 <source>Host</source>
1728 <target>Hôte</target> 1771 <target>Hôte</target>
1729 <context-group name="null"> 1772 <context-group name="null">
1730 <context context-type="linenumber">8</context> 1773 <context context-type="linenumber">19</context>
1731 </context-group> 1774 </context-group>
1732 </trans-unit> 1775 </trans-unit>
1733 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1776 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1748,21 +1791,21 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé
1748 <source>Accepted</source> 1791 <source>Accepted</source>
1749 <target>Accepté</target> 1792 <target>Accepté</target>
1750 <context-group name="null"> 1793 <context-group name="null">
1751 <context context-type="linenumber">21</context> 1794 <context context-type="linenumber">32</context>
1752 </context-group> 1795 </context-group>
1753 </trans-unit> 1796 </trans-unit>
1754 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506"> 1797 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506">
1755 <source>Pending</source> 1798 <source>Pending</source>
1756 <target>En attente</target> 1799 <target>En attente</target>
1757 <context-group name="null"> 1800 <context-group name="null">
1758 <context context-type="linenumber">22</context> 1801 <context context-type="linenumber">33</context>
1759 </context-group> 1802 </context-group>
1760 </trans-unit> 1803 </trans-unit>
1761 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8"> 1804 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8">
1762 <source>Redundancy allowed</source> 1805 <source>Redundancy allowed</source>
1763 <target>Redondance autorisée</target> 1806 <target>Redondance autorisée</target>
1764 <context-group name="null"> 1807 <context-group name="null">
1765 <context context-type="linenumber">11</context> 1808 <context context-type="linenumber">22</context>
1766 </context-group> 1809 </context-group>
1767 </trans-unit> 1810 </trans-unit>
1768 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479"> 1811 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479">
@@ -1853,7 +1896,7 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé
1853 <source>Role</source> 1896 <source>Role</source>
1854 <target>Rôle</target> 1897 <target>Rôle</target>
1855 <context-group name="null"> 1898 <context-group name="null">
1856 <context context-type="linenumber">20</context> 1899 <context context-type="linenumber">43</context>
1857 </context-group> 1900 </context-group>
1858 </trans-unit> 1901 </trans-unit>
1859 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1902 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1876,38 +1919,6 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé
1876 <context context-type="linenumber">72</context> 1919 <context context-type="linenumber">72</context>
1877 </context-group> 1920 </context-group>
1878 </trans-unit> 1921 </trans-unit>
1879 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1880 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1881 <target>Bannir <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></target>
1882 <context-group name="null">
1883 <context context-type="linenumber">3</context>
1884 </context-group>
1885 </trans-unit>
1886 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1887 <source>Reason...</source>
1888 <target>Motivation…</target>
1889 <context-group name="null">
1890 <context context-type="linenumber">11</context>
1891 </context-group>
1892 </trans-unit>
1893 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1894 <source>
1895 A banned user will no longer be able to login.
1896 </source>
1897 <target>
1898 Un utilisateur banni ne sera plus capable de se connecter.
1899 </target>
1900 <context-group name="null">
1901 <context context-type="linenumber">17</context>
1902 </context-group>
1903 </trans-unit>
1904 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1905 <source>Ban this user</source>
1906 <target>Bannir cet utilisateur</target>
1907 <context-group name="null">
1908 <context context-type="linenumber">25</context>
1909 </context-group>
1910 </trans-unit>
1911 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1922 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1912 <source>Users list</source> 1923 <source>Users list</source>
1913 <target>Liste des utilisateurs</target> 1924 <target>Liste des utilisateurs</target>
@@ -1919,21 +1930,21 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé
1919 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1930 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1920 <target>Identifiant <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1931 <target>Identifiant <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1921 <context-group name="null"> 1932 <context-group name="null">
1922 <context context-type="linenumber">17</context> 1933 <context context-type="linenumber">40</context>
1923 </context-group> 1934 </context-group>
1924 </trans-unit> 1935 </trans-unit>
1925 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1936 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1926 <source>Actions</source> 1937 <source>Go to the account page</source>
1927 <target>Actions</target> 1938 <target>Accéder au profil public de l'utilisateur</target>
1928 <context-group name="null"> 1939 <context-group name="null">
1929 <context context-type="linenumber">33</context> 1940 <context context-type="linenumber">133</context>
1930 </context-group> 1941 </context-group>
1931 </trans-unit> 1942 </trans-unit>
1932 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1943 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1933 <source>Ban reason:</source> 1944 <source>Ban reason:</source>
1934 <target>Raison du bannissement :</target> 1945 <target>Raison du bannissement :</target>
1935 <context-group name="null"> 1946 <context-group name="null">
1936 <context context-type="linenumber">51</context> 1947 <context context-type="linenumber">82</context>
1937 </context-group> 1948 </context-group>
1938 </trans-unit> 1949 </trans-unit>
1939 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1950 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1996,6 +2007,13 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé
1996 <context context-type="linenumber">33</context> 2007 <context context-type="linenumber">33</context>
1997 </context-group> 2008 </context-group>
1998 </trans-unit> 2009 </trans-unit>
2010 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
2011 <source>Actions</source>
2012 <target>Actions</target>
2013 <context-group name="null">
2014 <context context-type="linenumber">33</context>
2015 </context-group>
2016 </trans-unit>
1999 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 2017 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
2000 <source>Reason:</source> 2018 <source>Reason:</source>
2001 <target>Raison :</target> 2019 <target>Raison :</target>
@@ -2105,7 +2123,7 @@ Cochez cette case, sauvegardez la configuration et testez avec l'URL d'une vidé
2105 <source>Ownership changes</source> 2123 <source>Ownership changes</source>
2106 <target>Changements de propriétaires</target> 2124 <target>Changements de propriétaires</target>
2107 <context-group name="null"> 2125 <context-group name="null">
2108 <context context-type="linenumber">22</context> 2126 <context context-type="linenumber">33</context>
2109 </context-group> 2127 </context-group>
2110 </trans-unit> 2128 </trans-unit>
2111 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 2129 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2334,6 +2352,13 @@ Quand vous mettrez en ligne une vidéo sur cette chaîne, la vidéo affichera au
2334 <context context-type="linenumber">30</context> 2352 <context context-type="linenumber">30</context>
2335 </context-group> 2353 </context-group>
2336 </trans-unit> 2354 </trans-unit>
2355 <trans-unit id="0dd390d056411e1709ec97ec51c46d78600e3f7b">
2356 <source>Current password</source>
2357 <target>Mot de passe actuel</target>
2358 <context-group name="null">
2359 <context context-type="linenumber">7</context>
2360 </context-group>
2361 </trans-unit>
2337 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229"> 2362 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229">
2338 <source>New password</source> 2363 <source>New password</source>
2339 <target>Nouveau mot de passe</target> 2364 <target>Nouveau mot de passe</target>
@@ -2359,14 +2384,14 @@ Quand vous mettrez en ligne une vidéo sur cette chaîne, la vidéo affichera au
2359 <source>Automatically plays video</source> 2384 <source>Automatically plays video</source>
2360 <target>Lire automatiquement les vidéos</target> 2385 <target>Lire automatiquement les vidéos</target>
2361 <context-group name="null"> 2386 <context-group name="null">
2362 <context context-type="linenumber">20</context> 2387 <context context-type="linenumber">25</context>
2363 </context-group> 2388 </context-group>
2364 </trans-unit> 2389 </trans-unit>
2365 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2390 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2366 <source>Save</source> 2391 <source>Save</source>
2367 <target>Enregistrer</target> 2392 <target>Enregistrer</target>
2368 <context-group name="null"> 2393 <context-group name="null">
2369 <context context-type="linenumber">23</context> 2394 <context context-type="linenumber">28</context>
2370 </context-group> 2395 </context-group>
2371 </trans-unit> 2396 </trans-unit>
2372 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2397 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2397,6 +2422,13 @@ Quand vous mettrez en ligne une vidéo sur cette chaîne, la vidéo affichera au
2397 <context context-type="linenumber">18</context> 2422 <context context-type="linenumber">18</context>
2398 </context-group> 2423 </context-group>
2399 </trans-unit> 2424 </trans-unit>
2425 <trans-unit id="d1a04ba05116499d4cf59a48a282a8bcbf5b622d">
2426 <source>Once you delete your account, there is no going back. Please be certain.</source>
2427 <target>Une fois votre compte supprimé vous ne pourrez pas revenir en arrière. Soyez sûr de ce que vous faites.</target>
2428 <context-group name="null">
2429 <context context-type="linenumber">2</context>
2430 </context-group>
2431 </trans-unit>
2400 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45"> 2432 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45">
2401 <source>Delete your account</source> 2433 <source>Delete your account</source>
2402 <target>Supprimer votre compte</target> 2434 <target>Supprimer votre compte</target>
@@ -2565,6 +2597,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
2565 <context context-type="linenumber">6</context> 2597 <context context-type="linenumber">6</context>
2566 </context-group> 2598 </context-group>
2567 </trans-unit> 2599 </trans-unit>
2600 <trans-unit id="1b518e7f8c067fa55ea797bb1b35b4a2d31dccbc">
2601 <source>Or</source>
2602 <target>Ou</target>
2603 <context-group name="null">
2604 <context context-type="linenumber">11</context>
2605 </context-group>
2606 </trans-unit>
2568 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9"> 2607 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9">
2569 <source>Paste magnet URI</source> 2608 <source>Paste magnet URI</source>
2570 <target>Copier l'URL magnet</target> 2609 <target>Copier l'URL magnet</target>
@@ -2678,6 +2717,20 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
2678 <context context-type="linenumber">18</context> 2717 <context context-type="linenumber">18</context>
2679 </context-group> 2718 </context-group>
2680 </trans-unit> 2719 </trans-unit>
2720 <trans-unit id="9bdd535a2817bf0b843a124bf65e4992625e7ecf">
2721 <source>+ Tag</source>
2722 <target>+ Tag</target>
2723 <context-group name="null">
2724 <context context-type="linenumber">21</context>
2725 </context-group>
2726 </trans-unit>
2727 <trans-unit id="8389e9cde2928cc27aaecbdee818a255bf7984b0">
2728 <source>Enter a new tag</source>
2729 <target>Entrez un nouveau tag</target>
2730 <context-group name="null">
2731 <context context-type="linenumber">21</context>
2732 </context-group>
2733 </trans-unit>
2681 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e"> 2734 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e">
2682 <source>Video descriptions are truncated by default and require manual action to expand them.</source> 2735 <source>Video descriptions are truncated by default and require manual action to expand them.</source>
2683 <target>Les descriptions des vidéos sont tronquées par défaut et requièrent une action manuelle pour être pleinement affichées.</target> 2736 <target>Les descriptions des vidéos sont tronquées par défaut et requièrent une action manuelle pour être pleinement affichées.</target>
@@ -3110,13 +3163,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3110 <context context-type="linenumber">134</context> 3163 <context context-type="linenumber">134</context>
3111 </context-group> 3164 </context-group>
3112 </trans-unit> 3165 </trans-unit>
3113 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
3114 <source>Go to the account page</source>
3115 <target>Accéder au profil public de l'utilisateur</target>
3116 <context-group name="null">
3117 <context context-type="linenumber">133</context>
3118 </context-group>
3119 </trans-unit>
3120 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 3166 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
3121 <source>Show more</source> 3167 <source>Show more</source>
3122 <target>Voir plus</target> 3168 <target>Voir plus</target>
@@ -3196,25 +3242,18 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3196 <context context-type="linenumber">3</context> 3242 <context context-type="linenumber">3</context>
3197 </context-group> 3243 </context-group>
3198 </trans-unit> 3244 </trans-unit>
3199 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
3200 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
3201 <target>Vous pouvez commenter soit sur la page de votre instance où cette vidéo est fédérée avec votre compte PeerTube, soit via n'importe quelle instance Fediverse compatible avec ActivityPub. Par exemple, avec Mastodon ou Pleroma vous pouvez taper dans le champ de recherche : &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; et retrouver la vidéo. Les commentaires directs sont en cours de développement, cela peut être suivi via cette issue &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
3202 <context-group name="null">
3203 <context context-type="linenumber">8</context>
3204 </context-group>
3205 </trans-unit>
3206 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 3245 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
3207 <source>No comments.</source> 3246 <source>No comments.</source>
3208 <target>Aucun commentaire.</target> 3247 <target>Aucun commentaire.</target>
3209 <context-group name="null"> 3248 <context-group name="null">
3210 <context context-type="linenumber">18</context> 3249 <context context-type="linenumber">17</context>
3211 </context-group> 3250 </context-group>
3212 </trans-unit> 3251 </trans-unit>
3213 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 3252 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
3214 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 3253 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
3215 <target>Voir les <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> réponses</target> 3254 <target>Voir les <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> réponses</target>
3216 <context-group name="null"> 3255 <context-group name="null">
3217 <context context-type="linenumber">55</context> 3256 <context context-type="linenumber">54</context>
3218 </context-group> 3257 </context-group>
3219 </trans-unit> 3258 </trans-unit>
3220 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 3259 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -3225,7 +3264,7 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3225 Les commentaires sont désactivés. 3264 Les commentaires sont désactivés.
3226 </target> 3265 </target>
3227 <context-group name="null"> 3266 <context-group name="null">
3228 <context context-type="linenumber">64</context> 3267 <context context-type="linenumber">63</context>
3229 </context-group> 3268 </context-group>
3230 </trans-unit> 3269 </trans-unit>
3231 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 3270 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -3271,6 +3310,32 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3271 <context context-type="linenumber">35</context> 3310 <context context-type="linenumber">35</context>
3272 </context-group> 3311 </context-group>
3273 </trans-unit> 3312 </trans-unit>
3313 <trans-unit id="a5a3f17c9b4876952d78363834d57280c8684e7c">
3314 <source>
3315 Otherwise you can comment using an account on any ActivityPub-compatible instance.
3316 On most platforms, you can find the video by typing its URL in the search bar and then comment it
3317 from within the software's interface.
3318 </source>
3319 <target>
3320 Sinon, vous pouvez commenter en utilisant un compte sur n'importe quelle instance compatible avec le protocole ActivityPub.
3321 Sur la plupart des plateformes, vous pouvez trouver la vidéo en tapant son adresse dans la barre de recherche et en la commentant.
3322 depuis l'interface du logiciel.
3323 </target>
3324 <context-group name="null">
3325 <context context-type="linenumber">36</context>
3326 </context-group>
3327 </trans-unit>
3328 <trans-unit id="968b02fbc645be799727de0d1ec3c6f9b11b20eb">
3329 <source>
3330 If you have an account on Mastodon or Pleroma, you can open it directly in their interface:
3331 </source>
3332 <target>
3333 Si vous avez un compte sur Mastodon ou Pleroma, vous pouvez directement l'ouvrir dans leur interface :
3334 </target>
3335 <context-group name="null">
3336 <context context-type="linenumber">41</context>
3337 </context-group>
3338 </trans-unit>
3274 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285"> 3339 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285">
3275 <source>Highlighted comment</source> 3340 <source>Highlighted comment</source>
3276 <target>Commentaire mis en exergue</target> 3341 <target>Commentaire mis en exergue</target>
@@ -3313,6 +3378,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3313 <context context-type="linenumber">1</context> 3378 <context context-type="linenumber">1</context>
3314 </context-group> 3379 </context-group>
3315 </trans-unit> 3380 </trans-unit>
3381 <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d">
3382 <source>Error</source>
3383 <target>Erreur</target>
3384 <context-group name="null">
3385 <context context-type="linenumber">1</context>
3386 </context-group>
3387 </trans-unit>
3316 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6"> 3388 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6">
3317 <source>240p</source> 3389 <source>240p</source>
3318 <target>240p</target> 3390 <target>240p</target>
@@ -3355,48 +3427,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3355 <context context-type="linenumber">1</context> 3427 <context context-type="linenumber">1</context>
3356 </context-group> 3428 </context-group>
3357 </trans-unit> 3429 </trans-unit>
3358 <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d">
3359 <source>Error</source>
3360 <target>Erreur</target>
3361 <context-group name="null">
3362 <context context-type="linenumber">1</context>
3363 </context-group>
3364 </trans-unit>
3365 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
3366 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
3367 <target>Vous avez défini du <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target>
3368 <context-group name="null">
3369 <context context-type="linenumber">1</context>
3370 </context-group>
3371 </trans-unit>
3372 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
3373 <source>This could lead to security issues or bugs if you do not understand it. </source>
3374 <target>Cela pourrait mener à des problèmes de sécurité ou à des bogues ; soyez sûr de comprendre ce que vous faites.</target>
3375 <context-group name="null">
3376 <context context-type="linenumber">1</context>
3377 </context-group>
3378 </trans-unit>
3379 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
3380 <source>Are you sure you want to update the configuration?</source>
3381 <target>Êtes-vous sûr de vouloir modifier la configuration ?</target>
3382 <context-group name="null">
3383 <context context-type="linenumber">1</context>
3384 </context-group>
3385 </trans-unit>
3386 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
3387 <source>Please type</source>
3388 <target>Merci de taper</target>
3389 <context-group name="null">
3390 <context context-type="linenumber">1</context>
3391 </context-group>
3392 </trans-unit>
3393 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
3394 <source>to confirm.</source>
3395 <target>pour confirmer.</target>
3396 <context-group name="null">
3397 <context context-type="linenumber">1</context>
3398 </context-group>
3399 </trans-unit>
3400 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 3430 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
3401 <source>Success</source> 3431 <source>Success</source>
3402 <target>Réussite</target> 3432 <target>Réussite</target>
@@ -3642,20 +3672,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3642 <context context-type="linenumber">1</context> 3672 <context context-type="linenumber">1</context>
3643 </context-group> 3673 </context-group>
3644 </trans-unit> 3674 </trans-unit>
3645 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
3646 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
3647 <target>Utilisateur <x id="INTERPOLATION" equiv-text="{{username}}"/> banni.</target>
3648 <context-group name="null">
3649 <context context-type="linenumber">1</context>
3650 </context-group>
3651 </trans-unit>
3652 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3653 <source>Ban</source>
3654 <target>Bannir</target>
3655 <context-group name="null">
3656 <context context-type="linenumber">1</context>
3657 </context-group>
3658 </trans-unit>
3659 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 3675 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3660 <source>Unban</source> 3676 <source>Unban</source>
3661 <target>Rétablir</target> 3677 <target>Rétablir</target>
@@ -3670,20 +3686,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3670 <context context-type="linenumber">1</context> 3686 <context context-type="linenumber">1</context>
3671 </context-group> 3687 </context-group>
3672 </trans-unit> 3688 </trans-unit>
3673 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
3674 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
3675 <target>Voulez-vous réellement rétablir <x id="INTERPOLATION" equiv-text="{{username}}"/>?</target>
3676 <context-group name="null">
3677 <context context-type="linenumber">1</context>
3678 </context-group>
3679 </trans-unit>
3680 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
3681 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
3682 <target>L'utilisateur <x id="INTERPOLATION" equiv-text="{{username}}"/> est rétabli.</target>
3683 <context-group name="null">
3684 <context context-type="linenumber">1</context>
3685 </context-group>
3686 </trans-unit>
3687 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 3689 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
3688 <source>You cannot delete root.</source> 3690 <source>You cannot delete root.</source>
3689 <target>Vous ne pouvez pas supprimer root.</target> 3691 <target>Vous ne pouvez pas supprimer root.</target>
@@ -3691,20 +3693,6 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3691 <context context-type="linenumber">1</context> 3693 <context context-type="linenumber">1</context>
3692 </context-group> 3694 </context-group>
3693 </trans-unit> 3695 </trans-unit>
3694 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
3695 <source>If you remove this user, you will not be able to create another with the same username!</source>
3696 <target>Si vous supprimez ce compte, vous ne pourrez plus en créer de nouveau avec le même nom !</target>
3697 <context-group name="null">
3698 <context context-type="linenumber">1</context>
3699 </context-group>
3700 </trans-unit>
3701 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3702 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3703 <target>Utilisateur <x id="INTERPOLATION" equiv-text="{{username}}"/> supprimé.</target>
3704 <context-group name="null">
3705 <context context-type="linenumber">1</context>
3706 </context-group>
3707 </trans-unit>
3708 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e"> 3696 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3709 <source>Ownership accepted</source> 3697 <source>Ownership accepted</source>
3710 <target>Changement de propriété accepté</target> 3698 <target>Changement de propriété accepté</target>
@@ -3719,6 +3707,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
3719 <context context-type="linenumber">1</context> 3707 <context context-type="linenumber">1</context>
3720 </context-group> 3708 </context-group>
3721 </trans-unit> 3709 </trans-unit>
3710 <trans-unit id="466fc8cf56fd4e4e90fec4b900ef083d52bec38c">
3711 <source>You current password is invalid.</source>
3712 <target>Votre mot de passe actuel est invalide.</target>
3713 <context-group name="null">
3714 <context context-type="linenumber">1</context>
3715 </context-group>
3716 </trans-unit>
3722 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047"> 3717 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047">
3723 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source> 3718 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source>
3724 <target>Êtes-vous sûr de vouloir supprimer votre compte ? Cela supprimera toutes vos données, incluant vos chaînes, vidéos etc.</target> 3719 <target>Êtes-vous sûr de vouloir supprimer votre compte ? Cela supprimera toutes vos données, incluant vos chaînes, vidéos etc.</target>
@@ -5086,6 +5081,41 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
5086 <context context-type="linenumber">1</context> 5081 <context context-type="linenumber">1</context>
5087 </context-group> 5082 </context-group>
5088 </trans-unit> 5083 </trans-unit>
5084 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
5085 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
5086 <target>Utilisateur <x id="INTERPOLATION" equiv-text="{{username}}"/> banni.</target>
5087 <context-group name="null">
5088 <context context-type="linenumber">1</context>
5089 </context-group>
5090 </trans-unit>
5091 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
5092 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
5093 <target>Voulez-vous réellement rétablir <x id="INTERPOLATION" equiv-text="{{username}}"/>?</target>
5094 <context-group name="null">
5095 <context context-type="linenumber">1</context>
5096 </context-group>
5097 </trans-unit>
5098 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
5099 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
5100 <target>L'utilisateur <x id="INTERPOLATION" equiv-text="{{username}}"/> est rétabli.</target>
5101 <context-group name="null">
5102 <context context-type="linenumber">1</context>
5103 </context-group>
5104 </trans-unit>
5105 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
5106 <source>If you remove this user, you will not be able to create another with the same username!</source>
5107 <target>Si vous supprimez ce compte, vous ne pourrez plus en créer de nouveau avec le même nom !</target>
5108 <context-group name="null">
5109 <context context-type="linenumber">1</context>
5110 </context-group>
5111 </trans-unit>
5112 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
5113 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
5114 <target>Utilisateur <x id="INTERPOLATION" equiv-text="{{username}}"/> supprimé.</target>
5115 <context-group name="null">
5116 <context context-type="linenumber">1</context>
5117 </context-group>
5118 </trans-unit>
5089 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 5119 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
5090 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 5120 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
5091 <target>La requête est trop volumineuse pour le serveur. Merci de contacter un administrateur afin d'augmenter la taille limite acceptée par celui-ci.</target> 5121 <target>La requête est trop volumineuse pour le serveur. Merci de contacter un administrateur afin d'augmenter la taille limite acceptée par celui-ci.</target>
@@ -5142,6 +5172,13 @@ Assurez-vous d'avoir les droits de diffusion de ce contenu afin d'éviter toute
5142 <context context-type="linenumber">1</context> 5172 <context context-type="linenumber">1</context>
5143 </context-group> 5173 </context-group>
5144 </trans-unit> 5174 </trans-unit>
5175 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf">
5176 <source>Moderator</source>
5177 <target>Modérateur</target>
5178 <context-group name="null">
5179 <context context-type="linenumber">1</context>
5180 </context-group>
5181 </trans-unit>
5145 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb"> 5182 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb">
5146 <source>Only I can see this video</source> 5183 <source>Only I can see this video</source>
5147 <target>Seul moi peut voir cette vidéo</target> 5184 <target>Seul moi peut voir cette vidéo</target>
diff --git a/client/src/locale/target/angular_gl_ES.xml b/client/src/locale/target/angular_gl_ES.xml
index 17586924b..8ed944577 100644
--- a/client/src/locale/target/angular_gl_ES.xml
+++ b/client/src/locale/target/angular_gl_ES.xml
@@ -14,14 +14,14 @@
14 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 14 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
15 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visionados</target> 15 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visionados</target>
16 <context-group name="null"> 16 <context-group name="null">
17 <context context-type="linenumber">13</context> 17 <context context-type="linenumber">16</context>
18 </context-group> 18 </context-group>
19 </trans-unit> 19 </trans-unit>
20 <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c"> 20 <trans-unit id="28f86ffd419b869711aa13f5e5ff54be6d70731c">
21 <source>Edit</source> 21 <source>Edit</source>
22 <target>Editar</target> 22 <target>Editar</target>
23 <context-group name="null"> 23 <context-group name="null">
24 <context context-type="linenumber">5</context> 24 <context context-type="linenumber">1</context>
25 </context-group> 25 </context-group>
26 </trans-unit> 26 </trans-unit>
27 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 27 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -230,13 +230,6 @@
230 <context context-type="linenumber">6</context> 230 <context context-type="linenumber">6</context>
231 </context-group> 231 </context-group>
232 </trans-unit> 232 </trans-unit>
233 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
234 <source>Filters</source>
235 <target>Filtros</target>
236 <context-group name="null">
237 <context context-type="linenumber">16</context>
238 </context-group>
239 </trans-unit>
240 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 233 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
241 <source> 234 <source>
242 No results found 235 No results found
@@ -245,7 +238,7 @@
245 Non se atoparon resultados 238 Non se atoparon resultados
246 </target> 239 </target>
247 <context-group name="null"> 240 <context-group name="null">
248 <context context-type="linenumber">25</context> 241 <context context-type="linenumber">28</context>
249 </context-group> 242 </context-group>
250 </trans-unit> 243 </trans-unit>
251 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 244 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -413,14 +406,14 @@
413 <source>No results.</source> 406 <source>No results.</source>
414 <target>Sin resultados.</target> 407 <target>Sin resultados.</target>
415 <context-group name="null"> 408 <context-group name="null">
416 <context context-type="linenumber">7</context> 409 <context context-type="linenumber">17</context>
417 </context-group> 410 </context-group>
418 </trans-unit> 411 </trans-unit>
419 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b"> 412 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b">
420 <source>Instance</source> 413 <source>Instance</source>
421 <target>Instancia</target> 414 <target>Instancia</target>
422 <context-group name="null"> 415 <context-group name="null">
423 <context context-type="linenumber">8</context> 416 <context context-type="linenumber">12</context>
424 </context-group> 417 </context-group>
425 </trans-unit> 418 </trans-unit>
426 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 419 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -722,14 +715,14 @@
722 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 715 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
723 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> suscritoras</target> 716 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> suscritoras</target>
724 <context-group name="null"> 717 <context-group name="null">
725 <context context-type="linenumber">12</context> 718 <context context-type="linenumber">24</context>
726 </context-group> 719 </context-group>
727 </trans-unit> 720 </trans-unit>
728 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 721 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
729 <source>Video channels</source> 722 <source>Video channels</source>
730 <target>Canles de vídeo</target> 723 <target>Canles de vídeo</target>
731 <context-group name="null"> 724 <context-group name="null">
732 <context context-type="linenumber">19</context> 725 <context context-type="linenumber">31</context>
733 </context-group> 726 </context-group>
734 </trans-unit> 727 </trans-unit>
735 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 728 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -858,13 +851,6 @@
858 <context context-type="linenumber">42</context> 851 <context context-type="linenumber">42</context>
859 </context-group> 852 </context-group>
860 </trans-unit> 853 </trans-unit>
861 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
862 <source>Video import with HTTP enabled</source>
863 <target>Importación de vídeos por HTTP activada</target>
864 <context-group name="null">
865 <context context-type="linenumber">115</context>
866 </context-group>
867 </trans-unit>
868 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 854 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
869 <source>Video import with a torrent file or a magnet URI enabled</source> 855 <source>Video import with a torrent file or a magnet URI enabled</source>
870 <target>Importación de vídeo con un ficheiro torrent ou URI magnet activada</target> 856 <target>Importación de vídeo con un ficheiro torrent ou URI magnet activada</target>
diff --git a/client/src/locale/target/angular_it_IT.xml b/client/src/locale/target/angular_it_IT.xml
index 56649f505..38bfcf2eb 100644
--- a/client/src/locale/target/angular_it_IT.xml
+++ b/client/src/locale/target/angular_it_IT.xml
@@ -38,6 +38,20 @@
38 <context context-type="linenumber">27</context> 38 <context context-type="linenumber">27</context>
39 </context-group> 39 </context-group>
40 </trans-unit> 40 </trans-unit>
41 <trans-unit id="ngb.datepicker.select-month">
42 <source>Select month</source>
43 <target>Seleziona mese</target>
44 <context-group name="null">
45 <context context-type="linenumber">7</context>
46 </context-group>
47 </trans-unit>
48 <trans-unit id="ngb.datepicker.select-year">
49 <source>Select year</source>
50 <target>Seleziona anno</target>
51 <context-group name="null">
52 <context context-type="linenumber">16</context>
53 </context-group>
54 </trans-unit>
41 <trans-unit id="ngb.pagination.first"> 55 <trans-unit id="ngb.pagination.first">
42 <source>««</source> 56 <source>««</source>
43 <target>««</target> 57 <target>««</target>
@@ -217,7 +231,7 @@
217 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
218 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizzazioni</target> 232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizzazioni</target>
219 <context-group name="null"> 233 <context-group name="null">
220 <context context-type="linenumber">13</context> 234 <context context-type="linenumber">16</context>
221 </context-group> 235 </context-group>
222 </trans-unit> 236 </trans-unit>
223 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -231,11 +245,12 @@
231 <source>Edit</source> 245 <source>Edit</source>
232 <target>Modifica</target> 246 <target>Modifica</target>
233 <context-group name="null"> 247 <context-group name="null">
234 <context context-type="linenumber">5</context> 248 <context context-type="linenumber">1</context>
235 </context-group> 249 </context-group>
236 </trans-unit> 250 </trans-unit>
237 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
238 <source>Truncated preview</source> 252 <source>Truncated preview</source>
253 <target>Anteprima parziale</target>
239 <context-group name="null"> 254 <context-group name="null">
240 <context context-type="linenumber">9</context> 255 <context context-type="linenumber">9</context>
241 </context-group> 256 </context-group>
@@ -254,11 +269,92 @@
254 <context context-type="linenumber">19</context> 269 <context context-type="linenumber">19</context>
255 </context-group> 270 </context-group>
256 </trans-unit> 271 </trans-unit>
272 <trans-unit id="450025269732888db1f04cfe6033843110ab65ee">
273 <source>
274 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
275 Subscribe
276 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
277 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
278 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
279 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
280 </source>
281 <target>
282 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
283 Subscribe
284 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
285 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
286 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
287 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
288 </target>
289 <context-group name="null">
290 <context context-type="linenumber">5</context>
291 </context-group>
292 </trans-unit>
293 <trans-unit id="c374edf3b9228d3df6d761bdc8a289e7df0096e8">
294 <source>
295 Unsubscribe
296 </source>
297 <target>
298 Unsubscribe
299 </target>
300 <context-group name="null">
301 <context context-type="linenumber">18</context>
302 </context-group>
303 </trans-unit>
304 <trans-unit id="9b3287f52c239cad05ec98391553e5052ba1aa66">
305 <source>Using an ActivityPub account</source>
306 <target>Utilizzando un account ActivityPub</target>
307 <context-group name="null">
308 <context context-type="linenumber">36</context>
309 </context-group>
310 </trans-unit>
311 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3">
312 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source>
313 <target>Iscriviti con un account su <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></target>
314 <context-group name="null">
315 <context context-type="linenumber">39</context>
316 </context-group>
317 </trans-unit>
318 <trans-unit id="e7adf422424a61b71465d183f9d44bf956482ef0">
319 <source>Subscribe with your local account</source>
320 <target>Iscriviti con il tuo account locale</target>
321 <context-group name="null">
322 <context context-type="linenumber">40</context>
323 </context-group>
324 </trans-unit>
325 <trans-unit id="5047522cc670b1f4a288bce07f9b1c5061e913ed">
326 <source>Subscribe with a Mastodon account:</source>
327 <target>Iscriviti con un account Mastodon:</target>
328 <context-group name="null">
329 <context context-type="linenumber">43</context>
330 </context-group>
331 </trans-unit>
332 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1">
333 <source>Using a syndication feed</source>
334 <target>Usando una syndication feed</target>
335 <context-group name="null">
336 <context context-type="linenumber">48</context>
337 </context-group>
338 </trans-unit>
339 <trans-unit id="d5e5bc7d213694fc0414a76f0ff3085bae44268a">
340 <source>Subscribe via RSS</source>
341 <target>Iscriviti usando RSS</target>
342 <context-group name="null">
343 <context context-type="linenumber">49</context>
344 </context-group>
345 </trans-unit>
346 <trans-unit id="319933e1af77ca2e35b75a5e9270a3c90e83dd4b">
347 <source>You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there.</source>
348 <target>Puoi iscriverti al canale attraverso una qualunque ActivityPub istanza del fediverso. Con istanze con Mastodon o Pleroma puoi digitare la URL del canale nel campo di ricerca e iscriverti là.</target>
349 <context-group name="null">
350 <context context-type="linenumber">17</context>
351 </context-group>
352 </trans-unit>
257 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b"> 353 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b">
258 <source>Video quota</source> 354 <source>Video quota</source>
259 <target>Quota video</target> 355 <target>Quota video</target>
260 <context-group name="null"> 356 <context-group name="null">
261 <context context-type="linenumber">19</context> 357 <context context-type="linenumber">42</context>
262 </context-group> 358 </context-group>
263 </trans-unit> 359 </trans-unit>
264 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 360 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -272,6 +368,35 @@
272 <context context-type="linenumber">14</context> 368 <context context-type="linenumber">14</context>
273 </context-group> 369 </context-group>
274 </trans-unit> 370 </trans-unit>
371 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
372 <source>Ban</source>
373 <target>Ban (espelli)</target>
374 <context-group name="null">
375 <context context-type="linenumber">3</context>
376 </context-group>
377 </trans-unit>
378 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
379 <source>Reason...</source>
380 <target>Motivo...</target>
381 <context-group name="null">
382 <context context-type="linenumber">11</context>
383 </context-group>
384 </trans-unit>
385 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
386 <source>
387 A banned user will no longer be able to login.
388 </source>
389 <context-group name="null">
390 <context context-type="linenumber">17</context>
391 </context-group>
392 </trans-unit>
393 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
394 <source>Ban this user</source>
395 <target>Banna questo utente</target>
396 <context-group name="null">
397 <context context-type="linenumber">25</context>
398 </context-group>
399 </trans-unit>
275 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 400 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
276 <source> 401 <source>
277 Login 402 Login
@@ -434,6 +559,7 @@
434 </trans-unit> 559 </trans-unit>
435 <trans-unit id="26025b8081241cf85eb6516431b596df11fa66b3"> 560 <trans-unit id="26025b8081241cf85eb6516431b596df11fa66b3">
436 <source>Example: jane_doe</source> 561 <source>Example: jane_doe</source>
562 <target>Esempio: jane_doe</target>
437 <context-group name="null"> 563 <context-group name="null">
438 <context context-type="linenumber">16</context> 564 <context context-type="linenumber">16</context>
439 </context-group> 565 </context-group>
@@ -477,13 +603,6 @@
477 <context context-type="linenumber">6</context> 603 <context context-type="linenumber">6</context>
478 </context-group> 604 </context-group>
479 </trans-unit> 605 </trans-unit>
480 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
481 <source>Filters</source>
482 <target>Filtri</target>
483 <context-group name="null">
484 <context context-type="linenumber">16</context>
485 </context-group>
486 </trans-unit>
487 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 606 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
488 <source> 607 <source>
489 No results found 608 No results found
@@ -492,21 +611,21 @@
492 Nessun risultato trovato 611 Nessun risultato trovato
493 </target> 612 </target>
494 <context-group name="null"> 613 <context-group name="null">
495 <context context-type="linenumber">25</context> 614 <context context-type="linenumber">28</context>
496 </context-group> 615 </context-group>
497 </trans-unit> 616 </trans-unit>
498 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 617 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
499 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 618 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
500 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> iscritti</target> 619 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> iscritti</target>
501 <context-group name="null"> 620 <context-group name="null">
502 <context context-type="linenumber">41</context> 621 <context context-type="linenumber">44</context>
503 </context-group> 622 </context-group>
504 </trans-unit> 623 </trans-unit>
505 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 624 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
506 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 625 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
507 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> visualizzazioni</target> 626 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> visualizzazioni</target>
508 <context-group name="null"> 627 <context-group name="null">
509 <context context-type="linenumber">52</context> 628 <context context-type="linenumber">55</context>
510 </context-group> 629 </context-group>
511 </trans-unit> 630 </trans-unit>
512 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 631 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -581,6 +700,13 @@
581 <context context-type="linenumber">47</context> 700 <context context-type="linenumber">47</context>
582 </context-group> 701 </context-group>
583 </trans-unit> 702 </trans-unit>
703 <trans-unit id="e95ae009d0bdb45fcc656e8b65248cf7396080d5">
704 <source>Overview</source>
705 <target>Panoramica</target>
706 <context-group name="null">
707 <context context-type="linenumber">52</context>
708 </context-group>
709 </trans-unit>
584 <trans-unit id="b6b7986bc3721ac483baf20bc9a320529075c807"> 710 <trans-unit id="b6b7986bc3721ac483baf20bc9a320529075c807">
585 <source>Trending</source> 711 <source>Trending</source>
586 <target>Popolari</target> 712 <target>Popolari</target>
@@ -623,6 +749,13 @@
623 <context context-type="linenumber">25</context> 749 <context context-type="linenumber">25</context>
624 </context-group> 750 </context-group>
625 </trans-unit> 751 </trans-unit>
752 <trans-unit id="4752e5e33da1c3396d3248eb8fef59bca5d00cb3">
753 <source>Show keyboard shortcuts</source>
754 <target>Mostra scorciatoie della tastiera</target>
755 <context-group name="null">
756 <context context-type="linenumber">91</context>
757 </context-group>
758 </trans-unit>
626 <trans-unit id="cf75021ac8cb9efd4f95e8880cf52c9acd265768"> 759 <trans-unit id="cf75021ac8cb9efd4f95e8880cf52c9acd265768">
627 <source>Toggle dark interface</source> 760 <source>Toggle dark interface</source>
628 <target>(Dis)attiva l'interfaccia sicura</target> 761 <target>(Dis)attiva l'interfaccia sicura</target>
@@ -732,7 +865,7 @@
732 <source>No results.</source> 865 <source>No results.</source>
733 <target>Nessun risultato.</target> 866 <target>Nessun risultato.</target>
734 <context-group name="null"> 867 <context-group name="null">
735 <context context-type="linenumber">7</context> 868 <context context-type="linenumber">17</context>
736 </context-group> 869 </context-group>
737 </trans-unit> 870 </trans-unit>
738 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 871 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -746,6 +879,17 @@
746 <context context-type="linenumber">6</context> 879 <context context-type="linenumber">6</context>
747 </context-group> 880 </context-group>
748 </trans-unit> 881 </trans-unit>
882 <trans-unit id="48a5d0af93b94c4575b7f76a47fb3cdee58e6919">
883 <source>
884 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
885 </source>
886 <target>
887 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
888 </target>
889 <context-group name="null">
890 <context context-type="linenumber">14</context>
891 </context-group>
892 </trans-unit>
749 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b"> 893 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b">
750 <source> 894 <source>
751 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/> 895 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>
@@ -769,7 +913,7 @@
769 <source>Instance</source> 913 <source>Instance</source>
770 <target>Istanza</target> 914 <target>Istanza</target>
771 <context-group name="null"> 915 <context-group name="null">
772 <context context-type="linenumber">8</context> 916 <context context-type="linenumber">12</context>
773 </context-group> 917 </context-group>
774 </trans-unit> 918 </trans-unit>
775 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 919 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -981,6 +1125,11 @@
981 When you are in a web browser, you send a signal containing your IP address to the tracker that will randomly choose other peers to forward the information to. 1125 When you are in a web browser, you send a signal containing your IP address to the tracker that will randomly choose other peers to forward the information to.
982 See <x id="START_LINK_1" ctype="x-a" equiv-text="&lt;a&gt;"/>this document<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> for more information 1126 See <x id="START_LINK_1" ctype="x-a" equiv-text="&lt;a&gt;"/>this document<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/> for more information
983 </source> 1127 </source>
1128 <target>
1129 I nodi non sono accessibili pubblicamente: in quanto usiamo WebRTC nel browser(<x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>tramite la libreria WebTorrent <x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>), il protocollo è diverso dal BitTorrent classico.
1130 Quando usi un browser web, mandi un segnale contenente il tuo indirizzo IP al tracker, il quale selezionerà casualmente altri nodi a cui inoltrare questa informazione.
1131 Per ulteriori informazioni, vedi <x id="START_LINK_1" ctype="x-a" equiv-text="&lt;a&gt;"/>questo documento<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
1132 </target>
984 <context-group name="null"> 1133 <context-group name="null">
985 <context context-type="linenumber">55</context> 1134 <context context-type="linenumber">55</context>
986 </context-group> 1135 </context-group>
@@ -990,12 +1139,17 @@
990 The worst-case scenario of an average person spying on their friends is quite unlikely. 1139 The worst-case scenario of an average person spying on their friends is quite unlikely.
991 There are much more effective ways to get that kind of information. 1140 There are much more effective ways to get that kind of information.
992 </source> 1141 </source>
1142 <target>
1143 La peggiore delle ipotesi, in cui una persona qualunque spia un amico, è molto improbabile.
1144 Ci sono modi molto più efficaci di ottenere questo genere di informazioni.
1145 </target>
993 <context-group name="null"> 1146 <context-group name="null">
994 <context context-type="linenumber">62</context> 1147 <context context-type="linenumber">62</context>
995 </context-group> 1148 </context-group>
996 </trans-unit> 1149 </trans-unit>
997 <trans-unit id="4bf47a1ae952bf42a4682a5ecddb0bfb8c9adfaf"> 1150 <trans-unit id="4bf47a1ae952bf42a4682a5ecddb0bfb8c9adfaf">
998 <source>How does PeerTube compare with YouTube?</source> 1151 <source>How does PeerTube compare with YouTube?</source>
1152 <target>Come si può paragonare PeerTube con YouTube?</target>
999 <context-group name="null"> 1153 <context-group name="null">
1000 <context context-type="linenumber">67</context> 1154 <context context-type="linenumber">67</context>
1001 </context-group> 1155 </context-group>
@@ -1028,12 +1182,18 @@
1028 PeerTube is transparent about it: we warn you that if you want to keep your IP private, you must use a VPN or Tor Browser. 1182 PeerTube is transparent about it: we warn you that if you want to keep your IP private, you must use a VPN or Tor Browser.
1029 Thinking that removing P2P from PeerTube will give you back anonymity doesn't make sense. 1183 Thinking that removing P2P from PeerTube will give you back anonymity doesn't make sense.
1030 </source> 1184 </source>
1185 <target>
1186 Il tuo indirizzo IP è pubblico quindi, ogni volta che visiti un sito web, una moltitudine di attori (oltre al sito web finale) vedono il tuo IP nei propri registri: ISP/routers/trackers/CDN e altri.
1187 PeerTube è trasparente al riguardo: ti avvisiamo che, se vuoi mantenere il tuo indirizzo IP privato, devi usare un VPN o il browser Tor.
1188 Pensare che rimuovere la componente P2P da PeerTube ti possa restituire l'anonimato non ha senso.
1189 </target>
1031 <context-group name="null"> 1190 <context-group name="null">
1032 <context context-type="linenumber">77</context> 1191 <context context-type="linenumber">77</context>
1033 </context-group> 1192 </context-group>
1034 </trans-unit> 1193 </trans-unit>
1035 <trans-unit id="8ce78dd287b9a9dde5079916425ea66466530e41"> 1194 <trans-unit id="8ce78dd287b9a9dde5079916425ea66466530e41">
1036 <source>What will be done to mitigate this problem?</source> 1195 <source>What will be done to mitigate this problem?</source>
1196 <target>Che azioni verranno intraprese per limitare questo problema?</target>
1037 <context-group name="null"> 1197 <context-group name="null">
1038 <context context-type="linenumber">83</context> 1198 <context context-type="linenumber">83</context>
1039 </context-group> 1199 </context-group>
@@ -1043,6 +1203,10 @@
1043 PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. 1203 PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released.
1044 In the meantime, we want to test different ideas related to this issue: 1204 In the meantime, we want to test different ideas related to this issue:
1045 </source> 1205 </source>
1206 <target>
1207 PeerTube è solamente in beta e vogliamo offrire le migliori contromisure possibili per il rilascio stabile.
1208 Nel frattempo vogliamo testare varie idee in relazione a questo problema:
1209 </target>
1046 <context-group name="null"> 1210 <context-group name="null">
1047 <context context-type="linenumber">85</context> 1211 <context context-type="linenumber">85</context>
1048 </context-group> 1212 </context-group>
@@ -1077,6 +1241,7 @@
1077 </trans-unit> 1241 </trans-unit>
1078 <trans-unit id="efde279863678ed95a8949a3712c99748bdabfe6"> 1242 <trans-unit id="efde279863678ed95a8949a3712c99748bdabfe6">
1079 <source>An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program</source> 1243 <source>An automatic video redundancy program: we wouldn't know if the IP downloaded the video on purpose or if it was the automatized program</source>
1244 <target>Un programma automatico per incrementare la ridondanza dei video: non potremmo sapere se l'indirizzo IP abbia scaricato il video volontariamente o per via del programma automatico</target>
1080 <context-group name="null"> 1245 <context-group name="null">
1081 <context context-type="linenumber">95</context> 1246 <context context-type="linenumber">95</context>
1082 </context-group> 1247 </context-group>
@@ -1085,13 +1250,13 @@
1085 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1250 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1086 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> iscritti</target> 1251 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> iscritti</target>
1087 <context-group name="null"> 1252 <context-group name="null">
1088 <context context-type="linenumber">12</context> 1253 <context context-type="linenumber">24</context>
1089 </context-group> 1254 </context-group>
1090 </trans-unit> 1255 </trans-unit>
1091 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1256 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1092 <source>Video channels</source> 1257 <source>Video channels</source>
1093 <context-group name="null"> 1258 <context-group name="null">
1094 <context context-type="linenumber">19</context> 1259 <context context-type="linenumber">31</context>
1095 </context-group> 1260 </context-group>
1096 </trans-unit> 1261 </trans-unit>
1097 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1262 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1138,6 +1303,7 @@
1138 </trans-unit> 1303 </trans-unit>
1139 <trans-unit id="3fae5a310387c065757fde11f22689b45a7b6f2d"> 1304 <trans-unit id="3fae5a310387c065757fde11f22689b45a7b6f2d">
1140 <source>Videos Overview</source> 1305 <source>Videos Overview</source>
1306 <target>Panoramica dei video</target>
1141 <context-group name="null"> 1307 <context-group name="null">
1142 <context context-type="linenumber">58</context> 1308 <context context-type="linenumber">58</context>
1143 </context-group> 1309 </context-group>
@@ -1186,6 +1352,7 @@
1186 </trans-unit> 1352 </trans-unit>
1187 <trans-unit id="aaa900149c2ca1575ac1918d1ded33fb69830ab2"> 1353 <trans-unit id="aaa900149c2ca1575ac1918d1ded33fb69830ab2">
1188 <source>Blur thumbnails</source> 1354 <source>Blur thumbnails</source>
1355 <target>Miniature offuscate.</target>
1189 <context-group name="null"> 1356 <context-group name="null">
1190 <context context-type="linenumber">12</context> 1357 <context context-type="linenumber">12</context>
1191 </context-group> 1358 </context-group>
@@ -1218,13 +1385,6 @@
1218 <context context-type="linenumber">42</context> 1385 <context context-type="linenumber">42</context>
1219 </context-group> 1386 </context-group>
1220 </trans-unit> 1387 </trans-unit>
1221 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1222 <source>Video import with HTTP enabled</source>
1223 <target>Carica video con HTTP attivato</target>
1224 <context-group name="null">
1225 <context context-type="linenumber">115</context>
1226 </context-group>
1227 </trans-unit>
1228 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1388 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1229 <source>Video import with a torrent file or a magnet URI enabled</source> 1389 <source>Video import with a torrent file or a magnet URI enabled</source>
1230 <target>Carica video con un file torrent o un URI magnete attivo</target> 1390 <target>Carica video con un file torrent o un URI magnete attivo</target>
@@ -1255,12 +1415,14 @@
1255 </trans-unit> 1415 </trans-unit>
1256 <trans-unit id="31b3275d999af45fe64c6824e6e017d2e2704f09"> 1416 <trans-unit id="31b3275d999af45fe64c6824e6e017d2e2704f09">
1257 <source>User default video quota</source> 1417 <source>User default video quota</source>
1418 <target>Quota standard per i video dell'utente</target>
1258 <context-group name="null"> 1419 <context-group name="null">
1259 <context context-type="linenumber">139</context> 1420 <context context-type="linenumber">139</context>
1260 </context-group> 1421 </context-group>
1261 </trans-unit> 1422 </trans-unit>
1262 <trans-unit id="f5528147716c4d3286c89defbe63ee0b75da5ffe"> 1423 <trans-unit id="f5528147716c4d3286c89defbe63ee0b75da5ffe">
1263 <source>User default daily upload limit</source> 1424 <source>User default daily upload limit</source>
1425 <target>Limite giornaliero per il caricamento</target>
1264 <context-group name="null"> 1426 <context-group name="null">
1265 <context context-type="linenumber">153</context> 1427 <context context-type="linenumber">153</context>
1266 </context-group> 1428 </context-group>
@@ -1295,6 +1457,7 @@
1295 </trans-unit> 1457 </trans-unit>
1296 <trans-unit id="c0716c28b9d4c9e0b2fd6031334394214e5f9605"> 1458 <trans-unit id="c0716c28b9d4c9e0b2fd6031334394214e5f9605">
1297 <source>Instance whitelisted by Twitter</source> 1459 <source>Instance whitelisted by Twitter</source>
1460 <target>Istanza inserita in white list da Twitter</target>
1298 <context-group name="null"> 1461 <context-group name="null">
1299 <context context-type="linenumber">189</context> 1462 <context context-type="linenumber">189</context>
1300 </context-group> 1463 </context-group>
@@ -1344,6 +1507,7 @@
1344 </trans-unit> 1507 </trans-unit>
1345 <trans-unit id="5afc7e831e59c325e8fb3e208ec108ff53fb3500"> 1508 <trans-unit id="5afc7e831e59c325e8fb3e208ec108ff53fb3500">
1346 <source>Resolution <x id="INTERPOLATION" equiv-text="{{resolution}}"/> enabled</source> 1509 <source>Resolution <x id="INTERPOLATION" equiv-text="{{resolution}}"/> enabled</source>
1510 <target>Risoluzione <x id="INTERPOLATION" equiv-text="{{resolution}}"/> abilitata</target>
1347 <context-group name="null"> 1511 <context-group name="null">
1348 <context context-type="linenumber">227</context> 1512 <context context-type="linenumber">227</context>
1349 </context-group> 1513 </context-group>
@@ -1523,14 +1687,14 @@
1523 <source>Score</source> 1687 <source>Score</source>
1524 <target>Punteggio</target> 1688 <target>Punteggio</target>
1525 <context-group name="null"> 1689 <context-group name="null">
1526 <context context-type="linenumber">8</context> 1690 <context context-type="linenumber">17</context>
1527 </context-group> 1691 </context-group>
1528 </trans-unit> 1692 </trans-unit>
1529 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1693 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1530 <source>Host</source> 1694 <source>Host</source>
1531 <target>Host</target> 1695 <target>Host</target>
1532 <context-group name="null"> 1696 <context-group name="null">
1533 <context context-type="linenumber">8</context> 1697 <context context-type="linenumber">19</context>
1534 </context-group> 1698 </context-group>
1535 </trans-unit> 1699 </trans-unit>
1536 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1700 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1546,6 +1710,27 @@
1546 <context context-type="linenumber">11</context> 1710 <context context-type="linenumber">11</context>
1547 </context-group> 1711 </context-group>
1548 </trans-unit> 1712 </trans-unit>
1713 <trans-unit id="7823909fb1d8d313382f6f4bd842f1a7ef6f08d1">
1714 <source>Accepted</source>
1715 <target>Accettato</target>
1716 <context-group name="null">
1717 <context context-type="linenumber">32</context>
1718 </context-group>
1719 </trans-unit>
1720 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506">
1721 <source>Pending</source>
1722 <target>In attesa</target>
1723 <context-group name="null">
1724 <context context-type="linenumber">33</context>
1725 </context-group>
1726 </trans-unit>
1727 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8">
1728 <source>Redundancy allowed</source>
1729 <target>Ridondanza permessa</target>
1730 <context-group name="null">
1731 <context context-type="linenumber">22</context>
1732 </context-group>
1733 </trans-unit>
1549 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479"> 1734 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479">
1550 <source>Manage follows</source> 1735 <source>Manage follows</source>
1551 <target>Gestisci chi segui</target> 1736 <target>Gestisci chi segui</target>
@@ -1632,7 +1817,7 @@
1632 <source>Role</source> 1817 <source>Role</source>
1633 <target>Ruolo</target> 1818 <target>Ruolo</target>
1634 <context-group name="null"> 1819 <context-group name="null">
1635 <context context-type="linenumber">20</context> 1820 <context context-type="linenumber">43</context>
1636 </context-group> 1821 </context-group>
1637 </trans-unit> 1822 </trans-unit>
1638 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1823 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1651,34 +1836,6 @@
1651 <context context-type="linenumber">72</context> 1836 <context context-type="linenumber">72</context>
1652 </context-group> 1837 </context-group>
1653 </trans-unit> 1838 </trans-unit>
1654 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1655 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1656 <context-group name="null">
1657 <context context-type="linenumber">3</context>
1658 </context-group>
1659 </trans-unit>
1660 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1661 <source>Reason...</source>
1662 <target>Motivo...</target>
1663 <context-group name="null">
1664 <context context-type="linenumber">11</context>
1665 </context-group>
1666 </trans-unit>
1667 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1668 <source>
1669 A banned user will no longer be able to login.
1670 </source>
1671 <context-group name="null">
1672 <context context-type="linenumber">17</context>
1673 </context-group>
1674 </trans-unit>
1675 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1676 <source>Ban this user</source>
1677 <target>Banna questo utente</target>
1678 <context-group name="null">
1679 <context context-type="linenumber">25</context>
1680 </context-group>
1681 </trans-unit>
1682 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1839 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1683 <source>Users list</source> 1840 <source>Users list</source>
1684 <target>Lista utenti</target> 1841 <target>Lista utenti</target>
@@ -1689,21 +1846,20 @@
1689 <trans-unit id="08ea8692dc2a7050026df26fc39b22960bde9de5"> 1846 <trans-unit id="08ea8692dc2a7050026df26fc39b22960bde9de5">
1690 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1847 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1691 <context-group name="null"> 1848 <context-group name="null">
1692 <context context-type="linenumber">17</context> 1849 <context context-type="linenumber">40</context>
1693 </context-group> 1850 </context-group>
1694 </trans-unit> 1851 </trans-unit>
1695 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1852 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1696 <source>Actions</source> 1853 <source>Go to the account page</source>
1697 <target>Azioni</target>
1698 <context-group name="null"> 1854 <context-group name="null">
1699 <context context-type="linenumber">33</context> 1855 <context context-type="linenumber">133</context>
1700 </context-group> 1856 </context-group>
1701 </trans-unit> 1857 </trans-unit>
1702 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1858 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1703 <source>Ban reason:</source> 1859 <source>Ban reason:</source>
1704 <target>Motivo ban:</target> 1860 <target>Motivo ban:</target>
1705 <context-group name="null"> 1861 <context-group name="null">
1706 <context context-type="linenumber">51</context> 1862 <context context-type="linenumber">82</context>
1707 </context-group> 1863 </context-group>
1708 </trans-unit> 1864 </trans-unit>
1709 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1865 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1758,6 +1914,13 @@
1758 <context context-type="linenumber">33</context> 1914 <context context-type="linenumber">33</context>
1759 </context-group> 1915 </context-group>
1760 </trans-unit> 1916 </trans-unit>
1917 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1918 <source>Actions</source>
1919 <target>Azioni</target>
1920 <context-group name="null">
1921 <context context-type="linenumber">33</context>
1922 </context-group>
1923 </trans-unit>
1761 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 1924 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1762 <source>Reason:</source> 1925 <source>Reason:</source>
1763 <target>Motivo:</target> 1926 <target>Motivo:</target>
@@ -1817,6 +1980,13 @@
1817 <context context-type="linenumber">3</context> 1980 <context context-type="linenumber">3</context>
1818 </context-group> 1981 </context-group>
1819 </trans-unit> 1982 </trans-unit>
1983 <trans-unit id="4ef4f031c147fb9ee0168bc6eacb78de180d7432">
1984 <source>My library</source>
1985 <target>La mia libreria</target>
1986 <context-group name="null">
1987 <context context-type="linenumber">7</context>
1988 </context-group>
1989 </trans-unit>
1820 <trans-unit id="8dd18d9047c4b2dc9786550dfd8fa99f3b14e17f"> 1990 <trans-unit id="8dd18d9047c4b2dc9786550dfd8fa99f3b14e17f">
1821 <source>My channels</source> 1991 <source>My channels</source>
1822 <target>I miei canali</target> 1992 <target>I miei canali</target>
@@ -1848,7 +2018,7 @@
1848 <source>Ownership changes</source> 2018 <source>Ownership changes</source>
1849 <target>Cambi di proprietario</target> 2019 <target>Cambi di proprietario</target>
1850 <context-group name="null"> 2020 <context-group name="null">
1851 <context context-type="linenumber">22</context> 2021 <context context-type="linenumber">33</context>
1852 </context-group> 2022 </context-group>
1853 </trans-unit> 2023 </trans-unit>
1854 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 2024 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2073,14 +2243,14 @@ When you will upload a video in this channel, the video support field will be au
2073 <source>Automatically plays video</source> 2243 <source>Automatically plays video</source>
2074 <target>Riproduci automaticamente video</target> 2244 <target>Riproduci automaticamente video</target>
2075 <context-group name="null"> 2245 <context-group name="null">
2076 <context context-type="linenumber">20</context> 2246 <context context-type="linenumber">25</context>
2077 </context-group> 2247 </context-group>
2078 </trans-unit> 2248 </trans-unit>
2079 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2249 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2080 <source>Save</source> 2250 <source>Save</source>
2081 <target>Salva</target> 2251 <target>Salva</target>
2082 <context-group name="null"> 2252 <context-group name="null">
2083 <context context-type="linenumber">23</context> 2253 <context context-type="linenumber">28</context>
2084 </context-group> 2254 </context-group>
2085 </trans-unit> 2255 </trans-unit>
2086 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2256 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2725,12 +2895,6 @@ When you will upload a video in this channel, the video support field will be au
2725 <context context-type="linenumber">134</context> 2895 <context context-type="linenumber">134</context>
2726 </context-group> 2896 </context-group>
2727 </trans-unit> 2897 </trans-unit>
2728 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
2729 <source>Go to the account page</source>
2730 <context-group name="null">
2731 <context context-type="linenumber">133</context>
2732 </context-group>
2733 </trans-unit>
2734 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 2898 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
2735 <source>Show more</source> 2899 <source>Show more</source>
2736 <target>Mostra di piú</target> 2900 <target>Mostra di piú</target>
@@ -2806,14 +2970,14 @@ Altri video</target>
2806 <source>No comments.</source> 2970 <source>No comments.</source>
2807 <target>Nessun commento.</target> 2971 <target>Nessun commento.</target>
2808 <context-group name="null"> 2972 <context-group name="null">
2809 <context context-type="linenumber">18</context> 2973 <context context-type="linenumber">17</context>
2810 </context-group> 2974 </context-group>
2811 </trans-unit> 2975 </trans-unit>
2812 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 2976 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
2813 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 2977 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
2814 <target>Visualizza tutte le <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> risposte</target> 2978 <target>Visualizza tutte le <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> risposte</target>
2815 <context-group name="null"> 2979 <context-group name="null">
2816 <context context-type="linenumber">55</context> 2980 <context context-type="linenumber">54</context>
2817 </context-group> 2981 </context-group>
2818 </trans-unit> 2982 </trans-unit>
2819 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 2983 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -2824,7 +2988,7 @@ Altri video</target>
2824 I commenti sono disabilitati. 2988 I commenti sono disabilitati.
2825 </target> 2989 </target>
2826 <context-group name="null"> 2990 <context-group name="null">
2827 <context context-type="linenumber">64</context> 2991 <context context-type="linenumber">63</context>
2828 </context-group> 2992 </context-group>
2829 </trans-unit> 2993 </trans-unit>
2830 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 2994 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -2894,57 +3058,43 @@ Altri video</target>
2894 <context context-type="linenumber">1</context> 3058 <context context-type="linenumber">1</context>
2895 </context-group> 3059 </context-group>
2896 </trans-unit> 3060 </trans-unit>
2897 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed"> 3061 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
2898 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source> 3062 <source>Success</source>
2899 <target>Hai inserito un testo personalizzato <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target>
2900 <context-group name="null">
2901 <context context-type="linenumber">1</context>
2902 </context-group>
2903 </trans-unit>
2904 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
2905 <source>This could lead to security issues or bugs if you do not understand it. </source>
2906 <target>Questo potrebbe portare a problemi di sicurreza o errori nel programma se tu non capisci cosa fai. </target>
2907 <context-group name="null"> 3063 <context-group name="null">
2908 <context context-type="linenumber">1</context> 3064 <context context-type="linenumber">1</context>
2909 </context-group> 3065 </context-group>
2910 </trans-unit> 3066 </trans-unit>
2911 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0"> 3067 <trans-unit id="b9e64712e3e5c342ce9cd32eec6cd7d6c00f4048">
2912 <source>Are you sure you want to update the configuration?</source> 3068 <source>Configuration updated.</source>
2913 <target>Sei sicuro di volere un aggiornamento della configurazione?</target> 3069 <target>Configurazione aggiornata.</target>
2914 <context-group name="null"> 3070 <context-group name="null">
2915 <context context-type="linenumber">1</context> 3071 <context context-type="linenumber">1</context>
2916 </context-group> 3072 </context-group>
2917 </trans-unit> 3073 </trans-unit>
2918 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119"> 3074 <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf">
2919 <source>Please type</source> 3075 <source>Unlimited</source>
2920 <target>Per favore digita</target> 3076 <target>Illimitato/ti</target>
2921 <context-group name="null"> 3077 <context-group name="null">
2922 <context context-type="linenumber">1</context> 3078 <context context-type="linenumber">1</context>
2923 </context-group> 3079 </context-group>
2924 </trans-unit> 3080 </trans-unit>
2925 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d"> 3081 <trans-unit id="31dcc0c63f6234ace8caa84ae1abc33d4022122d">
2926 <source>to confirm.</source> 3082 <source>10MB</source>
2927 <target>per confermare.</target> 3083 <target>10MB</target>
2928 <context-group name="null"> 3084 <context-group name="null">
2929 <context context-type="linenumber">1</context> 3085 <context context-type="linenumber">1</context>
2930 </context-group> 3086 </context-group>
2931 </trans-unit> 3087 </trans-unit>
2932 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 3088 <trans-unit id="f2f968b6f2199b919f567702c6f23b43e5ea71af">
2933 <source>Success</source> 3089 <source>50MB</source>
3090 <target>50MB</target>
2934 <context-group name="null"> 3091 <context-group name="null">
2935 <context context-type="linenumber">1</context> 3092 <context context-type="linenumber">1</context>
2936 </context-group> 3093 </context-group>
2937 </trans-unit> 3094 </trans-unit>
2938 <trans-unit id="b9e64712e3e5c342ce9cd32eec6cd7d6c00f4048"> 3095 <trans-unit id="c31575424fe1b2a57064413f3eda7ce657c46c8a">
2939 <source>Configuration updated.</source> 3096 <source>2GB</source>
2940 <target>Configurazione aggiornata.</target> 3097 <target>2GB</target>
2941 <context-group name="null">
2942 <context context-type="linenumber">1</context>
2943 </context-group>
2944 </trans-unit>
2945 <trans-unit id="aa6fb95c355f172bda303de1ce2f38c251a149cf">
2946 <source>Unlimited</source>
2947 <target>Illimitato/ti</target>
2948 <context-group name="null"> 3098 <context-group name="null">
2949 <context context-type="linenumber">1</context> 3099 <context context-type="linenumber">1</context>
2950 </context-group> 3100 </context-group>
@@ -2958,7 +3108,7 @@ Altri video</target>
2958 </trans-unit> 3108 </trans-unit>
2959 <trans-unit id="e02f50674f1d96966384dc096beb42d4973997df"> 3109 <trans-unit id="e02f50674f1d96966384dc096beb42d4973997df">
2960 <source>You need to specify hosts to follow.</source> 3110 <source>You need to specify hosts to follow.</source>
2961 <target>Devi specificare gli host per seguire.</target> 3111 <target>Devi specificare gli host da seguire.</target>
2962 <context-group name="null"> 3112 <context-group name="null">
2963 <context context-type="linenumber">1</context> 3113 <context context-type="linenumber">1</context>
2964 </context-group> 3114 </context-group>
@@ -3012,6 +3162,20 @@ Altri video</target>
3012 <context context-type="linenumber">1</context> 3162 <context context-type="linenumber">1</context>
3013 </context-group> 3163 </context-group>
3014 </trans-unit> 3164 </trans-unit>
3165 <trans-unit id="795733aac948794cadeb3be6386882efac2c38ad">
3166 <source>disabled</source>
3167 <target>disabilitato</target>
3168 <context-group name="null">
3169 <context context-type="linenumber">1</context>
3170 </context-group>
3171 </trans-unit>
3172 <trans-unit id="1123807fc813c816404598147173403d00117557">
3173 <source>Redundancy for <x id="INTERPOLATION" equiv-text="{{host}}"/> is <x id="INTERPOLATION_1" equiv-text="{{stateLabel}}"/></source>
3174 <target>La ridondanza per <x id="INTERPOLATION" equiv-text="{{host}}"/> è <x id="INTERPOLATION_1" equiv-text="{{stateLabel}}"/></target>
3175 <context-group name="null">
3176 <context context-type="linenumber">1</context>
3177 </context-group>
3178 </trans-unit>
3015 <trans-unit id="800cd3cdf47751b576587259ba3a1bc0a7f435b6"> 3179 <trans-unit id="800cd3cdf47751b576587259ba3a1bc0a7f435b6">
3016 <source>Comment updated.</source> 3180 <source>Comment updated.</source>
3017 <target>Commento modificato.</target> 3181 <target>Commento modificato.</target>
@@ -3088,20 +3252,6 @@ Altri video</target>
3088 <context context-type="linenumber">1</context> 3252 <context context-type="linenumber">1</context>
3089 </context-group> 3253 </context-group>
3090 </trans-unit> 3254 </trans-unit>
3091 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
3092 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
3093 <target>L`utente <x id="INTERPOLATION" equiv-text="{{username}}"/> è stato espulso (banned).</target>
3094 <context-group name="null">
3095 <context context-type="linenumber">1</context>
3096 </context-group>
3097 </trans-unit>
3098 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3099 <source>Ban</source>
3100 <target>Ban (espelli)</target>
3101 <context-group name="null">
3102 <context context-type="linenumber">1</context>
3103 </context-group>
3104 </trans-unit>
3105 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 3255 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3106 <source>Unban</source> 3256 <source>Unban</source>
3107 <target>Rimuovi ban</target> 3257 <target>Rimuovi ban</target>
@@ -3115,19 +3265,6 @@ Altri video</target>
3115 <context context-type="linenumber">1</context> 3265 <context context-type="linenumber">1</context>
3116 </context-group> 3266 </context-group>
3117 </trans-unit> 3267 </trans-unit>
3118 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
3119 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
3120 <context-group name="null">
3121 <context context-type="linenumber">1</context>
3122 </context-group>
3123 </trans-unit>
3124 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
3125 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
3126 <target>L`utente <x id="INTERPOLATION" equiv-text="{{username}}"/> è stato riammesso.</target>
3127 <context-group name="null">
3128 <context context-type="linenumber">1</context>
3129 </context-group>
3130 </trans-unit>
3131 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 3268 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
3132 <source>You cannot delete root.</source> 3269 <source>You cannot delete root.</source>
3133 <target>Non puoi rimuovere root.</target> 3270 <target>Non puoi rimuovere root.</target>
@@ -3135,13 +3272,6 @@ Altri video</target>
3135 <context context-type="linenumber">1</context> 3272 <context context-type="linenumber">1</context>
3136 </context-group> 3273 </context-group>
3137 </trans-unit> 3274 </trans-unit>
3138 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3139 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3140 <target>L`utente <x id="INTERPOLATION" equiv-text="{{username}}"/> è stato rimosso.</target>
3141 <context-group name="null">
3142 <context context-type="linenumber">1</context>
3143 </context-group>
3144 </trans-unit>
3145 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e"> 3275 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3146 <source>Ownership accepted</source> 3276 <source>Ownership accepted</source>
3147 <context-group name="null"> 3277 <context-group name="null">
@@ -3155,6 +3285,13 @@ Altri video</target>
3155 <context context-type="linenumber">1</context> 3285 <context context-type="linenumber">1</context>
3156 </context-group> 3286 </context-group>
3157 </trans-unit> 3287 </trans-unit>
3288 <trans-unit id="466fc8cf56fd4e4e90fec4b900ef083d52bec38c">
3289 <source>You current password is invalid.</source>
3290 <target>La tua attuale password non è valida.</target>
3291 <context-group name="null">
3292 <context context-type="linenumber">1</context>
3293 </context-group>
3294 </trans-unit>
3158 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047"> 3295 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047">
3159 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source> 3296 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source>
3160 <target>Sei sicuro di volere eliminare il tuo account? Questa azione eliminerá tutti it tuoi dati compresi canali, video etc.</target> 3297 <target>Sei sicuro di volere eliminare il tuo account? Questa azione eliminerá tutti it tuoi dati compresi canali, video etc.</target>
@@ -3283,6 +3420,7 @@ Altri video</target>
3283 </trans-unit> 3420 </trans-unit>
3284 <trans-unit id="8e6d54c4f760d9e90518eef5334211c48c0b71e2"> 3421 <trans-unit id="8e6d54c4f760d9e90518eef5334211c48c0b71e2">
3285 <source>Publication scheduled on </source> 3422 <source>Publication scheduled on </source>
3423 <target>Pubblicazione programmata per il</target>
3286 <context-group name="null"> 3424 <context-group name="null">
3287 <context context-type="linenumber">1</context> 3425 <context context-type="linenumber">1</context>
3288 </context-group> 3426 </context-group>
@@ -3371,6 +3509,13 @@ Altri video</target>
3371 <context context-type="linenumber">1</context> 3509 <context context-type="linenumber">1</context>
3372 </context-group> 3510 </context-group>
3373 </trans-unit> 3511 </trans-unit>
3512 <trans-unit id="5c0c574151dc8671d9199980ee04bf65aec3b452">
3513 <source>Keyboard Shortcuts:</source>
3514 <target>Scorciatoie per la tastiera:</target>
3515 <context-group name="null">
3516 <context context-type="linenumber">1</context>
3517 </context-group>
3518 </trans-unit>
3374 <trans-unit id="247071f6c9233b7e5bc1d8f46795ab6b032f1fbe"> 3519 <trans-unit id="247071f6c9233b7e5bc1d8f46795ab6b032f1fbe">
3375 <source>Incorrect username or password.</source> 3520 <source>Incorrect username or password.</source>
3376 <target>Username or password non corretti</target> 3521 <target>Username or password non corretti</target>
@@ -3518,16 +3663,203 @@ Altri video</target>
3518 <context context-type="linenumber">1</context> 3663 <context context-type="linenumber">1</context>
3519 </context-group> 3664 </context-group>
3520 </trans-unit> 3665 </trans-unit>
3666 <trans-unit id="545f5dea553b2d7c4a65920ccdcb1e9dbdc7f4d8">
3667 <source>Captions cache size is required.</source>
3668 <target>La dimensione della cache delle descrizioni è richiesta.</target>
3669 <context-group name="null">
3670 <context context-type="linenumber">1</context>
3671 </context-group>
3672 </trans-unit>
3673 <trans-unit id="a8d7131c0ca1eefe7b058e6081236ca1be364e2c">
3674 <source>Captions cache size must be greater than 1.</source>
3675 <target>La dimensione della cache delle descrizioni deve essere piú grande di 1.</target>
3676 <context-group name="null">
3677 <context context-type="linenumber">1</context>
3678 </context-group>
3679 </trans-unit>
3680 <trans-unit id="c3decd47b03cf542df091c1a2fb25b756e59074e">
3681 <source>Captions cache size must be a number.</source>
3682 <target>La dimensione della cache delle descrizioni deve essere un numero.</target>
3683 <context-group name="null">
3684 <context context-type="linenumber">1</context>
3685 </context-group>
3686 </trans-unit>
3687 <trans-unit id="2cdd5a8c604ef16c2f9a17ed81d73f4f9509e828">
3688 <source>Signup limit is required.</source>
3689 <target>Il limite per le sottoscrizioni è un campo richiesto.</target>
3690 <context-group name="null">
3691 <context context-type="linenumber">1</context>
3692 </context-group>
3693 </trans-unit>
3694 <trans-unit id="0ca9f7ec55c9896add6e82d2b52e9217e1140cf7">
3695 <source>Signup limit must be greater than 1.</source>
3696 <target>Il limite per le sottoscrizioni deve essere piú grande di 1.</target>
3697 <context-group name="null">
3698 <context context-type="linenumber">1</context>
3699 </context-group>
3700 </trans-unit>
3701 <trans-unit id="58c2f66ba74f1400914031ef4ed635938e9e8ced">
3702 <source>Signup limit must be a number.</source>
3703 <target>Il limite per le sottoscrizioni deve essere un numero.</target>
3704 <context-group name="null">
3705 <context context-type="linenumber">1</context>
3706 </context-group>
3707 </trans-unit>
3521 <trans-unit id="1245841647f9b42d3e7554903c1c50bdd80ab021"> 3708 <trans-unit id="1245841647f9b42d3e7554903c1c50bdd80ab021">
3522 <source>Admin email is required.</source> 3709 <source>Admin email is required.</source>
3523 <target>Ci vuole l'email del amministratore.</target> 3710 <target>Ci vuole l'email dell'amministratore.</target>
3711 <context-group name="null">
3712 <context context-type="linenumber">1</context>
3713 </context-group>
3714 </trans-unit>
3715 <trans-unit id="3fd2feb77dfe57fe82573e3cdf996105e2fafc66">
3716 <source>Admin email must be valid.</source>
3717 <target>L'email dell'amministratore deve essere valida.</target>
3718 <context-group name="null">
3719 <context context-type="linenumber">1</context>
3720 </context-group>
3721 </trans-unit>
3722 <trans-unit id="f15f2e02b1f6a96553e98ea4a969045d17ec1400">
3723 <source>Transcoding threads is required.</source>
3724 <target>Il numero di thread di transcodifica è richiesto.</target>
3725 <context-group name="null">
3726 <context context-type="linenumber">1</context>
3727 </context-group>
3728 </trans-unit>
3729 <trans-unit id="4166cc066b963a23829b48a09e394f73b453fabd">
3730 <source>Transcoding threads must be greater or equal to 0.</source>
3731 <target>Il numero di thread di transcodifica deve essere più grande o uguale a 0.</target>
3732 <context-group name="null">
3733 <context context-type="linenumber">1</context>
3734 </context-group>
3735 </trans-unit>
3736 <trans-unit id="5db300f6fba918a35597160183205ede13e8e149">
3737 <source>Username is required.</source>
3738 <target>L'username è necessario.</target>
3739 <context-group name="null">
3740 <context context-type="linenumber">1</context>
3741 </context-group>
3742 </trans-unit>
3743 <trans-unit id="4eb39d69b74d7a56652ec84fa6826994ee26c0e5">
3744 <source>Password is required.</source>
3745 <target>La password è necessaria.</target>
3746 <context-group name="null">
3747 <context context-type="linenumber">1</context>
3748 </context-group>
3749 </trans-unit>
3750 <trans-unit id="c90872a06666a51c2957c4b29724e68df5c67154">
3751 <source>Confirmation of the password is required.</source>
3752 <target>La conferma della password è necessaria.</target>
3753 <context-group name="null">
3754 <context context-type="linenumber">1</context>
3755 </context-group>
3756 </trans-unit>
3757 <trans-unit id="05ad6b99d9bf7b51968aa0b0b939e8627a329bea">
3758 <source>Username must be at least 3 characters long.</source>
3759 <target>L'username deve essere almeno di 3 caratteri.</target>
3760 <context-group name="null">
3761 <context context-type="linenumber">1</context>
3762 </context-group>
3763 </trans-unit>
3764 <trans-unit id="d4b11fd0ddeea39b33f911d3aac1e82799cdaaef">
3765 <source>Username cannot be more than 20 characters long.</source>
3766 <target>L'username non può essere più di 20 caratteri.</target>
3767 <context-group name="null">
3768 <context context-type="linenumber">1</context>
3769 </context-group>
3770 </trans-unit>
3771 <trans-unit id="5acbe0aa7a7157b1f09057a98ba01ab578a303a9">
3772 <source>Username should be only lowercase alphanumeric characters.</source>
3773 <target>L'username dovrebbe essere solo in minuscolo e contenere solo alfanumerici.</target>
3774 <context-group name="null">
3775 <context context-type="linenumber">1</context>
3776 </context-group>
3777 </trans-unit>
3778 <trans-unit id="b6f52e19f074f77866fa03fabe1ddd5cdae346f0">
3779 <source>Email is required.</source>
3780 <target>L'email è richiesta.</target>
3781 <context-group name="null">
3782 <context context-type="linenumber">1</context>
3783 </context-group>
3784 </trans-unit>
3785 <trans-unit id="bef8a36c3dffff15fb5faf3d20bdbbbc1af824c1">
3786 <source>Email must be valid.</source>
3787 <target>L'email deve essere valida.</target>
3788 <context-group name="null">
3789 <context context-type="linenumber">1</context>
3790 </context-group>
3791 </trans-unit>
3792 <trans-unit id="1fe26e49476ac701885abc59127e96a3760847f0">
3793 <source>Password must be at least 6 characters long.</source>
3794 <target>La password deve essere lunga almeno 6 caratteri.</target>
3795 <context-group name="null">
3796 <context context-type="linenumber">1</context>
3797 </context-group>
3798 </trans-unit>
3799 <trans-unit id="0a154031f3e66985af96d5f903441cf84f0dc75e">
3800 <source>Password cannot be more than 255 characters long.</source>
3801 <target>La password non può essere più lunga di 255 caratteri.</target>
3802 <context-group name="null">
3803 <context context-type="linenumber">1</context>
3804 </context-group>
3805 </trans-unit>
3806 <trans-unit id="2db8f1f93a5485c32267762a3bf4da499832e732">
3807 <source>The new password and the confirmed password do not correspond.</source>
3808 <target>La nuova password e quella di conferma non coincidono.</target>
3809 <context-group name="null">
3810 <context context-type="linenumber">1</context>
3811 </context-group>
3812 </trans-unit>
3813 <trans-unit id="abede840116d58f04a55d99a6cbd68da8a3e1bbf">
3814 <source>Video quota is required.</source>
3815 <target>La quota per il video è richiesta.</target>
3816 <context-group name="null">
3817 <context context-type="linenumber">1</context>
3818 </context-group>
3819 </trans-unit>
3820 <trans-unit id="93a6dc1d3aa0d3201c86ef1ec8adf5cf0ada3c80">
3821 <source>Quota must be greater than -1.</source>
3822 <target>La quota deve essere più grande di -1.</target>
3823 <context-group name="null">
3824 <context context-type="linenumber">1</context>
3825 </context-group>
3826 </trans-unit>
3827 <trans-unit id="7e58d1fb4e86af94f5199660ef349d55811888bb">
3828 <source>Daily upload limit is required.</source>
3829 <target>Il limite di caricamento giornaliero è necessario.</target>
3830 <context-group name="null">
3831 <context context-type="linenumber">1</context>
3832 </context-group>
3833 </trans-unit>
3834 <trans-unit id="e283cbc4469959ea664f9d545f15278e089a6f1e">
3835 <source>Daily upload limit must be greater than -1.</source>
3836 <target>Il limite di caricamento giornaliero deve essere più grande di -1.</target>
3837 <context-group name="null">
3838 <context context-type="linenumber">1</context>
3839 </context-group>
3840 </trans-unit>
3841 <trans-unit id="545e77fd5d9526228a2133109447c23225ed9c85">
3842 <source>User role is required.</source>
3843 <target>Il ruolo dell'utente è necessario.</target>
3844 <context-group name="null">
3845 <context context-type="linenumber">1</context>
3846 </context-group>
3847 </trans-unit>
3848 <trans-unit id="1c417b7aef730d6ef5d62fa8a0a7e25e3a2393e4">
3849 <source>Display name is required.</source>
3850 <target>Il nome visualizzato è necessario.</target>
3851 <context-group name="null">
3852 <context context-type="linenumber">1</context>
3853 </context-group>
3854 </trans-unit>
3855 <trans-unit id="bdeb1a8e69e137572df795d64120ea85069b7674">
3856 <source>Display name must be at least 3 characters long.</source>
3524 <context-group name="null"> 3857 <context-group name="null">
3525 <context context-type="linenumber">1</context> 3858 <context context-type="linenumber">1</context>
3526 </context-group> 3859 </context-group>
3527 </trans-unit> 3860 </trans-unit>
3528 <trans-unit id="e81bda510399d52f26a44a15c3dbf4d6205d90a9"> 3861 <trans-unit id="e81bda510399d52f26a44a15c3dbf4d6205d90a9">
3529 <source>Display name cannot be more than 120 characters long.</source> 3862 <source>Display name cannot be more than 120 characters long.</source>
3530 <target>Il nome mostrato non deve superare i 120 caratteri.</target>
3531 <context-group name="null"> 3863 <context-group name="null">
3532 <context context-type="linenumber">1</context> 3864 <context context-type="linenumber">1</context>
3533 </context-group> 3865 </context-group>
@@ -3548,7 +3880,70 @@ Altri video</target>
3548 </trans-unit> 3880 </trans-unit>
3549 <trans-unit id="4a3ebc6ddb6b6677aed7b04eb503f9ddd0cfe561"> 3881 <trans-unit id="4a3ebc6ddb6b6677aed7b04eb503f9ddd0cfe561">
3550 <source>You must to agree with the instance terms in order to registering on it.</source> 3882 <source>You must to agree with the instance terms in order to registering on it.</source>
3551 <target>Devi accetare le regole del server per registrarti sopra</target> 3883 <target>Devi accettare le regole dell'istanza per registrarti.</target>
3884 <context-group name="null">
3885 <context context-type="linenumber">1</context>
3886 </context-group>
3887 </trans-unit>
3888 <trans-unit id="6d2c3ebffd49b8933200a6d4e5b74712be49bf00">
3889 <source>Ban reason must be at least 3 characters long.</source>
3890 <target>Il motivo dell'espulsione (ban) deve essere lungo almeno 3 caratteri.</target>
3891 <context-group name="null">
3892 <context context-type="linenumber">1</context>
3893 </context-group>
3894 </trans-unit>
3895 <trans-unit id="be32ff1dd6e464c5c085dd7d128316f476d2e0fd">
3896 <source>Ban reason cannot be more than 250 characters long.</source>
3897 <target>Il motivo dell'espulsione non deve essere più lungo di 250 caratteri.</target>
3898 <context-group name="null">
3899 <context context-type="linenumber">1</context>
3900 </context-group>
3901 </trans-unit>
3902 <trans-unit id="b3cf1889d2fdd6b15e697c270c9b80772fe2cae6">
3903 <source>Report reason is required.</source>
3904 <target>Il motivo per la segnalazione è richiesto.</target>
3905 <context-group name="null">
3906 <context context-type="linenumber">1</context>
3907 </context-group>
3908 </trans-unit>
3909 <trans-unit id="993f9f5703d449a1d467243db75253d288a2947e">
3910 <source>Report reason must be at least 2 characters long.</source>
3911 <target>Il motivo per la segnalazione deve essere lungo almeno 2 caratteri.</target>
3912 <context-group name="null">
3913 <context context-type="linenumber">1</context>
3914 </context-group>
3915 </trans-unit>
3916 <trans-unit id="7de2178ed1036844fb1c3ad8b7899a039fcdcdb9">
3917 <source>Report reason cannot be more than 300 characters long.</source>
3918 <target>Il motivo per la segnalazione non può essere più lungo di 300 caratteri.</target>
3919 <context-group name="null">
3920 <context context-type="linenumber">1</context>
3921 </context-group>
3922 </trans-unit>
3923 <trans-unit id="2fa41debd17a206d4a2a5e8d14bcd7055f6e5118">
3924 <source>Moderation comment is required.</source>
3925 <target>Il commento di moderazione è richiesto.</target>
3926 <context-group name="null">
3927 <context context-type="linenumber">1</context>
3928 </context-group>
3929 </trans-unit>
3930 <trans-unit id="82e31d0837eaa69a4364e7434d253ce138b3c5c2">
3931 <source>Moderation comment must be at least 2 characters long.</source>
3932 <target>Il commento di moderazione deve essere lungo almeno 2 caratteri.</target>
3933 <context-group name="null">
3934 <context context-type="linenumber">1</context>
3935 </context-group>
3936 </trans-unit>
3937 <trans-unit id="89d0b662dde0871cf17244e79b2cb62cd517e44f">
3938 <source>Moderation comment cannot be more than 300 characters long.</source>
3939 <target>Il commento di moderazione non può essere più lungo di 300 caratteri.</target>
3940 <context-group name="null">
3941 <context context-type="linenumber">1</context>
3942 </context-group>
3943 </trans-unit>
3944 <trans-unit id="94b831c7e3684258f88e099c6cd3b8f73f8a2de6">
3945 <source>The channel is required.</source>
3946 <target>Il canale è richiesto.</target>
3552 <context-group name="null"> 3947 <context-group name="null">
3553 <context context-type="linenumber">1</context> 3948 <context context-type="linenumber">1</context>
3554 </context-group> 3949 </context-group>
@@ -3595,6 +3990,27 @@ Altri video</target>
3595 <context context-type="linenumber">1</context> 3990 <context context-type="linenumber">1</context>
3596 </context-group> 3991 </context-group>
3597 </trans-unit> 3992 </trans-unit>
3993 <trans-unit id="6ca60e0f6dfbc0073b0514bce7d273150b0b9e79">
3994 <source>Comment is required.</source>
3995 <target>Un commento è necessario.</target>
3996 <context-group name="null">
3997 <context context-type="linenumber">1</context>
3998 </context-group>
3999 </trans-unit>
4000 <trans-unit id="f5a94cae76685e72f33541b977efdd7845cb0ed6">
4001 <source>Comment must be at least 2 characters long.</source>
4002 <target>Il commento deve essere lungo almeno 2 caratteri.</target>
4003 <context-group name="null">
4004 <context context-type="linenumber">1</context>
4005 </context-group>
4006 </trans-unit>
4007 <trans-unit id="7c194080446ee6901fd17a8b8648534ffe98b123">
4008 <source>Comment cannot be more than 3000 characters long.</source>
4009 <target>Il commento non può essere più lungo di 3000 caratteri</target>
4010 <context-group name="null">
4011 <context context-type="linenumber">1</context>
4012 </context-group>
4013 </trans-unit>
3598 <trans-unit id="cdc51eaeab88683610a28af8645cf91d136b39e1"> 4014 <trans-unit id="cdc51eaeab88683610a28af8645cf91d136b39e1">
3599 <source>Video name is required.</source> 4015 <source>Video name is required.</source>
3600 <target>Ci vuole il nome del video.</target> 4016 <target>Ci vuole il nome del video.</target>
@@ -3604,7 +4020,7 @@ Altri video</target>
3604 </trans-unit> 4020 </trans-unit>
3605 <trans-unit id="c27cc734f76efd221663921dd0898ea7c8bcbb5c"> 4021 <trans-unit id="c27cc734f76efd221663921dd0898ea7c8bcbb5c">
3606 <source>Video name must be at least 3 characters long.</source> 4022 <source>Video name must be at least 3 characters long.</source>
3607 <target>Il nome video deve essere al minimo lunguo di tre caratteri.</target> 4023 <target>Il nome video deve essere minimo di tre caratteri.</target>
3608 <context-group name="null"> 4024 <context-group name="null">
3609 <context context-type="linenumber">1</context> 4025 <context context-type="linenumber">1</context>
3610 </context-group> 4026 </context-group>
@@ -3616,9 +4032,30 @@ Altri video</target>
3616 <context context-type="linenumber">1</context> 4032 <context context-type="linenumber">1</context>
3617 </context-group> 4033 </context-group>
3618 </trans-unit> 4034 </trans-unit>
4035 <trans-unit id="97afb789c1ab09074495d49aaadb92a1c3e71a16">
4036 <source>Video channel is required.</source>
4037 <target>Il canale del video è necessario.</target>
4038 <context-group name="null">
4039 <context context-type="linenumber">1</context>
4040 </context-group>
4041 </trans-unit>
4042 <trans-unit id="af5e2d5f3ac817c735fb7ff9ca16322789f66fef">
4043 <source>Video description must be at least 3 characters long.</source>
4044 <target>La descrizione del video deve essere lunga almeno 3 caratteri.</target>
4045 <context-group name="null">
4046 <context context-type="linenumber">1</context>
4047 </context-group>
4048 </trans-unit>
4049 <trans-unit id="ce28a9403c2d7e5da2e59af27118f8b6d109e906">
4050 <source>Video description cannot be more than 10000 characters long.</source>
4051 <target>La descrizione del video non può essere più lunga di 10000 caratteri.</target>
4052 <context-group name="null">
4053 <context context-type="linenumber">1</context>
4054 </context-group>
4055 </trans-unit>
3619 <trans-unit id="f1cffdc2e156716cd9880201d65ba457d11464f8"> 4056 <trans-unit id="f1cffdc2e156716cd9880201d65ba457d11464f8">
3620 <source>A tag should be more than 2 characters long.</source> 4057 <source>A tag should be more than 2 characters long.</source>
3621 <target>Un tag deve contenire al minimo 2 caratteri.</target> 4058 <target>Un tag deve contenere minimo 2 caratteri.</target>
3622 <context-group name="null"> 4059 <context-group name="null">
3623 <context context-type="linenumber">1</context> 4060 <context context-type="linenumber">1</context>
3624 </context-group> 4061 </context-group>
@@ -3630,23 +4067,37 @@ Altri video</target>
3630 <context context-type="linenumber">1</context> 4067 <context context-type="linenumber">1</context>
3631 </context-group> 4068 </context-group>
3632 </trans-unit> 4069 </trans-unit>
4070 <trans-unit id="665092574f9af9fec262f8349b67b14192391ae6">
4071 <source>Video support must be at least 3 characters long.</source>
4072 <target>Supporto video deve essere almeno di 3 caratteri</target>
4073 <context-group name="null">
4074 <context context-type="linenumber">1</context>
4075 </context-group>
4076 </trans-unit>
4077 <trans-unit id="e61f1c05121fa5effa6ccddf5be6dcf1c822ff4b">
4078 <source>Video support cannot be more than 500 characters long.</source>
4079 <target>Supporto video non può essere più lungo di 500 caratteri.</target>
4080 <context-group name="null">
4081 <context context-type="linenumber">1</context>
4082 </context-group>
4083 </trans-unit>
3633 <trans-unit id="453413bf387dea681958871319bab489dd5e6ec0"> 4084 <trans-unit id="453413bf387dea681958871319bab489dd5e6ec0">
3634 <source>A date is required to schedule video update.</source> 4085 <source>A date is required to schedule video update.</source>
3635 <target>Ci vuole una data per programmare l'aggiornamento della video.</target> 4086 <target>La data è necessaria per programmare l'aggiornamento del video.</target>
3636 <context-group name="null"> 4087 <context-group name="null">
3637 <context context-type="linenumber">1</context> 4088 <context context-type="linenumber">1</context>
3638 </context-group> 4089 </context-group>
3639 </trans-unit> 4090 </trans-unit>
3640 <trans-unit id="3b7ed22d0730d03b38c254332829d855ee7256c4"> 4091 <trans-unit id="3b7ed22d0730d03b38c254332829d855ee7256c4">
3641 <source>This file is too large.</source> 4092 <source>This file is too large.</source>
3642 <target>Il file e troppo grande.</target> 4093 <target>Il file è troppo grande.</target>
3643 <context-group name="null"> 4094 <context-group name="null">
3644 <context context-type="linenumber">1</context> 4095 <context context-type="linenumber">1</context>
3645 </context-group> 4096 </context-group>
3646 </trans-unit> 4097 </trans-unit>
3647 <trans-unit id="0bf41abaa85526711f7952b4600e4044bc7f04a4"> 4098 <trans-unit id="0bf41abaa85526711f7952b4600e4044bc7f04a4">
3648 <source>All unsaved data will be lost, are you sure you want to leave this page?</source> 4099 <source>All unsaved data will be lost, are you sure you want to leave this page?</source>
3649 <target>I dati non salvati saranno persi. Sei sicuro di volere chiudere questa pagina ?</target> 4100 <target>I dati non salvati saranno persi. Sei sicuro di volere chiudere questa pagina?</target>
3650 <context-group name="null"> 4101 <context-group name="null">
3651 <context context-type="linenumber">1</context> 4102 <context context-type="linenumber">1</context>
3652 </context-group> 4103 </context-group>
@@ -3966,9 +4417,70 @@ Altri video</target>
3966 <context context-type="linenumber">1</context> 4417 <context context-type="linenumber">1</context>
3967 </context-group> 4418 </context-group>
3968 </trans-unit> 4419 </trans-unit>
4420 <trans-unit id="99ee4faa69cd2ea8e3678c1f557c0ff1f05aae46">
4421 <source>Clear</source>
4422 <target>Resetta</target>
4423 <context-group name="null">
4424 <context context-type="linenumber">1</context>
4425 </context-group>
4426 </trans-unit>
4427 <trans-unit id="8fb519ba47ea7806beeacdcd44829d85a2aa0cc5">
4428 <source>yy-mm-dd </source>
4429 <target>yy-mm-dd </target>
4430 <context-group name="null">
4431 <context context-type="linenumber">1</context>
4432 </context-group>
4433 </trans-unit>
3969 <trans-unit id="a0fdb831d4557925dbaa4f8aff7e5035f7506411"> 4434 <trans-unit id="a0fdb831d4557925dbaa4f8aff7e5035f7506411">
3970 <source>Transcode your videos in multiple resolutions</source> 4435 <source>Transcode your videos in multiple resolutions</source>
3971 <target>Transcodi le tue video in multiple risoluzioni</target> 4436 <target>Transcodifica i tuoi video in multiple risoluzioni</target>
4437 <context-group name="null">
4438 <context context-type="linenumber">1</context>
4439 </context-group>
4440 </trans-unit>
4441 <trans-unit id="590fc27fcbd7dd680da2bb2da644a183338f6bd1">
4442 <source>HTTP import (YouTube, Vimeo, direct URL...)</source>
4443 <target>HTTP import (YouTube, Vimeo, direct URL...)</target>
4444 <context-group name="null">
4445 <context context-type="linenumber">1</context>
4446 </context-group>
4447 </trans-unit>
4448 <trans-unit id="4e231a74ad4739e7b0606e8e66d5a656f5855a5a">
4449 <source>Torrent import</source>
4450 <target>Torrent import</target>
4451 <context-group name="null">
4452 <context context-type="linenumber">1</context>
4453 </context-group>
4454 </trans-unit>
4455 <trans-unit id="7296e9f7cc4956b6d57c541728b0826e76d108ba">
4456 <source>~ <x id="INTERPOLATION" equiv-text="{{minutes}}"/> <x id="ICU" equiv-text="{minutes, plural, =1 {...} other {...}}"/></source>
4457 <target>~ <x id="INTERPOLATION" equiv-text="{{minutes}}"/> <x id="ICU" equiv-text="{minutes, plural, =1 {...} other {...}}"/></target>
4458 <context-group name="null">
4459 <context context-type="linenumber">1</context>
4460 </context-group>
4461 </trans-unit>
4462 <trans-unit id="cf9ddbb55b25178660e09346209aedc10108aa24">
4463 <source>{VAR_PLURAL, plural, =1 {minute} other {minutes} }</source>
4464 <target>{VAR_PLURAL, plural, =1 {minute} other {minutes} }</target>
4465 <context-group name="null">
4466 <context context-type="linenumber">1</context>
4467 </context-group>
4468 </trans-unit>
4469 <trans-unit id="10ffa5c3dbcee491d66f80d8d4dce3e119a6ec86">
4470 <source><x id="INTERPOLATION" equiv-text="{{seconds}}"/> of full HD videos</source>
4471 <target><x id="INTERPOLATION" equiv-text="{{seconds}}"/> di video HD interi</target>
4472 <context-group name="null">
4473 <context context-type="linenumber">1</context>
4474 </context-group>
4475 </trans-unit>
4476 <trans-unit id="344ddae9f45b344e98e7b28cd5e33243982700f8">
4477 <source><x id="INTERPOLATION" equiv-text="{{seconds}}"/> of HD videos</source>
4478 <context-group name="null">
4479 <context context-type="linenumber">1</context>
4480 </context-group>
4481 </trans-unit>
4482 <trans-unit id="435c012df6dd990a1ccb7ee73dd79c488bde28b5">
4483 <source><x id="INTERPOLATION" equiv-text="{{seconds}}"/> of average quality videos</source>
3972 <context-group name="null"> 4484 <context-group name="null">
3973 <context context-type="linenumber">1</context> 4485 <context context-type="linenumber">1</context>
3974 </context-group> 4486 </context-group>
@@ -4085,6 +4597,40 @@ Altri video</target>
4085 <context context-type="linenumber">1</context> 4597 <context context-type="linenumber">1</context>
4086 </context-group> 4598 </context-group>
4087 </trans-unit> 4599 </trans-unit>
4600 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
4601 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
4602 <target>L`utente <x id="INTERPOLATION" equiv-text="{{username}}"/> è stato espulso (banned).</target>
4603 <context-group name="null">
4604 <context context-type="linenumber">1</context>
4605 </context-group>
4606 </trans-unit>
4607 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
4608 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
4609 <context-group name="null">
4610 <context context-type="linenumber">1</context>
4611 </context-group>
4612 </trans-unit>
4613 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
4614 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
4615 <target>L`utente <x id="INTERPOLATION" equiv-text="{{username}}"/> è stato riammesso.</target>
4616 <context-group name="null">
4617 <context context-type="linenumber">1</context>
4618 </context-group>
4619 </trans-unit>
4620 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
4621 <source>If you remove this user, you will not be able to create another with the same username!</source>
4622 <target>Se elimini questo utente, non sarai in grado di crearne un altro con lo stesso username!</target>
4623 <context-group name="null">
4624 <context context-type="linenumber">1</context>
4625 </context-group>
4626 </trans-unit>
4627 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
4628 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
4629 <target>L`utente <x id="INTERPOLATION" equiv-text="{{username}}"/> è stato rimosso.</target>
4630 <context-group name="null">
4631 <context context-type="linenumber">1</context>
4632 </context-group>
4633 </trans-unit>
4088 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 4634 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
4089 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 4635 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
4090 <target>La riquiesta è troppo grande per il server. Per favore contatta il tuo amministratore se vuoi aumentare il limite di dimensione.</target> 4636 <target>La riquiesta è troppo grande per il server. Per favore contatta il tuo amministratore se vuoi aumentare il limite di dimensione.</target>
@@ -4141,6 +4687,13 @@ Altri video</target>
4141 <context context-type="linenumber">1</context> 4687 <context context-type="linenumber">1</context>
4142 </context-group> 4688 </context-group>
4143 </trans-unit> 4689 </trans-unit>
4690 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf">
4691 <source>Moderator</source>
4692 <target>Moderatore</target>
4693 <context-group name="null">
4694 <context context-type="linenumber">1</context>
4695 </context-group>
4696 </trans-unit>
4144 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb"> 4697 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb">
4145 <source>Only I can see this video</source> 4698 <source>Only I can see this video</source>
4146 <target>Solo io posso vedere questo video</target> 4699 <target>Solo io posso vedere questo video</target>
@@ -4157,7 +4710,7 @@ Altri video</target>
4157 </trans-unit> 4710 </trans-unit>
4158 <trans-unit id="15be15cbdc6e960f57e801f457c19165ab39632b"> 4711 <trans-unit id="15be15cbdc6e960f57e801f457c19165ab39632b">
4159 <source>Anyone can see this video</source> 4712 <source>Anyone can see this video</source>
4160 <target>Tutti quanti possono vedere questo video</target> 4713 <target>Tutti possono vedere questo video</target>
4161 <context-group name="null"> 4714 <context-group name="null">
4162 <context context-type="linenumber">1</context> 4715 <context context-type="linenumber">1</context>
4163 </context-group> 4716 </context-group>
@@ -4171,14 +4724,14 @@ Altri video</target>
4171 </trans-unit> 4724 </trans-unit>
4172 <trans-unit id="f5e3d1e1cd2650fc6e86fbfcc8fe854e5cf18d6c"> 4725 <trans-unit id="f5e3d1e1cd2650fc6e86fbfcc8fe854e5cf18d6c">
4173 <source>Please check your email to verify your account and complete signup.</source> 4726 <source>Please check your email to verify your account and complete signup.</source>
4174 <target>Per favore leggi i tuoi email per verificare il tuo account e finire la registrazione.</target> 4727 <target>Per favore controlla la tua email per verificare il tuo account e completare la registrazione.</target>
4175 <context-group name="null"> 4728 <context-group name="null">
4176 <context context-type="linenumber">1</context> 4729 <context context-type="linenumber">1</context>
4177 </context-group> 4730 </context-group>
4178 </trans-unit> 4731 </trans-unit>
4179 <trans-unit id="20deec13d8d4ff199aa04318818ca44dab0585be"> 4732 <trans-unit id="20deec13d8d4ff199aa04318818ca44dab0585be">
4180 <source>Registration for <x id="INTERPOLATION" equiv-text="{{username}}"/> complete.</source> 4733 <source>Registration for <x id="INTERPOLATION" equiv-text="{{username}}"/> complete.</source>
4181 <target>Registrazione per <x id="INTERPOLATION" equiv-text="{{username}}"/> finita.</target> 4734 <target>Registrazione completata per <x id="INTERPOLATION" equiv-text="{{username}}"/>.</target>
4182 <context-group name="null"> 4735 <context-group name="null">
4183 <context context-type="linenumber">1</context> 4736 <context context-type="linenumber">1</context>
4184 </context-group> 4737 </context-group>
@@ -4192,7 +4745,7 @@ Altri video</target>
4192 </trans-unit> 4745 </trans-unit>
4193 <trans-unit id="0e907e5a96537e464b192f8adce79ce6487cbb1c"> 4746 <trans-unit id="0e907e5a96537e464b192f8adce79ce6487cbb1c">
4194 <source>Your video was uploaded to your account and is private.</source> 4747 <source>Your video was uploaded to your account and is private.</source>
4195 <target>Il tuo video e stata caricato sul tuo account ed è privato. </target> 4748 <target>Il tuo video è stato caricato sul tuo account ed è privato.</target>
4196 <context-group name="null"> 4749 <context-group name="null">
4197 <context context-type="linenumber">1</context> 4750 <context context-type="linenumber">1</context>
4198 </context-group> 4751 </context-group>
@@ -4220,28 +4773,28 @@ Altri video</target>
4220 </trans-unit> 4773 </trans-unit>
4221 <trans-unit id="c5cb19aeb6447deda40cc1227ceca1359ab955e9"> 4774 <trans-unit id="c5cb19aeb6447deda40cc1227ceca1359ab955e9">
4222 <source>Upload cancelled</source> 4775 <source>Upload cancelled</source>
4223 <target>Carica cancellata</target> 4776 <target>Caricamento annullato.</target>
4224 <context-group name="null"> 4777 <context-group name="null">
4225 <context context-type="linenumber">1</context> 4778 <context context-type="linenumber">1</context>
4226 </context-group> 4779 </context-group>
4227 </trans-unit> 4780 </trans-unit>
4228 <trans-unit id="c55f41189ac6ad3003cce813245f4508284ed0aa"> 4781 <trans-unit id="c55f41189ac6ad3003cce813245f4508284ed0aa">
4229 <source>We are sorry but PeerTube cannot handle videos &gt; 8GB</source> 4782 <source>We are sorry but PeerTube cannot handle videos &gt; 8GB</source>
4230 <target>Ci dispiace ma PeerTube non può gestire video &gt; 8GB</target> 4783 <target>Ci dispiace ma PeerTube non può gestire video di dimensioni &gt; 8GB</target>
4231 <context-group name="null"> 4784 <context-group name="null">
4232 <context context-type="linenumber">1</context> 4785 <context context-type="linenumber">1</context>
4233 </context-group> 4786 </context-group>
4234 </trans-unit> 4787 </trans-unit>
4235 <trans-unit id="a6019e856f511dbe1fe658790c71c594b26930ee"> 4788 <trans-unit id="a6019e856f511dbe1fe658790c71c594b26930ee">
4236 <source>Your video quota is exceeded with this video (video size: <x id="INTERPOLATION" equiv-text="{{videoSize}}"/>, used: <x id="INTERPOLATION_1" equiv-text="{{videoQuotaUsed}}"/>, quota: <x id="INTERPOLATION_2" equiv-text="{{videoQuota}}"/>)</source> 4789 <source>Your video quota is exceeded with this video (video size: <x id="INTERPOLATION" equiv-text="{{videoSize}}"/>, used: <x id="INTERPOLATION_1" equiv-text="{{videoQuotaUsed}}"/>, quota: <x id="INTERPOLATION_2" equiv-text="{{videoQuota}}"/>)</source>
4237 <target>La tua quota e superata con questo video (dimensione del video: <x id="INTERPOLATION" equiv-text="{{videoSize}}"/>, utilizzato: <x id="INTERPOLATION_1" equiv-text="{{videoQuotaUsed}}"/>, quota: <x id="INTERPOLATION_2" equiv-text="{{videoQuota}}"/>)</target> 4790 <target>La tua quota è stata superata con questo video (dimensione del video: <x id="INTERPOLATION" equiv-text="{{videoSize}}"/>, stai utilizzando: <x id="INTERPOLATION_1" equiv-text="{{videoQuotaUsed}}"/>, quota: <x id="INTERPOLATION_2" equiv-text="{{videoQuota}}"/>)</target>
4238 <context-group name="null"> 4791 <context-group name="null">
4239 <context context-type="linenumber">1</context> 4792 <context context-type="linenumber">1</context>
4240 </context-group> 4793 </context-group>
4241 </trans-unit> 4794 </trans-unit>
4242 <trans-unit id="c980896ac8e08e9751545db1b7ef0e93fb8a52cd"> 4795 <trans-unit id="c980896ac8e08e9751545db1b7ef0e93fb8a52cd">
4243 <source>Your daily video quota is exceeded with this video (video size: <x id="INTERPOLATION" equiv-text="{{videoSize}}"/>, used: <x id="INTERPOLATION_1" equiv-text="{{quotaUsedDaily}}"/>, quota: <x id="INTERPOLATION_2" equiv-text="{{quotaDaily}}"/>)</source> 4796 <source>Your daily video quota is exceeded with this video (video size: <x id="INTERPOLATION" equiv-text="{{videoSize}}"/>, used: <x id="INTERPOLATION_1" equiv-text="{{quotaUsedDaily}}"/>, quota: <x id="INTERPOLATION_2" equiv-text="{{quotaDaily}}"/>)</source>
4244 <target>La tua quota giornaliera e superata con questo video (dimensione del video: <x id="INTERPOLATION" equiv-text="{{videoSize}}"/>, utilizzato: <x id="INTERPOLATION_1" equiv-text="{{quotaUsedDaily}}"/>, quota: <x id="INTERPOLATION_2" equiv-text="{{quotaDaily}}"/>)</target> 4797 <target>La tua quota giornaliera è stata superata con questo video (dimensione del video: <x id="INTERPOLATION" equiv-text="{{videoSize}}"/>, stai utilizzando: <x id="INTERPOLATION_1" equiv-text="{{quotaUsedDaily}}"/>, quota: <x id="INTERPOLATION_2" equiv-text="{{quotaDaily}}"/>)</target>
4245 <context-group name="null"> 4798 <context-group name="null">
4246 <context context-type="linenumber">1</context> 4799 <context context-type="linenumber">1</context>
4247 </context-group> 4800 </context-group>
@@ -4262,7 +4815,7 @@ Altri video</target>
4262 </trans-unit> 4815 </trans-unit>
4263 <trans-unit id="aeb61b334cac080733c3e03766165a346bbf42fd"> 4816 <trans-unit id="aeb61b334cac080733c3e03766165a346bbf42fd">
4264 <source> <x id="INTERPOLATION" equiv-text="{{totalReplies}}"/> replies will be deleted too.</source> 4817 <source> <x id="INTERPOLATION" equiv-text="{{totalReplies}}"/> replies will be deleted too.</source>
4265 <target> <x id="INTERPOLATION" equiv-text="{{totalReplies}}"/> rispote saranno cancellate.</target> 4818 <target> Saranno eliminate <x id="INTERPOLATION" equiv-text="{{totalReplies}}"/> risposte.</target>
4266 <context-group name="null"> 4819 <context-group name="null">
4267 <context context-type="linenumber">1</context> 4820 <context context-type="linenumber">1</context>
4268 </context-group> 4821 </context-group>
@@ -4297,7 +4850,7 @@ Altri video</target>
4297 </trans-unit> 4850 </trans-unit>
4298 <trans-unit id="f1abd89c9280323209e939fa9c30f6e5cda20c95"> 4851 <trans-unit id="f1abd89c9280323209e939fa9c30f6e5cda20c95">
4299 <source>Do you really want to delete this video?</source> 4852 <source>Do you really want to delete this video?</source>
4300 <target>Sei sicuro di volere cancellare questo video ?</target> 4853 <target>Sei sicuro di volere eliminare questo video ?</target>
4301 <context-group name="null"> 4854 <context-group name="null">
4302 <context context-type="linenumber">1</context> 4855 <context context-type="linenumber">1</context>
4303 </context-group> 4856 </context-group>
@@ -4311,14 +4864,21 @@ Altri video</target>
4311 </trans-unit> 4864 </trans-unit>
4312 <trans-unit id="ed013c2c29216501c688e9cb5f3a1c9fd9147b71"> 4865 <trans-unit id="ed013c2c29216501c688e9cb5f3a1c9fd9147b71">
4313 <source>This video contains mature or explicit content. Are you sure you want to watch it?</source> 4866 <source>This video contains mature or explicit content. Are you sure you want to watch it?</source>
4314 <target>Questo video contiene del contenuto sensibile. Sei sicuro di volere guardalo ?</target> 4867 <target>Questo video contiene del contenuto sensibile. Sei sicuro di volerlo guardare?</target>
4868 <context-group name="null">
4869 <context context-type="linenumber">1</context>
4870 </context-group>
4871 </trans-unit>
4872 <trans-unit id="5ba3d522e4146eefcbd5c222247c1e2423d27cd8">
4873 <source>Mature or explicit content</source>
4874 <target>Contenuto per adulti o esplicito.</target>
4315 <context-group name="null"> 4875 <context-group name="null">
4316 <context context-type="linenumber">1</context> 4876 <context context-type="linenumber">1</context>
4317 </context-group> 4877 </context-group>
4318 </trans-unit> 4878 </trans-unit>
4319 <trans-unit id="1b157e15c434469d91e56d027b78bf69c9983165"> 4879 <trans-unit id="1b157e15c434469d91e56d027b78bf69c9983165">
4320 <source>Videos from your subscriptions</source> 4880 <source>Videos from your subscriptions</source>
4321 <target>Video delle tue iscrizioni</target> 4881 <target>Video dalle tue iscrizioni</target>
4322 <context-group name="null"> 4882 <context-group name="null">
4323 <context context-type="linenumber">1</context> 4883 <context context-type="linenumber">1</context>
4324 </context-group> 4884 </context-group>
diff --git a/client/src/locale/target/angular_ja_JP.xml b/client/src/locale/target/angular_ja_JP.xml
index 742eaea34..6ea77a5d9 100644
--- a/client/src/locale/target/angular_ja_JP.xml
+++ b/client/src/locale/target/angular_ja_JP.xml
@@ -217,7 +217,7 @@
217 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 217 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
218 <target> <x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> 回å†ç”Ÿ</target> 218 <target> <x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> 回å†ç”Ÿ</target>
219 <context-group name="null"> 219 <context-group name="null">
220 <context context-type="linenumber">13</context> 220 <context context-type="linenumber">16</context>
221 </context-group> 221 </context-group>
222 </trans-unit> 222 </trans-unit>
223 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 223 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -231,7 +231,7 @@
231 <source>Edit</source> 231 <source>Edit</source>
232 <target>編集</target> 232 <target>編集</target>
233 <context-group name="null"> 233 <context-group name="null">
234 <context context-type="linenumber">5</context> 234 <context context-type="linenumber">1</context>
235 </context-group> 235 </context-group>
236 </trans-unit> 236 </trans-unit>
237 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 237 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -255,6 +255,27 @@
255 <context context-type="linenumber">19</context> 255 <context context-type="linenumber">19</context>
256 </context-group> 256 </context-group>
257 </trans-unit> 257 </trans-unit>
258 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
259 <source>Ban</source>
260 <target>ç¦æ­¢</target>
261 <context-group name="null">
262 <context context-type="linenumber">3</context>
263 </context-group>
264 </trans-unit>
265 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
266 <source>Reason...</source>
267 <target>ç†ç”±â€¦</target>
268 <context-group name="null">
269 <context context-type="linenumber">11</context>
270 </context-group>
271 </trans-unit>
272 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
273 <source>Ban this user</source>
274 <target>ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ç¦æ­¢ã™ã‚‹</target>
275 <context-group name="null">
276 <context context-type="linenumber">25</context>
277 </context-group>
278 </trans-unit>
258 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 279 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
259 <source> 280 <source>
260 Login 281 Login
@@ -432,13 +453,6 @@
432 <context context-type="linenumber">5</context> 453 <context context-type="linenumber">5</context>
433 </context-group> 454 </context-group>
434 </trans-unit> 455 </trans-unit>
435 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
436 <source>Filters</source>
437 <target>フィルタ</target>
438 <context-group name="null">
439 <context context-type="linenumber">16</context>
440 </context-group>
441 </trans-unit>
442 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 456 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
443 <source>Change the language</source> 457 <source>Change the language</source>
444 <context-group name="null"> 458 <context-group name="null">
@@ -622,7 +636,7 @@
622 <source>No results.</source> 636 <source>No results.</source>
623 <target>çµæžœãŒã‚ã‚Šã¾ã›ã‚“。</target> 637 <target>çµæžœãŒã‚ã‚Šã¾ã›ã‚“。</target>
624 <context-group name="null"> 638 <context-group name="null">
625 <context context-type="linenumber">7</context> 639 <context context-type="linenumber">17</context>
626 </context-group> 640 </context-group>
627 </trans-unit> 641 </trans-unit>
628 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 642 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -659,7 +673,7 @@
659 <source>Instance</source> 673 <source>Instance</source>
660 <target>インスタンス</target> 674 <target>インスタンス</target>
661 <context-group name="null"> 675 <context-group name="null">
662 <context context-type="linenumber">8</context> 676 <context context-type="linenumber">12</context>
663 </context-group> 677 </context-group>
664 </trans-unit> 678 </trans-unit>
665 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 679 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -934,14 +948,14 @@
934 <source>Score</source> 948 <source>Score</source>
935 <target>スコア</target> 949 <target>スコア</target>
936 <context-group name="null"> 950 <context-group name="null">
937 <context context-type="linenumber">8</context> 951 <context context-type="linenumber">17</context>
938 </context-group> 952 </context-group>
939 </trans-unit> 953 </trans-unit>
940 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 954 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
941 <source>Host</source> 955 <source>Host</source>
942 <target>ホスト</target> 956 <target>ホスト</target>
943 <context-group name="null"> 957 <context-group name="null">
944 <context context-type="linenumber">8</context> 958 <context context-type="linenumber">19</context>
945 </context-group> 959 </context-group>
946 </trans-unit> 960 </trans-unit>
947 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 961 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1004,21 +1018,7 @@
1004 <source>Role</source> 1018 <source>Role</source>
1005 <target>役割</target> 1019 <target>役割</target>
1006 <context-group name="null"> 1020 <context-group name="null">
1007 <context context-type="linenumber">20</context> 1021 <context context-type="linenumber">43</context>
1008 </context-group>
1009 </trans-unit>
1010 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1011 <source>Reason...</source>
1012 <target>ç†ç”±â€¦</target>
1013 <context-group name="null">
1014 <context context-type="linenumber">11</context>
1015 </context-group>
1016 </trans-unit>
1017 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1018 <source>Ban this user</source>
1019 <target>ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ç¦æ­¢ã™ã‚‹</target>
1020 <context-group name="null">
1021 <context context-type="linenumber">25</context>
1022 </context-group> 1022 </context-group>
1023 </trans-unit> 1023 </trans-unit>
1024 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1024 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
@@ -1028,18 +1028,18 @@
1028 <context context-type="linenumber">2</context> 1028 <context context-type="linenumber">2</context>
1029 </context-group> 1029 </context-group>
1030 </trans-unit> 1030 </trans-unit>
1031 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1031 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1032 <source>Actions</source> 1032 <source>Go to the account page</source>
1033 <target>行動</target> 1033 <target>アカウントページã«ç§»å‹•</target>
1034 <context-group name="null"> 1034 <context-group name="null">
1035 <context context-type="linenumber">33</context> 1035 <context context-type="linenumber">133</context>
1036 </context-group> 1036 </context-group>
1037 </trans-unit> 1037 </trans-unit>
1038 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1038 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1039 <source>Ban reason:</source> 1039 <source>Ban reason:</source>
1040 <target>ç¦æ­¢ç†ç”±ï¼š</target> 1040 <target>ç¦æ­¢ç†ç”±ï¼š</target>
1041 <context-group name="null"> 1041 <context-group name="null">
1042 <context context-type="linenumber">51</context> 1042 <context context-type="linenumber">82</context>
1043 </context-group> 1043 </context-group>
1044 </trans-unit> 1044 </trans-unit>
1045 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1045 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1084,6 +1084,13 @@
1084 <context context-type="linenumber">33</context> 1084 <context context-type="linenumber">33</context>
1085 </context-group> 1085 </context-group>
1086 </trans-unit> 1086 </trans-unit>
1087 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1088 <source>Actions</source>
1089 <target>行動</target>
1090 <context-group name="null">
1091 <context context-type="linenumber">33</context>
1092 </context-group>
1093 </trans-unit>
1087 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 1094 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1088 <source>Reason:</source> 1095 <source>Reason:</source>
1089 <target>ç†ç”±ï¼š</target> 1096 <target>ç†ç”±ï¼š</target>
@@ -1123,7 +1130,7 @@
1123 <source>Ownership changes</source> 1130 <source>Ownership changes</source>
1124 <target>所有権ã®å¤‰æ›´</target> 1131 <target>所有権ã®å¤‰æ›´</target>
1125 <context-group name="null"> 1132 <context-group name="null">
1126 <context context-type="linenumber">22</context> 1133 <context context-type="linenumber">33</context>
1127 </context-group> 1134 </context-group>
1128 </trans-unit> 1135 </trans-unit>
1129 <trans-unit id="994363f08f9fbfa3b3994ff7b35c6904fdff18d8"> 1136 <trans-unit id="994363f08f9fbfa3b3994ff7b35c6904fdff18d8">
@@ -1246,7 +1253,7 @@
1246 <source>Save</source> 1253 <source>Save</source>
1247 <target>貯ã‚ã‚‹</target> 1254 <target>貯ã‚ã‚‹</target>
1248 <context-group name="null"> 1255 <context-group name="null">
1249 <context context-type="linenumber">23</context> 1256 <context context-type="linenumber">28</context>
1250 </context-group> 1257 </context-group>
1251 </trans-unit> 1258 </trans-unit>
1252 <trans-unit id="c860c88df9ad58b1187084251340b232cdf0a7f9"> 1259 <trans-unit id="c860c88df9ad58b1187084251340b232cdf0a7f9">
@@ -1457,13 +1464,6 @@
1457 <context context-type="linenumber">134</context> 1464 <context context-type="linenumber">134</context>
1458 </context-group> 1465 </context-group>
1459 </trans-unit> 1466 </trans-unit>
1460 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1461 <source>Go to the account page</source>
1462 <target>アカウントページã«ç§»å‹•</target>
1463 <context-group name="null">
1464 <context context-type="linenumber">133</context>
1465 </context-group>
1466 </trans-unit>
1467 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 1467 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
1468 <source>Show more</source> 1468 <source>Show more</source>
1469 <target>ã‚‚ã£ã¨è¦‹ã›ã‚‹</target> 1469 <target>ã‚‚ã£ã¨è¦‹ã›ã‚‹</target>
@@ -1525,18 +1525,11 @@
1525 <context context-type="linenumber">3</context> 1525 <context context-type="linenumber">3</context>
1526 </context-group> 1526 </context-group>
1527 </trans-unit> 1527 </trans-unit>
1528 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
1529 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
1530 <target>ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ã€ActivityPub 対応㮠Fediverse を使用ã—ã¦è³¼èª­å‡ºæ¥ã¾ã™ã€‚例ãˆã°ã€Mastodon ã‚„ Pleroma ã®å ´åˆã€æ¤œç´¢ãƒœãƒƒã‚¯ã‚¹ã«å…¥åŠ›ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚&lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&amp;&lt;strong&gt; ã«ç™»éŒ²ã—ã¦ä¸‹ã•ã„。 PeerTubeユーザーã¨ã—ã¦ã®è³¼èª­ã¯ã€&lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt; ã‚’å‚照下ã•ã„。</target>
1531 <context-group name="null">
1532 <context context-type="linenumber">8</context>
1533 </context-group>
1534 </trans-unit>
1535 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 1528 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
1536 <source>No comments.</source> 1529 <source>No comments.</source>
1537 <target>コメントã¯ã¾ã ã‚ã‚Šã¾ã›ã‚“。</target> 1530 <target>コメントã¯ã¾ã ã‚ã‚Šã¾ã›ã‚“。</target>
1538 <context-group name="null"> 1531 <context-group name="null">
1539 <context context-type="linenumber">18</context> 1532 <context context-type="linenumber">17</context>
1540 </context-group> 1533 </context-group>
1541 </trans-unit> 1534 </trans-unit>
1542 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 1535 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -1547,7 +1540,7 @@
1547 ã“ã®å‹•ç”»ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ç„¡åŠ¹ã§ã™ã€‚ 1540 ã“ã®å‹•ç”»ã®ã‚³ãƒ¡ãƒ³ãƒˆã¯ç„¡åŠ¹ã§ã™ã€‚
1548 </target> 1541 </target>
1549 <context-group name="null"> 1542 <context-group name="null">
1550 <context context-type="linenumber">64</context> 1543 <context context-type="linenumber">63</context>
1551 </context-group> 1544 </context-group>
1552 </trans-unit> 1545 </trans-unit>
1553 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 1546 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -1652,13 +1645,6 @@
1652 <context context-type="linenumber">1</context> 1645 <context context-type="linenumber">1</context>
1653 </context-group> 1646 </context-group>
1654 </trans-unit> 1647 </trans-unit>
1655 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
1656 <source>Ban</source>
1657 <target>ç¦æ­¢</target>
1658 <context-group name="null">
1659 <context context-type="linenumber">1</context>
1660 </context-group>
1661 </trans-unit>
1662 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 1648 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
1663 <source>Unban</source> 1649 <source>Unban</source>
1664 <target>抑止ã—ãªã„</target> 1650 <target>抑止ã—ãªã„</target>
diff --git a/client/src/locale/target/angular_nl_NL.xml b/client/src/locale/target/angular_nl_NL.xml
index c34e6e24a..376ffd3ca 100644
--- a/client/src/locale/target/angular_nl_NL.xml
+++ b/client/src/locale/target/angular_nl_NL.xml
@@ -7,7 +7,7 @@
7 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 7 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
8 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> keer bekeken</target> 8 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> keer bekeken</target>
9 <context-group name="null"> 9 <context-group name="null">
10 <context context-type="linenumber">13</context> 10 <context context-type="linenumber">16</context>
11 </context-group> 11 </context-group>
12 </trans-unit> 12 </trans-unit>
13 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 13 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -21,7 +21,7 @@
21 <source>Edit</source> 21 <source>Edit</source>
22 <target>Bewerken</target> 22 <target>Bewerken</target>
23 <context-group name="null"> 23 <context-group name="null">
24 <context context-type="linenumber">5</context> 24 <context context-type="linenumber">1</context>
25 </context-group> 25 </context-group>
26 </trans-unit> 26 </trans-unit>
27 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 27 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -49,7 +49,7 @@
49 <source>Video quota</source> 49 <source>Video quota</source>
50 <target>Videoquotum</target> 50 <target>Videoquotum</target>
51 <context-group name="null"> 51 <context-group name="null">
52 <context context-type="linenumber">19</context> 52 <context context-type="linenumber">42</context>
53 </context-group> 53 </context-group>
54 </trans-unit> 54 </trans-unit>
55 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 55 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
@@ -297,14 +297,14 @@
297 <source>No results.</source> 297 <source>No results.</source>
298 <target>Geen resultaten.</target> 298 <target>Geen resultaten.</target>
299 <context-group name="null"> 299 <context-group name="null">
300 <context context-type="linenumber">7</context> 300 <context context-type="linenumber">17</context>
301 </context-group> 301 </context-group>
302 </trans-unit> 302 </trans-unit>
303 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b"> 303 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b">
304 <source>Instance</source> 304 <source>Instance</source>
305 <target>Instantie</target> 305 <target>Instantie</target>
306 <context-group name="null"> 306 <context-group name="null">
307 <context context-type="linenumber">8</context> 307 <context context-type="linenumber">12</context>
308 </context-group> 308 </context-group>
309 </trans-unit> 309 </trans-unit>
310 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 310 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -503,14 +503,14 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge
503 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 503 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
504 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> abonnees</target> 504 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> abonnees</target>
505 <context-group name="null"> 505 <context-group name="null">
506 <context context-type="linenumber">12</context> 506 <context context-type="linenumber">24</context>
507 </context-group> 507 </context-group>
508 </trans-unit> 508 </trans-unit>
509 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 509 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
510 <source>Video channels</source> 510 <source>Video channels</source>
511 <target>Videokanalen</target> 511 <target>Videokanalen</target>
512 <context-group name="null"> 512 <context-group name="null">
513 <context context-type="linenumber">19</context> 513 <context context-type="linenumber">31</context>
514 </context-group> 514 </context-group>
515 </trans-unit> 515 </trans-unit>
516 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 516 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -842,14 +842,14 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge
842 <source>Score</source> 842 <source>Score</source>
843 <target>Score</target> 843 <target>Score</target>
844 <context-group name="null"> 844 <context-group name="null">
845 <context context-type="linenumber">8</context> 845 <context context-type="linenumber">17</context>
846 </context-group> 846 </context-group>
847 </trans-unit> 847 </trans-unit>
848 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 848 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
849 <source>Host</source> 849 <source>Host</source>
850 <target>Host</target> 850 <target>Host</target>
851 <context-group name="null"> 851 <context-group name="null">
852 <context context-type="linenumber">8</context> 852 <context context-type="linenumber">19</context>
853 </context-group> 853 </context-group>
854 </trans-unit> 854 </trans-unit>
855 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 855 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -919,7 +919,7 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge
919 <source>Role</source> 919 <source>Role</source>
920 <target>Rol</target> 920 <target>Rol</target>
921 <context-group name="null"> 921 <context-group name="null">
922 <context context-type="linenumber">20</context> 922 <context context-type="linenumber">43</context>
923 </context-group> 923 </context-group>
924 </trans-unit> 924 </trans-unit>
925 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 925 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -946,7 +946,7 @@ Het Peer-to-Peer-mechanisme uit PeerTube halen zou je niet méér anonimiteit ge
946 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 946 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
947 <target>Gebruikersnaam <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 947 <target>Gebruikersnaam <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
948 <context-group name="null"> 948 <context-group name="null">
949 <context context-type="linenumber">17</context> 949 <context context-type="linenumber">40</context>
950 </context-group> 950 </context-group>
951 </trans-unit> 951 </trans-unit>
952 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2"> 952 <trans-unit id="2bf5a31043ff476ca081a4080f3f3f17518dc6f2">
@@ -1117,14 +1117,14 @@ Als je een video uploadt in dit kanaal, wordt deze tekst ingevuld in het "onders
1117 <trans-unit id="fb17c44abac2d1ed2a54cdd28bae289dc0b9a1c2"> 1117 <trans-unit id="fb17c44abac2d1ed2a54cdd28bae289dc0b9a1c2">
1118 <source>Automatically plays video</source> 1118 <source>Automatically plays video</source>
1119 <context-group name="null"> 1119 <context-group name="null">
1120 <context context-type="linenumber">20</context> 1120 <context context-type="linenumber">25</context>
1121 </context-group> 1121 </context-group>
1122 </trans-unit> 1122 </trans-unit>
1123 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 1123 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
1124 <source>Save</source> 1124 <source>Save</source>
1125 <target>Opslaan</target> 1125 <target>Opslaan</target>
1126 <context-group name="null"> 1126 <context-group name="null">
1127 <context context-type="linenumber">23</context> 1127 <context context-type="linenumber">28</context>
1128 </context-group> 1128 </context-group>
1129 </trans-unit> 1129 </trans-unit>
1130 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 1130 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
diff --git a/client/src/locale/target/angular_oc.xml b/client/src/locale/target/angular_oc.xml
index 5cfebd4e3..18f6527f9 100644
--- a/client/src/locale/target/angular_oc.xml
+++ b/client/src/locale/target/angular_oc.xml
@@ -231,7 +231,7 @@
231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizacions</target> 232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizacions</target>
233 <context-group name="null"> 233 <context-group name="null">
234 <context context-type="linenumber">13</context> 234 <context context-type="linenumber">16</context>
235 </context-group> 235 </context-group>
236 </trans-unit> 236 </trans-unit>
237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -245,7 +245,7 @@
245 <source>Edit</source> 245 <source>Edit</source>
246 <target>Modificar</target> 246 <target>Modificar</target>
247 <context-group name="null"> 247 <context-group name="null">
248 <context context-type="linenumber">5</context> 248 <context context-type="linenumber">1</context>
249 </context-group> 249 </context-group>
250 </trans-unit> 250 </trans-unit>
251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -269,6 +269,27 @@
269 <context context-type="linenumber">19</context> 269 <context context-type="linenumber">19</context>
270 </context-group> 270 </context-group>
271 </trans-unit> 271 </trans-unit>
272 <trans-unit id="450025269732888db1f04cfe6033843110ab65ee">
273 <source>
274 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
275 Subscribe
276 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
277 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
278 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
279 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
280 </source>
281 <target>
282 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
283 S’abonar
284 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
285 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
286 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
287 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
288 </target>
289 <context-group name="null">
290 <context context-type="linenumber">5</context>
291 </context-group>
292 </trans-unit>
272 <trans-unit id="c374edf3b9228d3df6d761bdc8a289e7df0096e8"> 293 <trans-unit id="c374edf3b9228d3df6d761bdc8a289e7df0096e8">
273 <source> 294 <source>
274 Unsubscribe 295 Unsubscribe
@@ -280,6 +301,20 @@
280 <context context-type="linenumber">18</context> 301 <context context-type="linenumber">18</context>
281 </context-group> 302 </context-group>
282 </trans-unit> 303 </trans-unit>
304 <trans-unit id="9b3287f52c239cad05ec98391553e5052ba1aa66">
305 <source>Using an ActivityPub account</source>
306 <target>En utilizant un compte ActivityPub</target>
307 <context-group name="null">
308 <context context-type="linenumber">36</context>
309 </context-group>
310 </trans-unit>
311 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3">
312 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source>
313 <target>S’abonar amb un compte sus <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></target>
314 <context-group name="null">
315 <context context-type="linenumber">39</context>
316 </context-group>
317 </trans-unit>
283 <trans-unit id="e7adf422424a61b71465d183f9d44bf956482ef0"> 318 <trans-unit id="e7adf422424a61b71465d183f9d44bf956482ef0">
284 <source>Subscribe with your local account</source> 319 <source>Subscribe with your local account</source>
285 <target>S’abonar amb lo compte local</target> 320 <target>S’abonar amb lo compte local</target>
@@ -287,6 +322,13 @@
287 <context context-type="linenumber">40</context> 322 <context context-type="linenumber">40</context>
288 </context-group> 323 </context-group>
289 </trans-unit> 324 </trans-unit>
325 <trans-unit id="5047522cc670b1f4a288bce07f9b1c5061e913ed">
326 <source>Subscribe with a Mastodon account:</source>
327 <target>S’abonar amb un compte Mastodon :</target>
328 <context-group name="null">
329 <context context-type="linenumber">43</context>
330 </context-group>
331 </trans-unit>
290 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1"> 332 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1">
291 <source>Using a syndication feed</source> 333 <source>Using a syndication feed</source>
292 <target>En utilizant un fil sindicat</target> 334 <target>En utilizant un fil sindicat</target>
@@ -301,11 +343,38 @@
301 <context context-type="linenumber">49</context> 343 <context context-type="linenumber">49</context>
302 </context-group> 344 </context-group>
303 </trans-unit> 345 </trans-unit>
346 <trans-unit id="4913054c95f5ba14c351ab1b787f7abac97bfdd3">
347 <source>
348 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>Remote subscribe<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
349 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>Remote interact<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
350 </source>
351 <target>
352 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>S’abonar a distància<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
353 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>Interaccion a distància<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
354 </target>
355 <context-group name="null">
356 <context context-type="linenumber">10</context>
357 </context-group>
358 </trans-unit>
359 <trans-unit id="319933e1af77ca2e35b75a5e9270a3c90e83dd4b">
360 <source>You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there.</source>
361 <target>Podètz vos abonar a aquesta cadena via qualque siá instància compatibla amb ActivityPub. Per las instàncias Mastodon o Pleroma podètz picar l’URL de la cadena dins la barra de recèrca e vos i abonar enlà.</target>
362 <context-group name="null">
363 <context context-type="linenumber">17</context>
364 </context-group>
365 </trans-unit>
366 <trans-unit id="2767d5461b6c622ccdeb868df8becf26bc16b99a">
367 <source>You can interact with this via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the current URL in the search box and interact with it there.</source>
368 <target>Podètz interagir amb aquò via qualque siá instància compatibla ActivityPub. Per las instàncias Mastodon o Pleroma podètz picar l’URL de la cadena dins la barra de recèrca e podètz interagir enlà.</target>
369 <context-group name="null">
370 <context context-type="linenumber">22</context>
371 </context-group>
372 </trans-unit>
304 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b"> 373 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b">
305 <source>Video quota</source> 374 <source>Video quota</source>
306 <target>Quòta vidèo</target> 375 <target>Quòta vidèo</target>
307 <context-group name="null"> 376 <context-group name="null">
308 <context context-type="linenumber">19</context> 377 <context context-type="linenumber">42</context>
309 </context-group> 378 </context-group>
310 </trans-unit> 379 </trans-unit>
311 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 380 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -319,6 +388,38 @@
319 <context context-type="linenumber">14</context> 388 <context context-type="linenumber">14</context>
320 </context-group> 389 </context-group>
321 </trans-unit> 390 </trans-unit>
391 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
392 <source>Ban</source>
393 <target>Fòrabandir</target>
394 <context-group name="null">
395 <context context-type="linenumber">3</context>
396 </context-group>
397 </trans-unit>
398 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
399 <source>Reason...</source>
400 <target>Rason...</target>
401 <context-group name="null">
402 <context context-type="linenumber">11</context>
403 </context-group>
404 </trans-unit>
405 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
406 <source>
407 A banned user will no longer be able to login.
408 </source>
409 <target>
410 Un utilizaire fòrabandit poirà pas mai se connectar.
411 </target>
412 <context-group name="null">
413 <context context-type="linenumber">17</context>
414 </context-group>
415 </trans-unit>
416 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
417 <source>Ban this user</source>
418 <target>Fòrabandir aqueste utilizaire</target>
419 <context-group name="null">
420 <context context-type="linenumber">25</context>
421 </context-group>
422 </trans-unit>
322 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 423 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
323 <source> 424 <source>
324 Login 425 Login
@@ -523,13 +624,6 @@
523 <context context-type="linenumber">6</context> 624 <context context-type="linenumber">6</context>
524 </context-group> 625 </context-group>
525 </trans-unit> 626 </trans-unit>
526 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
527 <source>Filters</source>
528 <target>Filtres</target>
529 <context-group name="null">
530 <context context-type="linenumber">16</context>
531 </context-group>
532 </trans-unit>
533 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 627 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
534 <source> 628 <source>
535 No results found 629 No results found
@@ -538,21 +632,21 @@
538 Cap de resultats 632 Cap de resultats
539 </target> 633 </target>
540 <context-group name="null"> 634 <context-group name="null">
541 <context context-type="linenumber">25</context> 635 <context context-type="linenumber">28</context>
542 </context-group> 636 </context-group>
543 </trans-unit> 637 </trans-unit>
544 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 638 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
545 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 639 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
546 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> abonats</target> 640 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> abonats</target>
547 <context-group name="null"> 641 <context-group name="null">
548 <context context-type="linenumber">41</context> 642 <context context-type="linenumber">44</context>
549 </context-group> 643 </context-group>
550 </trans-unit> 644 </trans-unit>
551 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 645 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
552 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 646 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
553 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> visualizacions</target> 647 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> visualizacions</target>
554 <context-group name="null"> 648 <context-group name="null">
555 <context context-type="linenumber">52</context> 649 <context context-type="linenumber">55</context>
556 </context-group> 650 </context-group>
557 </trans-unit> 651 </trans-unit>
558 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 652 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -792,7 +886,7 @@
792 <source>No results.</source> 886 <source>No results.</source>
793 <target>Cap de resultat</target> 887 <target>Cap de resultat</target>
794 <context-group name="null"> 888 <context-group name="null">
795 <context context-type="linenumber">7</context> 889 <context context-type="linenumber">17</context>
796 </context-group> 890 </context-group>
797 </trans-unit> 891 </trans-unit>
798 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 892 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -806,6 +900,17 @@
806 <context context-type="linenumber">6</context> 900 <context context-type="linenumber">6</context>
807 </context-group> 901 </context-group>
808 </trans-unit> 902 </trans-unit>
903 <trans-unit id="48a5d0af93b94c4575b7f76a47fb3cdee58e6919">
904 <source>
905 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
906 </source>
907 <target>
908 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
909 </target>
910 <context-group name="null">
911 <context context-type="linenumber">14</context>
912 </context-group>
913 </trans-unit>
809 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b"> 914 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b">
810 <source> 915 <source>
811 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/> 916 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>
@@ -829,7 +934,7 @@
829 <source>Instance</source> 934 <source>Instance</source>
830 <target>Instància</target> 935 <target>Instància</target>
831 <context-group name="null"> 936 <context-group name="null">
832 <context context-type="linenumber">8</context> 937 <context context-type="linenumber">12</context>
833 </context-group> 938 </context-group>
834 </trans-unit> 939 </trans-unit>
835 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 940 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -988,7 +1093,7 @@
988 If we want to spy all PeerTube's videos, we have to send as many requests as there are videos (so potentially a lot) 1093 If we want to spy all PeerTube's videos, we have to send as many requests as there are videos (so potentially a lot)
989 </source> 1094 </source>
990 <target> 1095 <target>
991 Una requèsta HTTP deu èsser enviada a cada traçadors per cada vidèo d’espiar. 1096 Cada traçador deu recebre una requèsta HTTP per cada vidèo d’espiar.
992 Se volèm espiar totas las vidèo de PeerTube, avèm d’enviar tantas requèstas qu’i a de vidèos (doncas potencialament un molon) 1097 Se volèm espiar totas las vidèo de PeerTube, avèm d’enviar tantas requèstas qu’i a de vidèos (doncas potencialament un molon)
993 </target> 1098 </target>
994 <context-group name="null"> 1099 <context-group name="null">
@@ -1001,7 +1106,7 @@
1001 For instance, if there are 1000 peers in the swarm and the tracker sends only 20 peers for each request, there must be at least 50 requests sent to know every peers in the swarm 1106 For instance, if there are 1000 peers in the swarm and the tracker sends only 20 peers for each request, there must be at least 50 requests sent to know every peers in the swarm
1002 </source> 1107 </source>
1003 <target>Per cada requèsta enviada, lo traçador tòrna un nombre limitat de pars a l’azard. 1108 <target>Per cada requèsta enviada, lo traçador tòrna un nombre limitat de pars a l’azard.
1004 Per cada instància s’i a 1000 pars per l’eissam e lo traçador envia pas que 20 pars per requèsta, cal almens 50 requèstas per conéisser totes los pars del eissam</target> 1109 Per cada instància s’i a 1000 pars per l’eissam e lo traçador envia pas que 20 pars per requèsta, cal almens 50 requèstas per conéisser totes los pars de l’eissam</target>
1005 <context-group name="null"> 1110 <context-group name="null">
1006 <context context-type="linenumber">38</context> 1111 <context context-type="linenumber">38</context>
1007 </context-group> 1112 </context-group>
@@ -1011,7 +1116,7 @@
1011 Those requests have to be sent regularly to know who starts/stops watching a video. It is easy to detect that kind of behaviour 1116 Those requests have to be sent regularly to know who starts/stops watching a video. It is easy to detect that kind of behaviour
1012 </source> 1117 </source>
1013 <target> 1118 <target>
1014 Aquelas requèstas an d’èsser enviadas regularament per saber qual commença/arrèstar d’agachar una vidèo. Es aisit de detectar aquel tipe de compòrtament 1119 Aquelas requèstas an d’èsser enviadas regularament per saber qual commença/arrèsta d’agachar una vidèo. Es aisit de detectar aquel tipe de compòrtament
1015 </target> 1120 </target>
1016 <context-group name="null"> 1121 <context-group name="null">
1017 <context context-type="linenumber">43</context> 1122 <context context-type="linenumber">43</context>
@@ -1170,14 +1275,14 @@
1170 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1275 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1171 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> abonats</target> 1276 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> abonats</target>
1172 <context-group name="null"> 1277 <context-group name="null">
1173 <context context-type="linenumber">12</context> 1278 <context context-type="linenumber">24</context>
1174 </context-group> 1279 </context-group>
1175 </trans-unit> 1280 </trans-unit>
1176 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1281 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1177 <source>Video channels</source> 1282 <source>Video channels</source>
1178 <target>Canals vidèo</target> 1283 <target>Canals vidèo</target>
1179 <context-group name="null"> 1284 <context-group name="null">
1180 <context context-type="linenumber">19</context> 1285 <context context-type="linenumber">31</context>
1181 </context-group> 1286 </context-group>
1182 </trans-unit> 1287 </trans-unit>
1183 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1288 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1320,13 +1425,6 @@
1320 <context context-type="linenumber">42</context> 1425 <context context-type="linenumber">42</context>
1321 </context-group> 1426 </context-group>
1322 </trans-unit> 1427 </trans-unit>
1323 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1324 <source>Video import with HTTP enabled</source>
1325 <target>Import vidèo amb HTTP activat</target>
1326 <context-group name="null">
1327 <context context-type="linenumber">115</context>
1328 </context-group>
1329 </trans-unit>
1330 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1428 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1331 <source>Video import with a torrent file or a magnet URI enabled</source> 1429 <source>Video import with a torrent file or a magnet URI enabled</source>
1332 <target>Import de vidèos via un fichièr torretn o un magnet URI activat</target> 1430 <target>Import de vidèos via un fichièr torretn o un magnet URI activat</target>
@@ -1404,6 +1502,17 @@
1404 <context context-type="linenumber">189</context> 1502 <context context-type="linenumber">189</context>
1405 </context-group> 1503 </context-group>
1406 </trans-unit> 1504 </trans-unit>
1505 <trans-unit id="a62985a76e947b0068ad328b5172d5af5b125b9a">
1506 <source>If your instance is whitelisted by Twitter, a video player will be embedded in the Twitter feed on PeerTube video share.&lt;br /&gt;
1507 If the instance is not whitelisted, we use an image link card that will redirect on your PeerTube instance.&lt;br /&gt;&lt;br /&gt;
1508 Check this checkbox, save the configuration and test with a video URL of your instance (https://example.com/videos/watch/blabla) on &lt;a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'&gt;https://cards-dev.twitter.com/validator&lt;/a&gt; to see if you instance is whitelisted.</source>
1509 <target>Se vòstra instància es mesa en lista blanca per Twitter, un lector vidèo serà integrat pel fil Twitter sul partatge d’una vidèo PeerTube.&lt;br /&gt;
1510 Se l’instància es pas en lista blanca, utilizam un imatge amb un ligam que mena a l’instància PeerTube.&lt;br /&gt;&lt;br /&gt;
1511 Clicatz aquesta bóstia, salvagardatz la configuracion e ensajatz amb l’URL d’una vidèo de vòstra instància (https://exemple.com/videos/watch/blabla) sus &lt;a target='_blank' rel='noopener noreferrer' href='https://cards-dev.twitter.com/validator'&gt;https://cards-dev.twitter.com/validator&lt;/a&gt; per veire se vòstra instància es en lista blanca.</target>
1512 <context-group name="null">
1513 <context context-type="linenumber">190</context>
1514 </context-group>
1515 </trans-unit>
1407 <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5"> 1516 <trans-unit id="419d940613972cc3fae9c8ea0a4306dbf80616e5">
1408 <source>Services</source> 1517 <source>Services</source>
1409 <target>Servicis</target> 1518 <target>Servicis</target>
@@ -1650,14 +1759,14 @@
1650 <source>Score</source> 1759 <source>Score</source>
1651 <target>Marca</target> 1760 <target>Marca</target>
1652 <context-group name="null"> 1761 <context-group name="null">
1653 <context context-type="linenumber">8</context> 1762 <context context-type="linenumber">17</context>
1654 </context-group> 1763 </context-group>
1655 </trans-unit> 1764 </trans-unit>
1656 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1765 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1657 <source>Host</source> 1766 <source>Host</source>
1658 <target>Ã’st</target> 1767 <target>Ã’st</target>
1659 <context-group name="null"> 1768 <context-group name="null">
1660 <context context-type="linenumber">8</context> 1769 <context context-type="linenumber">19</context>
1661 </context-group> 1770 </context-group>
1662 </trans-unit> 1771 </trans-unit>
1663 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1772 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1674,11 +1783,25 @@
1674 <context context-type="linenumber">11</context> 1783 <context context-type="linenumber">11</context>
1675 </context-group> 1784 </context-group>
1676 </trans-unit> 1785 </trans-unit>
1786 <trans-unit id="7823909fb1d8d313382f6f4bd842f1a7ef6f08d1">
1787 <source>Accepted</source>
1788 <target>Acceptat</target>
1789 <context-group name="null">
1790 <context context-type="linenumber">32</context>
1791 </context-group>
1792 </trans-unit>
1793 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506">
1794 <source>Pending</source>
1795 <target>En espèra</target>
1796 <context-group name="null">
1797 <context context-type="linenumber">33</context>
1798 </context-group>
1799 </trans-unit>
1677 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8"> 1800 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8">
1678 <source>Redundancy allowed</source> 1801 <source>Redundancy allowed</source>
1679 <target>Redondància autorizada</target> 1802 <target>Redondància autorizada</target>
1680 <context-group name="null"> 1803 <context-group name="null">
1681 <context context-type="linenumber">11</context> 1804 <context context-type="linenumber">22</context>
1682 </context-group> 1805 </context-group>
1683 </trans-unit> 1806 </trans-unit>
1684 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479"> 1807 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479">
@@ -1769,7 +1892,7 @@
1769 <source>Role</source> 1892 <source>Role</source>
1770 <target>Ròtle</target> 1893 <target>Ròtle</target>
1771 <context-group name="null"> 1894 <context-group name="null">
1772 <context context-type="linenumber">20</context> 1895 <context context-type="linenumber">43</context>
1773 </context-group> 1896 </context-group>
1774 </trans-unit> 1897 </trans-unit>
1775 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1898 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1792,27 +1915,6 @@
1792 <context context-type="linenumber">72</context> 1915 <context context-type="linenumber">72</context>
1793 </context-group> 1916 </context-group>
1794 </trans-unit> 1917 </trans-unit>
1795 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1796 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1797 <target>Fòrabandir <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></target>
1798 <context-group name="null">
1799 <context context-type="linenumber">3</context>
1800 </context-group>
1801 </trans-unit>
1802 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1803 <source>Reason...</source>
1804 <target>Rason...</target>
1805 <context-group name="null">
1806 <context context-type="linenumber">11</context>
1807 </context-group>
1808 </trans-unit>
1809 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1810 <source>Ban this user</source>
1811 <target>Fòrabandir aqueste utilizaire</target>
1812 <context-group name="null">
1813 <context context-type="linenumber">25</context>
1814 </context-group>
1815 </trans-unit>
1816 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1918 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1817 <source>Users list</source> 1919 <source>Users list</source>
1818 <target>Lista d’utilizaires</target> 1920 <target>Lista d’utilizaires</target>
@@ -1824,21 +1926,21 @@
1824 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1926 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1825 <target>Nom d’utilizaire <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1927 <target>Nom d’utilizaire <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1826 <context-group name="null"> 1928 <context-group name="null">
1827 <context context-type="linenumber">17</context> 1929 <context context-type="linenumber">40</context>
1828 </context-group> 1930 </context-group>
1829 </trans-unit> 1931 </trans-unit>
1830 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1932 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1831 <source>Actions</source> 1933 <source>Go to the account page</source>
1832 <target>Accions</target> 1934 <target>Anar a la pagina del compte</target>
1833 <context-group name="null"> 1935 <context-group name="null">
1834 <context context-type="linenumber">33</context> 1936 <context context-type="linenumber">133</context>
1835 </context-group> 1937 </context-group>
1836 </trans-unit> 1938 </trans-unit>
1837 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1939 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1838 <source>Ban reason:</source> 1940 <source>Ban reason:</source>
1839 <target>Rason del bandiment :</target> 1941 <target>Rason del bandiment :</target>
1840 <context-group name="null"> 1942 <context-group name="null">
1841 <context context-type="linenumber">51</context> 1943 <context context-type="linenumber">82</context>
1842 </context-group> 1944 </context-group>
1843 </trans-unit> 1945 </trans-unit>
1844 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1946 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1901,6 +2003,13 @@
1901 <context context-type="linenumber">33</context> 2003 <context context-type="linenumber">33</context>
1902 </context-group> 2004 </context-group>
1903 </trans-unit> 2005 </trans-unit>
2006 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
2007 <source>Actions</source>
2008 <target>Accions</target>
2009 <context-group name="null">
2010 <context context-type="linenumber">33</context>
2011 </context-group>
2012 </trans-unit>
1904 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 2013 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1905 <source>Reason:</source> 2014 <source>Reason:</source>
1906 <target>Rason :</target> 2015 <target>Rason :</target>
@@ -1936,6 +2045,13 @@
1936 <context context-type="linenumber">10</context> 2045 <context context-type="linenumber">10</context>
1937 </context-group> 2046 </context-group>
1938 </trans-unit> 2047 </trans-unit>
2048 <trans-unit id="7963019b5535b51efa399e6a62b163f3e04d296f">
2049 <source>Blacklist reason:</source>
2050 <target>Rason de la mesa en lista negra :</target>
2051 <context-group name="null">
2052 <context context-type="linenumber">41</context>
2053 </context-group>
2054 </trans-unit>
1939 <trans-unit id="90868353e7e6f5994109ee1011131cefa992116c"> 2055 <trans-unit id="90868353e7e6f5994109ee1011131cefa992116c">
1940 <source>Moderation</source> 2056 <source>Moderation</source>
1941 <target>Moderacion</target> 2057 <target>Moderacion</target>
@@ -1943,6 +2059,13 @@
1943 <context context-type="linenumber">2</context> 2059 <context context-type="linenumber">2</context>
1944 </context-group> 2060 </context-group>
1945 </trans-unit> 2061 </trans-unit>
2062 <trans-unit id="23a793ed0df2e10823dd469c5cea9b5c36be8f7e">
2063 <source>Video abuses</source>
2064 <target>Senhalaments de vidèos</target>
2065 <context-group name="null">
2066 <context context-type="linenumber">5</context>
2067 </context-group>
2068 </trans-unit>
1946 <trans-unit id="00ecde6001106fe7406a34cc3459cc5b88e4aec1"> 2069 <trans-unit id="00ecde6001106fe7406a34cc3459cc5b88e4aec1">
1947 <source>Blacklisted videos</source> 2070 <source>Blacklisted videos</source>
1948 <target>Vidèos en lista nègra</target> 2071 <target>Vidèos en lista nègra</target>
@@ -1992,6 +2115,13 @@
1992 <context context-type="linenumber">18</context> 2115 <context context-type="linenumber">18</context>
1993 </context-group> 2116 </context-group>
1994 </trans-unit> 2117 </trans-unit>
2118 <trans-unit id="73022f1676784c4f9b8cdbb322e52b02ccc800b7">
2119 <source>Ownership changes</source>
2120 <target>Cambiaments de proprietats</target>
2121 <context-group name="null">
2122 <context context-type="linenumber">33</context>
2123 </context-group>
2124 </trans-unit>
1995 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 2125 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
1996 <source>Video quota:</source> 2126 <source>Video quota:</source>
1997 <target>Quòta vidèo :</target> 2127 <target>Quòta vidèo :</target>
@@ -2020,6 +2150,20 @@
2020 <context context-type="linenumber">18</context> 2150 <context context-type="linenumber">18</context>
2021 </context-group> 2151 </context-group>
2022 </trans-unit> 2152 </trans-unit>
2153 <trans-unit id="2dc22fcebf6aaa76196d2def33a827a34bf910bf">
2154 <source>Change ownership</source>
2155 <target>Cambiar la proprietat</target>
2156 <context-group name="null">
2157 <context context-type="linenumber">46</context>
2158 </context-group>
2159 </trans-unit>
2160 <trans-unit id="046c4fa30411e6b1aa46dc51bf82d07b1adf14d4">
2161 <source>Select the next owner</source>
2162 <target>Seleccionatz lo novèl proprietari</target>
2163 <context-group name="null">
2164 <context context-type="linenumber">9</context>
2165 </context-group>
2166 </trans-unit>
2023 <trans-unit id="a5433ae2324496bea9537caa5e8a2719d8e958d8"> 2167 <trans-unit id="a5433ae2324496bea9537caa5e8a2719d8e958d8">
2024 <source> 2168 <source>
2025 Cancel 2169 Cancel
@@ -2045,6 +2189,13 @@
2045 <context context-type="linenumber">19</context> 2189 <context context-type="linenumber">19</context>
2046 </context-group> 2190 </context-group>
2047 </trans-unit> 2191 </trans-unit>
2192 <trans-unit id="4a806761798181e907e28ed1af053d466526800d">
2193 <source>Blacklisted</source>
2194 <target>En lista negra</target>
2195 <context-group name="null">
2196 <context context-type="linenumber">22</context>
2197 </context-group>
2198 </trans-unit>
2048 <trans-unit id="17a9d3860d9ad593dd09a9f934e03999d9e76a7a"> 2199 <trans-unit id="17a9d3860d9ad593dd09a9f934e03999d9e76a7a">
2049 <source> 2200 <source>
2050 Cancel 2201 Cancel
@@ -2106,6 +2257,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2106 <context context-type="linenumber">8</context> 2257 <context context-type="linenumber">8</context>
2107 </context-group> 2258 </context-group>
2108 </trans-unit> 2259 </trans-unit>
2260 <trans-unit id="3a5d57052d13d2da1cbcffdbb8effb9874b1595a">
2261 <source>You don't have any subscriptions yet.</source>
2262 <target>Encara avètz pas cap d’abonament.</target>
2263 <context-group name="null">
2264 <context context-type="linenumber">1</context>
2265 </context-group>
2266 </trans-unit>
2109 <trans-unit id="c65641c36859c328928e6b0f14c3f913886f8add"> 2267 <trans-unit id="c65641c36859c328928e6b0f14c3f913886f8add">
2110 <source>Created by <x id="INTERPOLATION" equiv-text="{{ videoChannel.ownerBy }}"/></source> 2268 <source>Created by <x id="INTERPOLATION" equiv-text="{{ videoChannel.ownerBy }}"/></source>
2111 <target>Creat per <x id="INTERPOLATION" equiv-text="{{ videoChannel.ownerBy }}"/></target> 2269 <target>Creat per <x id="INTERPOLATION" equiv-text="{{ videoChannel.ownerBy }}"/></target>
@@ -2120,6 +2278,27 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2120 <context context-type="linenumber">16</context> 2278 <context context-type="linenumber">16</context>
2121 </context-group> 2279 </context-group>
2122 </trans-unit> 2280 </trans-unit>
2281 <trans-unit id="fbc450919a486e8ed311a7e91a41987d47d83804">
2282 <source>Accept ownership</source>
2283 <target>Acceptar la proprietat</target>
2284 <context-group name="null">
2285 <context context-type="linenumber">3</context>
2286 </context-group>
2287 </trans-unit>
2288 <trans-unit id="4570c754149df06f31096510abfc925968c35562">
2289 <source>Select the target channel</source>
2290 <target>Seleccionatz la cadena cibla</target>
2291 <context-group name="null">
2292 <context context-type="linenumber">9</context>
2293 </context-group>
2294 </trans-unit>
2295 <trans-unit id="e98239d8a6be1100119ff4b5630c822b82786740">
2296 <source>Initiator</source>
2297 <target>Iniciator</target>
2298 <context-group name="null">
2299 <context context-type="linenumber">13</context>
2300 </context-group>
2301 </trans-unit>
2123 <trans-unit id="b08d67fe4e192ea8352bebdc6aabbd1bb7abed02"> 2302 <trans-unit id="b08d67fe4e192ea8352bebdc6aabbd1bb7abed02">
2124 <source> 2303 <source>
2125 Created 2304 Created
@@ -2154,6 +2333,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2154 <context context-type="linenumber">39</context> 2333 <context context-type="linenumber">39</context>
2155 </context-group> 2334 </context-group>
2156 </trans-unit> 2335 </trans-unit>
2336 <trans-unit id="4a5613f6b472c1ed863dff1be932913a251f27a2">
2337 <source>Refuse</source>
2338 <target>Refusar</target>
2339 <context-group name="null">
2340 <context context-type="linenumber">47</context>
2341 </context-group>
2342 </trans-unit>
2157 <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9"> 2343 <trans-unit id="739516c2ca75843d5aec9cf0e6b3e4335c4227b9">
2158 <source>Change password</source> 2344 <source>Change password</source>
2159 <target>Cambiar lo senhal</target> 2345 <target>Cambiar lo senhal</target>
@@ -2161,6 +2347,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2161 <context context-type="linenumber">30</context> 2347 <context context-type="linenumber">30</context>
2162 </context-group> 2348 </context-group>
2163 </trans-unit> 2349 </trans-unit>
2350 <trans-unit id="0dd390d056411e1709ec97ec51c46d78600e3f7b">
2351 <source>Current password</source>
2352 <target>Senhal actual</target>
2353 <context-group name="null">
2354 <context context-type="linenumber">7</context>
2355 </context-group>
2356 </trans-unit>
2164 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229"> 2357 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229">
2165 <source>New password</source> 2358 <source>New password</source>
2166 <target>Nòu senhal</target> 2359 <target>Nòu senhal</target>
@@ -2186,14 +2379,14 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2186 <source>Automatically plays video</source> 2379 <source>Automatically plays video</source>
2187 <target>Legir automaticament las vidèos</target> 2380 <target>Legir automaticament las vidèos</target>
2188 <context-group name="null"> 2381 <context-group name="null">
2189 <context context-type="linenumber">20</context> 2382 <context context-type="linenumber">25</context>
2190 </context-group> 2383 </context-group>
2191 </trans-unit> 2384 </trans-unit>
2192 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2385 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2193 <source>Save</source> 2386 <source>Save</source>
2194 <target>Salvagardar</target> 2387 <target>Salvagardar</target>
2195 <context-group name="null"> 2388 <context-group name="null">
2196 <context context-type="linenumber">23</context> 2389 <context context-type="linenumber">28</context>
2197 </context-group> 2390 </context-group>
2198 </trans-unit> 2391 </trans-unit>
2199 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2392 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2224,6 +2417,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2224 <context context-type="linenumber">18</context> 2417 <context context-type="linenumber">18</context>
2225 </context-group> 2418 </context-group>
2226 </trans-unit> 2419 </trans-unit>
2420 <trans-unit id="d1a04ba05116499d4cf59a48a282a8bcbf5b622d">
2421 <source>Once you delete your account, there is no going back. Please be certain.</source>
2422 <target>Un còp qu’escafatz lo compte, podètz pas anullar aquò. Siatz-ne segur.</target>
2423 <context-group name="null">
2424 <context context-type="linenumber">2</context>
2425 </context-group>
2426 </trans-unit>
2227 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45"> 2427 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45">
2228 <source>Delete your account</source> 2428 <source>Delete your account</source>
2229 <target>Suprimir vòstre compte</target> 2429 <target>Suprimir vòstre compte</target>
@@ -2242,6 +2442,28 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2242 <context context-type="linenumber">1</context> 2442 <context context-type="linenumber">1</context>
2243 </context-group> 2443 </context-group>
2244 </trans-unit> 2444 </trans-unit>
2445 <trans-unit id="09a69cde5889927629e2ac9dc63a71b88252b530">
2446 <source>
2447 Verify account email confirmation
2448 </source>
2449 <target>
2450 Verificar l’adreça del compte
2451 </target>
2452 <context-group name="null">
2453 <context context-type="linenumber">2</context>
2454 </context-group>
2455 </trans-unit>
2456 <trans-unit id="066569dd934e07e4a5f70c415692be17d5715b57">
2457 <source>
2458 Your email has been verified and you may now login. Redirecting...
2459 </source>
2460 <target>
2461 Vòstre corrièl es estat verificat, podètz ara vos connectar. Redireccion...
2462 </target>
2463 <context-group name="null">
2464 <context context-type="linenumber">6</context>
2465 </context-group>
2466 </trans-unit>
2245 <trans-unit id="7ee8fad77b2664dabfb90ea03470f75a6f6d1d48"> 2467 <trans-unit id="7ee8fad77b2664dabfb90ea03470f75a6f6d1d48">
2246 <source>An error occurred. </source> 2468 <source>An error occurred. </source>
2247 <target>Una error s’es producha.</target> 2469 <target>Una error s’es producha.</target>
@@ -2341,6 +2563,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2341 <context context-type="linenumber">6</context> 2563 <context context-type="linenumber">6</context>
2342 </context-group> 2564 </context-group>
2343 </trans-unit> 2565 </trans-unit>
2566 <trans-unit id="5e420747842373fa99a75a7a18df068cc81e46fb">
2567 <source>Scheduled</source>
2568 <target>Programada</target>
2569 <context-group name="null">
2570 <context context-type="linenumber">25</context>
2571 </context-group>
2572 </trans-unit>
2344 <trans-unit id="f7ac2376749c7985f94f0fc89ba75ea624de1215"> 2573 <trans-unit id="f7ac2376749c7985f94f0fc89ba75ea624de1215">
2345 <source>Publish will be available when upload is finished</source> 2574 <source>Publish will be available when upload is finished</source>
2346 <target>La publicacion serà possibla un còp lo mandadís acabat</target> 2575 <target>La publicacion serà possibla un còp lo mandadís acabat</target>
@@ -2362,6 +2591,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2362 <context context-type="linenumber">6</context> 2591 <context context-type="linenumber">6</context>
2363 </context-group> 2592 </context-group>
2364 </trans-unit> 2593 </trans-unit>
2594 <trans-unit id="1b518e7f8c067fa55ea797bb1b35b4a2d31dccbc">
2595 <source>Or</source>
2596 <target>O</target>
2597 <context-group name="null">
2598 <context context-type="linenumber">11</context>
2599 </context-group>
2600 </trans-unit>
2365 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9"> 2601 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9">
2366 <source>Paste magnet URI</source> 2602 <source>Paste magnet URI</source>
2367 <target>Pegar lo magnet URI</target> 2603 <target>Pegar lo magnet URI</target>
@@ -2436,6 +2672,17 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2436 <context context-type="linenumber">24</context> 2672 <context context-type="linenumber">24</context>
2437 </context-group> 2673 </context-group>
2438 </trans-unit> 2674 </trans-unit>
2675 <trans-unit id="c34c61401151c29fb3679638a7d0b95258145ec3">
2676 <source>
2677 This will replace an existing caption!
2678 </source>
2679 <target>
2680 Aquò remplaçarà la legenda existenta !
2681 </target>
2682 <context-group name="null">
2683 <context context-type="linenumber">29</context>
2684 </context-group>
2685 </trans-unit>
2439 <trans-unit id="39702b643cfe3d5b96a4587c1b44a29fa665406c"> 2686 <trans-unit id="39702b643cfe3d5b96a4587c1b44a29fa665406c">
2440 <source>Add this caption</source> 2687 <source>Add this caption</source>
2441 <target>Ajustar aquesta legenda</target> 2688 <target>Ajustar aquesta legenda</target>
@@ -2457,6 +2704,27 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2457 <context context-type="linenumber">191</context> 2704 <context context-type="linenumber">191</context>
2458 </context-group> 2705 </context-group>
2459 </trans-unit> 2706 </trans-unit>
2707 <trans-unit id="457b1cff4d8d7fad0c8742f69c413ecf5e443851">
2708 <source>Tags could be used to suggest relevant recommendations.&lt;/br&gt;Press Enter to add a new tag.</source>
2709 <target>Per suggerir de recomandacions pertinentas òm pòt utilizar las etiquetas.&lt;/br&gt;Picatz Entrada per ajustar una nòva etiqueta.</target>
2710 <context-group name="null">
2711 <context context-type="linenumber">18</context>
2712 </context-group>
2713 </trans-unit>
2714 <trans-unit id="9bdd535a2817bf0b843a124bf65e4992625e7ecf">
2715 <source>+ Tag</source>
2716 <target>+ Etiqueta</target>
2717 <context-group name="null">
2718 <context context-type="linenumber">21</context>
2719 </context-group>
2720 </trans-unit>
2721 <trans-unit id="8389e9cde2928cc27aaecbdee818a255bf7984b0">
2722 <source>Enter a new tag</source>
2723 <target>Picatz una nòva etiqueta</target>
2724 <context-group name="null">
2725 <context context-type="linenumber">21</context>
2726 </context-group>
2727 </trans-unit>
2460 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e"> 2728 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e">
2461 <source>Video descriptions are truncated by default and require manual action to expand them.</source> 2729 <source>Video descriptions are truncated by default and require manual action to expand them.</source>
2462 <target>Las descripcions de las vidèos son troncadas per defaut e demandan una accion manuala per qu’òm las alongue.</target> 2730 <target>Las descripcions de las vidèos son troncadas per defaut e demandan una accion manuala per qu’òm las alongue.</target>
@@ -2711,6 +2979,17 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2711 <context context-type="linenumber">34</context> 2979 <context context-type="linenumber">34</context>
2712 </context-group> 2980 </context-group>
2713 </trans-unit> 2981 </trans-unit>
2982 <trans-unit id="90e0a0a3da80b46e550c1395ff4e97c27259bef8">
2983 <source>
2984 The url is not secured (no HTTPS), so the embed video won't work on HTTPS websites (web browsers block non secured HTTP requests on HTTPS websites).
2985 </source>
2986 <target>
2987 L’URL es pas segura (cap d’HTTPS), la vidèo embarcada foncionarà pas suls sites HTTPS alara (los navigadors web blocan las requèstas HTTP suls sites HTTPS).
2988 </target>
2989 <context-group name="null">
2990 <context context-type="linenumber">45</context>
2991 </context-group>
2992 </trans-unit>
2714 <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8"> 2993 <trans-unit id="f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8">
2715 <source>Close</source> 2994 <source>Close</source>
2716 <target>Tampar</target> 2995 <target>Tampar</target>
@@ -2747,6 +3026,17 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2747 <context context-type="linenumber">15</context> 3026 <context context-type="linenumber">15</context>
2748 </context-group> 3027 </context-group>
2749 </trans-unit> 3028 </trans-unit>
3029 <trans-unit id="c89a08fd2a05d1013fed8478024f5ba37ac3d308">
3030 <source>
3031 This video will be published on <x id="INTERPOLATION" equiv-text="{{ video.scheduledUpdate.updateAt | date: 'full' }}"/>.
3032 </source>
3033 <target>
3034 Aquesta vidèo serà publicada lo <x id="INTERPOLATION" equiv-text="{{ video.scheduledUpdate.updateAt | date: 'full' }}"/>.
3035 </target>
3036 <context-group name="null">
3037 <context context-type="linenumber">19</context>
3038 </context-group>
3039 </trans-unit>
2750 <trans-unit id="bd7055d3e38beff538463e75d508d1c75c683710"> 3040 <trans-unit id="bd7055d3e38beff538463e75d508d1c75c683710">
2751 <source>This video is blacklisted.</source> 3041 <source>This video is blacklisted.</source>
2752 <target>Aquesta vidèo es en lista negra.</target> 3042 <target>Aquesta vidèo es en lista negra.</target>
@@ -2754,6 +3044,28 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2754 <context context-type="linenumber">24</context> 3044 <context context-type="linenumber">24</context>
2755 </context-group> 3045 </context-group>
2756 </trans-unit> 3046 </trans-unit>
3047 <trans-unit id="3da5360f8314aa95973aa52629c9f635363c5a36">
3048 <source>
3049 Published <x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views
3050 </source>
3051 <target>
3052 Publicada <x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizacions
3053 </target>
3054 <context-group name="null">
3055 <context context-type="linenumber">37</context>
3056 </context-group>
3057 </trans-unit>
3058 <trans-unit id="07087373dbf99b5e8b2b2f962fd53baa97d9ab95">
3059 <source>
3060 Published <x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views
3061 </source>
3062 <target>
3063 Publicada <x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizacions
3064 </target>
3065 <context-group name="null">
3066 <context context-type="linenumber">46</context>
3067 </context-group>
3068 </trans-unit>
2757 <trans-unit id="82b59049f3f89d900c98da9319e156dd513e3ced"> 3069 <trans-unit id="82b59049f3f89d900c98da9319e156dd513e3ced">
2758 <source>Like this video</source> 3070 <source>Like this video</source>
2759 <target>Aimar la vidèo</target> 3071 <target>Aimar la vidèo</target>
@@ -2817,6 +3129,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2817 <context context-type="linenumber">100</context> 3129 <context context-type="linenumber">100</context>
2818 </context-group> 3130 </context-group>
2819 </trans-unit> 3131 </trans-unit>
3132 <trans-unit id="61021f5011bc24f69cfc3f6dbbbd8f1948328b25">
3133 <source>Unblacklist this video</source>
3134 <target>Tirar de la lista negra aquesta vidèo</target>
3135 <context-group name="null">
3136 <context context-type="linenumber">99</context>
3137 </context-group>
3138 </trans-unit>
2820 <trans-unit id="3dbfdc68f83d91cb360172eb65578cae94e7cbe5"> 3139 <trans-unit id="3dbfdc68f83d91cb360172eb65578cae94e7cbe5">
2821 <source>Delete this video</source> 3140 <source>Delete this video</source>
2822 <target>Suprimir aquesta vidèo</target> 3141 <target>Suprimir aquesta vidèo</target>
@@ -2838,13 +3157,6 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2838 <context context-type="linenumber">134</context> 3157 <context context-type="linenumber">134</context>
2839 </context-group> 3158 </context-group>
2840 </trans-unit> 3159 </trans-unit>
2841 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
2842 <source>Go to the account page</source>
2843 <target>Anar a la pagina del compte</target>
2844 <context-group name="null">
2845 <context context-type="linenumber">133</context>
2846 </context-group>
2847 </trans-unit>
2848 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 3160 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
2849 <source>Show more</source> 3161 <source>Show more</source>
2850 <target>Ne veire mai</target> 3162 <target>Ne veire mai</target>
@@ -2866,6 +3178,17 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2866 <context context-type="linenumber">208</context> 3178 <context context-type="linenumber">208</context>
2867 </context-group> 3179 </context-group>
2868 </trans-unit> 3180 </trans-unit>
3181 <trans-unit id="9e66f7507eb263abdbab7abafd825f1dc8bc880b">
3182 <source>
3183 the sharing system used for this video implies that some technical information about your system (such as a public IP address) can be sent to other peers.
3184 </source>
3185 <target>
3186 Lo sistèma de partatge utilizat per aquesta vidèo implica que d’informacions tocant vòstre sistèma (tal coma vòstra adreça IP publica) sián enviadas als autres pars.
3187 </target>
3188 <context-group name="null">
3189 <context context-type="linenumber">209</context>
3190 </context-group>
3191 </trans-unit>
2869 <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e"> 3192 <trans-unit id="e60c11e1b1dfbbeda577364b8de39ded2d796c5e">
2870 <source>More information</source> 3193 <source>More information</source>
2871 <target>Mai d’informacions</target> 3194 <target>Mai d’informacions</target>
@@ -2913,25 +3236,18 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2913 <context context-type="linenumber">3</context> 3236 <context context-type="linenumber">3</context>
2914 </context-group> 3237 </context-group>
2915 </trans-unit> 3238 </trans-unit>
2916 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
2917 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
2918 <target>Podètz siá comentar de la pagina de vòstra instància ont aquesta vidèo es federada amb vòstre compte PeerTube, o via qualque que siá instància del fediverse compatibla ActivityPub. Per exemple amb Mastodon o Pleroma podètz picar dins la barra de recèrca &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; e retrobar aquesta vidèo. Las foncionalitats de comentari dirècte son en òbra a &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
2919 <context-group name="null">
2920 <context context-type="linenumber">8</context>
2921 </context-group>
2922 </trans-unit>
2923 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 3239 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
2924 <source>No comments.</source> 3240 <source>No comments.</source>
2925 <target>Cap de comentari.</target> 3241 <target>Cap de comentari.</target>
2926 <context-group name="null"> 3242 <context-group name="null">
2927 <context context-type="linenumber">18</context> 3243 <context context-type="linenumber">17</context>
2928 </context-group> 3244 </context-group>
2929 </trans-unit> 3245 </trans-unit>
2930 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 3246 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
2931 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 3247 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
2932 <target>Veire las <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> autras responsas</target> 3248 <target>Veire las <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> autras responsas</target>
2933 <context-group name="null"> 3249 <context-group name="null">
2934 <context context-type="linenumber">55</context> 3250 <context context-type="linenumber">54</context>
2935 </context-group> 3251 </context-group>
2936 </trans-unit> 3252 </trans-unit>
2937 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 3253 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -2942,7 +3258,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2942 Los comentaris son desactivats. 3258 Los comentaris son desactivats.
2943 </target> 3259 </target>
2944 <context-group name="null"> 3260 <context-group name="null">
2945 <context context-type="linenumber">64</context> 3261 <context context-type="linenumber">63</context>
2946 </context-group> 3262 </context-group>
2947 </trans-unit> 3263 </trans-unit>
2948 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 3264 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -2963,6 +3279,57 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
2963 <context context-type="linenumber">20</context> 3279 <context context-type="linenumber">20</context>
2964 </context-group> 3280 </context-group>
2965 </trans-unit> 3281 </trans-unit>
3282 <trans-unit id="8b2bb53dfb5f059f2b68cc4ac00661a865909135">
3283 <source>You are one step away from commenting</source>
3284 <target>Sètz a una etapa abans de comentar</target>
3285 <context-group name="null">
3286 <context context-type="linenumber">28</context>
3287 </context-group>
3288 </trans-unit>
3289 <trans-unit id="7984a44ce86b961f4f18c9a58c638f5e8f07a225">
3290 <source>
3291 If you have an account on this instance, you can login:
3292 </source>
3293 <target>
3294 S’avètz un compte sus aquesta instància, podètz vos connectar :
3295 </target>
3296 <context-group name="null">
3297 <context context-type="linenumber">32</context>
3298 </context-group>
3299 </trans-unit>
3300 <trans-unit id="afe0ad39fee662489f1033e53aea3e16a7e89228">
3301 <source>login to comment</source>
3302 <target>se connectar per comentar</target>
3303 <context-group name="null">
3304 <context context-type="linenumber">35</context>
3305 </context-group>
3306 </trans-unit>
3307 <trans-unit id="a5a3f17c9b4876952d78363834d57280c8684e7c">
3308 <source>
3309 Otherwise you can comment using an account on any ActivityPub-compatible instance.
3310 On most platforms, you can find the video by typing its URL in the search bar and then comment it
3311 from within the software's interface.
3312 </source>
3313 <target>
3314 Autrament podètz comentar n’utilizant un compte amb una instància compatibla ActivityPub.
3315 Sovent podètz trobar la vidèo en picant son URL dins la barra de recèrca puèi la comentar
3316 a partir de l’interfàcia del logicial.
3317 </target>
3318 <context-group name="null">
3319 <context context-type="linenumber">36</context>
3320 </context-group>
3321 </trans-unit>
3322 <trans-unit id="968b02fbc645be799727de0d1ec3c6f9b11b20eb">
3323 <source>
3324 If you have an account on Mastodon or Pleroma, you can open it directly in their interface:
3325 </source>
3326 <target>
3327 S’avètz un compte sus Mastodon o Pleroma, podètz la dobrir dirèctament dins lor interfàcia :
3328 </target>
3329 <context-group name="null">
3330 <context context-type="linenumber">41</context>
3331 </context-group>
3332 </trans-unit>
2966 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285"> 3333 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285">
2967 <source>Highlighted comment</source> 3334 <source>Highlighted comment</source>
2968 <target>Comentari notable</target> 3335 <target>Comentari notable</target>
@@ -3012,37 +3379,44 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3012 <context context-type="linenumber">1</context> 3379 <context context-type="linenumber">1</context>
3013 </context-group> 3380 </context-group>
3014 </trans-unit> 3381 </trans-unit>
3015 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed"> 3382 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6">
3016 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source> 3383 <source>240p</source>
3017 <target>Avètz definit de <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target> 3384 <target>240p</target>
3385 <context-group name="null">
3386 <context context-type="linenumber">1</context>
3387 </context-group>
3388 </trans-unit>
3389 <trans-unit id="c8cfad7e7a16c57c42535331b65cb7de40d8402e">
3390 <source>360p</source>
3391 <target>360p</target>
3018 <context-group name="null"> 3392 <context-group name="null">
3019 <context context-type="linenumber">1</context> 3393 <context context-type="linenumber">1</context>
3020 </context-group> 3394 </context-group>
3021 </trans-unit> 3395 </trans-unit>
3022 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e"> 3396 <trans-unit id="48f0af5a0d0bea4e84b27eaf41b19c85a531c2a5">
3023 <source>This could lead to security issues or bugs if you do not understand it. </source> 3397 <source>480p</source>
3024 <target>Aquò pòt menar a de problèmas de seguretat o de bugs s’o comprenètz pas.</target> 3398 <target>480p</target>
3025 <context-group name="null"> 3399 <context-group name="null">
3026 <context context-type="linenumber">1</context> 3400 <context context-type="linenumber">1</context>
3027 </context-group> 3401 </context-group>
3028 </trans-unit> 3402 </trans-unit>
3029 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0"> 3403 <trans-unit id="6f06138daf6363746ff26bfc0cb2491c09cdfdf2">
3030 <source>Are you sure you want to update the configuration?</source> 3404 <source>720p</source>
3031 <target>Volètz vertadièrament actualizar la configuracion ?</target> 3405 <target>720p</target>
3032 <context-group name="null"> 3406 <context-group name="null">
3033 <context context-type="linenumber">1</context> 3407 <context context-type="linenumber">1</context>
3034 </context-group> 3408 </context-group>
3035 </trans-unit> 3409 </trans-unit>
3036 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119"> 3410 <trans-unit id="65c94f9beb6fe957808c40060da280cc7ace7ab9">
3037 <source>Please type</source> 3411 <source>1080p</source>
3038 <target>Mercés de picar</target> 3412 <target>1080p</target>
3039 <context-group name="null"> 3413 <context-group name="null">
3040 <context context-type="linenumber">1</context> 3414 <context context-type="linenumber">1</context>
3041 </context-group> 3415 </context-group>
3042 </trans-unit> 3416 </trans-unit>
3043 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d"> 3417 <trans-unit id="421a937491f19774d17eefa1d24816dae1a9f111">
3044 <source>to confirm.</source> 3418 <source>Auto (via ffmpeg)</source>
3045 <target>per confirmar.</target> 3419 <target>Auto (via ffmpeg)</target>
3046 <context-group name="null"> 3420 <context-group name="null">
3047 <context context-type="linenumber">1</context> 3421 <context context-type="linenumber">1</context>
3048 </context-group> 3422 </context-group>
@@ -3068,6 +3442,69 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3068 <context context-type="linenumber">1</context> 3442 <context context-type="linenumber">1</context>
3069 </context-group> 3443 </context-group>
3070 </trans-unit> 3444 </trans-unit>
3445 <trans-unit id="54adc67482fdaa0d361a2992bc91e064dc61cc9a">
3446 <source>100MB</source>
3447 <target>100 Mo</target>
3448 <context-group name="null">
3449 <context context-type="linenumber">1</context>
3450 </context-group>
3451 </trans-unit>
3452 <trans-unit id="cd34ef1f476d5422f49f6ed429f61fc1cfcb1174">
3453 <source>500MB</source>
3454 <target>500 Mo</target>
3455 <context-group name="null">
3456 <context context-type="linenumber">1</context>
3457 </context-group>
3458 </trans-unit>
3459 <trans-unit id="4a47b4beea31cac6e5970b6bc522902f545acc8b">
3460 <source>1GB</source>
3461 <target>1 Go</target>
3462 <context-group name="null">
3463 <context context-type="linenumber">1</context>
3464 </context-group>
3465 </trans-unit>
3466 <trans-unit id="b26d0cac75638623098ab7e06e16b096d1f55cc8">
3467 <source>5GB</source>
3468 <target>5 Go</target>
3469 <context-group name="null">
3470 <context context-type="linenumber">1</context>
3471 </context-group>
3472 </trans-unit>
3473 <trans-unit id="f9fc4e7ec6743cb6f69bea2d0859a655ed44ffae">
3474 <source>20GB</source>
3475 <target>20 Go</target>
3476 <context-group name="null">
3477 <context context-type="linenumber">1</context>
3478 </context-group>
3479 </trans-unit>
3480 <trans-unit id="a56e3f92fe16d97ee4f05051ea61c466ecb51d5e">
3481 <source>50GB</source>
3482 <target>50 Go</target>
3483 <context-group name="null">
3484 <context context-type="linenumber">1</context>
3485 </context-group>
3486 </trans-unit>
3487 <trans-unit id="31dcc0c63f6234ace8caa84ae1abc33d4022122d">
3488 <source>10MB</source>
3489 <target>10 Mo</target>
3490 <context-group name="null">
3491 <context context-type="linenumber">1</context>
3492 </context-group>
3493 </trans-unit>
3494 <trans-unit id="f2f968b6f2199b919f567702c6f23b43e5ea71af">
3495 <source>50MB</source>
3496 <target>50 Mo</target>
3497 <context-group name="null">
3498 <context context-type="linenumber">1</context>
3499 </context-group>
3500 </trans-unit>
3501 <trans-unit id="c31575424fe1b2a57064413f3eda7ce657c46c8a">
3502 <source>2GB</source>
3503 <target>2 Go</target>
3504 <context-group name="null">
3505 <context context-type="linenumber">1</context>
3506 </context-group>
3507 </trans-unit>
3071 <trans-unit id="fc5731a28a99b25c62d43333ceebb250d60aff84"> 3508 <trans-unit id="fc5731a28a99b25c62d43333ceebb250d60aff84">
3072 <source><x id="INTERPOLATION" equiv-text="{{host}}"/> is not valid</source> 3509 <source><x id="INTERPOLATION" equiv-text="{{host}}"/> is not valid</source>
3073 <target><x id="INTERPOLATION" equiv-text="{{host}}"/> es pas valid</target> 3510 <target><x id="INTERPOLATION" equiv-text="{{host}}"/> es pas valid</target>
@@ -3159,6 +3596,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3159 <context context-type="linenumber">1</context> 3596 <context context-type="linenumber">1</context>
3160 </context-group> 3597 </context-group>
3161 </trans-unit> 3598 </trans-unit>
3599 <trans-unit id="cf3b28ba29a907b334ab0e6dccd080a60ba23321">
3600 <source>Update moderation comment</source>
3601 <target>Actualizar lo comentari de moderacion</target>
3602 <context-group name="null">
3603 <context context-type="linenumber">1</context>
3604 </context-group>
3605 </trans-unit>
3162 <trans-unit id="d512430037b6580ba970c80cfc1687b6bdc221a3"> 3606 <trans-unit id="d512430037b6580ba970c80cfc1687b6bdc221a3">
3163 <source>Mark as accepted</source> 3607 <source>Mark as accepted</source>
3164 <target>Marcar coma acceptat</target> 3608 <target>Marcar coma acceptat</target>
@@ -3187,6 +3631,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3187 <context context-type="linenumber">1</context> 3631 <context context-type="linenumber">1</context>
3188 </context-group> 3632 </context-group>
3189 </trans-unit> 3633 </trans-unit>
3634 <trans-unit id="652845b2b32b2e117b9b02879b1af07859b0e223">
3635 <source>Do you really want to remove this video from the blacklist? It will be available again in the videos list.</source>
3636 <target>Volètz vertadièrament levar aquesta vidèo de la lista negra ? Serà disponibla tornamai dins la lista de las vidèo.</target>
3637 <context-group name="null">
3638 <context context-type="linenumber">1</context>
3639 </context-group>
3640 </trans-unit>
3190 <trans-unit id="1585babc36806e20e225ac27dbba0e7c7cd09e0f"> 3641 <trans-unit id="1585babc36806e20e225ac27dbba0e7c7cd09e0f">
3191 <source>Video <x id="INTERPOLATION" equiv-text="{{name}}"/> removed from the blacklist.</source> 3642 <source>Video <x id="INTERPOLATION" equiv-text="{{name}}"/> removed from the blacklist.</source>
3192 <target>Vidèo <x id="INTERPOLATION" equiv-text="{{name}}"/> tirada de la lista negra.</target> 3643 <target>Vidèo <x id="INTERPOLATION" equiv-text="{{name}}"/> tirada de la lista negra.</target>
@@ -3215,16 +3666,9 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3215 <context context-type="linenumber">1</context> 3666 <context context-type="linenumber">1</context>
3216 </context-group> 3667 </context-group>
3217 </trans-unit> 3668 </trans-unit>
3218 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd"> 3669 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3219 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source> 3670 <source>Unban</source>
3220 <target>Utilizaire <x id="INTERPOLATION" equiv-text="{{username}}"/> fòrabandit.</target> 3671 <target>Reabilitar</target>
3221 <context-group name="null">
3222 <context context-type="linenumber">1</context>
3223 </context-group>
3224 </trans-unit>
3225 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3226 <source>Ban</source>
3227 <target>Fòrabandir</target>
3228 <context-group name="null"> 3672 <context-group name="null">
3229 <context context-type="linenumber">1</context> 3673 <context context-type="linenumber">1</context>
3230 </context-group> 3674 </context-group>
@@ -3243,9 +3687,9 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3243 <context context-type="linenumber">1</context> 3687 <context context-type="linenumber">1</context>
3244 </context-group> 3688 </context-group>
3245 </trans-unit> 3689 </trans-unit>
3246 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a"> 3690 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3247 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source> 3691 <source>Ownership accepted</source>
3248 <target>Utilizaire <x id="INTERPOLATION" equiv-text="{{username}}"/> suprimit.</target> 3692 <target>Proprietat acceptada</target>
3249 <context-group name="null"> 3693 <context-group name="null">
3250 <context context-type="linenumber">1</context> 3694 <context context-type="linenumber">1</context>
3251 </context-group> 3695 </context-group>
@@ -3257,6 +3701,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3257 <context context-type="linenumber">1</context> 3701 <context context-type="linenumber">1</context>
3258 </context-group> 3702 </context-group>
3259 </trans-unit> 3703 </trans-unit>
3704 <trans-unit id="466fc8cf56fd4e4e90fec4b900ef083d52bec38c">
3705 <source>You current password is invalid.</source>
3706 <target>Lo senhal acual es invalid.</target>
3707 <context-group name="null">
3708 <context context-type="linenumber">1</context>
3709 </context-group>
3710 </trans-unit>
3260 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047"> 3711 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047">
3261 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source> 3712 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source>
3262 <target>Volètz vertadièrament suprimir lo compte ? Aquò suprimirà totas las donadas, e tanben las cadenas, vidèos, etc.</target> 3713 <target>Volètz vertadièrament suprimir lo compte ? Aquò suprimirà totas las donadas, e tanben las cadenas, vidèos, etc.</target>
@@ -3411,6 +3862,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3411 <context context-type="linenumber">1</context> 3862 <context context-type="linenumber">1</context>
3412 </context-group> 3863 </context-group>
3413 </trans-unit> 3864 </trans-unit>
3865 <trans-unit id="740c53a50a618bf5c7a5bd5c3f7321f0bd1840dd">
3866 <source>Ownership change request sent.</source>
3867 <target>Demanda de cambiament de proprietat enviada.</target>
3868 <context-group name="null">
3869 <context context-type="linenumber">1</context>
3870 </context-group>
3871 </trans-unit>
3414 <trans-unit id="807cf11e6ac1cde912496f764c176bdfdd6b7e19"> 3872 <trans-unit id="807cf11e6ac1cde912496f764c176bdfdd6b7e19">
3415 <source>Channels</source> 3873 <source>Channels</source>
3416 <target>Cadenas</target> 3874 <target>Cadenas</target>
@@ -3686,6 +4144,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3686 <context context-type="linenumber">1</context> 4144 <context context-type="linenumber">1</context>
3687 </context-group> 4145 </context-group>
3688 </trans-unit> 4146 </trans-unit>
4147 <trans-unit id="4166cc066b963a23829b48a09e394f73b453fabd">
4148 <source>Transcoding threads must be greater or equal to 0.</source>
4149 <target>Los fils de transcodatge devon èsser superiors o egals a 1.</target>
4150 <context-group name="null">
4151 <context context-type="linenumber">1</context>
4152 </context-group>
4153 </trans-unit>
3689 <trans-unit id="5db300f6fba918a35597160183205ede13e8e149"> 4154 <trans-unit id="5db300f6fba918a35597160183205ede13e8e149">
3690 <source>Username is required.</source> 4155 <source>Username is required.</source>
3691 <target>Lo nom d’utilizaire es requesit.</target> 4156 <target>Lo nom d’utilizaire es requesit.</target>
@@ -3723,7 +4188,7 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3723 </trans-unit> 4188 </trans-unit>
3724 <trans-unit id="5acbe0aa7a7157b1f09057a98ba01ab578a303a9"> 4189 <trans-unit id="5acbe0aa7a7157b1f09057a98ba01ab578a303a9">
3725 <source>Username should be only lowercase alphanumeric characters.</source> 4190 <source>Username should be only lowercase alphanumeric characters.</source>
3726 <target>Lo nom d’utilizaire deu èsser alfanumeric e un minuscula. </target> 4191 <target>Lo nom d’utilizaire deu èsser alfanumeric e en minuscula. </target>
3727 <context-group name="null"> 4192 <context-group name="null">
3728 <context context-type="linenumber">1</context> 4193 <context context-type="linenumber">1</context>
3729 </context-group> 4194 </context-group>
@@ -3777,6 +4242,20 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3777 <context context-type="linenumber">1</context> 4242 <context context-type="linenumber">1</context>
3778 </context-group> 4243 </context-group>
3779 </trans-unit> 4244 </trans-unit>
4245 <trans-unit id="7e58d1fb4e86af94f5199660ef349d55811888bb">
4246 <source>Daily upload limit is required.</source>
4247 <target>Lo quòta jornalièr de mandadís es requesit.</target>
4248 <context-group name="null">
4249 <context context-type="linenumber">1</context>
4250 </context-group>
4251 </trans-unit>
4252 <trans-unit id="e283cbc4469959ea664f9d545f15278e089a6f1e">
4253 <source>Daily upload limit must be greater than -1.</source>
4254 <target>Lo quòta jornalièr deu èsser superior a -1.</target>
4255 <context-group name="null">
4256 <context context-type="linenumber">1</context>
4257 </context-group>
4258 </trans-unit>
3780 <trans-unit id="545e77fd5d9526228a2133109447c23225ed9c85"> 4259 <trans-unit id="545e77fd5d9526228a2133109447c23225ed9c85">
3781 <source>User role is required.</source> 4260 <source>User role is required.</source>
3782 <target>Lo ròtle del l’utilizaire es requesit.</target> 4261 <target>Lo ròtle del l’utilizaire es requesit.</target>
@@ -3826,6 +4305,20 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3826 <context context-type="linenumber">1</context> 4305 <context context-type="linenumber">1</context>
3827 </context-group> 4306 </context-group>
3828 </trans-unit> 4307 </trans-unit>
4308 <trans-unit id="6d2c3ebffd49b8933200a6d4e5b74712be49bf00">
4309 <source>Ban reason must be at least 3 characters long.</source>
4310 <target>La rason del bandiment deu conténer almens 3 caractèrs.</target>
4311 <context-group name="null">
4312 <context context-type="linenumber">1</context>
4313 </context-group>
4314 </trans-unit>
4315 <trans-unit id="be32ff1dd6e464c5c085dd7d128316f476d2e0fd">
4316 <source>Ban reason cannot be more than 250 characters long.</source>
4317 <target>La rason del bandiment pòt pas conténer mai de 250 caractèrs.</target>
4318 <context-group name="null">
4319 <context context-type="linenumber">1</context>
4320 </context-group>
4321 </trans-unit>
3829 <trans-unit id="b3cf1889d2fdd6b15e697c270c9b80772fe2cae6"> 4322 <trans-unit id="b3cf1889d2fdd6b15e697c270c9b80772fe2cae6">
3830 <source>Report reason is required.</source> 4323 <source>Report reason is required.</source>
3831 <target>La rason del senha es requesida.</target> 4324 <target>La rason del senha es requesida.</target>
@@ -3847,6 +4340,48 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3847 <context context-type="linenumber">1</context> 4340 <context context-type="linenumber">1</context>
3848 </context-group> 4341 </context-group>
3849 </trans-unit> 4342 </trans-unit>
4343 <trans-unit id="2fa41debd17a206d4a2a5e8d14bcd7055f6e5118">
4344 <source>Moderation comment is required.</source>
4345 <target>Lo comentari de moderacion es requesit.</target>
4346 <context-group name="null">
4347 <context context-type="linenumber">1</context>
4348 </context-group>
4349 </trans-unit>
4350 <trans-unit id="82e31d0837eaa69a4364e7434d253ce138b3c5c2">
4351 <source>Moderation comment must be at least 2 characters long.</source>
4352 <target>Lo comentari de moderacon deu conténer almens 2 caractèrs.</target>
4353 <context-group name="null">
4354 <context context-type="linenumber">1</context>
4355 </context-group>
4356 </trans-unit>
4357 <trans-unit id="89d0b662dde0871cf17244e79b2cb62cd517e44f">
4358 <source>Moderation comment cannot be more than 300 characters long.</source>
4359 <target>Lo comentari de moderacion pòt pas conténer mai de 300 caractèrs.</target>
4360 <context-group name="null">
4361 <context context-type="linenumber">1</context>
4362 </context-group>
4363 </trans-unit>
4364 <trans-unit id="94b831c7e3684258f88e099c6cd3b8f73f8a2de6">
4365 <source>The channel is required.</source>
4366 <target>La cadena es requesida.</target>
4367 <context-group name="null">
4368 <context context-type="linenumber">1</context>
4369 </context-group>
4370 </trans-unit>
4371 <trans-unit id="0776b05d442a0a16f083a5eefa52a166b9d514ca">
4372 <source>Blacklist reason must be at least 2 characters long.</source>
4373 <target>La rason de la mesa en lista negra deu conténer almens 2 caractèrs.</target>
4374 <context-group name="null">
4375 <context context-type="linenumber">1</context>
4376 </context-group>
4377 </trans-unit>
4378 <trans-unit id="5009443905b0b152915247799492bf5e164e7626">
4379 <source>Blacklist reason cannot be more than 300 characters long.</source>
4380 <target>La rason de la mesa en lista negra pòt pas conténer mai de 300 caractèrs.</target>
4381 <context-group name="null">
4382 <context context-type="linenumber">1</context>
4383 </context-group>
4384 </trans-unit>
3850 <trans-unit id="c9eadf8830b3bc09bd444d739af86414eed9bd9e"> 4385 <trans-unit id="c9eadf8830b3bc09bd444d739af86414eed9bd9e">
3851 <source>Video caption language is required.</source> 4386 <source>Video caption language is required.</source>
3852 <target>La lenga de la legenda es requesida.</target> 4387 <target>La lenga de la legenda es requesida.</target>
@@ -3861,6 +4396,41 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
3861 <context context-type="linenumber">1</context> 4396 <context context-type="linenumber">1</context>
3862 </context-group> 4397 </context-group>
3863 </trans-unit> 4398 </trans-unit>
4399 <trans-unit id="bd7fc070c728dc6dbf3959d49fe5bb27ce15d294">
4400 <source>The username is required.</source>
4401 <target>Lo nom d’utilizaire es requesit.</target>
4402 <context-group name="null">
4403 <context context-type="linenumber">1</context>
4404 </context-group>
4405 </trans-unit>
4406 <trans-unit id="541087322c34e8b26954fd67ff4fc80d1a6c1b33">
4407 <source>Name is required.</source>
4408 <target>Lo nom es requesit.</target>
4409 <context-group name="null">
4410 <context context-type="linenumber">1</context>
4411 </context-group>
4412 </trans-unit>
4413 <trans-unit id="06b5d33d89bb8e6a5013dbd3c07c44389a6f1069">
4414 <source>Name must be at least 3 characters long.</source>
4415 <target>Lo nom deu almens conténer 3 caractèrs.</target>
4416 <context-group name="null">
4417 <context context-type="linenumber">1</context>
4418 </context-group>
4419 </trans-unit>
4420 <trans-unit id="a35f2514e29113179795cdb27bca8a2e99c43482">
4421 <source>Name cannot be more than 20 characters long.</source>
4422 <target>Lo nom pòt pas conténer mai de 20 caractèrs.</target>
4423 <context-group name="null">
4424 <context context-type="linenumber">1</context>
4425 </context-group>
4426 </trans-unit>
4427 <trans-unit id="807f79894e0c31beca2db09ca4aff57dfaaf3bb9">
4428 <source>Name should be only lowercase alphanumeric characters.</source>
4429 <target>Lo nom deu èsser alfanumeric e en minuscula</target>
4430 <context-group name="null">
4431 <context context-type="linenumber">1</context>
4432 </context-group>
4433 </trans-unit>
3864 <trans-unit id="fac936be125163a8494f3d7e7f21d65c7e4f1ff6"> 4434 <trans-unit id="fac936be125163a8494f3d7e7f21d65c7e4f1ff6">
3865 <source>Description cannot be more than 500 characters long.</source> 4435 <source>Description cannot be more than 500 characters long.</source>
3866 <target>La descripcion pòt pas conténer mai de 500 caractèrs.</target> 4436 <target>La descripcion pòt pas conténer mai de 500 caractèrs.</target>
@@ -4330,6 +4900,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
4330 <context context-type="linenumber">1</context> 4900 <context context-type="linenumber">1</context>
4331 </context-group> 4901 </context-group>
4332 </trans-unit> 4902 </trans-unit>
4903 <trans-unit id="a0fdb831d4557925dbaa4f8aff7e5035f7506411">
4904 <source>Transcode your videos in multiple resolutions</source>
4905 <target>Convertir las vidèos en mantunas resolucions</target>
4906 <context-group name="null">
4907 <context context-type="linenumber">1</context>
4908 </context-group>
4909 </trans-unit>
4333 <trans-unit id="590fc27fcbd7dd680da2bb2da644a183338f6bd1"> 4910 <trans-unit id="590fc27fcbd7dd680da2bb2da644a183338f6bd1">
4334 <source>HTTP import (YouTube, Vimeo, direct URL...)</source> 4911 <source>HTTP import (YouTube, Vimeo, direct URL...)</source>
4335 <target>Importacion HTTP (YouTube, Vimeo, URL dirècta...)</target> 4912 <target>Importacion HTTP (YouTube, Vimeo, URL dirècta...)</target>
@@ -4416,14 +4993,14 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
4416 </trans-unit> 4993 </trans-unit>
4417 <trans-unit id="a7654c3ece96e777527606f1c2870d6ee0b180f7"> 4994 <trans-unit id="a7654c3ece96e777527606f1c2870d6ee0b180f7">
4418 <source><x id="INTERPOLATION" equiv-text="{{interval}}"/> days ago</source> 4995 <source><x id="INTERPOLATION" equiv-text="{{interval}}"/> days ago</source>
4419 <target>Fa<x id="INTERPOLATION" equiv-text="{{interval}}"/> jorns</target> 4996 <target>fa <x id="INTERPOLATION" equiv-text="{{interval}}"/> jorns</target>
4420 <context-group name="null"> 4997 <context-group name="null">
4421 <context context-type="linenumber">1</context> 4998 <context context-type="linenumber">1</context>
4422 </context-group> 4999 </context-group>
4423 </trans-unit> 5000 </trans-unit>
4424 <trans-unit id="5b465235ae55091d32535e23dd180c407f1352d1"> 5001 <trans-unit id="5b465235ae55091d32535e23dd180c407f1352d1">
4425 <source><x id="INTERPOLATION" equiv-text="{{interval}}"/> day ago</source> 5002 <source><x id="INTERPOLATION" equiv-text="{{interval}}"/> day ago</source>
4426 <target>Fa <x id="INTERPOLATION" equiv-text="{{interval}}"/> jorn</target> 5003 <target>fa <x id="INTERPOLATION" equiv-text="{{interval}}"/> jorn</target>
4427 <context-group name="null"> 5004 <context-group name="null">
4428 <context context-type="linenumber">1</context> 5005 <context context-type="linenumber">1</context>
4429 </context-group> 5006 </context-group>
@@ -4498,6 +5075,41 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
4498 <context context-type="linenumber">1</context> 5075 <context context-type="linenumber">1</context>
4499 </context-group> 5076 </context-group>
4500 </trans-unit> 5077 </trans-unit>
5078 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
5079 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
5080 <target>Utilizaire <x id="INTERPOLATION" equiv-text="{{username}}"/> fòrabandit.</target>
5081 <context-group name="null">
5082 <context context-type="linenumber">1</context>
5083 </context-group>
5084 </trans-unit>
5085 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
5086 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
5087 <target>Volètz vertadièrament reabilitar <x id="INTERPOLATION" equiv-text="{{username}}"/> ?</target>
5088 <context-group name="null">
5089 <context context-type="linenumber">1</context>
5090 </context-group>
5091 </trans-unit>
5092 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
5093 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
5094 <target>L’utilizaire <x id="INTERPOLATION" equiv-text="{{username}}"/> es reabilitat.</target>
5095 <context-group name="null">
5096 <context context-type="linenumber">1</context>
5097 </context-group>
5098 </trans-unit>
5099 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
5100 <source>If you remove this user, you will not be able to create another with the same username!</source>
5101 <target>Se levatz aqueste utilizaire, poiretz pas ne crear un autre amb lo meteis nom d’utilizaire !</target>
5102 <context-group name="null">
5103 <context context-type="linenumber">1</context>
5104 </context-group>
5105 </trans-unit>
5106 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
5107 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
5108 <target>Utilizaire <x id="INTERPOLATION" equiv-text="{{username}}"/> suprimit.</target>
5109 <context-group name="null">
5110 <context context-type="linenumber">1</context>
5111 </context-group>
5112 </trans-unit>
4501 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 5113 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
4502 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 5114 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
4503 <target>La requèsta es tròp granda pel servidor. Mercés de contactar l’administrator se volètz aumentar la talha limita.</target> 5115 <target>La requèsta es tròp granda pel servidor. Mercés de contactar l’administrator se volètz aumentar la talha limita.</target>
@@ -4554,6 +5166,13 @@ Quand enviaretz una vidèo dins aquesta cadena, lo camp vidèo sosten serà auto
4554 <context context-type="linenumber">1</context> 5166 <context context-type="linenumber">1</context>
4555 </context-group> 5167 </context-group>
4556 </trans-unit> 5168 </trans-unit>
5169 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf">
5170 <source>Moderator</source>
5171 <target>Moderator</target>
5172 <context-group name="null">
5173 <context context-type="linenumber">1</context>
5174 </context-group>
5175 </trans-unit>
4557 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb"> 5176 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb">
4558 <source>Only I can see this video</source> 5177 <source>Only I can see this video</source>
4559 <target>Pas que ieu pòdi veire aquesta vidèo</target> 5178 <target>Pas que ieu pòdi veire aquesta vidèo</target>
diff --git a/client/src/locale/target/angular_pl_PL.xml b/client/src/locale/target/angular_pl_PL.xml
index 0d25a6ed4..87c691c20 100644
--- a/client/src/locale/target/angular_pl_PL.xml
+++ b/client/src/locale/target/angular_pl_PL.xml
@@ -38,6 +38,20 @@
38 <context context-type="linenumber">27</context> 38 <context context-type="linenumber">27</context>
39 </context-group> 39 </context-group>
40 </trans-unit> 40 </trans-unit>
41 <trans-unit id="ngb.datepicker.select-month">
42 <source>Select month</source>
43 <target>Wybierz miesiÄ…c</target>
44 <context-group name="null">
45 <context context-type="linenumber">7</context>
46 </context-group>
47 </trans-unit>
48 <trans-unit id="ngb.datepicker.select-year">
49 <source>Select year</source>
50 <target>Wybierz rok</target>
51 <context-group name="null">
52 <context context-type="linenumber">16</context>
53 </context-group>
54 </trans-unit>
41 <trans-unit id="ngb.pagination.first"> 55 <trans-unit id="ngb.pagination.first">
42 <source>««</source> 56 <source>««</source>
43 <target>««</target> 57 <target>««</target>
@@ -168,7 +182,7 @@
168 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 182 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
169 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> wyświetleń</target> 183 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> wyświetleń</target>
170 <context-group name="null"> 184 <context-group name="null">
171 <context context-type="linenumber">13</context> 185 <context context-type="linenumber">16</context>
172 </context-group> 186 </context-group>
173 </trans-unit> 187 </trans-unit>
174 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 188 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -182,7 +196,7 @@
182 <source>Edit</source> 196 <source>Edit</source>
183 <target>Edytuj</target> 197 <target>Edytuj</target>
184 <context-group name="null"> 198 <context-group name="null">
185 <context context-type="linenumber">5</context> 199 <context context-type="linenumber">1</context>
186 </context-group> 200 </context-group>
187 </trans-unit> 201 </trans-unit>
188 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 202 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -206,11 +220,50 @@
206 <context context-type="linenumber">19</context> 220 <context context-type="linenumber">19</context>
207 </context-group> 221 </context-group>
208 </trans-unit> 222 </trans-unit>
223 <trans-unit id="450025269732888db1f04cfe6033843110ab65ee">
224 <source>
225 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
226 Subscribe
227 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
228 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
229 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
230 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
231 </source>
232 <target>
233 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
234 Subskrybuj
235 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
236 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
237 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
238 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
239 </target>
240 <context-group name="null">
241 <context context-type="linenumber">5</context>
242 </context-group>
243 </trans-unit>
244 <trans-unit id="c374edf3b9228d3df6d761bdc8a289e7df0096e8">
245 <source>
246 Unsubscribe
247 </source>
248 <target>
249 Odsubskrybuj
250 </target>
251 <context-group name="null">
252 <context context-type="linenumber">18</context>
253 </context-group>
254 </trans-unit>
255 <trans-unit id="d5e5bc7d213694fc0414a76f0ff3085bae44268a">
256 <source>Subscribe via RSS</source>
257 <target>Subskrybuj przez RSS</target>
258 <context-group name="null">
259 <context context-type="linenumber">49</context>
260 </context-group>
261 </trans-unit>
209 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b"> 262 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b">
210 <source>Video quota</source> 263 <source>Video quota</source>
211 <target>Powierzchnia na filmy</target> 264 <target>Powierzchnia na filmy</target>
212 <context-group name="null"> 265 <context-group name="null">
213 <context context-type="linenumber">19</context> 266 <context context-type="linenumber">42</context>
214 </context-group> 267 </context-group>
215 </trans-unit> 268 </trans-unit>
216 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 269 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -224,6 +277,13 @@
224 <context context-type="linenumber">14</context> 277 <context context-type="linenumber">14</context>
225 </context-group> 278 </context-group>
226 </trans-unit> 279 </trans-unit>
280 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
281 <source>Reason...</source>
282 <target>Przyczyna…</target>
283 <context-group name="null">
284 <context context-type="linenumber">11</context>
285 </context-group>
286 </trans-unit>
227 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 287 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
228 <source> 288 <source>
229 Login 289 Login
@@ -416,13 +476,6 @@
416 <context context-type="linenumber">6</context> 476 <context context-type="linenumber">6</context>
417 </context-group> 477 </context-group>
418 </trans-unit> 478 </trans-unit>
419 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
420 <source>Filters</source>
421 <target>Filtry</target>
422 <context-group name="null">
423 <context context-type="linenumber">16</context>
424 </context-group>
425 </trans-unit>
426 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 479 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
427 <source> 480 <source>
428 No results found 481 No results found
@@ -431,21 +484,21 @@
431 Nie znaleziono wyników 484 Nie znaleziono wyników
432 </target> 485 </target>
433 <context-group name="null"> 486 <context-group name="null">
434 <context context-type="linenumber">25</context> 487 <context context-type="linenumber">28</context>
435 </context-group> 488 </context-group>
436 </trans-unit> 489 </trans-unit>
437 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 490 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
438 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 491 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
439 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subskrybentów</target> 492 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subskrybentów</target>
440 <context-group name="null"> 493 <context-group name="null">
441 <context context-type="linenumber">41</context> 494 <context context-type="linenumber">44</context>
442 </context-group> 495 </context-group>
443 </trans-unit> 496 </trans-unit>
444 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 497 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
445 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 498 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
446 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> wyświetleń</target> 499 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> wyświetleń</target>
447 <context-group name="null"> 500 <context-group name="null">
448 <context context-type="linenumber">52</context> 501 <context context-type="linenumber">55</context>
449 </context-group> 502 </context-group>
450 </trans-unit> 503 </trans-unit>
451 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 504 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -678,7 +731,7 @@
678 <source>No results.</source> 731 <source>No results.</source>
679 <target>Brak wyników.</target> 732 <target>Brak wyników.</target>
680 <context-group name="null"> 733 <context-group name="null">
681 <context context-type="linenumber">7</context> 734 <context context-type="linenumber">17</context>
682 </context-group> 735 </context-group>
683 </trans-unit> 736 </trans-unit>
684 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 737 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -715,7 +768,7 @@
715 <source>Instance</source> 768 <source>Instance</source>
716 <target>Instancja</target> 769 <target>Instancja</target>
717 <context-group name="null"> 770 <context-group name="null">
718 <context context-type="linenumber">8</context> 771 <context context-type="linenumber">12</context>
719 </context-group> 772 </context-group>
720 </trans-unit> 773 </trans-unit>
721 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 774 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -1037,14 +1090,14 @@
1037 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1090 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1038 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subskrybentów</target> 1091 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subskrybentów</target>
1039 <context-group name="null"> 1092 <context-group name="null">
1040 <context context-type="linenumber">12</context> 1093 <context context-type="linenumber">24</context>
1041 </context-group> 1094 </context-group>
1042 </trans-unit> 1095 </trans-unit>
1043 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1096 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1044 <source>Video channels</source> 1097 <source>Video channels</source>
1045 <target>Kanały wideo</target> 1098 <target>Kanały wideo</target>
1046 <context-group name="null"> 1099 <context-group name="null">
1047 <context context-type="linenumber">19</context> 1100 <context context-type="linenumber">31</context>
1048 </context-group> 1101 </context-group>
1049 </trans-unit> 1102 </trans-unit>
1050 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1103 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1384,6 +1437,16 @@
1384 <context context-type="linenumber">7</context> 1437 <context context-type="linenumber">7</context>
1385 </context-group> 1438 </context-group>
1386 </trans-unit> 1439 </trans-unit>
1440 <trans-unit id="1a5c7f9b1bec1463728f44933f0e256de9c45154">
1441 <source>
1442 Moderation
1443 </source>
1444 <target>
1445 Moderacja </target>
1446 <context-group name="null">
1447 <context context-type="linenumber">11</context>
1448 </context-group>
1449 </trans-unit>
1387 <trans-unit id="7bea88c54fdccfdc9f687b0ffe9bf6a653d19368"> 1450 <trans-unit id="7bea88c54fdccfdc9f687b0ffe9bf6a653d19368">
1388 <source> 1451 <source>
1389 Jobs 1452 Jobs
@@ -1442,14 +1505,14 @@
1442 <source>Score</source> 1505 <source>Score</source>
1443 <target>Wynik</target> 1506 <target>Wynik</target>
1444 <context-group name="null"> 1507 <context-group name="null">
1445 <context context-type="linenumber">8</context> 1508 <context context-type="linenumber">17</context>
1446 </context-group> 1509 </context-group>
1447 </trans-unit> 1510 </trans-unit>
1448 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1511 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1449 <source>Host</source> 1512 <source>Host</source>
1450 <target>Host</target> 1513 <target>Host</target>
1451 <context-group name="null"> 1514 <context-group name="null">
1452 <context context-type="linenumber">8</context> 1515 <context context-type="linenumber">19</context>
1453 </context-group> 1516 </context-group>
1454 </trans-unit> 1517 </trans-unit>
1455 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1518 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1465,6 +1528,20 @@
1465 <context context-type="linenumber">11</context> 1528 <context context-type="linenumber">11</context>
1466 </context-group> 1529 </context-group>
1467 </trans-unit> 1530 </trans-unit>
1531 <trans-unit id="7823909fb1d8d313382f6f4bd842f1a7ef6f08d1">
1532 <source>Accepted</source>
1533 <target>Zaakceptowane</target>
1534 <context-group name="null">
1535 <context context-type="linenumber">32</context>
1536 </context-group>
1537 </trans-unit>
1538 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506">
1539 <source>Pending</source>
1540 <target>Oczekiwane</target>
1541 <context-group name="null">
1542 <context context-type="linenumber">33</context>
1543 </context-group>
1544 </trans-unit>
1468 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479"> 1545 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479">
1469 <source>Manage follows</source> 1546 <source>Manage follows</source>
1470 <target>Zarządzaj śledzeniem</target> 1547 <target>Zarządzaj śledzeniem</target>
@@ -1539,7 +1616,7 @@
1539 <source>Role</source> 1616 <source>Role</source>
1540 <target>Rola</target> 1617 <target>Rola</target>
1541 <context-group name="null"> 1618 <context-group name="null">
1542 <context context-type="linenumber">20</context> 1619 <context context-type="linenumber">43</context>
1543 </context-group> 1620 </context-group>
1544 </trans-unit> 1621 </trans-unit>
1545 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1622 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1551,13 +1628,6 @@
1551 <context context-type="linenumber">65</context> 1628 <context context-type="linenumber">65</context>
1552 </context-group> 1629 </context-group>
1553 </trans-unit> 1630 </trans-unit>
1554 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1555 <source>Reason...</source>
1556 <target>Przyczyna…</target>
1557 <context-group name="null">
1558 <context context-type="linenumber">11</context>
1559 </context-group>
1560 </trans-unit>
1561 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1631 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1562 <source>Users list</source> 1632 <source>Users list</source>
1563 <target>Lista użytkowników</target> 1633 <target>Lista użytkowników</target>
@@ -1569,14 +1639,14 @@
1569 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1639 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1570 <target>Nazwa użytkownika <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1640 <target>Nazwa użytkownika <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1571 <context-group name="null"> 1641 <context-group name="null">
1572 <context context-type="linenumber">17</context> 1642 <context context-type="linenumber">40</context>
1573 </context-group> 1643 </context-group>
1574 </trans-unit> 1644 </trans-unit>
1575 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1645 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1576 <source>Actions</source> 1646 <source>Go to the account page</source>
1577 <target>Akcje</target> 1647 <target>Przejdź na stronę konta</target>
1578 <context-group name="null"> 1648 <context-group name="null">
1579 <context context-type="linenumber">33</context> 1649 <context context-type="linenumber">133</context>
1580 </context-group> 1650 </context-group>
1581 </trans-unit> 1651 </trans-unit>
1582 <trans-unit id="0562e455c88234829f3c27a38f3039f027bfd5d2"> 1652 <trans-unit id="0562e455c88234829f3c27a38f3039f027bfd5d2">
@@ -1614,6 +1684,13 @@
1614 <context context-type="linenumber">33</context> 1684 <context context-type="linenumber">33</context>
1615 </context-group> 1685 </context-group>
1616 </trans-unit> 1686 </trans-unit>
1687 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1688 <source>Actions</source>
1689 <target>Akcje</target>
1690 <context-group name="null">
1691 <context context-type="linenumber">33</context>
1692 </context-group>
1693 </trans-unit>
1617 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 1694 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1618 <source>Reason:</source> 1695 <source>Reason:</source>
1619 <target>Powód:</target> 1696 <target>Powód:</target>
@@ -1628,6 +1705,13 @@
1628 <context context-type="linenumber">10</context> 1705 <context context-type="linenumber">10</context>
1629 </context-group> 1706 </context-group>
1630 </trans-unit> 1707 </trans-unit>
1708 <trans-unit id="90868353e7e6f5994109ee1011131cefa992116c">
1709 <source>Moderation</source>
1710 <target>Moderacja</target>
1711 <context-group name="null">
1712 <context context-type="linenumber">2</context>
1713 </context-group>
1714 </trans-unit>
1631 <trans-unit id="00ecde6001106fe7406a34cc3459cc5b88e4aec1"> 1715 <trans-unit id="00ecde6001106fe7406a34cc3459cc5b88e4aec1">
1632 <source>Blacklisted videos</source> 1716 <source>Blacklisted videos</source>
1633 <target>Filmy na czarnej liście</target> 1717 <target>Filmy na czarnej liście</target>
@@ -1806,6 +1890,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
1806 <context context-type="linenumber">30</context> 1890 <context context-type="linenumber">30</context>
1807 </context-group> 1891 </context-group>
1808 </trans-unit> 1892 </trans-unit>
1893 <trans-unit id="0dd390d056411e1709ec97ec51c46d78600e3f7b">
1894 <source>Current password</source>
1895 <target>Obecne hasło</target>
1896 <context-group name="null">
1897 <context context-type="linenumber">7</context>
1898 </context-group>
1899 </trans-unit>
1809 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229"> 1900 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229">
1810 <source>New password</source> 1901 <source>New password</source>
1811 <target>Nowe hasło</target> 1902 <target>Nowe hasło</target>
@@ -1831,14 +1922,14 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
1831 <source>Automatically plays video</source> 1922 <source>Automatically plays video</source>
1832 <target>Automatycznie odtwarzaj filmy</target> 1923 <target>Automatycznie odtwarzaj filmy</target>
1833 <context-group name="null"> 1924 <context-group name="null">
1834 <context context-type="linenumber">20</context> 1925 <context context-type="linenumber">25</context>
1835 </context-group> 1926 </context-group>
1836 </trans-unit> 1927 </trans-unit>
1837 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 1928 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
1838 <source>Save</source> 1929 <source>Save</source>
1839 <target>Zapisz</target> 1930 <target>Zapisz</target>
1840 <context-group name="null"> 1931 <context-group name="null">
1841 <context context-type="linenumber">23</context> 1932 <context context-type="linenumber">28</context>
1842 </context-group> 1933 </context-group>
1843 </trans-unit> 1934 </trans-unit>
1844 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 1935 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -1950,6 +2041,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
1950 <context context-type="linenumber">55</context> 2041 <context context-type="linenumber">55</context>
1951 </context-group> 2042 </context-group>
1952 </trans-unit> 2043 </trans-unit>
2044 <trans-unit id="1b518e7f8c067fa55ea797bb1b35b4a2d31dccbc">
2045 <source>Or</source>
2046 <target>Lub</target>
2047 <context-group name="null">
2048 <context context-type="linenumber">11</context>
2049 </context-group>
2050 </trans-unit>
1953 <trans-unit id="0b60d939cf0f1af9fe513f31164d198abf671860"> 2051 <trans-unit id="0b60d939cf0f1af9fe513f31164d198abf671860">
1954 <source>Import <x id="INTERPOLATION" equiv-text="{{ videoName }}"/></source> 2052 <source>Import <x id="INTERPOLATION" equiv-text="{{ videoName }}"/></source>
1955 <target>Importuj <x id="INTERPOLATION" equiv-text="{{ videoName }}"/></target> 2053 <target>Importuj <x id="INTERPOLATION" equiv-text="{{ videoName }}"/></target>
@@ -2006,6 +2104,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2006 <context context-type="linenumber">191</context> 2104 <context context-type="linenumber">191</context>
2007 </context-group> 2105 </context-group>
2008 </trans-unit> 2106 </trans-unit>
2107 <trans-unit id="9bdd535a2817bf0b843a124bf65e4992625e7ecf">
2108 <source>+ Tag</source>
2109 <target>+ Tag</target>
2110 <context-group name="null">
2111 <context context-type="linenumber">21</context>
2112 </context-group>
2113 </trans-unit>
2009 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e"> 2114 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e">
2010 <source>Video descriptions are truncated by default and require manual action to expand them.</source> 2115 <source>Video descriptions are truncated by default and require manual action to expand them.</source>
2011 <target>Opisy filmów są automatycznie skracane i wymagają ręcznego działania, aby je rozwinąć.</target> 2116 <target>Opisy filmów są automatycznie skracane i wymagają ręcznego działania, aby je rozwinąć.</target>
@@ -2115,6 +2220,20 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2115 <context context-type="linenumber">27</context> 2220 <context context-type="linenumber">27</context>
2116 </context-group> 2221 </context-group>
2117 </trans-unit> 2222 </trans-unit>
2223 <trans-unit id="ac3a02ecd20f41278f1ef7c03f45c1117b4b796d">
2224 <source>Torrent (.torrent file)</source>
2225 <target>Torrent (plik .torrent)</target>
2226 <context-group name="null">
2227 <context context-type="linenumber">32</context>
2228 </context-group>
2229 </trans-unit>
2230 <trans-unit id="2db8d7cf6a3071f4c1519ef2b5e2713d9ff4e87f">
2231 <source>Torrent (magnet link)</source>
2232 <target>Torrent (link magnet)</target>
2233 <context-group name="null">
2234 <context context-type="linenumber">37</context>
2235 </context-group>
2236 </trans-unit>
2118 <trans-unit id="da44efc7b658c318651866454d258bbbe57ff21c"> 2237 <trans-unit id="da44efc7b658c318651866454d258bbbe57ff21c">
2119 <source> 2238 <source>
2120 Cancel 2239 Cancel
@@ -2179,6 +2298,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2179 <context context-type="linenumber">51</context> 2298 <context context-type="linenumber">51</context>
2180 </context-group> 2299 </context-group>
2181 </trans-unit> 2300 </trans-unit>
2301 <trans-unit id="f672385c803647b063687d3c912e2ce5738b51c8">
2302 <source>Blacklist video</source>
2303 <target>Dodaj film na czarnÄ… listÄ™</target>
2304 <context-group name="null">
2305 <context context-type="linenumber">3</context>
2306 </context-group>
2307 </trans-unit>
2182 <trans-unit id="9ed65ae88f6c982bc44d6fed2796e55f47dbf304"> 2308 <trans-unit id="9ed65ae88f6c982bc44d6fed2796e55f47dbf304">
2183 <source> 2309 <source>
2184 The video is being transcoded, it may not work properly. 2310 The video is being transcoded, it may not work properly.
@@ -2295,13 +2421,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2295 <context context-type="linenumber">134</context> 2421 <context context-type="linenumber">134</context>
2296 </context-group> 2422 </context-group>
2297 </trans-unit> 2423 </trans-unit>
2298 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
2299 <source>Go to the account page</source>
2300 <target>Przejdź na stronę konta</target>
2301 <context-group name="null">
2302 <context context-type="linenumber">133</context>
2303 </context-group>
2304 </trans-unit>
2305 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 2424 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
2306 <source>Show more</source> 2425 <source>Show more</source>
2307 <target>Pokaż więcej</target> 2426 <target>Pokaż więcej</target>
@@ -2370,24 +2489,18 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2370 <context context-type="linenumber">3</context> 2489 <context context-type="linenumber">3</context>
2371 </context-group> 2490 </context-group>
2372 </trans-unit> 2491 </trans-unit>
2373 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
2374 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
2375 <context-group name="null">
2376 <context context-type="linenumber">8</context>
2377 </context-group>
2378 </trans-unit>
2379 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 2492 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
2380 <source>No comments.</source> 2493 <source>No comments.</source>
2381 <target>Brak komentarzy.</target> 2494 <target>Brak komentarzy.</target>
2382 <context-group name="null"> 2495 <context-group name="null">
2383 <context context-type="linenumber">18</context> 2496 <context context-type="linenumber">17</context>
2384 </context-group> 2497 </context-group>
2385 </trans-unit> 2498 </trans-unit>
2386 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 2499 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
2387 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 2500 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
2388 <target>Zobacz wszystkie <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> odpowiedzi</target> 2501 <target>Zobacz wszystkie <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> odpowiedzi</target>
2389 <context-group name="null"> 2502 <context-group name="null">
2390 <context context-type="linenumber">55</context> 2503 <context context-type="linenumber">54</context>
2391 </context-group> 2504 </context-group>
2392 </trans-unit> 2505 </trans-unit>
2393 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 2506 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -2398,7 +2511,7 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2398 Komentarze są wyłączone. 2511 Komentarze są wyłączone.
2399 </target> 2512 </target>
2400 <context-group name="null"> 2513 <context-group name="null">
2401 <context context-type="linenumber">64</context> 2514 <context context-type="linenumber">63</context>
2402 </context-group> 2515 </context-group>
2403 </trans-unit> 2516 </trans-unit>
2404 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 2517 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -2468,37 +2581,37 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2468 <context context-type="linenumber">1</context> 2581 <context context-type="linenumber">1</context>
2469 </context-group> 2582 </context-group>
2470 </trans-unit> 2583 </trans-unit>
2471 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed"> 2584 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6">
2472 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source> 2585 <source>240p</source>
2473 <target>Możesz ustawić niestandardowe <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target> 2586 <target>240p</target>
2474 <context-group name="null"> 2587 <context-group name="null">
2475 <context context-type="linenumber">1</context> 2588 <context context-type="linenumber">1</context>
2476 </context-group> 2589 </context-group>
2477 </trans-unit> 2590 </trans-unit>
2478 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e"> 2591 <trans-unit id="c8cfad7e7a16c57c42535331b65cb7de40d8402e">
2479 <source>This could lead to security issues or bugs if you do not understand it. </source> 2592 <source>360p</source>
2480 <target>Może to spowodować błędy lub problemy z bezpieczeństwem, jeżeli tego nie rozumiesz. </target> 2593 <target>360p</target>
2481 <context-group name="null"> 2594 <context-group name="null">
2482 <context context-type="linenumber">1</context> 2595 <context context-type="linenumber">1</context>
2483 </context-group> 2596 </context-group>
2484 </trans-unit> 2597 </trans-unit>
2485 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0"> 2598 <trans-unit id="48f0af5a0d0bea4e84b27eaf41b19c85a531c2a5">
2486 <source>Are you sure you want to update the configuration?</source> 2599 <source>480p</source>
2487 <target>Czy na pewno chcesz zaktualizować konfigurację?</target> 2600 <target>480p</target>
2488 <context-group name="null"> 2601 <context-group name="null">
2489 <context context-type="linenumber">1</context> 2602 <context context-type="linenumber">1</context>
2490 </context-group> 2603 </context-group>
2491 </trans-unit> 2604 </trans-unit>
2492 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119"> 2605 <trans-unit id="6f06138daf6363746ff26bfc0cb2491c09cdfdf2">
2493 <source>Please type</source> 2606 <source>720p</source>
2494 <target>Wprowadź</target> 2607 <target>720p</target>
2495 <context-group name="null"> 2608 <context-group name="null">
2496 <context context-type="linenumber">1</context> 2609 <context context-type="linenumber">1</context>
2497 </context-group> 2610 </context-group>
2498 </trans-unit> 2611 </trans-unit>
2499 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d"> 2612 <trans-unit id="65c94f9beb6fe957808c40060da280cc7ace7ab9">
2500 <source>to confirm.</source> 2613 <source>1080p</source>
2501 <target>aby potwierdzić.</target> 2614 <target>1080p</target>
2502 <context-group name="null"> 2615 <context-group name="null">
2503 <context context-type="linenumber">1</context> 2616 <context context-type="linenumber">1</context>
2504 </context-group> 2617 </context-group>
@@ -2524,6 +2637,69 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2524 <context context-type="linenumber">1</context> 2637 <context context-type="linenumber">1</context>
2525 </context-group> 2638 </context-group>
2526 </trans-unit> 2639 </trans-unit>
2640 <trans-unit id="54adc67482fdaa0d361a2992bc91e064dc61cc9a">
2641 <source>100MB</source>
2642 <target>100MB</target>
2643 <context-group name="null">
2644 <context context-type="linenumber">1</context>
2645 </context-group>
2646 </trans-unit>
2647 <trans-unit id="cd34ef1f476d5422f49f6ed429f61fc1cfcb1174">
2648 <source>500MB</source>
2649 <target>500MB</target>
2650 <context-group name="null">
2651 <context context-type="linenumber">1</context>
2652 </context-group>
2653 </trans-unit>
2654 <trans-unit id="4a47b4beea31cac6e5970b6bc522902f545acc8b">
2655 <source>1GB</source>
2656 <target>1GB</target>
2657 <context-group name="null">
2658 <context context-type="linenumber">1</context>
2659 </context-group>
2660 </trans-unit>
2661 <trans-unit id="b26d0cac75638623098ab7e06e16b096d1f55cc8">
2662 <source>5GB</source>
2663 <target>5GB</target>
2664 <context-group name="null">
2665 <context context-type="linenumber">1</context>
2666 </context-group>
2667 </trans-unit>
2668 <trans-unit id="f9fc4e7ec6743cb6f69bea2d0859a655ed44ffae">
2669 <source>20GB</source>
2670 <target>20GB</target>
2671 <context-group name="null">
2672 <context context-type="linenumber">1</context>
2673 </context-group>
2674 </trans-unit>
2675 <trans-unit id="a56e3f92fe16d97ee4f05051ea61c466ecb51d5e">
2676 <source>50GB</source>
2677 <target>50GB</target>
2678 <context-group name="null">
2679 <context context-type="linenumber">1</context>
2680 </context-group>
2681 </trans-unit>
2682 <trans-unit id="31dcc0c63f6234ace8caa84ae1abc33d4022122d">
2683 <source>10MB</source>
2684 <target>10MB</target>
2685 <context-group name="null">
2686 <context context-type="linenumber">1</context>
2687 </context-group>
2688 </trans-unit>
2689 <trans-unit id="f2f968b6f2199b919f567702c6f23b43e5ea71af">
2690 <source>50MB</source>
2691 <target>50MB</target>
2692 <context-group name="null">
2693 <context context-type="linenumber">1</context>
2694 </context-group>
2695 </trans-unit>
2696 <trans-unit id="c31575424fe1b2a57064413f3eda7ce657c46c8a">
2697 <source>2GB</source>
2698 <target>2GB</target>
2699 <context-group name="null">
2700 <context context-type="linenumber">1</context>
2701 </context-group>
2702 </trans-unit>
2527 <trans-unit id="fc5731a28a99b25c62d43333ceebb250d60aff84"> 2703 <trans-unit id="fc5731a28a99b25c62d43333ceebb250d60aff84">
2528 <source><x id="INTERPOLATION" equiv-text="{{host}}"/> is not valid</source> 2704 <source><x id="INTERPOLATION" equiv-text="{{host}}"/> is not valid</source>
2529 <target><x id="INTERPOLATION" equiv-text="{{host}}"/> nie jest prawidowy</target> 2705 <target><x id="INTERPOLATION" equiv-text="{{host}}"/> nie jest prawidowy</target>
@@ -2629,13 +2805,6 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
2629 <context context-type="linenumber">1</context> 2805 <context context-type="linenumber">1</context>
2630 </context-group> 2806 </context-group>
2631 </trans-unit> 2807 </trans-unit>
2632 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
2633 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
2634 <target>Usunięto użytkownika <x id="INTERPOLATION" equiv-text="{{username}}"/>.</target>
2635 <context-group name="null">
2636 <context context-type="linenumber">1</context>
2637 </context-group>
2638 </trans-unit>
2639 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc"> 2808 <trans-unit id="19508af0dfbc685cbf10cf02061bb5a0f423b6fc">
2640 <source>Password updated.</source> 2809 <source>Password updated.</source>
2641 <target>Zmieniono hasło.</target> 2810 <target>Zmieniono hasło.</target>
@@ -3798,6 +3967,13 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
3798 <context context-type="linenumber">1</context> 3967 <context context-type="linenumber">1</context>
3799 </context-group> 3968 </context-group>
3800 </trans-unit> 3969 </trans-unit>
3970 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3971 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3972 <target>Usunięto użytkownika <x id="INTERPOLATION" equiv-text="{{username}}"/>.</target>
3973 <context-group name="null">
3974 <context context-type="linenumber">1</context>
3975 </context-group>
3976 </trans-unit>
3801 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 3977 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
3802 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 3978 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
3803 <target>Zbyt duże żądanie na ten serwer. Skontaktuj się z administratorem, jeżeli chcesz zwiększyć ten limit.</target> 3979 <target>Zbyt duże żądanie na ten serwer. Skontaktuj się z administratorem, jeżeli chcesz zwiększyć ten limit.</target>
@@ -3974,6 +4150,7 @@ Jeżeli umieścisz film na ten kanał, pole informujące o możliwości wsparcia
3974 </trans-unit> 4150 </trans-unit>
3975 <trans-unit id="1b157e15c434469d91e56d027b78bf69c9983165"> 4151 <trans-unit id="1b157e15c434469d91e56d027b78bf69c9983165">
3976 <source>Videos from your subscriptions</source> 4152 <source>Videos from your subscriptions</source>
4153 <target>Filmy z twoich subskrypcji</target>
3977 <context-group name="null"> 4154 <context-group name="null">
3978 <context context-type="linenumber">1</context> 4155 <context context-type="linenumber">1</context>
3979 </context-group> 4156 </context-group>
diff --git a/client/src/locale/target/angular_pt_BR.xml b/client/src/locale/target/angular_pt_BR.xml
index b62cbe7a4..390fc0f9a 100644
--- a/client/src/locale/target/angular_pt_BR.xml
+++ b/client/src/locale/target/angular_pt_BR.xml
@@ -217,7 +217,7 @@
217 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 217 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
218 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizações</target> 218 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visualizações</target>
219 <context-group name="null"> 219 <context-group name="null">
220 <context context-type="linenumber">13</context> 220 <context context-type="linenumber">16</context>
221 </context-group> 221 </context-group>
222 </trans-unit> 222 </trans-unit>
223 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 223 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -231,7 +231,7 @@
231 <source>Edit</source> 231 <source>Edit</source>
232 <target>Editar</target> 232 <target>Editar</target>
233 <context-group name="null"> 233 <context-group name="null">
234 <context context-type="linenumber">5</context> 234 <context context-type="linenumber">1</context>
235 </context-group> 235 </context-group>
236 </trans-unit> 236 </trans-unit>
237 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 237 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -259,7 +259,7 @@
259 <source>Video quota</source> 259 <source>Video quota</source>
260 <target>Cota de vídeo</target> 260 <target>Cota de vídeo</target>
261 <context-group name="null"> 261 <context-group name="null">
262 <context context-type="linenumber">19</context> 262 <context context-type="linenumber">42</context>
263 </context-group> 263 </context-group>
264 </trans-unit> 264 </trans-unit>
265 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 265 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -273,6 +273,38 @@
273 <context context-type="linenumber">14</context> 273 <context context-type="linenumber">14</context>
274 </context-group> 274 </context-group>
275 </trans-unit> 275 </trans-unit>
276 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
277 <source>Ban</source>
278 <target>Banir</target>
279 <context-group name="null">
280 <context context-type="linenumber">3</context>
281 </context-group>
282 </trans-unit>
283 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
284 <source>Reason...</source>
285 <target>Motivo...</target>
286 <context-group name="null">
287 <context context-type="linenumber">11</context>
288 </context-group>
289 </trans-unit>
290 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
291 <source>
292 A banned user will no longer be able to login.
293 </source>
294 <target>
295 Um usuário banido não conseguirá mais fazer login.
296 </target>
297 <context-group name="null">
298 <context context-type="linenumber">17</context>
299 </context-group>
300 </trans-unit>
301 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
302 <source>Ban this user</source>
303 <target>Banir este usuário</target>
304 <context-group name="null">
305 <context context-type="linenumber">25</context>
306 </context-group>
307 </trans-unit>
276 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 308 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
277 <source> 309 <source>
278 Login 310 Login
@@ -479,13 +511,6 @@
479 <context context-type="linenumber">6</context> 511 <context context-type="linenumber">6</context>
480 </context-group> 512 </context-group>
481 </trans-unit> 513 </trans-unit>
482 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
483 <source>Filters</source>
484 <target>Filtros</target>
485 <context-group name="null">
486 <context context-type="linenumber">16</context>
487 </context-group>
488 </trans-unit>
489 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 514 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
490 <source> 515 <source>
491 No results found 516 No results found
@@ -494,21 +519,21 @@
494 Nenhum resultado encontrado 519 Nenhum resultado encontrado
495 </target> 520 </target>
496 <context-group name="null"> 521 <context-group name="null">
497 <context context-type="linenumber">25</context> 522 <context context-type="linenumber">28</context>
498 </context-group> 523 </context-group>
499 </trans-unit> 524 </trans-unit>
500 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 525 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
501 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 526 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
502 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> inscritos</target> 527 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> inscritos</target>
503 <context-group name="null"> 528 <context-group name="null">
504 <context context-type="linenumber">41</context> 529 <context context-type="linenumber">44</context>
505 </context-group> 530 </context-group>
506 </trans-unit> 531 </trans-unit>
507 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 532 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
508 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 533 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
509 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> visualizações</target> 534 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> visualizações</target>
510 <context-group name="null"> 535 <context-group name="null">
511 <context context-type="linenumber">52</context> 536 <context context-type="linenumber">55</context>
512 </context-group> 537 </context-group>
513 </trans-unit> 538 </trans-unit>
514 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 539 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -741,7 +766,7 @@
741 <source>No results.</source> 766 <source>No results.</source>
742 <target>Nenhum resultado.</target> 767 <target>Nenhum resultado.</target>
743 <context-group name="null"> 768 <context-group name="null">
744 <context context-type="linenumber">7</context> 769 <context context-type="linenumber">17</context>
745 </context-group> 770 </context-group>
746 </trans-unit> 771 </trans-unit>
747 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 772 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -778,7 +803,7 @@
778 <source>Instance</source> 803 <source>Instance</source>
779 <target>Instância</target> 804 <target>Instância</target>
780 <context-group name="null"> 805 <context-group name="null">
781 <context context-type="linenumber">8</context> 806 <context context-type="linenumber">12</context>
782 </context-group> 807 </context-group>
783 </trans-unit> 808 </trans-unit>
784 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 809 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -1123,14 +1148,14 @@
1123 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1148 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1124 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> inscritos</target> 1149 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> inscritos</target>
1125 <context-group name="null"> 1150 <context-group name="null">
1126 <context context-type="linenumber">12</context> 1151 <context context-type="linenumber">24</context>
1127 </context-group> 1152 </context-group>
1128 </trans-unit> 1153 </trans-unit>
1129 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1154 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1130 <source>Video channels</source> 1155 <source>Video channels</source>
1131 <target>Canais de vídeo</target> 1156 <target>Canais de vídeo</target>
1132 <context-group name="null"> 1157 <context-group name="null">
1133 <context context-type="linenumber">19</context> 1158 <context context-type="linenumber">31</context>
1134 </context-group> 1159 </context-group>
1135 </trans-unit> 1160 </trans-unit>
1136 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1161 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1273,13 +1298,6 @@
1273 <context context-type="linenumber">42</context> 1298 <context context-type="linenumber">42</context>
1274 </context-group> 1299 </context-group>
1275 </trans-unit> 1300 </trans-unit>
1276 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1277 <source>Video import with HTTP enabled</source>
1278 <target>Importação de vídeo com HTTP habilitada</target>
1279 <context-group name="null">
1280 <context context-type="linenumber">115</context>
1281 </context-group>
1282 </trans-unit>
1283 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1301 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1284 <source>Video import with a torrent file or a magnet URI enabled</source> 1302 <source>Video import with a torrent file or a magnet URI enabled</source>
1285 <target>Importação de vídeo com um arquivo torrent ou URI magnética habilitada</target> 1303 <target>Importação de vídeo com um arquivo torrent ou URI magnética habilitada</target>
@@ -1614,14 +1632,14 @@
1614 <source>Score</source> 1632 <source>Score</source>
1615 <target>Pontuação</target> 1633 <target>Pontuação</target>
1616 <context-group name="null"> 1634 <context-group name="null">
1617 <context context-type="linenumber">8</context> 1635 <context context-type="linenumber">17</context>
1618 </context-group> 1636 </context-group>
1619 </trans-unit> 1637 </trans-unit>
1620 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1638 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1621 <source>Host</source> 1639 <source>Host</source>
1622 <target>Host</target> 1640 <target>Host</target>
1623 <context-group name="null"> 1641 <context-group name="null">
1624 <context context-type="linenumber">8</context> 1642 <context context-type="linenumber">19</context>
1625 </context-group> 1643 </context-group>
1626 </trans-unit> 1644 </trans-unit>
1627 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1645 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1726,7 +1744,7 @@
1726 <source>Role</source> 1744 <source>Role</source>
1727 <target>Papel</target> 1745 <target>Papel</target>
1728 <context-group name="null"> 1746 <context-group name="null">
1729 <context context-type="linenumber">20</context> 1747 <context context-type="linenumber">43</context>
1730 </context-group> 1748 </context-group>
1731 </trans-unit> 1749 </trans-unit>
1732 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1750 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1749,38 +1767,6 @@
1749 <context context-type="linenumber">72</context> 1767 <context context-type="linenumber">72</context>
1750 </context-group> 1768 </context-group>
1751 </trans-unit> 1769 </trans-unit>
1752 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1753 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1754 <target>Banir <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></target>
1755 <context-group name="null">
1756 <context context-type="linenumber">3</context>
1757 </context-group>
1758 </trans-unit>
1759 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1760 <source>Reason...</source>
1761 <target>Motivo...</target>
1762 <context-group name="null">
1763 <context context-type="linenumber">11</context>
1764 </context-group>
1765 </trans-unit>
1766 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1767 <source>
1768 A banned user will no longer be able to login.
1769 </source>
1770 <target>
1771 Um usuário banido não conseguirá mais fazer login.
1772 </target>
1773 <context-group name="null">
1774 <context context-type="linenumber">17</context>
1775 </context-group>
1776 </trans-unit>
1777 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1778 <source>Ban this user</source>
1779 <target>Banir este usuário</target>
1780 <context-group name="null">
1781 <context context-type="linenumber">25</context>
1782 </context-group>
1783 </trans-unit>
1784 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1770 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1785 <source>Users list</source> 1771 <source>Users list</source>
1786 <target>Lista de usuários</target> 1772 <target>Lista de usuários</target>
@@ -1792,21 +1778,21 @@
1792 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1778 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1793 <target>Nome de usuário <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1779 <target>Nome de usuário <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1794 <context-group name="null"> 1780 <context-group name="null">
1795 <context context-type="linenumber">17</context> 1781 <context context-type="linenumber">40</context>
1796 </context-group> 1782 </context-group>
1797 </trans-unit> 1783 </trans-unit>
1798 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1784 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1799 <source>Actions</source> 1785 <source>Go to the account page</source>
1800 <target>Ações</target> 1786 <target>Ir para a página da conta</target>
1801 <context-group name="null"> 1787 <context-group name="null">
1802 <context context-type="linenumber">33</context> 1788 <context context-type="linenumber">133</context>
1803 </context-group> 1789 </context-group>
1804 </trans-unit> 1790 </trans-unit>
1805 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1791 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1806 <source>Ban reason:</source> 1792 <source>Ban reason:</source>
1807 <target>Motivo do banimento:</target> 1793 <target>Motivo do banimento:</target>
1808 <context-group name="null"> 1794 <context-group name="null">
1809 <context context-type="linenumber">51</context> 1795 <context context-type="linenumber">82</context>
1810 </context-group> 1796 </context-group>
1811 </trans-unit> 1797 </trans-unit>
1812 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1798 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1869,6 +1855,13 @@
1869 <context context-type="linenumber">33</context> 1855 <context context-type="linenumber">33</context>
1870 </context-group> 1856 </context-group>
1871 </trans-unit> 1857 </trans-unit>
1858 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1859 <source>Actions</source>
1860 <target>Ações</target>
1861 <context-group name="null">
1862 <context context-type="linenumber">33</context>
1863 </context-group>
1864 </trans-unit>
1872 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 1865 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1873 <source>Reason:</source> 1866 <source>Reason:</source>
1874 <target>Motivo:</target> 1867 <target>Motivo:</target>
@@ -1978,7 +1971,7 @@
1978 <source>Ownership changes</source> 1971 <source>Ownership changes</source>
1979 <target>Mudanças de dono</target> 1972 <target>Mudanças de dono</target>
1980 <context-group name="null"> 1973 <context-group name="null">
1981 <context context-type="linenumber">22</context> 1974 <context context-type="linenumber">33</context>
1982 </context-group> 1975 </context-group>
1983 </trans-unit> 1976 </trans-unit>
1984 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 1977 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2225,14 +2218,14 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
2225 <source>Automatically plays video</source> 2218 <source>Automatically plays video</source>
2226 <target>Reproduzir vídeo automaticamente</target> 2219 <target>Reproduzir vídeo automaticamente</target>
2227 <context-group name="null"> 2220 <context-group name="null">
2228 <context context-type="linenumber">20</context> 2221 <context context-type="linenumber">25</context>
2229 </context-group> 2222 </context-group>
2230 </trans-unit> 2223 </trans-unit>
2231 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2224 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2232 <source>Save</source> 2225 <source>Save</source>
2233 <target>Salvar</target> 2226 <target>Salvar</target>
2234 <context-group name="null"> 2227 <context-group name="null">
2235 <context context-type="linenumber">23</context> 2228 <context context-type="linenumber">28</context>
2236 </context-group> 2229 </context-group>
2237 </trans-unit> 2230 </trans-unit>
2238 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2231 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2936,13 +2929,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
2936 <context context-type="linenumber">134</context> 2929 <context context-type="linenumber">134</context>
2937 </context-group> 2930 </context-group>
2938 </trans-unit> 2931 </trans-unit>
2939 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
2940 <source>Go to the account page</source>
2941 <target>Ir para a página da conta</target>
2942 <context-group name="null">
2943 <context context-type="linenumber">133</context>
2944 </context-group>
2945 </trans-unit>
2946 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 2932 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
2947 <source>Show more</source> 2933 <source>Show more</source>
2948 <target>Mostrar mais</target> 2934 <target>Mostrar mais</target>
@@ -3022,25 +3008,18 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
3022 <context context-type="linenumber">3</context> 3008 <context context-type="linenumber">3</context>
3023 </context-group> 3009 </context-group>
3024 </trans-unit> 3010 </trans-unit>
3025 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
3026 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
3027 <target>Você pode comentar na página de sua instância na qual esse vídeo está federado com outra conta do PeerTube, ou por meio de qualquer instância fediverse com capacidade para ActivityPub. Por exemplo, com Mastodon ou Pleroma, você pode digitar na caixa de pesquisa &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; e encontrar o vídeo. Capacidades de comentar diretamente estão sendo trabalhadas em &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/470'&gt;#470&lt;/a&gt;.</target>
3028 <context-group name="null">
3029 <context context-type="linenumber">8</context>
3030 </context-group>
3031 </trans-unit>
3032 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 3011 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
3033 <source>No comments.</source> 3012 <source>No comments.</source>
3034 <target>Nenhum comentário.</target> 3013 <target>Nenhum comentário.</target>
3035 <context-group name="null"> 3014 <context-group name="null">
3036 <context context-type="linenumber">18</context> 3015 <context context-type="linenumber">17</context>
3037 </context-group> 3016 </context-group>
3038 </trans-unit> 3017 </trans-unit>
3039 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 3018 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
3040 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 3019 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
3041 <target>Ver todas as <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> respostas</target> 3020 <target>Ver todas as <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> respostas</target>
3042 <context-group name="null"> 3021 <context-group name="null">
3043 <context context-type="linenumber">55</context> 3022 <context context-type="linenumber">54</context>
3044 </context-group> 3023 </context-group>
3045 </trans-unit> 3024 </trans-unit>
3046 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 3025 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -3051,7 +3030,7 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
3051 Comentários estão desabilitados. 3030 Comentários estão desabilitados.
3052 </target> 3031 </target>
3053 <context-group name="null"> 3032 <context-group name="null">
3054 <context context-type="linenumber">64</context> 3033 <context context-type="linenumber">63</context>
3055 </context-group> 3034 </context-group>
3056 </trans-unit> 3035 </trans-unit>
3057 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 3036 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -3121,41 +3100,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
3121 <context context-type="linenumber">1</context> 3100 <context context-type="linenumber">1</context>
3122 </context-group> 3101 </context-group>
3123 </trans-unit> 3102 </trans-unit>
3124 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
3125 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
3126 <target>Você definiu <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/> personalizado. </target>
3127 <context-group name="null">
3128 <context context-type="linenumber">1</context>
3129 </context-group>
3130 </trans-unit>
3131 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
3132 <source>This could lead to security issues or bugs if you do not understand it. </source>
3133 <target>Isso pode levar a problemas de segurança ou bugs se você não entender.</target>
3134 <context-group name="null">
3135 <context context-type="linenumber">1</context>
3136 </context-group>
3137 </trans-unit>
3138 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
3139 <source>Are you sure you want to update the configuration?</source>
3140 <target>Tem certeza de que deseja atualizar a configuração?</target>
3141 <context-group name="null">
3142 <context context-type="linenumber">1</context>
3143 </context-group>
3144 </trans-unit>
3145 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
3146 <source>Please type</source>
3147 <target>Por favor, digite</target>
3148 <context-group name="null">
3149 <context context-type="linenumber">1</context>
3150 </context-group>
3151 </trans-unit>
3152 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
3153 <source>to confirm.</source>
3154 <target>para confirmar.</target>
3155 <context-group name="null">
3156 <context context-type="linenumber">1</context>
3157 </context-group>
3158 </trans-unit>
3159 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 3103 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
3160 <source>Success</source> 3104 <source>Success</source>
3161 <target>Sucesso</target> 3105 <target>Sucesso</target>
@@ -3317,20 +3261,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
3317 <context context-type="linenumber">1</context> 3261 <context context-type="linenumber">1</context>
3318 </context-group> 3262 </context-group>
3319 </trans-unit> 3263 </trans-unit>
3320 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
3321 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
3322 <target>Usuário <x id="INTERPOLATION" equiv-text="{{username}}"/> banido.</target>
3323 <context-group name="null">
3324 <context context-type="linenumber">1</context>
3325 </context-group>
3326 </trans-unit>
3327 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3328 <source>Ban</source>
3329 <target>Banir</target>
3330 <context-group name="null">
3331 <context context-type="linenumber">1</context>
3332 </context-group>
3333 </trans-unit>
3334 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 3264 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3335 <source>Unban</source> 3265 <source>Unban</source>
3336 <target>Desbanir</target> 3266 <target>Desbanir</target>
@@ -3345,20 +3275,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
3345 <context context-type="linenumber">1</context> 3275 <context context-type="linenumber">1</context>
3346 </context-group> 3276 </context-group>
3347 </trans-unit> 3277 </trans-unit>
3348 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
3349 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
3350 <target>Você realmente quer desbanir <x id="INTERPOLATION" equiv-text="{{username}}"/>?</target>
3351 <context-group name="null">
3352 <context context-type="linenumber">1</context>
3353 </context-group>
3354 </trans-unit>
3355 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
3356 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
3357 <target>Usuário <x id="INTERPOLATION" equiv-text="{{username}}"/> foi desbanido.</target>
3358 <context-group name="null">
3359 <context context-type="linenumber">1</context>
3360 </context-group>
3361 </trans-unit>
3362 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 3278 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
3363 <source>You cannot delete root.</source> 3279 <source>You cannot delete root.</source>
3364 <target>Você não pode excluir root.</target> 3280 <target>Você não pode excluir root.</target>
@@ -3366,13 +3282,6 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
3366 <context context-type="linenumber">1</context> 3282 <context context-type="linenumber">1</context>
3367 </context-group> 3283 </context-group>
3368 </trans-unit> 3284 </trans-unit>
3369 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3370 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3371 <target>Usuário <x id="INTERPOLATION" equiv-text="{{username}}"/> excluído.</target>
3372 <context-group name="null">
3373 <context context-type="linenumber">1</context>
3374 </context-group>
3375 </trans-unit>
3376 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e"> 3285 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3377 <source>Ownership accepted</source> 3286 <source>Ownership accepted</source>
3378 <target>Propriedade aceita</target> 3287 <target>Propriedade aceita</target>
@@ -4747,6 +4656,34 @@ Quando você enviar um vídeo neste canal, o campo de apoio a vídeo será preen
4747 <context context-type="linenumber">1</context> 4656 <context context-type="linenumber">1</context>
4748 </context-group> 4657 </context-group>
4749 </trans-unit> 4658 </trans-unit>
4659 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
4660 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
4661 <target>Usuário <x id="INTERPOLATION" equiv-text="{{username}}"/> banido.</target>
4662 <context-group name="null">
4663 <context context-type="linenumber">1</context>
4664 </context-group>
4665 </trans-unit>
4666 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
4667 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
4668 <target>Você realmente quer desbanir <x id="INTERPOLATION" equiv-text="{{username}}"/>?</target>
4669 <context-group name="null">
4670 <context context-type="linenumber">1</context>
4671 </context-group>
4672 </trans-unit>
4673 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
4674 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
4675 <target>Usuário <x id="INTERPOLATION" equiv-text="{{username}}"/> foi desbanido.</target>
4676 <context-group name="null">
4677 <context context-type="linenumber">1</context>
4678 </context-group>
4679 </trans-unit>
4680 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
4681 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
4682 <target>Usuário <x id="INTERPOLATION" equiv-text="{{username}}"/> excluído.</target>
4683 <context-group name="null">
4684 <context context-type="linenumber">1</context>
4685 </context-group>
4686 </trans-unit>
4750 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 4687 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
4751 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 4688 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
4752 <target>A solicitação é grande demais para o servidor. Entre em contato com seu administrador se quiser aumentar o tamanho do limite.</target> 4689 <target>A solicitação é grande demais para o servidor. Entre em contato com seu administrador se quiser aumentar o tamanho do limite.</target>
diff --git a/client/src/locale/target/angular_ru_RU.xml b/client/src/locale/target/angular_ru_RU.xml
index accbbdd71..cc525f605 100644
--- a/client/src/locale/target/angular_ru_RU.xml
+++ b/client/src/locale/target/angular_ru_RU.xml
@@ -38,6 +38,20 @@
38 <context context-type="linenumber">27</context> 38 <context context-type="linenumber">27</context>
39 </context-group> 39 </context-group>
40 </trans-unit> 40 </trans-unit>
41 <trans-unit id="ngb.datepicker.select-month">
42 <source>Select month</source>
43 <target>Выберите меÑÑц</target>
44 <context-group name="null">
45 <context context-type="linenumber">7</context>
46 </context-group>
47 </trans-unit>
48 <trans-unit id="ngb.datepicker.select-year">
49 <source>Select year</source>
50 <target>Выберите год</target>
51 <context-group name="null">
52 <context context-type="linenumber">16</context>
53 </context-group>
54 </trans-unit>
41 <trans-unit id="ngb.pagination.first"> 55 <trans-unit id="ngb.pagination.first">
42 <source>««</source> 56 <source>««</source>
43 <target>««</target> 57 <target>««</target>
@@ -101,6 +115,13 @@
101 <context context-type="linenumber">6</context> 115 <context context-type="linenumber">6</context>
102 </context-group> 116 </context-group>
103 </trans-unit> 117 </trans-unit>
118 <trans-unit id="ngb.timepicker.increment-hours">
119 <source>Increment hours</source>
120 <target>Увеличение чаÑob</target>
121 <context-group name="null">
122 <context context-type="linenumber">9</context>
123 </context-group>
124 </trans-unit>
104 <trans-unit id="ngb.timepicker.HH"> 125 <trans-unit id="ngb.timepicker.HH">
105 <source>HH</source> 126 <source>HH</source>
106 <target>HH</target> 127 <target>HH</target>
@@ -115,6 +136,20 @@
115 <context context-type="linenumber">14</context> 136 <context context-type="linenumber">14</context>
116 </context-group> 137 </context-group>
117 </trans-unit> 138 </trans-unit>
139 <trans-unit id="ngb.timepicker.decrement-hours">
140 <source>Decrement hours</source>
141 <target>Сокращение чаÑов</target>
142 <context-group name="null">
143 <context context-type="linenumber">19</context>
144 </context-group>
145 </trans-unit>
146 <trans-unit id="ngb.timepicker.increment-minutes">
147 <source>Increment minutes</source>
148 <target>Увеличение минут</target>
149 <context-group name="null">
150 <context context-type="linenumber">28</context>
151 </context-group>
152 </trans-unit>
118 <trans-unit id="ngb.timepicker.MM"> 153 <trans-unit id="ngb.timepicker.MM">
119 <source>MM</source> 154 <source>MM</source>
120 <target>MM</target> 155 <target>MM</target>
@@ -129,6 +164,20 @@
129 <context context-type="linenumber">33</context> 164 <context context-type="linenumber">33</context>
130 </context-group> 165 </context-group>
131 </trans-unit> 166 </trans-unit>
167 <trans-unit id="ngb.timepicker.decrement-minutes">
168 <source>Decrement minutes</source>
169 <target>Сокращение минут</target>
170 <context-group name="null">
171 <context context-type="linenumber">38</context>
172 </context-group>
173 </trans-unit>
174 <trans-unit id="ngb.timepicker.increment-seconds">
175 <source>Increment seconds</source>
176 <target>Увеличение Ñекунд</target>
177 <context-group name="null">
178 <context context-type="linenumber">47</context>
179 </context-group>
180 </trans-unit>
132 <trans-unit id="ngb.timepicker.SS"> 181 <trans-unit id="ngb.timepicker.SS">
133 <source>SS</source> 182 <source>SS</source>
134 <target>SS</target> 183 <target>SS</target>
@@ -175,7 +224,7 @@
175 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 224 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
176 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> проÑмотры</target> 225 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> проÑмотры</target>
177 <context-group name="null"> 226 <context-group name="null">
178 <context context-type="linenumber">13</context> 227 <context context-type="linenumber">16</context>
179 </context-group> 228 </context-group>
180 </trans-unit> 229 </trans-unit>
181 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 230 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -189,7 +238,7 @@
189 <source>Edit</source> 238 <source>Edit</source>
190 <target>Редактировать</target> 239 <target>Редактировать</target>
191 <context-group name="null"> 240 <context-group name="null">
192 <context context-type="linenumber">5</context> 241 <context context-type="linenumber">1</context>
193 </context-group> 242 </context-group>
194 </trans-unit> 243 </trans-unit>
195 <trans-unit id="9c71feb04c2beab559f79c41c6127815fb9c1a6f"> 244 <trans-unit id="9c71feb04c2beab559f79c41c6127815fb9c1a6f">
@@ -203,7 +252,7 @@
203 <source>Video quota</source> 252 <source>Video quota</source>
204 <target>Квота видео</target> 253 <target>Квота видео</target>
205 <context-group name="null"> 254 <context-group name="null">
206 <context context-type="linenumber">19</context> 255 <context context-type="linenumber">42</context>
207 </context-group> 256 </context-group>
208 </trans-unit> 257 </trans-unit>
209 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 258 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -217,6 +266,31 @@
217 <context context-type="linenumber">14</context> 266 <context context-type="linenumber">14</context>
218 </context-group> 267 </context-group>
219 </trans-unit> 268 </trans-unit>
269 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
270 <source>Reason...</source>
271 <target>Причина...</target>
272 <context-group name="null">
273 <context context-type="linenumber">11</context>
274 </context-group>
275 </trans-unit>
276 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
277 <source>
278 A banned user will no longer be able to login.
279 </source>
280 <target>
281 Забаненый пользователь не Ñможет больше подÑоединитьÑÑ.
282 </target>
283 <context-group name="null">
284 <context context-type="linenumber">17</context>
285 </context-group>
286 </trans-unit>
287 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
288 <source>Ban this user</source>
289 <target>Отправить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² бан</target>
290 <context-group name="null">
291 <context context-type="linenumber">25</context>
292 </context-group>
293 </trans-unit>
220 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 294 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
221 <source> 295 <source>
222 Login 296 Login
@@ -423,13 +497,6 @@
423 <context context-type="linenumber">6</context> 497 <context context-type="linenumber">6</context>
424 </context-group> 498 </context-group>
425 </trans-unit> 499 </trans-unit>
426 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
427 <source>Filters</source>
428 <target>Критерии</target>
429 <context-group name="null">
430 <context context-type="linenumber">16</context>
431 </context-group>
432 </trans-unit>
433 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 500 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
434 <source> 501 <source>
435 No results found 502 No results found
@@ -438,21 +505,21 @@
438 поиÑк не дал результатов 505 поиÑк не дал результатов
439 </target> 506 </target>
440 <context-group name="null"> 507 <context-group name="null">
441 <context context-type="linenumber">25</context> 508 <context context-type="linenumber">28</context>
442 </context-group> 509 </context-group>
443 </trans-unit> 510 </trans-unit>
444 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 511 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
445 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 512 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
446 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> подпиÑчики</target> 513 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> подпиÑчики</target>
447 <context-group name="null"> 514 <context-group name="null">
448 <context context-type="linenumber">41</context> 515 <context context-type="linenumber">44</context>
449 </context-group> 516 </context-group>
450 </trans-unit> 517 </trans-unit>
451 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 518 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
452 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 519 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
453 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> проÑмотры</target> 520 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> проÑмотры</target>
454 <context-group name="null"> 521 <context-group name="null">
455 <context context-type="linenumber">52</context> 522 <context context-type="linenumber">55</context>
456 </context-group> 523 </context-group>
457 </trans-unit> 524 </trans-unit>
458 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 525 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -685,7 +752,7 @@
685 <source>No results.</source> 752 <source>No results.</source>
686 <target>Ðет результатов</target> 753 <target>Ðет результатов</target>
687 <context-group name="null"> 754 <context-group name="null">
688 <context context-type="linenumber">7</context> 755 <context context-type="linenumber">17</context>
689 </context-group> 756 </context-group>
690 </trans-unit> 757 </trans-unit>
691 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 758 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -720,9 +787,9 @@
720 </trans-unit> 787 </trans-unit>
721 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b"> 788 <trans-unit id="ff78f059449d44322f627d0f66df07abe476962b">
722 <source>Instance</source> 789 <source>Instance</source>
723 <target>СеÑвеÑ</target> 790 <target>ИнÑтанциÑ</target>
724 <context-group name="null"> 791 <context-group name="null">
725 <context context-type="linenumber">8</context> 792 <context context-type="linenumber">12</context>
726 </context-group> 793 </context-group>
727 </trans-unit> 794 </trans-unit>
728 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 795 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -737,7 +804,7 @@
737 About <x id="INTERPOLATION" equiv-text="{{ instanceName }}"/> instance 804 About <x id="INTERPOLATION" equiv-text="{{ instanceName }}"/> instance
738</source> 805</source>
739 <target> 806 <target>
740 О <x id="INTERPOLATION" equiv-text="{{ instanceName }}"/> ÑеÑвеÑе 807 О <x id="INTERPOLATION" equiv-text="{{ instanceName }}"/> ИнÑÑанÑи
741</target> 808</target>
742 <context-group name="null"> 809 <context-group name="null">
743 <context context-type="linenumber">1</context> 810 <context context-type="linenumber">1</context>
@@ -897,7 +964,7 @@
897 </source> 964 </source>
898 <target> 965 <target>
899 Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ отправленного запроÑа, трекер возвращает ограниченное количеÑтво Ñлучайных партнеров. 966 Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ отправленного запроÑа, трекер возвращает ограниченное количеÑтво Ñлучайных партнеров.
900 Ðапример, при 1000 партнеров в swarm, и при том, что трекер возвращает только 20 партнеров на каждый запроÑ, нужно 50 запроÑов, чтоб узнать вÑех партнеров в swarm 967 Ðапример, при 1000 партнеров в рой, и при том, что трекер возвращает только 20 партнеров на каждый запроÑ, нужно 50 запроÑов, чтоб узнать вÑех партнеров в рой
901 </target> 968 </target>
902 <context-group name="null"> 969 <context-group name="null">
903 <context context-type="linenumber">38</context> 970 <context context-type="linenumber">38</context>
@@ -1067,14 +1134,14 @@
1067 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1134 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1068 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> подпиÑчики</target> 1135 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> подпиÑчики</target>
1069 <context-group name="null"> 1136 <context-group name="null">
1070 <context context-type="linenumber">12</context> 1137 <context context-type="linenumber">24</context>
1071 </context-group> 1138 </context-group>
1072 </trans-unit> 1139 </trans-unit>
1073 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1140 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1074 <source>Video channels</source> 1141 <source>Video channels</source>
1075 <target>Видеоканал</target> 1142 <target>Видеоканал</target>
1076 <context-group name="null"> 1143 <context-group name="null">
1077 <context context-type="linenumber">19</context> 1144 <context context-type="linenumber">31</context>
1078 </context-group> 1145 </context-group>
1079 </trans-unit> 1146 </trans-unit>
1080 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1147 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1217,13 +1284,6 @@
1217 <context context-type="linenumber">42</context> 1284 <context context-type="linenumber">42</context>
1218 </context-group> 1285 </context-group>
1219 </trans-unit> 1286 </trans-unit>
1220 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1221 <source>Video import with HTTP enabled</source>
1222 <target>Импорт видео Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ HTTP активирован</target>
1223 <context-group name="null">
1224 <context context-type="linenumber">115</context>
1225 </context-group>
1226 </trans-unit>
1227 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1287 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1228 <source>Video import with a torrent file or a magnet URI enabled</source> 1288 <source>Video import with a torrent file or a magnet URI enabled</source>
1229 <target>Импорт видео Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ файла торент или magnet URI активирован</target> 1289 <target>Импорт видео Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ файла торент или magnet URI активирован</target>
@@ -1558,14 +1618,14 @@
1558 <source>Score</source> 1618 <source>Score</source>
1559 <target>Счет</target> 1619 <target>Счет</target>
1560 <context-group name="null"> 1620 <context-group name="null">
1561 <context context-type="linenumber">8</context> 1621 <context context-type="linenumber">17</context>
1562 </context-group> 1622 </context-group>
1563 </trans-unit> 1623 </trans-unit>
1564 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1624 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1565 <source>Host</source> 1625 <source>Host</source>
1566 <target>Host</target> 1626 <target>Host</target>
1567 <context-group name="null"> 1627 <context-group name="null">
1568 <context context-type="linenumber">8</context> 1628 <context context-type="linenumber">19</context>
1569 </context-group> 1629 </context-group>
1570 </trans-unit> 1630 </trans-unit>
1571 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1631 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1670,7 +1730,7 @@
1670 <source>Role</source> 1730 <source>Role</source>
1671 <target>Роль</target> 1731 <target>Роль</target>
1672 <context-group name="null"> 1732 <context-group name="null">
1673 <context context-type="linenumber">20</context> 1733 <context context-type="linenumber">43</context>
1674 </context-group> 1734 </context-group>
1675 </trans-unit> 1735 </trans-unit>
1676 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1736 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1693,38 +1753,6 @@
1693 <context context-type="linenumber">72</context> 1753 <context context-type="linenumber">72</context>
1694 </context-group> 1754 </context-group>
1695 </trans-unit> 1755 </trans-unit>
1696 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1697 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1698 <target>Бан <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></target>
1699 <context-group name="null">
1700 <context context-type="linenumber">3</context>
1701 </context-group>
1702 </trans-unit>
1703 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1704 <source>Reason...</source>
1705 <target>Причина...</target>
1706 <context-group name="null">
1707 <context context-type="linenumber">11</context>
1708 </context-group>
1709 </trans-unit>
1710 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1711 <source>
1712 A banned user will no longer be able to login.
1713 </source>
1714 <target>
1715 Забаненый пользователь не Ñможет больше подÑоединитьÑÑ.
1716 </target>
1717 <context-group name="null">
1718 <context context-type="linenumber">17</context>
1719 </context-group>
1720 </trans-unit>
1721 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1722 <source>Ban this user</source>
1723 <target>Отправить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² бан</target>
1724 <context-group name="null">
1725 <context context-type="linenumber">25</context>
1726 </context-group>
1727 </trans-unit>
1728 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1756 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1729 <source>Users list</source> 1757 <source>Users list</source>
1730 <target>СпиÑок пользователей</target> 1758 <target>СпиÑок пользователей</target>
@@ -1736,21 +1764,14 @@
1736 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1764 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1737 <target>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1765 <target>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1738 <context-group name="null"> 1766 <context-group name="null">
1739 <context context-type="linenumber">17</context> 1767 <context context-type="linenumber">40</context>
1740 </context-group>
1741 </trans-unit>
1742 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1743 <source>Actions</source>
1744 <target>ДейÑтвиÑ</target>
1745 <context-group name="null">
1746 <context context-type="linenumber">33</context>
1747 </context-group> 1768 </context-group>
1748 </trans-unit> 1769 </trans-unit>
1749 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1770 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1750 <source>Ban reason:</source> 1771 <source>Ban reason:</source>
1751 <target>Причины бана:</target> 1772 <target>Причины бана:</target>
1752 <context-group name="null"> 1773 <context-group name="null">
1753 <context context-type="linenumber">51</context> 1774 <context context-type="linenumber">82</context>
1754 </context-group> 1775 </context-group>
1755 </trans-unit> 1776 </trans-unit>
1756 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1777 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1813,6 +1834,13 @@
1813 <context context-type="linenumber">33</context> 1834 <context context-type="linenumber">33</context>
1814 </context-group> 1835 </context-group>
1815 </trans-unit> 1836 </trans-unit>
1837 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1838 <source>Actions</source>
1839 <target>ДейÑтвиÑ</target>
1840 <context-group name="null">
1841 <context context-type="linenumber">33</context>
1842 </context-group>
1843 </trans-unit>
1816 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 1844 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1817 <source>Reason:</source> 1845 <source>Reason:</source>
1818 <target>Причины:</target> 1846 <target>Причины:</target>
@@ -1922,7 +1950,7 @@
1922 <source>Ownership changes</source> 1950 <source>Ownership changes</source>
1923 <target>Смена ÑобÑтвенника</target> 1951 <target>Смена ÑобÑтвенника</target>
1924 <context-group name="null"> 1952 <context-group name="null">
1925 <context context-type="linenumber">22</context> 1953 <context context-type="linenumber">33</context>
1926 </context-group> 1954 </context-group>
1927 </trans-unit> 1955 </trans-unit>
1928 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 1956 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2169,14 +2197,14 @@ When you will upload a video in this channel, the video support field will be au
2169 <source>Automatically plays video</source> 2197 <source>Automatically plays video</source>
2170 <target>ВоÑпроизводить автоматичеÑки видео</target> 2198 <target>ВоÑпроизводить автоматичеÑки видео</target>
2171 <context-group name="null"> 2199 <context-group name="null">
2172 <context context-type="linenumber">20</context> 2200 <context context-type="linenumber">25</context>
2173 </context-group> 2201 </context-group>
2174 </trans-unit> 2202 </trans-unit>
2175 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2203 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2176 <source>Save</source> 2204 <source>Save</source>
2177 <target>Сохранить</target> 2205 <target>Сохранить</target>
2178 <context-group name="null"> 2206 <context-group name="null">
2179 <context context-type="linenumber">23</context> 2207 <context context-type="linenumber">28</context>
2180 </context-group> 2208 </context-group>
2181 </trans-unit> 2209 </trans-unit>
2182 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2210 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2282,6 +2310,132 @@ When you will upload a video in this channel, the video support field will be au
2282 <context context-type="linenumber">17</context> 2310 <context context-type="linenumber">17</context>
2283 </context-group> 2311 </context-group>
2284 </trans-unit> 2312 </trans-unit>
2313 <trans-unit id="f15f2e02b1f6a96553e98ea4a969045d17ec1400">
2314 <source>Transcoding threads is required.</source>
2315 <target>ТранÑкодирование потоки требуетÑÑ.</target>
2316 <context-group name="null">
2317 <context context-type="linenumber">1</context>
2318 </context-group>
2319 </trans-unit>
2320 <trans-unit id="4166cc066b963a23829b48a09e394f73b453fabd">
2321 <source>Transcoding threads must be greater or equal to 0.</source>
2322 <target>ТранÑкодирование потоков должны быть больше или равно 0.</target>
2323 <context-group name="null">
2324 <context context-type="linenumber">1</context>
2325 </context-group>
2326 </trans-unit>
2327 <trans-unit id="5db300f6fba918a35597160183205ede13e8e149">
2328 <source>Username is required.</source>
2329 <target>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ÑÑ.</target>
2330 <context-group name="null">
2331 <context context-type="linenumber">1</context>
2332 </context-group>
2333 </trans-unit>
2334 <trans-unit id="4eb39d69b74d7a56652ec84fa6826994ee26c0e5">
2335 <source>Password is required.</source>
2336 <target>Пароль необходим.</target>
2337 <context-group name="null">
2338 <context context-type="linenumber">1</context>
2339 </context-group>
2340 </trans-unit>
2341 <trans-unit id="05ad6b99d9bf7b51968aa0b0b939e8627a329bea">
2342 <source>Username must be at least 3 characters long.</source>
2343 <target>Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ быть длиной не менее 3-Ñ… Ñимволов.</target>
2344 <context-group name="null">
2345 <context context-type="linenumber">1</context>
2346 </context-group>
2347 </trans-unit>
2348 <trans-unit id="1fe26e49476ac701885abc59127e96a3760847f0">
2349 <source>Password must be at least 6 characters long.</source>
2350 <target>Пароль должен быть длиной не менее 6 Ñимволов.</target>
2351 <context-group name="null">
2352 <context context-type="linenumber">1</context>
2353 </context-group>
2354 </trans-unit>
2355 <trans-unit id="bdeb1a8e69e137572df795d64120ea85069b7674">
2356 <source>Display name must be at least 3 characters long.</source>
2357 <target>Отображаемое Ð¸Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ иметь длину не менее 3-Ñ… Ñимволов.</target>
2358 <context-group name="null">
2359 <context context-type="linenumber">1</context>
2360 </context-group>
2361 </trans-unit>
2362 <trans-unit id="d531c2261dc0c2739bd7cbb2bb175946b7eeb3ae">
2363 <source>Description must be at least 3 characters long.</source>
2364 <target>ОпиÑание должно быть длиной не менее 3-Ñ… Ñимволов.</target>
2365 <context-group name="null">
2366 <context context-type="linenumber">1</context>
2367 </context-group>
2368 </trans-unit>
2369 <trans-unit id="6d2c3ebffd49b8933200a6d4e5b74712be49bf00">
2370 <source>Ban reason must be at least 3 characters long.</source>
2371 <target>Запрет причина должно длитьÑÑ Ð½Ðµ менее 3 Ñимволов.</target>
2372 <context-group name="null">
2373 <context context-type="linenumber">1</context>
2374 </context-group>
2375 </trans-unit>
2376 <trans-unit id="993f9f5703d449a1d467243db75253d288a2947e">
2377 <source>Report reason must be at least 2 characters long.</source>
2378 <target>Доклад причина должно быть не менее 2 Ñимволов.</target>
2379 <context-group name="null">
2380 <context context-type="linenumber">1</context>
2381 </context-group>
2382 </trans-unit>
2383 <trans-unit id="82e31d0837eaa69a4364e7434d253ce138b3c5c2">
2384 <source>Moderation comment must be at least 2 characters long.</source>
2385 <target>ÐœÐ¾Ð´ÐµÑ€Ð°Ñ†Ð¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ð¹ должен быть длиной не менее 2 Ñимвола.</target>
2386 <context-group name="null">
2387 <context context-type="linenumber">1</context>
2388 </context-group>
2389 </trans-unit>
2390 <trans-unit id="0776b05d442a0a16f083a5eefa52a166b9d514ca">
2391 <source>Blacklist reason must be at least 2 characters long.</source>
2392 <target>Причина черного ÑпиÑка должна быть не менее 2 Ñимволов.</target>
2393 <context-group name="null">
2394 <context context-type="linenumber">1</context>
2395 </context-group>
2396 </trans-unit>
2397 <trans-unit id="06b5d33d89bb8e6a5013dbd3c07c44389a6f1069">
2398 <source>Name must be at least 3 characters long.</source>
2399 <target>Длина имени должна быть не менее 3 Ñимволов.</target>
2400 <context-group name="null">
2401 <context context-type="linenumber">1</context>
2402 </context-group>
2403 </trans-unit>
2404 <trans-unit id="e7182e21e9566cc81c83f92727461322f71fd69b">
2405 <source>Support text must be at least 3 characters long.</source>
2406 <target>ТекÑÑ‚ поддержки должен Ñодержать не менее 3 Ñимволов.</target>
2407 <context-group name="null">
2408 <context context-type="linenumber">1</context>
2409 </context-group>
2410 </trans-unit>
2411 <trans-unit id="f5a94cae76685e72f33541b977efdd7845cb0ed6">
2412 <source>Comment must be at least 2 characters long.</source>
2413 <target>Комментарий должен Ñодержать не менее 2 Ñимволов.</target>
2414 <context-group name="null">
2415 <context context-type="linenumber">1</context>
2416 </context-group>
2417 </trans-unit>
2418 <trans-unit id="c27cc734f76efd221663921dd0898ea7c8bcbb5c">
2419 <source>Video name must be at least 3 characters long.</source>
2420 <target>Ðазвание видео должно быть не менее 3-Ñ… Ñимволов.</target>
2421 <context-group name="null">
2422 <context context-type="linenumber">1</context>
2423 </context-group>
2424 </trans-unit>
2425 <trans-unit id="af5e2d5f3ac817c735fb7ff9ca16322789f66fef">
2426 <source>Video description must be at least 3 characters long.</source>
2427 <target>ОпиÑание видео должно быть не менее 3-Ñ… Ñимволов.</target>
2428 <context-group name="null">
2429 <context context-type="linenumber">1</context>
2430 </context-group>
2431 </trans-unit>
2432 <trans-unit id="665092574f9af9fec262f8349b67b14192391ae6">
2433 <source>Video support must be at least 3 characters long.</source>
2434 <target>ОпиÑание видео должно быть не менее 3-Ñ… Ñимволов.</target>
2435 <context-group name="null">
2436 <context context-type="linenumber">1</context>
2437 </context-group>
2438 </trans-unit>
2285 <trans-unit id="1cadbf82f0e91611321c5abd282f0c23d8ccbfa1"> 2439 <trans-unit id="1cadbf82f0e91611321c5abd282f0c23d8ccbfa1">
2286 <source>Subscribed</source> 2440 <source>Subscribed</source>
2287 <target>ПодпиÑатьÑÑ</target> 2441 <target>ПодпиÑатьÑÑ</target>
diff --git a/client/src/locale/target/angular_sv_SE.xml b/client/src/locale/target/angular_sv_SE.xml
index 7377f7c23..1f15e7290 100644
--- a/client/src/locale/target/angular_sv_SE.xml
+++ b/client/src/locale/target/angular_sv_SE.xml
@@ -231,7 +231,7 @@
231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visningar</target> 232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> visningar</target>
233 <context-group name="null"> 233 <context-group name="null">
234 <context context-type="linenumber">13</context> 234 <context context-type="linenumber">16</context>
235 </context-group> 235 </context-group>
236 </trans-unit> 236 </trans-unit>
237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -245,7 +245,7 @@
245 <source>Edit</source> 245 <source>Edit</source>
246 <target>Redigera</target> 246 <target>Redigera</target>
247 <context-group name="null"> 247 <context-group name="null">
248 <context context-type="linenumber">5</context> 248 <context context-type="linenumber">1</context>
249 </context-group> 249 </context-group>
250 </trans-unit> 250 </trans-unit>
251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -301,6 +301,13 @@
301 <context context-type="linenumber">18</context> 301 <context context-type="linenumber">18</context>
302 </context-group> 302 </context-group>
303 </trans-unit> 303 </trans-unit>
304 <trans-unit id="9b3287f52c239cad05ec98391553e5052ba1aa66">
305 <source>Using an ActivityPub account</source>
306 <target>Med ett ActivityPub-konto</target>
307 <context-group name="null">
308 <context context-type="linenumber">36</context>
309 </context-group>
310 </trans-unit>
304 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3"> 311 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3">
305 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source> 312 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source>
306 <target>Prenumerera med ett konto på <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></target> 313 <target>Prenumerera med ett konto på <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></target>
@@ -315,6 +322,13 @@
315 <context context-type="linenumber">40</context> 322 <context context-type="linenumber">40</context>
316 </context-group> 323 </context-group>
317 </trans-unit> 324 </trans-unit>
325 <trans-unit id="5047522cc670b1f4a288bce07f9b1c5061e913ed">
326 <source>Subscribe with a Mastodon account:</source>
327 <target>Prenumerera med ett Mastodon-konto:</target>
328 <context-group name="null">
329 <context context-type="linenumber">43</context>
330 </context-group>
331 </trans-unit>
318 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1"> 332 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1">
319 <source>Using a syndication feed</source> 333 <source>Using a syndication feed</source>
320 <target>Med ett syndikeringsflöde</target> 334 <target>Med ett syndikeringsflöde</target>
@@ -360,7 +374,7 @@
360 <source>Video quota</source> 374 <source>Video quota</source>
361 <target>Videokvot</target> 375 <target>Videokvot</target>
362 <context-group name="null"> 376 <context-group name="null">
363 <context context-type="linenumber">19</context> 377 <context context-type="linenumber">42</context>
364 </context-group> 378 </context-group>
365 </trans-unit> 379 </trans-unit>
366 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 380 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -374,6 +388,38 @@
374 <context context-type="linenumber">14</context> 388 <context context-type="linenumber">14</context>
375 </context-group> 389 </context-group>
376 </trans-unit> 390 </trans-unit>
391 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
392 <source>Ban</source>
393 <target>Blockera</target>
394 <context-group name="null">
395 <context context-type="linenumber">3</context>
396 </context-group>
397 </trans-unit>
398 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
399 <source>Reason...</source>
400 <target>Anledning …</target>
401 <context-group name="null">
402 <context context-type="linenumber">11</context>
403 </context-group>
404 </trans-unit>
405 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
406 <source>
407 A banned user will no longer be able to login.
408 </source>
409 <target>
410 En blockerad användare kommer inte längre kunna logga in.
411 </target>
412 <context-group name="null">
413 <context context-type="linenumber">17</context>
414 </context-group>
415 </trans-unit>
416 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
417 <source>Ban this user</source>
418 <target>Blockera den här användaren</target>
419 <context-group name="null">
420 <context context-type="linenumber">25</context>
421 </context-group>
422 </trans-unit>
377 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 423 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
378 <source> 424 <source>
379 Login 425 Login
@@ -580,13 +626,6 @@
580 <context context-type="linenumber">6</context> 626 <context context-type="linenumber">6</context>
581 </context-group> 627 </context-group>
582 </trans-unit> 628 </trans-unit>
583 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
584 <source>Filters</source>
585 <target>Filter</target>
586 <context-group name="null">
587 <context context-type="linenumber">16</context>
588 </context-group>
589 </trans-unit>
590 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 629 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
591 <source> 630 <source>
592 No results found 631 No results found
@@ -595,21 +634,21 @@
595 Inga resultat hittades 634 Inga resultat hittades
596 </target> 635 </target>
597 <context-group name="null"> 636 <context-group name="null">
598 <context context-type="linenumber">25</context> 637 <context context-type="linenumber">28</context>
599 </context-group> 638 </context-group>
600 </trans-unit> 639 </trans-unit>
601 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 640 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
602 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 641 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
603 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> prenumeranter</target> 642 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> prenumeranter</target>
604 <context-group name="null"> 643 <context-group name="null">
605 <context context-type="linenumber">41</context> 644 <context context-type="linenumber">44</context>
606 </context-group> 645 </context-group>
607 </trans-unit> 646 </trans-unit>
608 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 647 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
609 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 648 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
610 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> visningar</target> 649 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> visningar</target>
611 <context-group name="null"> 650 <context-group name="null">
612 <context context-type="linenumber">52</context> 651 <context context-type="linenumber">55</context>
613 </context-group> 652 </context-group>
614 </trans-unit> 653 </trans-unit>
615 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 654 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -849,7 +888,7 @@
849 <source>No results.</source> 888 <source>No results.</source>
850 <target>Inga resultat.</target> 889 <target>Inga resultat.</target>
851 <context-group name="null"> 890 <context-group name="null">
852 <context context-type="linenumber">7</context> 891 <context context-type="linenumber">17</context>
853 </context-group> 892 </context-group>
854 </trans-unit> 893 </trans-unit>
855 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 894 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -863,6 +902,17 @@
863 <context context-type="linenumber">6</context> 902 <context context-type="linenumber">6</context>
864 </context-group> 903 </context-group>
865 </trans-unit> 904 </trans-unit>
905 <trans-unit id="48a5d0af93b94c4575b7f76a47fb3cdee58e6919">
906 <source>
907 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
908 </source>
909 <target>
910 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
911 </target>
912 <context-group name="null">
913 <context context-type="linenumber">14</context>
914 </context-group>
915 </trans-unit>
866 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b"> 916 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b">
867 <source> 917 <source>
868 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/> 918 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>
@@ -886,7 +936,7 @@
886 <source>Instance</source> 936 <source>Instance</source>
887 <target>Instans</target> 937 <target>Instans</target>
888 <context-group name="null"> 938 <context-group name="null">
889 <context context-type="linenumber">8</context> 939 <context context-type="linenumber">12</context>
890 </context-group> 940 </context-group>
891 </trans-unit> 941 </trans-unit>
892 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 942 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -1231,14 +1281,14 @@
1231 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1281 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1232 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> prenumeranter</target> 1282 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> prenumeranter</target>
1233 <context-group name="null"> 1283 <context-group name="null">
1234 <context context-type="linenumber">12</context> 1284 <context context-type="linenumber">24</context>
1235 </context-group> 1285 </context-group>
1236 </trans-unit> 1286 </trans-unit>
1237 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1287 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1238 <source>Video channels</source> 1288 <source>Video channels</source>
1239 <target>Videokanaler</target> 1289 <target>Videokanaler</target>
1240 <context-group name="null"> 1290 <context-group name="null">
1241 <context context-type="linenumber">19</context> 1291 <context context-type="linenumber">31</context>
1242 </context-group> 1292 </context-group>
1243 </trans-unit> 1293 </trans-unit>
1244 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1294 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1381,13 +1431,6 @@
1381 <context context-type="linenumber">42</context> 1431 <context context-type="linenumber">42</context>
1382 </context-group> 1432 </context-group>
1383 </trans-unit> 1433 </trans-unit>
1384 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1385 <source>Video import with HTTP enabled</source>
1386 <target>Videoimport med HTTP aktiverad</target>
1387 <context-group name="null">
1388 <context context-type="linenumber">115</context>
1389 </context-group>
1390 </trans-unit>
1391 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1434 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1392 <source>Video import with a torrent file or a magnet URI enabled</source> 1435 <source>Video import with a torrent file or a magnet URI enabled</source>
1393 <target>Videoimport med torrentfil eller magnet-URI är tillåten</target> 1436 <target>Videoimport med torrentfil eller magnet-URI är tillåten</target>
@@ -1717,14 +1760,14 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a
1717 <source>Score</source> 1760 <source>Score</source>
1718 <target>Poäng</target> 1761 <target>Poäng</target>
1719 <context-group name="null"> 1762 <context-group name="null">
1720 <context context-type="linenumber">8</context> 1763 <context context-type="linenumber">17</context>
1721 </context-group> 1764 </context-group>
1722 </trans-unit> 1765 </trans-unit>
1723 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1766 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1724 <source>Host</source> 1767 <source>Host</source>
1725 <target>Värd</target> 1768 <target>Värd</target>
1726 <context-group name="null"> 1769 <context-group name="null">
1727 <context context-type="linenumber">8</context> 1770 <context context-type="linenumber">19</context>
1728 </context-group> 1771 </context-group>
1729 </trans-unit> 1772 </trans-unit>
1730 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1773 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1745,21 +1788,21 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a
1745 <source>Accepted</source> 1788 <source>Accepted</source>
1746 <target>Accepterad</target> 1789 <target>Accepterad</target>
1747 <context-group name="null"> 1790 <context-group name="null">
1748 <context context-type="linenumber">21</context> 1791 <context context-type="linenumber">32</context>
1749 </context-group> 1792 </context-group>
1750 </trans-unit> 1793 </trans-unit>
1751 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506"> 1794 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506">
1752 <source>Pending</source> 1795 <source>Pending</source>
1753 <target>Väntar</target> 1796 <target>Väntar</target>
1754 <context-group name="null"> 1797 <context-group name="null">
1755 <context context-type="linenumber">22</context> 1798 <context context-type="linenumber">33</context>
1756 </context-group> 1799 </context-group>
1757 </trans-unit> 1800 </trans-unit>
1758 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8"> 1801 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8">
1759 <source>Redundancy allowed</source> 1802 <source>Redundancy allowed</source>
1760 <target>Redundans tillåten</target> 1803 <target>Redundans tillåten</target>
1761 <context-group name="null"> 1804 <context-group name="null">
1762 <context context-type="linenumber">11</context> 1805 <context context-type="linenumber">22</context>
1763 </context-group> 1806 </context-group>
1764 </trans-unit> 1807 </trans-unit>
1765 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479"> 1808 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479">
@@ -1850,7 +1893,7 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a
1850 <source>Role</source> 1893 <source>Role</source>
1851 <target>Roll</target> 1894 <target>Roll</target>
1852 <context-group name="null"> 1895 <context-group name="null">
1853 <context context-type="linenumber">20</context> 1896 <context context-type="linenumber">43</context>
1854 </context-group> 1897 </context-group>
1855 </trans-unit> 1898 </trans-unit>
1856 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1899 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1873,38 +1916,6 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a
1873 <context context-type="linenumber">72</context> 1916 <context context-type="linenumber">72</context>
1874 </context-group> 1917 </context-group>
1875 </trans-unit> 1918 </trans-unit>
1876 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1877 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1878 <target>Blockera <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></target>
1879 <context-group name="null">
1880 <context context-type="linenumber">3</context>
1881 </context-group>
1882 </trans-unit>
1883 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1884 <source>Reason...</source>
1885 <target>Anledning …</target>
1886 <context-group name="null">
1887 <context context-type="linenumber">11</context>
1888 </context-group>
1889 </trans-unit>
1890 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1891 <source>
1892 A banned user will no longer be able to login.
1893 </source>
1894 <target>
1895 En blockerad användare kommer inte längre kunna logga in.
1896 </target>
1897 <context-group name="null">
1898 <context context-type="linenumber">17</context>
1899 </context-group>
1900 </trans-unit>
1901 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1902 <source>Ban this user</source>
1903 <target>Blockera den här användaren</target>
1904 <context-group name="null">
1905 <context context-type="linenumber">25</context>
1906 </context-group>
1907 </trans-unit>
1908 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1919 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1909 <source>Users list</source> 1920 <source>Users list</source>
1910 <target>Användarlista</target> 1921 <target>Användarlista</target>
@@ -1916,21 +1927,21 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a
1916 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1927 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1917 <target>Användarnamn <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1928 <target>Användarnamn <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1918 <context-group name="null"> 1929 <context-group name="null">
1919 <context context-type="linenumber">17</context> 1930 <context context-type="linenumber">40</context>
1920 </context-group> 1931 </context-group>
1921 </trans-unit> 1932 </trans-unit>
1922 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1933 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1923 <source>Actions</source> 1934 <source>Go to the account page</source>
1924 <target>Ãtgärder</target> 1935 <target>GÃ¥ till kontots sida</target>
1925 <context-group name="null"> 1936 <context-group name="null">
1926 <context context-type="linenumber">33</context> 1937 <context context-type="linenumber">133</context>
1927 </context-group> 1938 </context-group>
1928 </trans-unit> 1939 </trans-unit>
1929 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1940 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1930 <source>Ban reason:</source> 1941 <source>Ban reason:</source>
1931 <target>Blockeringsanledning:</target> 1942 <target>Blockeringsanledning:</target>
1932 <context-group name="null"> 1943 <context-group name="null">
1933 <context context-type="linenumber">51</context> 1944 <context context-type="linenumber">82</context>
1934 </context-group> 1945 </context-group>
1935 </trans-unit> 1946 </trans-unit>
1936 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1947 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1974,7 +1985,7 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a
1974 </trans-unit> 1985 </trans-unit>
1975 <trans-unit id="7e7ad19f1bcc2c33cdba4c1ad25e2b398ad453d9"> 1986 <trans-unit id="7e7ad19f1bcc2c33cdba4c1ad25e2b398ad453d9">
1976 <source>State <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1987 <source>State <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1977 <target>Tillstånd <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1988 <target>Status <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1978 <context-group name="null"> 1989 <context-group name="null">
1979 <context context-type="linenumber">11</context> 1990 <context context-type="linenumber">11</context>
1980 </context-group> 1991 </context-group>
@@ -1993,6 +2004,13 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a
1993 <context context-type="linenumber">33</context> 2004 <context context-type="linenumber">33</context>
1994 </context-group> 2005 </context-group>
1995 </trans-unit> 2006 </trans-unit>
2007 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
2008 <source>Actions</source>
2009 <target>Åtgärder</target>
2010 <context-group name="null">
2011 <context context-type="linenumber">33</context>
2012 </context-group>
2013 </trans-unit>
1996 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 2014 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1997 <source>Reason:</source> 2015 <source>Reason:</source>
1998 <target>Anledning:</target> 2016 <target>Anledning:</target>
@@ -2102,7 +2120,7 @@ Det verkar som du inte är på en HTTPS-server. Din webbserver behöver ha TLS a
2102 <source>Ownership changes</source> 2120 <source>Ownership changes</source>
2103 <target>Ändringar av ägarskap</target> 2121 <target>Ändringar av ägarskap</target>
2104 <context-group name="null"> 2122 <context-group name="null">
2105 <context context-type="linenumber">22</context> 2123 <context context-type="linenumber">33</context>
2106 </context-group> 2124 </context-group>
2107 </trans-unit> 2125 </trans-unit>
2108 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 2126 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2331,6 +2349,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
2331 <context context-type="linenumber">30</context> 2349 <context context-type="linenumber">30</context>
2332 </context-group> 2350 </context-group>
2333 </trans-unit> 2351 </trans-unit>
2352 <trans-unit id="0dd390d056411e1709ec97ec51c46d78600e3f7b">
2353 <source>Current password</source>
2354 <target>Nuvarande lösenord</target>
2355 <context-group name="null">
2356 <context context-type="linenumber">7</context>
2357 </context-group>
2358 </trans-unit>
2334 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229"> 2359 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229">
2335 <source>New password</source> 2360 <source>New password</source>
2336 <target>Nytt lösenord</target> 2361 <target>Nytt lösenord</target>
@@ -2356,14 +2381,14 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
2356 <source>Automatically plays video</source> 2381 <source>Automatically plays video</source>
2357 <target>Spela videor automatiskt</target> 2382 <target>Spela videor automatiskt</target>
2358 <context-group name="null"> 2383 <context-group name="null">
2359 <context context-type="linenumber">20</context> 2384 <context context-type="linenumber">25</context>
2360 </context-group> 2385 </context-group>
2361 </trans-unit> 2386 </trans-unit>
2362 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2387 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2363 <source>Save</source> 2388 <source>Save</source>
2364 <target>Spara</target> 2389 <target>Spara</target>
2365 <context-group name="null"> 2390 <context-group name="null">
2366 <context context-type="linenumber">23</context> 2391 <context context-type="linenumber">28</context>
2367 </context-group> 2392 </context-group>
2368 </trans-unit> 2393 </trans-unit>
2369 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2394 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2394,6 +2419,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
2394 <context context-type="linenumber">18</context> 2419 <context context-type="linenumber">18</context>
2395 </context-group> 2420 </context-group>
2396 </trans-unit> 2421 </trans-unit>
2422 <trans-unit id="d1a04ba05116499d4cf59a48a282a8bcbf5b622d">
2423 <source>Once you delete your account, there is no going back. Please be certain.</source>
2424 <target>När du har raderat ditt konto går det inte att ångra. Är du säker på att du vill fortsätta?</target>
2425 <context-group name="null">
2426 <context context-type="linenumber">2</context>
2427 </context-group>
2428 </trans-unit>
2397 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45"> 2429 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45">
2398 <source>Delete your account</source> 2430 <source>Delete your account</source>
2399 <target>Radera ditt konto</target> 2431 <target>Radera ditt konto</target>
@@ -2561,6 +2593,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
2561 <context context-type="linenumber">6</context> 2593 <context context-type="linenumber">6</context>
2562 </context-group> 2594 </context-group>
2563 </trans-unit> 2595 </trans-unit>
2596 <trans-unit id="1b518e7f8c067fa55ea797bb1b35b4a2d31dccbc">
2597 <source>Or</source>
2598 <target>Eller</target>
2599 <context-group name="null">
2600 <context context-type="linenumber">11</context>
2601 </context-group>
2602 </trans-unit>
2564 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9"> 2603 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9">
2565 <source>Paste magnet URI</source> 2604 <source>Paste magnet URI</source>
2566 <target>Klistra in magnet-URI</target> 2605 <target>Klistra in magnet-URI</target>
@@ -2674,6 +2713,20 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
2674 <context context-type="linenumber">18</context> 2713 <context context-type="linenumber">18</context>
2675 </context-group> 2714 </context-group>
2676 </trans-unit> 2715 </trans-unit>
2716 <trans-unit id="9bdd535a2817bf0b843a124bf65e4992625e7ecf">
2717 <source>+ Tag</source>
2718 <target>+ Tagg</target>
2719 <context-group name="null">
2720 <context context-type="linenumber">21</context>
2721 </context-group>
2722 </trans-unit>
2723 <trans-unit id="8389e9cde2928cc27aaecbdee818a255bf7984b0">
2724 <source>Enter a new tag</source>
2725 <target>Lägg till en ny tagg</target>
2726 <context-group name="null">
2727 <context context-type="linenumber">21</context>
2728 </context-group>
2729 </trans-unit>
2677 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e"> 2730 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e">
2678 <source>Video descriptions are truncated by default and require manual action to expand them.</source> 2731 <source>Video descriptions are truncated by default and require manual action to expand them.</source>
2679 <target>Videobeskrivningar kortas ner som standard och manuell åtgärd krävs för att visa hela.</target> 2732 <target>Videobeskrivningar kortas ner som standard och manuell åtgärd krävs för att visa hela.</target>
@@ -3106,13 +3159,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3106 <context context-type="linenumber">134</context> 3159 <context context-type="linenumber">134</context>
3107 </context-group> 3160 </context-group>
3108 </trans-unit> 3161 </trans-unit>
3109 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
3110 <source>Go to the account page</source>
3111 <target>GÃ¥ till kontots sida</target>
3112 <context-group name="null">
3113 <context context-type="linenumber">133</context>
3114 </context-group>
3115 </trans-unit>
3116 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 3162 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
3117 <source>Show more</source> 3163 <source>Show more</source>
3118 <target>Visa mer</target> 3164 <target>Visa mer</target>
@@ -3192,25 +3238,18 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3192 <context context-type="linenumber">3</context> 3238 <context context-type="linenumber">3</context>
3193 </context-group> 3239 </context-group>
3194 </trans-unit> 3240 </trans-unit>
3195 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
3196 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
3197 <target>Du kan kommentera med ditt PeerTube-konto på din instans sida dit videon är federerad eller via valfri fediverse-instans med stöd för ActivityPub. Med till exempel Mastodon eller Pleroma kan du skriva &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; i sökrutan för att hitta videon. Kommentering direkt härfrån är en funktion vi arbetar på i &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</target>
3198 <context-group name="null">
3199 <context context-type="linenumber">8</context>
3200 </context-group>
3201 </trans-unit>
3202 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 3241 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
3203 <source>No comments.</source> 3242 <source>No comments.</source>
3204 <target>Inga kommentarer.</target> 3243 <target>Inga kommentarer.</target>
3205 <context-group name="null"> 3244 <context-group name="null">
3206 <context context-type="linenumber">18</context> 3245 <context context-type="linenumber">17</context>
3207 </context-group> 3246 </context-group>
3208 </trans-unit> 3247 </trans-unit>
3209 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 3248 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
3210 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 3249 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
3211 <target>Visa alla <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> svar</target> 3250 <target>Visa alla <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> svar</target>
3212 <context-group name="null"> 3251 <context-group name="null">
3213 <context context-type="linenumber">55</context> 3252 <context context-type="linenumber">54</context>
3214 </context-group> 3253 </context-group>
3215 </trans-unit> 3254 </trans-unit>
3216 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 3255 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -3221,7 +3260,7 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3221 Kommentarer har avaktiverats. 3260 Kommentarer har avaktiverats.
3222 </target> 3261 </target>
3223 <context-group name="null"> 3262 <context-group name="null">
3224 <context context-type="linenumber">64</context> 3263 <context context-type="linenumber">63</context>
3225 </context-group> 3264 </context-group>
3226 </trans-unit> 3265 </trans-unit>
3227 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 3266 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -3267,6 +3306,32 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3267 <context context-type="linenumber">35</context> 3306 <context context-type="linenumber">35</context>
3268 </context-group> 3307 </context-group>
3269 </trans-unit> 3308 </trans-unit>
3309 <trans-unit id="a5a3f17c9b4876952d78363834d57280c8684e7c">
3310 <source>
3311 Otherwise you can comment using an account on any ActivityPub-compatible instance.
3312 On most platforms, you can find the video by typing its URL in the search bar and then comment it
3313 from within the software's interface.
3314 </source>
3315 <target>
3316 Annars kan du kommentera med ett konto på en valfri ActivityPub-instans.
3317 På de flesta plattformar kan du hitta videon genom att skriva dess URL i sökrutan och kommentera
3318 från mjukvarugränssnittet.
3319 </target>
3320 <context-group name="null">
3321 <context context-type="linenumber">36</context>
3322 </context-group>
3323 </trans-unit>
3324 <trans-unit id="968b02fbc645be799727de0d1ec3c6f9b11b20eb">
3325 <source>
3326 If you have an account on Mastodon or Pleroma, you can open it directly in their interface:
3327 </source>
3328 <target>
3329 Om du har ett konto på Mastodon eller Pleroma kan du öppna det direkt därifrån:
3330 </target>
3331 <context-group name="null">
3332 <context context-type="linenumber">41</context>
3333 </context-group>
3334 </trans-unit>
3270 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285"> 3335 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285">
3271 <source>Highlighted comment</source> 3336 <source>Highlighted comment</source>
3272 <target>Markerad kommentar</target> 3337 <target>Markerad kommentar</target>
@@ -3304,7 +3369,14 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3304 </trans-unit> 3369 </trans-unit>
3305 <trans-unit id="369ef5e9c0dd1251abdbf699a5db408bca10777f"> 3370 <trans-unit id="369ef5e9c0dd1251abdbf699a5db408bca10777f">
3306 <source>Published <x id="INTERPOLATION" equiv-text="{{totalVideos}}"/> videos</source> 3371 <source>Published <x id="INTERPOLATION" equiv-text="{{totalVideos}}"/> videos</source>
3307 <target>Publiserade <x id="INTERPOLATION" equiv-text="{{totalVideos}}"/> videor</target> 3372 <target>Publicerade <x id="INTERPOLATION" equiv-text="{{totalVideos}}"/> videor</target>
3373 <context-group name="null">
3374 <context context-type="linenumber">1</context>
3375 </context-group>
3376 </trans-unit>
3377 <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d">
3378 <source>Error</source>
3379 <target>Fel</target>
3308 <context-group name="null"> 3380 <context-group name="null">
3309 <context context-type="linenumber">1</context> 3381 <context context-type="linenumber">1</context>
3310 </context-group> 3382 </context-group>
@@ -3351,48 +3423,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3351 <context context-type="linenumber">1</context> 3423 <context context-type="linenumber">1</context>
3352 </context-group> 3424 </context-group>
3353 </trans-unit> 3425 </trans-unit>
3354 <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d">
3355 <source>Error</source>
3356 <target>Fel</target>
3357 <context-group name="null">
3358 <context context-type="linenumber">1</context>
3359 </context-group>
3360 </trans-unit>
3361 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
3362 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
3363 <target>Du definierade en egen <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </target>
3364 <context-group name="null">
3365 <context context-type="linenumber">1</context>
3366 </context-group>
3367 </trans-unit>
3368 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
3369 <source>This could lead to security issues or bugs if you do not understand it. </source>
3370 <target>Detta kan orsaka säkerhetsproblem eller buggar om du inte förstår det.</target>
3371 <context-group name="null">
3372 <context context-type="linenumber">1</context>
3373 </context-group>
3374 </trans-unit>
3375 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
3376 <source>Are you sure you want to update the configuration?</source>
3377 <target>Är du säker på att du vill uppdatera konfigurationen?</target>
3378 <context-group name="null">
3379 <context context-type="linenumber">1</context>
3380 </context-group>
3381 </trans-unit>
3382 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
3383 <source>Please type</source>
3384 <target>Skriv</target>
3385 <context-group name="null">
3386 <context context-type="linenumber">1</context>
3387 </context-group>
3388 </trans-unit>
3389 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
3390 <source>to confirm.</source>
3391 <target>för att bekräfta.</target>
3392 <context-group name="null">
3393 <context context-type="linenumber">1</context>
3394 </context-group>
3395 </trans-unit>
3396 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 3426 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
3397 <source>Success</source> 3427 <source>Success</source>
3398 <target>Åtgärden lyckades</target> 3428 <target>Åtgärden lyckades</target>
@@ -3638,20 +3668,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3638 <context context-type="linenumber">1</context> 3668 <context context-type="linenumber">1</context>
3639 </context-group> 3669 </context-group>
3640 </trans-unit> 3670 </trans-unit>
3641 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
3642 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
3643 <target>Användaren <x id="INTERPOLATION" equiv-text="{{username}}"/> har blockerats.</target>
3644 <context-group name="null">
3645 <context context-type="linenumber">1</context>
3646 </context-group>
3647 </trans-unit>
3648 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3649 <source>Ban</source>
3650 <target>Blockera</target>
3651 <context-group name="null">
3652 <context context-type="linenumber">1</context>
3653 </context-group>
3654 </trans-unit>
3655 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 3671 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3656 <source>Unban</source> 3672 <source>Unban</source>
3657 <target>Avsluta blockering</target> 3673 <target>Avsluta blockering</target>
@@ -3666,20 +3682,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3666 <context context-type="linenumber">1</context> 3682 <context context-type="linenumber">1</context>
3667 </context-group> 3683 </context-group>
3668 </trans-unit> 3684 </trans-unit>
3669 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
3670 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
3671 <target>Vill du verkligen avsluta blockeringen av <x id="INTERPOLATION" equiv-text="{{username}}"/>?</target>
3672 <context-group name="null">
3673 <context context-type="linenumber">1</context>
3674 </context-group>
3675 </trans-unit>
3676 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
3677 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
3678 <target>Användaren <x id="INTERPOLATION" equiv-text="{{username}}"/> är inte längre blockerad.</target>
3679 <context-group name="null">
3680 <context context-type="linenumber">1</context>
3681 </context-group>
3682 </trans-unit>
3683 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 3685 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
3684 <source>You cannot delete root.</source> 3686 <source>You cannot delete root.</source>
3685 <target>Du kan inte radera root.</target> 3687 <target>Du kan inte radera root.</target>
@@ -3687,20 +3689,6 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3687 <context context-type="linenumber">1</context> 3689 <context context-type="linenumber">1</context>
3688 </context-group> 3690 </context-group>
3689 </trans-unit> 3691 </trans-unit>
3690 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
3691 <source>If you remove this user, you will not be able to create another with the same username!</source>
3692 <target>Om du tar bort den här användaren kommer du inte kunna skapa en ny med samma användarnamn!</target>
3693 <context-group name="null">
3694 <context context-type="linenumber">1</context>
3695 </context-group>
3696 </trans-unit>
3697 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3698 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3699 <target>Användaren <x id="INTERPOLATION" equiv-text="{{username}}"/> har raderats.</target>
3700 <context-group name="null">
3701 <context context-type="linenumber">1</context>
3702 </context-group>
3703 </trans-unit>
3704 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e"> 3692 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3705 <source>Ownership accepted</source> 3693 <source>Ownership accepted</source>
3706 <target>Ägarskap accepterat</target> 3694 <target>Ägarskap accepterat</target>
@@ -3715,6 +3703,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
3715 <context context-type="linenumber">1</context> 3703 <context context-type="linenumber">1</context>
3716 </context-group> 3704 </context-group>
3717 </trans-unit> 3705 </trans-unit>
3706 <trans-unit id="466fc8cf56fd4e4e90fec4b900ef083d52bec38c">
3707 <source>You current password is invalid.</source>
3708 <target>Ditt nuvarande lösenord är inte giltigt.</target>
3709 <context-group name="null">
3710 <context context-type="linenumber">1</context>
3711 </context-group>
3712 </trans-unit>
3718 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047"> 3713 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047">
3719 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source> 3714 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source>
3720 <target>Är du säker på att du vill radera ditt konto? Detta kommer ta bort all din data, bland annat kanaler och videor.</target> 3715 <target>Är du säker på att du vill radera ditt konto? Detta kommer ta bort all din data, bland annat kanaler och videor.</target>
@@ -5082,6 +5077,41 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
5082 <context context-type="linenumber">1</context> 5077 <context context-type="linenumber">1</context>
5083 </context-group> 5078 </context-group>
5084 </trans-unit> 5079 </trans-unit>
5080 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
5081 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
5082 <target>Användaren <x id="INTERPOLATION" equiv-text="{{username}}"/> har blockerats.</target>
5083 <context-group name="null">
5084 <context context-type="linenumber">1</context>
5085 </context-group>
5086 </trans-unit>
5087 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
5088 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
5089 <target>Vill du verkligen avsluta blockeringen av <x id="INTERPOLATION" equiv-text="{{username}}"/>?</target>
5090 <context-group name="null">
5091 <context context-type="linenumber">1</context>
5092 </context-group>
5093 </trans-unit>
5094 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
5095 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
5096 <target>Användaren <x id="INTERPOLATION" equiv-text="{{username}}"/> är inte längre blockerad.</target>
5097 <context-group name="null">
5098 <context context-type="linenumber">1</context>
5099 </context-group>
5100 </trans-unit>
5101 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
5102 <source>If you remove this user, you will not be able to create another with the same username!</source>
5103 <target>Om du tar bort den här användaren kommer du inte kunna skapa en ny med samma användarnamn!</target>
5104 <context-group name="null">
5105 <context context-type="linenumber">1</context>
5106 </context-group>
5107 </trans-unit>
5108 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
5109 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
5110 <target>Användaren <x id="INTERPOLATION" equiv-text="{{username}}"/> har raderats.</target>
5111 <context-group name="null">
5112 <context context-type="linenumber">1</context>
5113 </context-group>
5114 </trans-unit>
5085 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 5115 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
5086 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 5116 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
5087 <target>Förfrågan är för stor för servern. Kontakta gärna din administratör om du vill öka storleksbegränsningen.</target> 5117 <target>Förfrågan är för stor för servern. Kontakta gärna din administratör om du vill öka storleksbegränsningen.</target>
@@ -5138,6 +5168,13 @@ När du laddar upp en video i den här kanalen kommer supportfältet automatiskt
5138 <context context-type="linenumber">1</context> 5168 <context context-type="linenumber">1</context>
5139 </context-group> 5169 </context-group>
5140 </trans-unit> 5170 </trans-unit>
5171 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf">
5172 <source>Moderator</source>
5173 <target>Moderator</target>
5174 <context-group name="null">
5175 <context context-type="linenumber">1</context>
5176 </context-group>
5177 </trans-unit>
5141 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb"> 5178 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb">
5142 <source>Only I can see this video</source> 5179 <source>Only I can see this video</source>
5143 <target>Endast jag kan se den här videon</target> 5180 <target>Endast jag kan se den här videon</target>
diff --git a/client/src/locale/target/angular_zh_Hans_CN.xml b/client/src/locale/target/angular_zh_Hans_CN.xml
index 5b1165dcb..e47d99288 100644
--- a/client/src/locale/target/angular_zh_Hans_CN.xml
+++ b/client/src/locale/target/angular_zh_Hans_CN.xml
@@ -231,7 +231,7 @@
231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> 次观看</target> 232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> 次观看</target>
233 <context-group name="null"> 233 <context-group name="null">
234 <context context-type="linenumber">13</context> 234 <context context-type="linenumber">16</context>
235 </context-group> 235 </context-group>
236 </trans-unit> 236 </trans-unit>
237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -245,7 +245,7 @@
245 <source>Edit</source> 245 <source>Edit</source>
246 <target>编辑</target> 246 <target>编辑</target>
247 <context-group name="null"> 247 <context-group name="null">
248 <context context-type="linenumber">5</context> 248 <context context-type="linenumber">1</context>
249 </context-group> 249 </context-group>
250 </trans-unit> 250 </trans-unit>
251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -301,6 +301,13 @@
301 <context context-type="linenumber">18</context> 301 <context context-type="linenumber">18</context>
302 </context-group> 302 </context-group>
303 </trans-unit> 303 </trans-unit>
304 <trans-unit id="9b3287f52c239cad05ec98391553e5052ba1aa66">
305 <source>Using an ActivityPub account</source>
306 <target>使用 ActivityPub å¸æˆ·</target>
307 <context-group name="null">
308 <context context-type="linenumber">36</context>
309 </context-group>
310 </trans-unit>
304 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3"> 311 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3">
305 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source> 312 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source>
306 <target>使用 <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/> 上的å¸æˆ·è®¢é˜…</target> 313 <target>使用 <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/> 上的å¸æˆ·è®¢é˜…</target>
@@ -315,6 +322,13 @@
315 <context context-type="linenumber">40</context> 322 <context context-type="linenumber">40</context>
316 </context-group> 323 </context-group>
317 </trans-unit> 324 </trans-unit>
325 <trans-unit id="5047522cc670b1f4a288bce07f9b1c5061e913ed">
326 <source>Subscribe with a Mastodon account:</source>
327 <target>使用 Mastodon å¸æˆ·è®¢é˜…:</target>
328 <context-group name="null">
329 <context context-type="linenumber">43</context>
330 </context-group>
331 </trans-unit>
318 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1"> 332 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1">
319 <source>Using a syndication feed</source> 333 <source>Using a syndication feed</source>
320 <target>使用èšåˆä¿¡æ¯æº</target> 334 <target>使用èšåˆä¿¡æ¯æº</target>
@@ -360,7 +374,7 @@
360 <source>Video quota</source> 374 <source>Video quota</source>
361 <target>视频存储空间</target> 375 <target>视频存储空间</target>
362 <context-group name="null"> 376 <context-group name="null">
363 <context context-type="linenumber">19</context> 377 <context context-type="linenumber">42</context>
364 </context-group> 378 </context-group>
365 </trans-unit> 379 </trans-unit>
366 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 380 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -374,6 +388,38 @@
374 <context context-type="linenumber">14</context> 388 <context context-type="linenumber">14</context>
375 </context-group> 389 </context-group>
376 </trans-unit> 390 </trans-unit>
391 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
392 <source>Ban</source>
393 <target>å°ç¦</target>
394 <context-group name="null">
395 <context context-type="linenumber">3</context>
396 </context-group>
397 </trans-unit>
398 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
399 <source>Reason...</source>
400 <target>原因...</target>
401 <context-group name="null">
402 <context context-type="linenumber">11</context>
403 </context-group>
404 </trans-unit>
405 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
406 <source>
407 A banned user will no longer be able to login.
408 </source>
409 <target>
410 被å°ç¦çš„用户将无法登录。
411 </target>
412 <context-group name="null">
413 <context context-type="linenumber">17</context>
414 </context-group>
415 </trans-unit>
416 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
417 <source>Ban this user</source>
418 <target>å°ç¦æ­¤ç”¨æˆ·</target>
419 <context-group name="null">
420 <context context-type="linenumber">25</context>
421 </context-group>
422 </trans-unit>
377 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 423 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
378 <source> 424 <source>
379 Login 425 Login
@@ -578,13 +624,6 @@
578 <context context-type="linenumber">6</context> 624 <context context-type="linenumber">6</context>
579 </context-group> 625 </context-group>
580 </trans-unit> 626 </trans-unit>
581 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
582 <source>Filters</source>
583 <target>过滤</target>
584 <context-group name="null">
585 <context context-type="linenumber">16</context>
586 </context-group>
587 </trans-unit>
588 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 627 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
589 <source> 628 <source>
590 No results found 629 No results found
@@ -593,21 +632,21 @@
593 没有结果 632 没有结果
594 </target> 633 </target>
595 <context-group name="null"> 634 <context-group name="null">
596 <context context-type="linenumber">25</context> 635 <context context-type="linenumber">28</context>
597 </context-group> 636 </context-group>
598 </trans-unit> 637 </trans-unit>
599 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 638 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
600 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 639 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
601 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> ä½è®¢é˜…者</target> 640 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> ä½è®¢é˜…者</target>
602 <context-group name="null"> 641 <context-group name="null">
603 <context context-type="linenumber">41</context> 642 <context context-type="linenumber">44</context>
604 </context-group> 643 </context-group>
605 </trans-unit> 644 </trans-unit>
606 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 645 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
607 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 646 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
608 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> 次观看</target> 647 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> 次观看</target>
609 <context-group name="null"> 648 <context-group name="null">
610 <context context-type="linenumber">52</context> 649 <context context-type="linenumber">55</context>
611 </context-group> 650 </context-group>
612 </trans-unit> 651 </trans-unit>
613 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 652 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -847,7 +886,7 @@
847 <source>No results.</source> 886 <source>No results.</source>
848 <target>没有结果。</target> 887 <target>没有结果。</target>
849 <context-group name="null"> 888 <context-group name="null">
850 <context context-type="linenumber">7</context> 889 <context context-type="linenumber">17</context>
851 </context-group> 890 </context-group>
852 </trans-unit> 891 </trans-unit>
853 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 892 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -861,6 +900,17 @@
861 <context context-type="linenumber">6</context> 900 <context context-type="linenumber">6</context>
862 </context-group> 901 </context-group>
863 </trans-unit> 902 </trans-unit>
903 <trans-unit id="48a5d0af93b94c4575b7f76a47fb3cdee58e6919">
904 <source>
905 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
906 </source>
907 <target>
908 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
909 </target>
910 <context-group name="null">
911 <context context-type="linenumber">14</context>
912 </context-group>
913 </trans-unit>
864 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b"> 914 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b">
865 <source> 915 <source>
866 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/> 916 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>
@@ -884,7 +934,7 @@
884 <source>Instance</source> 934 <source>Instance</source>
885 <target>实例</target> 935 <target>实例</target>
886 <context-group name="null"> 936 <context-group name="null">
887 <context context-type="linenumber">8</context> 937 <context context-type="linenumber">12</context>
888 </context-group> 938 </context-group>
889 </trans-unit> 939 </trans-unit>
890 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 940 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -1227,14 +1277,14 @@
1227 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1277 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1228 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> ä½è®¢é˜…者</target> 1278 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> ä½è®¢é˜…者</target>
1229 <context-group name="null"> 1279 <context-group name="null">
1230 <context context-type="linenumber">12</context> 1280 <context context-type="linenumber">24</context>
1231 </context-group> 1281 </context-group>
1232 </trans-unit> 1282 </trans-unit>
1233 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1283 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1234 <source>Video channels</source> 1284 <source>Video channels</source>
1235 <target>视频频é“</target> 1285 <target>视频频é“</target>
1236 <context-group name="null"> 1286 <context-group name="null">
1237 <context context-type="linenumber">19</context> 1287 <context context-type="linenumber">31</context>
1238 </context-group> 1288 </context-group>
1239 </trans-unit> 1289 </trans-unit>
1240 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1290 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1377,13 +1427,6 @@
1377 <context context-type="linenumber">42</context> 1427 <context context-type="linenumber">42</context>
1378 </context-group> 1428 </context-group>
1379 </trans-unit> 1429 </trans-unit>
1380 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1381 <source>Video import with HTTP enabled</source>
1382 <target>å…许通过 HTTP 导入视频</target>
1383 <context-group name="null">
1384 <context context-type="linenumber">115</context>
1385 </context-group>
1386 </trans-unit>
1387 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1430 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1388 <source>Video import with a torrent file or a magnet URI enabled</source> 1431 <source>Video import with a torrent file or a magnet URI enabled</source>
1389 <target>å…许通过ç§å­æ–‡ä»¶æˆ–ç£åŠ›é“¾å¯¼å…¥è§†é¢‘</target> 1432 <target>å…许通过ç§å­æ–‡ä»¶æˆ–ç£åŠ›é“¾å¯¼å…¥è§†é¢‘</target>
@@ -1718,14 +1761,14 @@
1718 <source>Score</source> 1761 <source>Score</source>
1719 <target>评分</target> 1762 <target>评分</target>
1720 <context-group name="null"> 1763 <context-group name="null">
1721 <context context-type="linenumber">8</context> 1764 <context context-type="linenumber">17</context>
1722 </context-group> 1765 </context-group>
1723 </trans-unit> 1766 </trans-unit>
1724 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1767 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1725 <source>Host</source> 1768 <source>Host</source>
1726 <target>主机å</target> 1769 <target>主机å</target>
1727 <context-group name="null"> 1770 <context-group name="null">
1728 <context context-type="linenumber">8</context> 1771 <context context-type="linenumber">19</context>
1729 </context-group> 1772 </context-group>
1730 </trans-unit> 1773 </trans-unit>
1731 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1774 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1746,21 +1789,21 @@
1746 <source>Accepted</source> 1789 <source>Accepted</source>
1747 <target>已接å—</target> 1790 <target>已接å—</target>
1748 <context-group name="null"> 1791 <context-group name="null">
1749 <context context-type="linenumber">21</context> 1792 <context context-type="linenumber">32</context>
1750 </context-group> 1793 </context-group>
1751 </trans-unit> 1794 </trans-unit>
1752 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506"> 1795 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506">
1753 <source>Pending</source> 1796 <source>Pending</source>
1754 <target>等待中</target> 1797 <target>等待中</target>
1755 <context-group name="null"> 1798 <context-group name="null">
1756 <context context-type="linenumber">22</context> 1799 <context context-type="linenumber">33</context>
1757 </context-group> 1800 </context-group>
1758 </trans-unit> 1801 </trans-unit>
1759 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8"> 1802 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8">
1760 <source>Redundancy allowed</source> 1803 <source>Redundancy allowed</source>
1761 <target>å…许冗余备份</target> 1804 <target>å…许冗余备份</target>
1762 <context-group name="null"> 1805 <context-group name="null">
1763 <context context-type="linenumber">11</context> 1806 <context context-type="linenumber">22</context>
1764 </context-group> 1807 </context-group>
1765 </trans-unit> 1808 </trans-unit>
1766 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479"> 1809 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479">
@@ -1851,7 +1894,7 @@
1851 <source>Role</source> 1894 <source>Role</source>
1852 <target>角色</target> 1895 <target>角色</target>
1853 <context-group name="null"> 1896 <context-group name="null">
1854 <context context-type="linenumber">20</context> 1897 <context context-type="linenumber">43</context>
1855 </context-group> 1898 </context-group>
1856 </trans-unit> 1899 </trans-unit>
1857 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1900 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1874,38 +1917,6 @@
1874 <context context-type="linenumber">72</context> 1917 <context context-type="linenumber">72</context>
1875 </context-group> 1918 </context-group>
1876 </trans-unit> 1919 </trans-unit>
1877 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1878 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1879 <target>å°ç¦ <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></target>
1880 <context-group name="null">
1881 <context context-type="linenumber">3</context>
1882 </context-group>
1883 </trans-unit>
1884 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1885 <source>Reason...</source>
1886 <target>原因...</target>
1887 <context-group name="null">
1888 <context context-type="linenumber">11</context>
1889 </context-group>
1890 </trans-unit>
1891 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1892 <source>
1893 A banned user will no longer be able to login.
1894 </source>
1895 <target>
1896 被å°ç¦çš„用户将无法登录。
1897 </target>
1898 <context-group name="null">
1899 <context context-type="linenumber">17</context>
1900 </context-group>
1901 </trans-unit>
1902 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1903 <source>Ban this user</source>
1904 <target>å°ç¦æ­¤ç”¨æˆ·</target>
1905 <context-group name="null">
1906 <context context-type="linenumber">25</context>
1907 </context-group>
1908 </trans-unit>
1909 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1920 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1910 <source>Users list</source> 1921 <source>Users list</source>
1911 <target>用户列表</target> 1922 <target>用户列表</target>
@@ -1917,21 +1928,21 @@
1917 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1928 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1918 <target>用户å <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1929 <target>用户å <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1919 <context-group name="null"> 1930 <context-group name="null">
1920 <context context-type="linenumber">17</context> 1931 <context context-type="linenumber">40</context>
1921 </context-group> 1932 </context-group>
1922 </trans-unit> 1933 </trans-unit>
1923 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1934 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1924 <source>Actions</source> 1935 <source>Go to the account page</source>
1925 <target>æ“作</target> 1936 <target>转到å¸æˆ·é¡µé¢</target>
1926 <context-group name="null"> 1937 <context-group name="null">
1927 <context context-type="linenumber">33</context> 1938 <context context-type="linenumber">133</context>
1928 </context-group> 1939 </context-group>
1929 </trans-unit> 1940 </trans-unit>
1930 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1941 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1931 <source>Ban reason:</source> 1942 <source>Ban reason:</source>
1932 <target>å°ç¦ç†ç”±ï¼š</target> 1943 <target>å°ç¦ç†ç”±ï¼š</target>
1933 <context-group name="null"> 1944 <context-group name="null">
1934 <context context-type="linenumber">51</context> 1945 <context context-type="linenumber">82</context>
1935 </context-group> 1946 </context-group>
1936 </trans-unit> 1947 </trans-unit>
1937 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1948 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1994,6 +2005,13 @@
1994 <context context-type="linenumber">33</context> 2005 <context context-type="linenumber">33</context>
1995 </context-group> 2006 </context-group>
1996 </trans-unit> 2007 </trans-unit>
2008 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
2009 <source>Actions</source>
2010 <target>æ“作</target>
2011 <context-group name="null">
2012 <context context-type="linenumber">33</context>
2013 </context-group>
2014 </trans-unit>
1997 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 2015 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1998 <source>Reason:</source> 2016 <source>Reason:</source>
1999 <target>ç†ç”±ï¼š</target> 2017 <target>ç†ç”±ï¼š</target>
@@ -2103,7 +2121,7 @@
2103 <source>Ownership changes</source> 2121 <source>Ownership changes</source>
2104 <target>视频转移</target> 2122 <target>视频转移</target>
2105 <context-group name="null"> 2123 <context-group name="null">
2106 <context context-type="linenumber">22</context> 2124 <context context-type="linenumber">33</context>
2107 </context-group> 2125 </context-group>
2108 </trans-unit> 2126 </trans-unit>
2109 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 2127 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2332,6 +2350,13 @@ When you will upload a video in this channel, the video support field will be au
2332 <context context-type="linenumber">30</context> 2350 <context context-type="linenumber">30</context>
2333 </context-group> 2351 </context-group>
2334 </trans-unit> 2352 </trans-unit>
2353 <trans-unit id="0dd390d056411e1709ec97ec51c46d78600e3f7b">
2354 <source>Current password</source>
2355 <target>当å‰å¯†ç </target>
2356 <context-group name="null">
2357 <context context-type="linenumber">7</context>
2358 </context-group>
2359 </trans-unit>
2335 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229"> 2360 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229">
2336 <source>New password</source> 2361 <source>New password</source>
2337 <target>新密ç </target> 2362 <target>新密ç </target>
@@ -2357,14 +2382,14 @@ When you will upload a video in this channel, the video support field will be au
2357 <source>Automatically plays video</source> 2382 <source>Automatically plays video</source>
2358 <target>自动播放视频</target> 2383 <target>自动播放视频</target>
2359 <context-group name="null"> 2384 <context-group name="null">
2360 <context context-type="linenumber">20</context> 2385 <context context-type="linenumber">25</context>
2361 </context-group> 2386 </context-group>
2362 </trans-unit> 2387 </trans-unit>
2363 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2388 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2364 <source>Save</source> 2389 <source>Save</source>
2365 <target>ä¿å­˜</target> 2390 <target>ä¿å­˜</target>
2366 <context-group name="null"> 2391 <context-group name="null">
2367 <context context-type="linenumber">23</context> 2392 <context context-type="linenumber">28</context>
2368 </context-group> 2393 </context-group>
2369 </trans-unit> 2394 </trans-unit>
2370 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2395 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2395,6 +2420,13 @@ When you will upload a video in this channel, the video support field will be au
2395 <context context-type="linenumber">18</context> 2420 <context context-type="linenumber">18</context>
2396 </context-group> 2421 </context-group>
2397 </trans-unit> 2422 </trans-unit>
2423 <trans-unit id="d1a04ba05116499d4cf59a48a282a8bcbf5b622d">
2424 <source>Once you delete your account, there is no going back. Please be certain.</source>
2425 <target>å¸æˆ·ä¸€æ—¦è¢«åˆ é™¤ï¼Œæ‚¨å°†æ— æ³•æ’¤é”€æ­¤æ“作。继续å‰è¯·ç¡®è®¤æ‚¨æ˜¯å¦çœŸçš„想è¦åˆ é™¤å¸æˆ·ã€‚</target>
2426 <context-group name="null">
2427 <context context-type="linenumber">2</context>
2428 </context-group>
2429 </trans-unit>
2398 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45"> 2430 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45">
2399 <source>Delete your account</source> 2431 <source>Delete your account</source>
2400 <target>删除您的å¸æˆ·</target> 2432 <target>删除您的å¸æˆ·</target>
@@ -2562,6 +2594,13 @@ When you will upload a video in this channel, the video support field will be au
2562 <context context-type="linenumber">6</context> 2594 <context context-type="linenumber">6</context>
2563 </context-group> 2595 </context-group>
2564 </trans-unit> 2596 </trans-unit>
2597 <trans-unit id="1b518e7f8c067fa55ea797bb1b35b4a2d31dccbc">
2598 <source>Or</source>
2599 <target>或者</target>
2600 <context-group name="null">
2601 <context context-type="linenumber">11</context>
2602 </context-group>
2603 </trans-unit>
2565 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9"> 2604 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9">
2566 <source>Paste magnet URI</source> 2605 <source>Paste magnet URI</source>
2567 <target>粘贴ç£åŠ›é“¾</target> 2606 <target>粘贴ç£åŠ›é“¾</target>
@@ -2675,6 +2714,20 @@ When you will upload a video in this channel, the video support field will be au
2675 <context context-type="linenumber">18</context> 2714 <context context-type="linenumber">18</context>
2676 </context-group> 2715 </context-group>
2677 </trans-unit> 2716 </trans-unit>
2717 <trans-unit id="9bdd535a2817bf0b843a124bf65e4992625e7ecf">
2718 <source>+ Tag</source>
2719 <target>+ 标签</target>
2720 <context-group name="null">
2721 <context context-type="linenumber">21</context>
2722 </context-group>
2723 </trans-unit>
2724 <trans-unit id="8389e9cde2928cc27aaecbdee818a255bf7984b0">
2725 <source>Enter a new tag</source>
2726 <target>输入新的标签</target>
2727 <context-group name="null">
2728 <context context-type="linenumber">21</context>
2729 </context-group>
2730 </trans-unit>
2678 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e"> 2731 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e">
2679 <source>Video descriptions are truncated by default and require manual action to expand them.</source> 2732 <source>Video descriptions are truncated by default and require manual action to expand them.</source>
2680 <target>视频说明默认åªå±•ç¤ºä¸€éƒ¨åˆ†ï¼Œç”¨æˆ·éœ€è¦æ‰‹åŠ¨å±•å¼€æ‰èƒ½æ˜¾ç¤ºå®Œæ•´å†…容。</target> 2733 <target>视频说明默认åªå±•ç¤ºä¸€éƒ¨åˆ†ï¼Œç”¨æˆ·éœ€è¦æ‰‹åŠ¨å±•å¼€æ‰èƒ½æ˜¾ç¤ºå®Œæ•´å†…容。</target>
@@ -3107,13 +3160,6 @@ When you will upload a video in this channel, the video support field will be au
3107 <context context-type="linenumber">134</context> 3160 <context context-type="linenumber">134</context>
3108 </context-group> 3161 </context-group>
3109 </trans-unit> 3162 </trans-unit>
3110 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
3111 <source>Go to the account page</source>
3112 <target>转到å¸æˆ·é¡µé¢</target>
3113 <context-group name="null">
3114 <context context-type="linenumber">133</context>
3115 </context-group>
3116 </trans-unit>
3117 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 3163 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
3118 <source>Show more</source> 3164 <source>Show more</source>
3119 <target>展开</target> 3165 <target>展开</target>
@@ -3193,25 +3239,18 @@ When you will upload a video in this channel, the video support field will be au
3193 <context context-type="linenumber">3</context> 3239 <context context-type="linenumber">3</context>
3194 </context-group> 3240 </context-group>
3195 </trans-unit> 3241 </trans-unit>
3196 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
3197 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
3198 <target>您å¯ä»¥åœ¨æ‚¨ä½¿ç”¨çš„ PeerTube 实例上使用您的å¸æˆ·å¯¹æ­¤è§†é¢‘进行评论(您需è¦åœ¨æ‚¨çš„实例上找到此视频),或者通过任æ„一个使用 ActivityPub 标准的实例å‘é€è¯„论。以 Mastodon å’Œ Pleroma 为例,您需è¦åœ¨æœç´¢æ¡†ä¸­è¾“å…¥ &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; 并在æœç´¢ç»“果中找到此视频。直接评论功能尚在开å‘中,详情请å‚è§ &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;。</target>
3199 <context-group name="null">
3200 <context context-type="linenumber">8</context>
3201 </context-group>
3202 </trans-unit>
3203 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 3242 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
3204 <source>No comments.</source> 3243 <source>No comments.</source>
3205 <target>尚无评论。</target> 3244 <target>尚无评论。</target>
3206 <context-group name="null"> 3245 <context-group name="null">
3207 <context context-type="linenumber">18</context> 3246 <context context-type="linenumber">17</context>
3208 </context-group> 3247 </context-group>
3209 </trans-unit> 3248 </trans-unit>
3210 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 3249 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
3211 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 3250 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
3212 <target>查看全部 <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> æ¡å›žå¤</target> 3251 <target>查看全部 <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> æ¡å›žå¤</target>
3213 <context-group name="null"> 3252 <context-group name="null">
3214 <context context-type="linenumber">55</context> 3253 <context context-type="linenumber">54</context>
3215 </context-group> 3254 </context-group>
3216 </trans-unit> 3255 </trans-unit>
3217 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 3256 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -3222,7 +3261,7 @@ When you will upload a video in this channel, the video support field will be au
3222 评论功能已åœç”¨ã€‚ 3261 评论功能已åœç”¨ã€‚
3223 </target> 3262 </target>
3224 <context-group name="null"> 3263 <context-group name="null">
3225 <context context-type="linenumber">64</context> 3264 <context context-type="linenumber">63</context>
3226 </context-group> 3265 </context-group>
3227 </trans-unit> 3266 </trans-unit>
3228 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 3267 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -3268,6 +3307,31 @@ When you will upload a video in this channel, the video support field will be au
3268 <context context-type="linenumber">35</context> 3307 <context context-type="linenumber">35</context>
3269 </context-group> 3308 </context-group>
3270 </trans-unit> 3309 </trans-unit>
3310 <trans-unit id="a5a3f17c9b4876952d78363834d57280c8684e7c">
3311 <source>
3312 Otherwise you can comment using an account on any ActivityPub-compatible instance.
3313 On most platforms, you can find the video by typing its URL in the search bar and then comment it
3314 from within the software's interface.
3315 </source>
3316 <target>
3317 您也å¯ä»¥ä½¿ç”¨å…¼å®¹ ActivityPub 标准的实例å¸æˆ·å‚与评论。
3318 对于ç»å¤§å¤šæ•°å¹³å°ï¼Œæ‚¨å¯ä»¥åœ¨æœç´¢æ¡†ä¸­è¾“å…¥ URL,然åŽå³å¯åœ¨ç•Œé¢å†…进行评论。
3319 </target>
3320 <context-group name="null">
3321 <context context-type="linenumber">36</context>
3322 </context-group>
3323 </trans-unit>
3324 <trans-unit id="968b02fbc645be799727de0d1ec3c6f9b11b20eb">
3325 <source>
3326 If you have an account on Mastodon or Pleroma, you can open it directly in their interface:
3327 </source>
3328 <target>
3329 如果您在 Mastodon 或 Pleroma 上有å¸æˆ·ï¼Œæ‚¨å¯ä»¥ç›´æŽ¥åœ¨å¯¹åº”çš„ç•Œé¢ä¸­æ‰“开:
3330 </target>
3331 <context-group name="null">
3332 <context context-type="linenumber">41</context>
3333 </context-group>
3334 </trans-unit>
3271 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285"> 3335 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285">
3272 <source>Highlighted comment</source> 3336 <source>Highlighted comment</source>
3273 <target>所è¦æŸ¥çœ‹çš„评论</target> 3337 <target>所è¦æŸ¥çœ‹çš„评论</target>
@@ -3310,6 +3374,13 @@ When you will upload a video in this channel, the video support field will be au
3310 <context context-type="linenumber">1</context> 3374 <context context-type="linenumber">1</context>
3311 </context-group> 3375 </context-group>
3312 </trans-unit> 3376 </trans-unit>
3377 <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d">
3378 <source>Error</source>
3379 <target>错误</target>
3380 <context-group name="null">
3381 <context context-type="linenumber">1</context>
3382 </context-group>
3383 </trans-unit>
3313 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6"> 3384 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6">
3314 <source>240p</source> 3385 <source>240p</source>
3315 <target>240p</target> 3386 <target>240p</target>
@@ -3352,48 +3423,6 @@ When you will upload a video in this channel, the video support field will be au
3352 <context context-type="linenumber">1</context> 3423 <context context-type="linenumber">1</context>
3353 </context-group> 3424 </context-group>
3354 </trans-unit> 3425 </trans-unit>
3355 <trans-unit id="6080b77234e92ad41bb52653b239c4c4f851317d">
3356 <source>Error</source>
3357 <target>错误</target>
3358 <context-group name="null">
3359 <context context-type="linenumber">1</context>
3360 </context-group>
3361 </trans-unit>
3362 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed">
3363 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source>
3364 <target>您设置了自定义 <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>。</target>
3365 <context-group name="null">
3366 <context context-type="linenumber">1</context>
3367 </context-group>
3368 </trans-unit>
3369 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e">
3370 <source>This could lead to security issues or bugs if you do not understand it. </source>
3371 <target>除éžæ‚¨æ¸…楚自己在åšä»€ä¹ˆï¼Œå¦åˆ™è¿™å¯èƒ½ä¼šé€ æˆå®‰å…¨éšæ‚£æˆ–使网站è¿è¡Œä¸æ­£å¸¸ã€‚</target>
3372 <context-group name="null">
3373 <context context-type="linenumber">1</context>
3374 </context-group>
3375 </trans-unit>
3376 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0">
3377 <source>Are you sure you want to update the configuration?</source>
3378 <target>您确定è¦æ›´æ–°è®¾ç½®å—?</target>
3379 <context-group name="null">
3380 <context context-type="linenumber">1</context>
3381 </context-group>
3382 </trans-unit>
3383 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119">
3384 <source>Please type</source>
3385 <target>请输入</target>
3386 <context-group name="null">
3387 <context context-type="linenumber">1</context>
3388 </context-group>
3389 </trans-unit>
3390 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d">
3391 <source>to confirm.</source>
3392 <target>以确认æ“作。</target>
3393 <context-group name="null">
3394 <context context-type="linenumber">1</context>
3395 </context-group>
3396 </trans-unit>
3397 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba"> 3426 <trans-unit id="1e035e6ccfab771cad4226b2ad230cb0d4a88cba">
3398 <source>Success</source> 3427 <source>Success</source>
3399 <target>æˆåŠŸ</target> 3428 <target>æˆåŠŸ</target>
@@ -3640,20 +3669,6 @@ When you will upload a video in this channel, the video support field will be au
3640 <context context-type="linenumber">1</context> 3669 <context context-type="linenumber">1</context>
3641 </context-group> 3670 </context-group>
3642 </trans-unit> 3671 </trans-unit>
3643 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
3644 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
3645 <target>用户 <x id="INTERPOLATION" equiv-text="{{username}}"/> å·²å°ç¦ã€‚</target>
3646 <context-group name="null">
3647 <context context-type="linenumber">1</context>
3648 </context-group>
3649 </trans-unit>
3650 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3651 <source>Ban</source>
3652 <target>å°ç¦</target>
3653 <context-group name="null">
3654 <context context-type="linenumber">1</context>
3655 </context-group>
3656 </trans-unit>
3657 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 3672 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3658 <source>Unban</source> 3673 <source>Unban</source>
3659 <target>解除å°ç¦</target> 3674 <target>解除å°ç¦</target>
@@ -3668,20 +3683,6 @@ When you will upload a video in this channel, the video support field will be au
3668 <context context-type="linenumber">1</context> 3683 <context context-type="linenumber">1</context>
3669 </context-group> 3684 </context-group>
3670 </trans-unit> 3685 </trans-unit>
3671 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
3672 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
3673 <target>您确定è¦è§£é™¤å¯¹ <x id="INTERPOLATION" equiv-text="{{username}}"/> çš„å°ç¦å—?</target>
3674 <context-group name="null">
3675 <context context-type="linenumber">1</context>
3676 </context-group>
3677 </trans-unit>
3678 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
3679 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
3680 <target>用户 <x id="INTERPOLATION" equiv-text="{{username}}"/> 已解除å°ç¦ã€‚</target>
3681 <context-group name="null">
3682 <context context-type="linenumber">1</context>
3683 </context-group>
3684 </trans-unit>
3685 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 3686 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
3686 <source>You cannot delete root.</source> 3687 <source>You cannot delete root.</source>
3687 <target>您无法删除 root 用户。</target> 3688 <target>您无法删除 root 用户。</target>
@@ -3689,20 +3690,6 @@ When you will upload a video in this channel, the video support field will be au
3689 <context context-type="linenumber">1</context> 3690 <context context-type="linenumber">1</context>
3690 </context-group> 3691 </context-group>
3691 </trans-unit> 3692 </trans-unit>
3692 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
3693 <source>If you remove this user, you will not be able to create another with the same username!</source>
3694 <target>一旦删除此用户,你将无法å†ä½¿ç”¨æ­¤ç”¨æˆ·å创建新用户ï¼</target>
3695 <context-group name="null">
3696 <context context-type="linenumber">1</context>
3697 </context-group>
3698 </trans-unit>
3699 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3700 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3701 <target>用户 <x id="INTERPOLATION" equiv-text="{{username}}"/> 已删除。</target>
3702 <context-group name="null">
3703 <context context-type="linenumber">1</context>
3704 </context-group>
3705 </trans-unit>
3706 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e"> 3693 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3707 <source>Ownership accepted</source> 3694 <source>Ownership accepted</source>
3708 <target>转移已接å—</target> 3695 <target>转移已接å—</target>
@@ -3717,6 +3704,13 @@ When you will upload a video in this channel, the video support field will be au
3717 <context context-type="linenumber">1</context> 3704 <context context-type="linenumber">1</context>
3718 </context-group> 3705 </context-group>
3719 </trans-unit> 3706 </trans-unit>
3707 <trans-unit id="466fc8cf56fd4e4e90fec4b900ef083d52bec38c">
3708 <source>You current password is invalid.</source>
3709 <target>您的当å‰å¯†ç ä¸æ­£ç¡®ã€‚</target>
3710 <context-group name="null">
3711 <context context-type="linenumber">1</context>
3712 </context-group>
3713 </trans-unit>
3720 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047"> 3714 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047">
3721 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source> 3715 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source>
3722 <target>您确定è¦åˆ é™¤æ‚¨çš„å¸æˆ·å—?这将删除您的全部数æ®ï¼ŒåŒ…括频é“和视频等。</target> 3716 <target>您确定è¦åˆ é™¤æ‚¨çš„å¸æˆ·å—?这将删除您的全部数æ®ï¼ŒåŒ…括频é“和视频等。</target>
@@ -5084,6 +5078,41 @@ When you will upload a video in this channel, the video support field will be au
5084 <context context-type="linenumber">1</context> 5078 <context context-type="linenumber">1</context>
5085 </context-group> 5079 </context-group>
5086 </trans-unit> 5080 </trans-unit>
5081 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
5082 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
5083 <target>用户 <x id="INTERPOLATION" equiv-text="{{username}}"/> å·²å°ç¦ã€‚</target>
5084 <context-group name="null">
5085 <context context-type="linenumber">1</context>
5086 </context-group>
5087 </trans-unit>
5088 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
5089 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
5090 <target>您确定è¦è§£é™¤å¯¹ <x id="INTERPOLATION" equiv-text="{{username}}"/> çš„å°ç¦å—?</target>
5091 <context-group name="null">
5092 <context context-type="linenumber">1</context>
5093 </context-group>
5094 </trans-unit>
5095 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
5096 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
5097 <target>用户 <x id="INTERPOLATION" equiv-text="{{username}}"/> 已解除å°ç¦ã€‚</target>
5098 <context-group name="null">
5099 <context context-type="linenumber">1</context>
5100 </context-group>
5101 </trans-unit>
5102 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
5103 <source>If you remove this user, you will not be able to create another with the same username!</source>
5104 <target>一旦删除此用户,你将无法å†ä½¿ç”¨æ­¤ç”¨æˆ·å创建新用户ï¼</target>
5105 <context-group name="null">
5106 <context context-type="linenumber">1</context>
5107 </context-group>
5108 </trans-unit>
5109 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
5110 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
5111 <target>用户 <x id="INTERPOLATION" equiv-text="{{username}}"/> 已删除。</target>
5112 <context-group name="null">
5113 <context context-type="linenumber">1</context>
5114 </context-group>
5115 </trans-unit>
5087 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 5116 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
5088 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 5117 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
5089 <target>请求已超过é™åˆ¶ã€‚请è”系管ç†å‘˜ä»¥æå‡é™åˆ¶ã€‚</target> 5118 <target>请求已超过é™åˆ¶ã€‚请è”系管ç†å‘˜ä»¥æå‡é™åˆ¶ã€‚</target>
@@ -5140,6 +5169,13 @@ When you will upload a video in this channel, the video support field will be au
5140 <context context-type="linenumber">1</context> 5169 <context context-type="linenumber">1</context>
5141 </context-group> 5170 </context-group>
5142 </trans-unit> 5171 </trans-unit>
5172 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf">
5173 <source>Moderator</source>
5174 <target>监察员</target>
5175 <context-group name="null">
5176 <context context-type="linenumber">1</context>
5177 </context-group>
5178 </trans-unit>
5143 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb"> 5179 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb">
5144 <source>Only I can see this video</source> 5180 <source>Only I can see this video</source>
5145 <target>åªæœ‰æˆ‘能看到此视频</target> 5181 <target>åªæœ‰æˆ‘能看到此视频</target>
diff --git a/client/src/locale/target/angular_zh_Hant_TW.xml b/client/src/locale/target/angular_zh_Hant_TW.xml
index b6b7f1e4f..65ffe97e6 100644
--- a/client/src/locale/target/angular_zh_Hant_TW.xml
+++ b/client/src/locale/target/angular_zh_Hant_TW.xml
@@ -38,6 +38,20 @@
38 <context context-type="linenumber">27</context> 38 <context context-type="linenumber">27</context>
39 </context-group> 39 </context-group>
40 </trans-unit> 40 </trans-unit>
41 <trans-unit id="ngb.datepicker.select-month">
42 <source>Select month</source>
43 <target>é¸å–月份</target>
44 <context-group name="null">
45 <context context-type="linenumber">7</context>
46 </context-group>
47 </trans-unit>
48 <trans-unit id="ngb.datepicker.select-year">
49 <source>Select year</source>
50 <target>é¸å–年份</target>
51 <context-group name="null">
52 <context context-type="linenumber">16</context>
53 </context-group>
54 </trans-unit>
41 <trans-unit id="ngb.pagination.first"> 55 <trans-unit id="ngb.pagination.first">
42 <source>««</source> 56 <source>««</source>
43 <target>««</target> 57 <target>««</target>
@@ -217,7 +231,7 @@
217 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source> 231 <source><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> views</source>
218 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> 次檢視</target> 232 <target><x id="INTERPOLATION" equiv-text="{{ video.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ video.views | myNumberFormatter }}"/> 次檢視</target>
219 <context-group name="null"> 233 <context-group name="null">
220 <context context-type="linenumber">13</context> 234 <context context-type="linenumber">16</context>
221 </context-group> 235 </context-group>
222 </trans-unit> 236 </trans-unit>
223 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7"> 237 <trans-unit id="826b25211922a1b46436589233cb6f1a163d89b7">
@@ -231,7 +245,7 @@
231 <source>Edit</source> 245 <source>Edit</source>
232 <target>編輯</target> 246 <target>編輯</target>
233 <context-group name="null"> 247 <context-group name="null">
234 <context context-type="linenumber">5</context> 248 <context context-type="linenumber">1</context>
235 </context-group> 249 </context-group>
236 </trans-unit> 250 </trans-unit>
237 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d"> 251 <trans-unit id="961a134583d6256df39fbc520d020ebc48e3128d">
@@ -255,11 +269,112 @@
255 <context context-type="linenumber">19</context> 269 <context context-type="linenumber">19</context>
256 </context-group> 270 </context-group>
257 </trans-unit> 271 </trans-unit>
272 <trans-unit id="450025269732888db1f04cfe6033843110ab65ee">
273 <source>
274 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
275 Subscribe
276 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
277 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
278 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
279 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
280 </source>
281 <target>
282 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>
283 訂閱
284 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
285 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>
286 <x id="INTERPOLATION" equiv-text="{{ videoChannel.followersCount | myNumberFormatter }}"/>
287 <x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
288 </target>
289 <context-group name="null">
290 <context context-type="linenumber">5</context>
291 </context-group>
292 </trans-unit>
293 <trans-unit id="c374edf3b9228d3df6d761bdc8a289e7df0096e8">
294 <source>
295 Unsubscribe
296 </source>
297 <target>
298 å–消訂閱
299 </target>
300 <context-group name="null">
301 <context context-type="linenumber">18</context>
302 </context-group>
303 </trans-unit>
304 <trans-unit id="9b3287f52c239cad05ec98391553e5052ba1aa66">
305 <source>Using an ActivityPub account</source>
306 <target>使用 ActivityPub 帳號</target>
307 <context-group name="null">
308 <context context-type="linenumber">36</context>
309 </context-group>
310 </trans-unit>
311 <trans-unit id="60251958d9e05c8cc00abf9645bb0026ebbe4dc3">
312 <source>Subscribe with an account on <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/></source>
313 <target>使用 <x id="INTERPOLATION" equiv-text="{{ videoChannel.host }}"/> 上的帳號訂閱</target>
314 <context-group name="null">
315 <context context-type="linenumber">39</context>
316 </context-group>
317 </trans-unit>
318 <trans-unit id="e7adf422424a61b71465d183f9d44bf956482ef0">
319 <source>Subscribe with your local account</source>
320 <target>以您的本地帳號訂閱</target>
321 <context-group name="null">
322 <context context-type="linenumber">40</context>
323 </context-group>
324 </trans-unit>
325 <trans-unit id="5047522cc670b1f4a288bce07f9b1c5061e913ed">
326 <source>Subscribe with a Mastodon account:</source>
327 <target>使用 Mastodon 帳號訂閱:</target>
328 <context-group name="null">
329 <context context-type="linenumber">43</context>
330 </context-group>
331 </trans-unit>
332 <trans-unit id="d8758664cadd6452256ca25ca0c7259074f427c1">
333 <source>Using a syndication feed</source>
334 <target>使用è¯åˆä¾›ç¨¿</target>
335 <context-group name="null">
336 <context context-type="linenumber">48</context>
337 </context-group>
338 </trans-unit>
339 <trans-unit id="d5e5bc7d213694fc0414a76f0ff3085bae44268a">
340 <source>Subscribe via RSS</source>
341 <target>é€éŽ RSS 訂閱</target>
342 <context-group name="null">
343 <context context-type="linenumber">49</context>
344 </context-group>
345 </trans-unit>
346 <trans-unit id="4913054c95f5ba14c351ab1b787f7abac97bfdd3">
347 <source>
348 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>Remote subscribe<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
349 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>Remote interact<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
350 </source>
351 <target>
352 <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span&gt;"/>é ç«¯è¨‚é–±<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
353 <x id="START_TAG_SPAN_1" ctype="x-span" equiv-text="&lt;span&gt;"/>é ç«¯å¯¦é«”<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/>
354 </target>
355 <context-group name="null">
356 <context context-type="linenumber">10</context>
357 </context-group>
358 </trans-unit>
359 <trans-unit id="319933e1af77ca2e35b75a5e9270a3c90e83dd4b">
360 <source>You can subscribe to the channel via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the channel URL in the search box and subscribe there.</source>
361 <target>您å¯ä»¥é€éŽä»»ä½•ç›¸å®¹æ–¼ ActivityPub çš„è¯ç›Ÿå¯¦é«”訂閱。例如 Mastodon 或 Pleroma,您å¯ä»¥åœ¨æœå°‹æ¡†è¼¸å…¥é »é“ URL 以訂閱。</target>
362 <context-group name="null">
363 <context context-type="linenumber">17</context>
364 </context-group>
365 </trans-unit>
366 <trans-unit id="2767d5461b6c622ccdeb868df8becf26bc16b99a">
367 <source>You can interact with this via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type the current URL in the search box and interact with it there.</source>
368 <target>您å¯ä»¥é€éŽä»»ä½•ç›¸å®¹æ–¼ ActivityPub çš„è¯ç›Ÿå¯¦é«”進行互動。例如 Mastodon 或 Pleroma,您å¯ä»¥åœ¨æœå°‹æ¡†ä¸­è¼¸å…¥ç›®å‰çš„ URL 並在那裡與其互動。</target>
369 <context-group name="null">
370 <context context-type="linenumber">22</context>
371 </context-group>
372 </trans-unit>
258 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b"> 373 <trans-unit id="15f046007e4fca2e8477966745e2ec4e3e81bc3b">
259 <source>Video quota</source> 374 <source>Video quota</source>
260 <target>影片é…é¡</target> 375 <target>影片é…é¡</target>
261 <context-group name="null"> 376 <context-group name="null">
262 <context context-type="linenumber">19</context> 377 <context context-type="linenumber">42</context>
263 </context-group> 378 </context-group>
264 </trans-unit> 379 </trans-unit>
265 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85"> 380 <trans-unit id="9270dfd4606fb45a991fe7716e640b6efa28ba85">
@@ -273,6 +388,38 @@
273 <context context-type="linenumber">14</context> 388 <context context-type="linenumber">14</context>
274 </context-group> 389 </context-group>
275 </trans-unit> 390 </trans-unit>
391 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
392 <source>Ban</source>
393 <target>阻擋</target>
394 <context-group name="null">
395 <context context-type="linenumber">3</context>
396 </context-group>
397 </trans-unit>
398 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
399 <source>Reason...</source>
400 <target>ç†ç”±â€¦â€¦</target>
401 <context-group name="null">
402 <context context-type="linenumber">11</context>
403 </context-group>
404 </trans-unit>
405 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
406 <source>
407 A banned user will no longer be able to login.
408 </source>
409 <target>
410 被阻擋的使用者將ä¸å†èƒ½ç™»å…¥ã€‚
411 </target>
412 <context-group name="null">
413 <context context-type="linenumber">17</context>
414 </context-group>
415 </trans-unit>
416 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
417 <source>Ban this user</source>
418 <target>阻擋此使用者</target>
419 <context-group name="null">
420 <context context-type="linenumber">25</context>
421 </context-group>
422 </trans-unit>
276 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea"> 423 <trans-unit id="12910217fdcdbca64bee06f511639b653d5428ea">
277 <source> 424 <source>
278 Login 425 Login
@@ -473,34 +620,27 @@
473 <context context-type="linenumber">6</context> 620 <context context-type="linenumber">6</context>
474 </context-group> 621 </context-group>
475 </trans-unit> 622 </trans-unit>
476 <trans-unit id="1298c1d2bbbb7415f5494e800f6775fdb70f4df6">
477 <source>Filters</source>
478 <target>éŽæ¿¾å™¨</target>
479 <context-group name="null">
480 <context context-type="linenumber">16</context>
481 </context-group>
482 </trans-unit>
483 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d"> 623 <trans-unit id="e2dbf0426cbb0b573faf49dffeb7d5bdf16eda5d">
484 <source> 624 <source>
485 No results found 625 No results found
486 </source> 626 </source>
487 <target>沒有çµæžœ</target> 627 <target>沒有çµæžœ</target>
488 <context-group name="null"> 628 <context-group name="null">
489 <context context-type="linenumber">25</context> 629 <context context-type="linenumber">28</context>
490 </context-group> 630 </context-group>
491 </trans-unit> 631 </trans-unit>
492 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a"> 632 <trans-unit id="10341623e991a4185990a0c3c76ac2bc3543cc4a">
493 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source> 633 <source><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> subscribers</source>
494 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> 個訂閱者</target> 634 <target><x id="INTERPOLATION" equiv-text="{{ result.followersCount }}"/> 個訂閱者</target>
495 <context-group name="null"> 635 <context-group name="null">
496 <context context-type="linenumber">41</context> 636 <context context-type="linenumber">44</context>
497 </context-group> 637 </context-group>
498 </trans-unit> 638 </trans-unit>
499 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883"> 639 <trans-unit id="602281e45fe8b79748e3fbf21c432379fcb58883">
500 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source> 640 <source><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> views</source>
501 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> 次檢視</target> 641 <target><x id="INTERPOLATION" equiv-text="{{ result.publishedAt | myFromNow }}"/> - <x id="INTERPOLATION_1" equiv-text="{{ result.views | myNumberFormatter }}"/> 次檢視</target>
502 <context-group name="null"> 642 <context-group name="null">
503 <context context-type="linenumber">52</context> 643 <context context-type="linenumber">55</context>
504 </context-group> 644 </context-group>
505 </trans-unit> 645 </trans-unit>
506 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96"> 646 <trans-unit id="aef5c45fb9c725573d20a6283492e6b80fd2ae96">
@@ -624,6 +764,13 @@
624 <context context-type="linenumber">25</context> 764 <context context-type="linenumber">25</context>
625 </context-group> 765 </context-group>
626 </trans-unit> 766 </trans-unit>
767 <trans-unit id="4752e5e33da1c3396d3248eb8fef59bca5d00cb3">
768 <source>Show keyboard shortcuts</source>
769 <target>顯示éµç›¤å¿«æ·éµ</target>
770 <context-group name="null">
771 <context context-type="linenumber">91</context>
772 </context-group>
773 </trans-unit>
627 <trans-unit id="cf75021ac8cb9efd4f95e8880cf52c9acd265768"> 774 <trans-unit id="cf75021ac8cb9efd4f95e8880cf52c9acd265768">
628 <source>Toggle dark interface</source> 775 <source>Toggle dark interface</source>
629 <target>切æ›è‡³æš—色介é¢</target> 776 <target>切æ›è‡³æš—色介é¢</target>
@@ -733,7 +880,7 @@
733 <source>No results.</source> 880 <source>No results.</source>
734 <target>沒有çµæžœ</target> 881 <target>沒有çµæžœ</target>
735 <context-group name="null"> 882 <context-group name="null">
736 <context context-type="linenumber">7</context> 883 <context context-type="linenumber">17</context>
737 </context-group> 884 </context-group>
738 </trans-unit> 885 </trans-unit>
739 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6"> 886 <trans-unit id="2290d09f4f113351baa9152ca8ad14cd03a11ba6">
@@ -747,6 +894,17 @@
747 <context context-type="linenumber">6</context> 894 <context context-type="linenumber">6</context>
748 </context-group> 895 </context-group>
749 </trans-unit> 896 </trans-unit>
897 <trans-unit id="48a5d0af93b94c4575b7f76a47fb3cdee58e6919">
898 <source>
899 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
900 </source>
901 <target>
902 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>#<x id="INTERPOLATION" equiv-text="{{ object.tag }}"/><x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/>
903 </target>
904 <context-group name="null">
905 <context context-type="linenumber">14</context>
906 </context-group>
907 </trans-unit>
750 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b"> 908 <trans-unit id="e093a5a83045ff283f992a93699abb7cb9dd3c1b">
751 <source> 909 <source>
752 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/> 910 <x id="START_LINK" ctype="x-a" equiv-text="&lt;a&gt;"/>
@@ -770,7 +928,7 @@
770 <source>Instance</source> 928 <source>Instance</source>
771 <target>實體</target> 929 <target>實體</target>
772 <context-group name="null"> 930 <context-group name="null">
773 <context context-type="linenumber">8</context> 931 <context context-type="linenumber">12</context>
774 </context-group> 932 </context-group>
775 </trans-unit> 933 </trans-unit>
776 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390"> 934 <trans-unit id="6385c357c1de58ce92c0cf618ecf9cf74b917390">
@@ -1075,14 +1233,14 @@
1075 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source> 1233 <source><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> subscribers</source>
1076 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> 個訂閱者</target> 1234 <target><x id="INTERPOLATION" equiv-text="{{ account.followersCount }}"/> 個訂閱者</target>
1077 <context-group name="null"> 1235 <context-group name="null">
1078 <context context-type="linenumber">12</context> 1236 <context context-type="linenumber">24</context>
1079 </context-group> 1237 </context-group>
1080 </trans-unit> 1238 </trans-unit>
1081 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8"> 1239 <trans-unit id="6f5a458f827503ac7b8697688ecf3e0490818ee8">
1082 <source>Video channels</source> 1240 <source>Video channels</source>
1083 <target>影片頻é“</target> 1241 <target>影片頻é“</target>
1084 <context-group name="null"> 1242 <context-group name="null">
1085 <context context-type="linenumber">19</context> 1243 <context context-type="linenumber">31</context>
1086 </context-group> 1244 </context-group>
1087 </trans-unit> 1245 </trans-unit>
1088 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a"> 1246 <trans-unit id="299f97b8ee9c62d45f2cc01961aa1e5101d6d05a">
@@ -1225,13 +1383,6 @@
1225 <context context-type="linenumber">42</context> 1383 <context context-type="linenumber">42</context>
1226 </context-group> 1384 </context-group>
1227 </trans-unit> 1385 </trans-unit>
1228 <trans-unit id="e9964673c94eb0b4ff8088c84018217c031f31ce">
1229 <source>Video import with HTTP enabled</source>
1230 <target>已啟用 HTTP 匯入影片</target>
1231 <context-group name="null">
1232 <context context-type="linenumber">115</context>
1233 </context-group>
1234 </trans-unit>
1235 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e"> 1386 <trans-unit id="05fdf7b5be1c3a7126e3c06d81da3134981b0a9e">
1236 <source>Video import with a torrent file or a magnet URI enabled</source> 1387 <source>Video import with a torrent file or a magnet URI enabled</source>
1237 <target>已啟用種å­æª”案或ç£åŠ›é€£çµåŒ¯å…¥å½±ç‰‡</target> 1388 <target>已啟用種å­æª”案或ç£åŠ›é€£çµåŒ¯å…¥å½±ç‰‡</target>
@@ -1556,14 +1707,14 @@
1556 <source>Score</source> 1707 <source>Score</source>
1557 <target>分數</target> 1708 <target>分數</target>
1558 <context-group name="null"> 1709 <context-group name="null">
1559 <context context-type="linenumber">8</context> 1710 <context context-type="linenumber">17</context>
1560 </context-group> 1711 </context-group>
1561 </trans-unit> 1712 </trans-unit>
1562 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767"> 1713 <trans-unit id="fe22ca53e651df951dac25b67c17894b0980f767">
1563 <source>Host</source> 1714 <source>Host</source>
1564 <target>主機</target> 1715 <target>主機</target>
1565 <context-group name="null"> 1716 <context-group name="null">
1566 <context context-type="linenumber">8</context> 1717 <context context-type="linenumber">19</context>
1567 </context-group> 1718 </context-group>
1568 </trans-unit> 1719 </trans-unit>
1569 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b"> 1720 <trans-unit id="873b72903b1858a9cd6c8967521030b4d7d1435b">
@@ -1580,6 +1731,27 @@
1580 <context context-type="linenumber">11</context> 1731 <context context-type="linenumber">11</context>
1581 </context-group> 1732 </context-group>
1582 </trans-unit> 1733 </trans-unit>
1734 <trans-unit id="7823909fb1d8d313382f6f4bd842f1a7ef6f08d1">
1735 <source>Accepted</source>
1736 <target>已接å—</target>
1737 <context-group name="null">
1738 <context context-type="linenumber">32</context>
1739 </context-group>
1740 </trans-unit>
1741 <trans-unit id="e6a27066251ca1e04c5be86ad758380856df2506">
1742 <source>Pending</source>
1743 <target>擱置中</target>
1744 <context-group name="null">
1745 <context context-type="linenumber">33</context>
1746 </context-group>
1747 </trans-unit>
1748 <trans-unit id="1d729bcbe3529d2fe2295b7a3a41282ee09de2c8">
1749 <source>Redundancy allowed</source>
1750 <target>å…許冗餘</target>
1751 <context-group name="null">
1752 <context context-type="linenumber">22</context>
1753 </context-group>
1754 </trans-unit>
1583 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479"> 1755 <trans-unit id="5fccee488a9ea908c16d2ab9dbdaf264f1aac479">
1584 <source>Manage follows</source> 1756 <source>Manage follows</source>
1585 <target>管ç†è¿½è¹¤</target> 1757 <target>管ç†è¿½è¹¤</target>
@@ -1668,7 +1840,7 @@
1668 <source>Role</source> 1840 <source>Role</source>
1669 <target>角色</target> 1841 <target>角色</target>
1670 <context-group name="null"> 1842 <context-group name="null">
1671 <context context-type="linenumber">20</context> 1843 <context context-type="linenumber">43</context>
1672 </context-group> 1844 </context-group>
1673 </trans-unit> 1845 </trans-unit>
1674 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345"> 1846 <trans-unit id="42e3c0e89177ca135974221eaf0e4e836c32e345">
@@ -1691,38 +1863,6 @@
1691 <context context-type="linenumber">72</context> 1863 <context context-type="linenumber">72</context>
1692 </context-group> 1864 </context-group>
1693 </trans-unit> 1865 </trans-unit>
1694 <trans-unit id="ffd94bfbcc0363386484e45e8bdc7b2361a95a33">
1695 <source>Ban <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></source>
1696 <target>阻擋 <x id="INTERPOLATION" equiv-text="{{ userToBan.username }}"/></target>
1697 <context-group name="null">
1698 <context context-type="linenumber">3</context>
1699 </context-group>
1700 </trans-unit>
1701 <trans-unit id="bb44873ad8d4c5dbad0ac2a6a50e0ceee9119125">
1702 <source>Reason...</source>
1703 <target>ç†ç”±â€¦â€¦</target>
1704 <context-group name="null">
1705 <context context-type="linenumber">11</context>
1706 </context-group>
1707 </trans-unit>
1708 <trans-unit id="f21428bd564d1cacdbc737f87a8def2e2ad42251">
1709 <source>
1710 A banned user will no longer be able to login.
1711 </source>
1712 <target>
1713 被阻擋的使用者將ä¸å†èƒ½ç™»å…¥ã€‚
1714 </target>
1715 <context-group name="null">
1716 <context context-type="linenumber">17</context>
1717 </context-group>
1718 </trans-unit>
1719 <trans-unit id="35fdca47605de8113a0db7f587f7c099abec8020">
1720 <source>Ban this user</source>
1721 <target>阻擋此使用者</target>
1722 <context-group name="null">
1723 <context context-type="linenumber">25</context>
1724 </context-group>
1725 </trans-unit>
1726 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f"> 1866 <trans-unit id="5e8b4663c17c337a1f11160c0a683350936faa1f">
1727 <source>Users list</source> 1867 <source>Users list</source>
1728 <target>使用者清單</target> 1868 <target>使用者清單</target>
@@ -1734,21 +1874,21 @@
1734 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source> 1874 <source>Username <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></source>
1735 <target>使用者å稱 <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target> 1875 <target>使用者å稱 <x id="START_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;p-sortIcon&gt;"/><x id="CLOSE_TAG_P-SORTICON" ctype="x-p-sortIcon" equiv-text="&lt;/p-sortIcon&gt;"/></target>
1736 <context-group name="null"> 1876 <context-group name="null">
1737 <context context-type="linenumber">17</context> 1877 <context context-type="linenumber">40</context>
1738 </context-group> 1878 </context-group>
1739 </trans-unit> 1879 </trans-unit>
1740 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c"> 1880 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
1741 <source>Actions</source> 1881 <source>Go to the account page</source>
1742 <target>動作</target> 1882 <target>到帳號é é¢</target>
1743 <context-group name="null"> 1883 <context-group name="null">
1744 <context context-type="linenumber">33</context> 1884 <context context-type="linenumber">133</context>
1745 </context-group> 1885 </context-group>
1746 </trans-unit> 1886 </trans-unit>
1747 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee"> 1887 <trans-unit id="a9587caabf0dc5d824f817baae1c2f5521d9b1ee">
1748 <source>Ban reason:</source> 1888 <source>Ban reason:</source>
1749 <target>阻擋ç†ç”±ï¼š</target> 1889 <target>阻擋ç†ç”±ï¼š</target>
1750 <context-group name="null"> 1890 <context-group name="null">
1751 <context context-type="linenumber">51</context> 1891 <context context-type="linenumber">82</context>
1752 </context-group> 1892 </context-group>
1753 </trans-unit> 1893 </trans-unit>
1754 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f"> 1894 <trans-unit id="bb863c794307735652d8695143e116eaee8a3c4f">
@@ -1811,6 +1951,13 @@
1811 <context context-type="linenumber">33</context> 1951 <context context-type="linenumber">33</context>
1812 </context-group> 1952 </context-group>
1813 </trans-unit> 1953 </trans-unit>
1954 <trans-unit id="030b4423b92167200e39519599f9b863b4f7c62c">
1955 <source>Actions</source>
1956 <target>動作</target>
1957 <context-group name="null">
1958 <context context-type="linenumber">33</context>
1959 </context-group>
1960 </trans-unit>
1814 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2"> 1961 <trans-unit id="e330cbadca2d8639aabf525d5fe7e5b62d324ee2">
1815 <source>Reason:</source> 1962 <source>Reason:</source>
1816 <target>ç†ç”±ï¼š</target> 1963 <target>ç†ç”±ï¼š</target>
@@ -1920,7 +2067,7 @@
1920 <source>Ownership changes</source> 2067 <source>Ownership changes</source>
1921 <target>所有權變更</target> 2068 <target>所有權變更</target>
1922 <context-group name="null"> 2069 <context-group name="null">
1923 <context context-type="linenumber">22</context> 2070 <context context-type="linenumber">33</context>
1924 </context-group> 2071 </context-group>
1925 </trans-unit> 2072 </trans-unit>
1926 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48"> 2073 <trans-unit id="9518d3fb042d551167c1701ddeb88a1374cf1e48">
@@ -2058,6 +2205,13 @@ When you will upload a video in this channel, the video support field will be au
2058 <context context-type="linenumber">8</context> 2205 <context context-type="linenumber">8</context>
2059 </context-group> 2206 </context-group>
2060 </trans-unit> 2207 </trans-unit>
2208 <trans-unit id="3a5d57052d13d2da1cbcffdbb8effb9874b1595a">
2209 <source>You don't have any subscriptions yet.</source>
2210 <target>您還沒有任何訂閱。</target>
2211 <context-group name="null">
2212 <context context-type="linenumber">1</context>
2213 </context-group>
2214 </trans-unit>
2061 <trans-unit id="c65641c36859c328928e6b0f14c3f913886f8add"> 2215 <trans-unit id="c65641c36859c328928e6b0f14c3f913886f8add">
2062 <source>Created by <x id="INTERPOLATION" equiv-text="{{ videoChannel.ownerBy }}"/></source> 2216 <source>Created by <x id="INTERPOLATION" equiv-text="{{ videoChannel.ownerBy }}"/></source>
2063 <target>由 <x id="INTERPOLATION" equiv-text="{{ videoChannel.ownerBy }}"/> 建立</target> 2217 <target>由 <x id="INTERPOLATION" equiv-text="{{ videoChannel.ownerBy }}"/> 建立</target>
@@ -2141,6 +2295,13 @@ When you will upload a video in this channel, the video support field will be au
2141 <context context-type="linenumber">30</context> 2295 <context context-type="linenumber">30</context>
2142 </context-group> 2296 </context-group>
2143 </trans-unit> 2297 </trans-unit>
2298 <trans-unit id="0dd390d056411e1709ec97ec51c46d78600e3f7b">
2299 <source>Current password</source>
2300 <target>ç›®å‰çš„密碼</target>
2301 <context-group name="null">
2302 <context context-type="linenumber">7</context>
2303 </context-group>
2304 </trans-unit>
2144 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229"> 2305 <trans-unit id="e70e209561583f360b1e9cefd2cbb1fe434b6229">
2145 <source>New password</source> 2306 <source>New password</source>
2146 <target>新密碼</target> 2307 <target>新密碼</target>
@@ -2166,14 +2327,14 @@ When you will upload a video in this channel, the video support field will be au
2166 <source>Automatically plays video</source> 2327 <source>Automatically plays video</source>
2167 <target>自動播放影片</target> 2328 <target>自動播放影片</target>
2168 <context-group name="null"> 2329 <context-group name="null">
2169 <context context-type="linenumber">20</context> 2330 <context context-type="linenumber">25</context>
2170 </context-group> 2331 </context-group>
2171 </trans-unit> 2332 </trans-unit>
2172 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe"> 2333 <trans-unit id="52c9a103b812f258bcddc3d90a6e3f46871d25fe">
2173 <source>Save</source> 2334 <source>Save</source>
2174 <target>儲存</target> 2335 <target>儲存</target>
2175 <context-group name="null"> 2336 <context-group name="null">
2176 <context context-type="linenumber">23</context> 2337 <context context-type="linenumber">28</context>
2177 </context-group> 2338 </context-group>
2178 </trans-unit> 2339 </trans-unit>
2179 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba"> 2340 <trans-unit id="d2fa66a905b6b7f691c83be681d18188cbe4a8ba">
@@ -2204,6 +2365,13 @@ When you will upload a video in this channel, the video support field will be au
2204 <context context-type="linenumber">18</context> 2365 <context context-type="linenumber">18</context>
2205 </context-group> 2366 </context-group>
2206 </trans-unit> 2367 </trans-unit>
2368 <trans-unit id="d1a04ba05116499d4cf59a48a282a8bcbf5b622d">
2369 <source>Once you delete your account, there is no going back. Please be certain.</source>
2370 <target>一旦您刪除了您的帳號,就ä¸èƒ½å›žé ­äº†ã€‚請考慮清楚。</target>
2371 <context-group name="null">
2372 <context context-type="linenumber">2</context>
2373 </context-group>
2374 </trans-unit>
2207 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45"> 2375 <trans-unit id="9a2f889dde4574a6883c853d1034e75891b28c45">
2208 <source>Delete your account</source> 2376 <source>Delete your account</source>
2209 <target>刪除您的帳號</target> 2377 <target>刪除您的帳號</target>
@@ -2339,6 +2507,13 @@ When you will upload a video in this channel, the video support field will be au
2339 <context context-type="linenumber">6</context> 2507 <context context-type="linenumber">6</context>
2340 </context-group> 2508 </context-group>
2341 </trans-unit> 2509 </trans-unit>
2510 <trans-unit id="5e420747842373fa99a75a7a18df068cc81e46fb">
2511 <source>Scheduled</source>
2512 <target>排定</target>
2513 <context-group name="null">
2514 <context context-type="linenumber">25</context>
2515 </context-group>
2516 </trans-unit>
2342 <trans-unit id="f7ac2376749c7985f94f0fc89ba75ea624de1215"> 2517 <trans-unit id="f7ac2376749c7985f94f0fc89ba75ea624de1215">
2343 <source>Publish will be available when upload is finished</source> 2518 <source>Publish will be available when upload is finished</source>
2344 <target>上傳完æˆæ™‚å°‡å¯ç™¼ä½ˆ</target> 2519 <target>上傳完æˆæ™‚å°‡å¯ç™¼ä½ˆ</target>
@@ -2360,6 +2535,13 @@ When you will upload a video in this channel, the video support field will be au
2360 <context context-type="linenumber">6</context> 2535 <context context-type="linenumber">6</context>
2361 </context-group> 2536 </context-group>
2362 </trans-unit> 2537 </trans-unit>
2538 <trans-unit id="1b518e7f8c067fa55ea797bb1b35b4a2d31dccbc">
2539 <source>Or</source>
2540 <target>或</target>
2541 <context-group name="null">
2542 <context context-type="linenumber">11</context>
2543 </context-group>
2544 </trans-unit>
2363 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9"> 2545 <trans-unit id="0d6558176587662e9bb3b79cca57d42591cf82f9">
2364 <source>Paste magnet URI</source> 2546 <source>Paste magnet URI</source>
2365 <target>貼上ç£åŠ›é€£çµ</target> 2547 <target>貼上ç£åŠ›é€£çµ</target>
@@ -2471,6 +2653,20 @@ When you will upload a video in this channel, the video support field will be au
2471 <context context-type="linenumber">18</context> 2653 <context context-type="linenumber">18</context>
2472 </context-group> 2654 </context-group>
2473 </trans-unit> 2655 </trans-unit>
2656 <trans-unit id="9bdd535a2817bf0b843a124bf65e4992625e7ecf">
2657 <source>+ Tag</source>
2658 <target>+ 標籤</target>
2659 <context-group name="null">
2660 <context context-type="linenumber">21</context>
2661 </context-group>
2662 </trans-unit>
2663 <trans-unit id="8389e9cde2928cc27aaecbdee818a255bf7984b0">
2664 <source>Enter a new tag</source>
2665 <target>輸入新標籤</target>
2666 <context-group name="null">
2667 <context context-type="linenumber">21</context>
2668 </context-group>
2669 </trans-unit>
2474 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e"> 2670 <trans-unit id="50f53834157770b8205ada0e7a6e235211e4765e">
2475 <source>Video descriptions are truncated by default and require manual action to expand them.</source> 2671 <source>Video descriptions are truncated by default and require manual action to expand them.</source>
2476 <target>é è¨­æƒ…æ³ä¸‹ï¼Œå½±ç‰‡æè¿°ä¸æœƒå®Œæ•´é¡¯ç¤ºï¼Œéœ€è¦æ‰‹å‹•æ“作æ‰èƒ½å±•é–‹å®ƒå€‘。</target> 2672 <target>é è¨­æƒ…æ³ä¸‹ï¼Œå½±ç‰‡æè¿°ä¸æœƒå®Œæ•´é¡¯ç¤ºï¼Œéœ€è¦æ‰‹å‹•æ“作æ‰èƒ½å±•é–‹å®ƒå€‘。</target>
@@ -2541,6 +2737,20 @@ When you will upload a video in this channel, the video support field will be au
2541 <context context-type="linenumber">155</context> 2737 <context context-type="linenumber">155</context>
2542 </context-group> 2738 </context-group>
2543 </trans-unit> 2739 </trans-unit>
2740 <trans-unit id="e687f6387adbaf61ce650b58f0e60ca42d843cee">
2741 <source>Already uploaded ✔</source>
2742 <target>已上傳 ✔</target>
2743 <context-group name="null">
2744 <context context-type="linenumber">159</context>
2745 </context-group>
2746 </trans-unit>
2747 <trans-unit id="ca4588e185413b2fc77dbe35c861cc540b11b9ad">
2748 <source>Will be created on update</source>
2749 <target>將在更新時建立</target>
2750 <context-group name="null">
2751 <context context-type="linenumber">167</context>
2752 </context-group>
2753 </trans-unit>
2544 <trans-unit id="308a79679d012938a625e41fdd4b804fe42b57b9"> 2754 <trans-unit id="308a79679d012938a625e41fdd4b804fe42b57b9">
2545 <source>Cancel create</source> 2755 <source>Cancel create</source>
2546 <target>å–消建立</target> 2756 <target>å–消建立</target>
@@ -2548,6 +2758,13 @@ When you will upload a video in this channel, the video support field will be au
2548 <context context-type="linenumber">169</context> 2758 <context context-type="linenumber">169</context>
2549 </context-group> 2759 </context-group>
2550 </trans-unit> 2760 </trans-unit>
2761 <trans-unit id="b6bfdd386cb0b560d697c93555d8cd8cab00c393">
2762 <source>Will be deleted on update</source>
2763 <target>將在更新時刪除</target>
2764 <context-group name="null">
2765 <context context-type="linenumber">175</context>
2766 </context-group>
2767 </trans-unit>
2551 <trans-unit id="88395fc0137e46a9853cf16762bf5a87687d0d0c"> 2768 <trans-unit id="88395fc0137e46a9853cf16762bf5a87687d0d0c">
2552 <source>Cancel deletion</source> 2769 <source>Cancel deletion</source>
2553 <target>å–消刪除</target> 2770 <target>å–消刪除</target>
@@ -2555,6 +2772,17 @@ When you will upload a video in this channel, the video support field will be au
2555 <context context-type="linenumber">177</context> 2772 <context context-type="linenumber">177</context>
2556 </context-group> 2773 </context-group>
2557 </trans-unit> 2774 </trans-unit>
2775 <trans-unit id="82f867b2607d45ba36de11d4c8b53d7177122ee0">
2776 <source>
2777 No captions for now.
2778 </source>
2779 <target>
2780 ç¾åœ¨æ²’有字幕。
2781 </target>
2782 <context-group name="null">
2783 <context context-type="linenumber">182</context>
2784 </context-group>
2785 </trans-unit>
2558 <trans-unit id="0c720e0dd9e6c60095f961cb714f47e8c0090f93"> 2786 <trans-unit id="0c720e0dd9e6c60095f961cb714f47e8c0090f93">
2559 <source>Captions</source> 2787 <source>Captions</source>
2560 <target>字幕</target> 2788 <target>字幕</target>
@@ -2869,13 +3097,6 @@ When you will upload a video in this channel, the video support field will be au
2869 <context context-type="linenumber">134</context> 3097 <context context-type="linenumber">134</context>
2870 </context-group> 3098 </context-group>
2871 </trans-unit> 3099 </trans-unit>
2872 <trans-unit id="be73b652c2707f42b5d780d0c7b8fc5ea0b1706c">
2873 <source>Go to the account page</source>
2874 <target>到帳號é é¢</target>
2875 <context-group name="null">
2876 <context context-type="linenumber">133</context>
2877 </context-group>
2878 </trans-unit>
2879 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b"> 3100 <trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b">
2880 <source>Show more</source> 3101 <source>Show more</source>
2881 <target>顯示更多</target> 3102 <target>顯示更多</target>
@@ -2955,25 +3176,18 @@ When you will upload a video in this channel, the video support field will be au
2955 <context context-type="linenumber">3</context> 3176 <context context-type="linenumber">3</context>
2956 </context-group> 3177 </context-group>
2957 </trans-unit> 3178 </trans-unit>
2958 <trans-unit id="da8a38f72f92714cf8680560c99982dc651480d5">
2959 <source>You can either comment on the page of your instance where this video is federated with your PeerTube account, or via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; and find back the video. Direct commenting capabilities are being worked on in &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt;.</source>
2960 <target>您å¯ä»¥å°æ­¤å½±ç‰‡ä½¿ç”¨æœ‰èˆ‡æ‚¨çš„ PeerTube 帳號在互è¯çš„實體上評論,或是é€éŽä»»ä½•æ”¯æ´ ActivityPub 的互è¯å¯¦é«”來進行。例如 Mastodon 或 Pleroma,您å¯ä»¥åœ¨æœå°‹æ¬„輸入 &lt;strong&gt;@<x id="INTERPOLATION" equiv-text="{{video.account.name}}"/>@<x id="INTERPOLATION_1" equiv-text="{{video.account.host}}"/>&lt;/strong&gt; 並æœå°‹å½±ç‰‡ã€‚直接評論的功能還在 &lt;a href='https://github.com/Chocobozzz/PeerTube/issues/224'&gt;#224&lt;/a&gt; 上繼續努力實ç¾ã€‚</target>
2961 <context-group name="null">
2962 <context context-type="linenumber">8</context>
2963 </context-group>
2964 </trans-unit>
2965 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4"> 3179 <trans-unit id="17810e68b0ba21e62e61eecfaf0a93b2c91033b4">
2966 <source>No comments.</source> 3180 <source>No comments.</source>
2967 <target>沒有評論。</target> 3181 <target>沒有評論。</target>
2968 <context-group name="null"> 3182 <context-group name="null">
2969 <context context-type="linenumber">18</context> 3183 <context context-type="linenumber">17</context>
2970 </context-group> 3184 </context-group>
2971 </trans-unit> 3185 </trans-unit>
2972 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e"> 3186 <trans-unit id="69c081796209e45e26af91152ec9bd0a65ec261e">
2973 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source> 3187 <source>View all <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> replies</source>
2974 <target>檢視全部 <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> 個回覆</target> 3188 <target>檢視全部 <x id="INTERPOLATION" equiv-text="{{ comment.totalReplies }}"/> 個回覆</target>
2975 <context-group name="null"> 3189 <context-group name="null">
2976 <context context-type="linenumber">55</context> 3190 <context context-type="linenumber">54</context>
2977 </context-group> 3191 </context-group>
2978 </trans-unit> 3192 </trans-unit>
2979 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828"> 3193 <trans-unit id="b7fccd922d6473725247ed85a9fdf96fe6794828">
@@ -2984,7 +3198,7 @@ When you will upload a video in this channel, the video support field will be au
2984 è©•è«–å·²åœç”¨ã€‚ 3198 è©•è«–å·²åœç”¨ã€‚
2985 </target> 3199 </target>
2986 <context-group name="null"> 3200 <context-group name="null">
2987 <context context-type="linenumber">64</context> 3201 <context context-type="linenumber">63</context>
2988 </context-group> 3202 </context-group>
2989 </trans-unit> 3203 </trans-unit>
2990 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e"> 3204 <trans-unit id="db79255cb8757e9e945ba5f901a2b67e4189016e">
@@ -3005,6 +3219,57 @@ When you will upload a video in this channel, the video support field will be au
3005 <context context-type="linenumber">20</context> 3219 <context context-type="linenumber">20</context>
3006 </context-group> 3220 </context-group>
3007 </trans-unit> 3221 </trans-unit>
3222 <trans-unit id="8b2bb53dfb5f059f2b68cc4ac00661a865909135">
3223 <source>You are one step away from commenting</source>
3224 <target>您離評論åªæœ‰ä¸€æ­¥ä¹‹é™</target>
3225 <context-group name="null">
3226 <context context-type="linenumber">28</context>
3227 </context-group>
3228 </trans-unit>
3229 <trans-unit id="7984a44ce86b961f4f18c9a58c638f5e8f07a225">
3230 <source>
3231 If you have an account on this instance, you can login:
3232 </source>
3233 <target>
3234 如果您在此實體上有帳號,您å¯ä»¥ç™»å…¥ï¼š
3235 </target>
3236 <context-group name="null">
3237 <context context-type="linenumber">32</context>
3238 </context-group>
3239 </trans-unit>
3240 <trans-unit id="afe0ad39fee662489f1033e53aea3e16a7e89228">
3241 <source>login to comment</source>
3242 <target>登入以評論</target>
3243 <context-group name="null">
3244 <context context-type="linenumber">35</context>
3245 </context-group>
3246 </trans-unit>
3247 <trans-unit id="a5a3f17c9b4876952d78363834d57280c8684e7c">
3248 <source>
3249 Otherwise you can comment using an account on any ActivityPub-compatible instance.
3250 On most platforms, you can find the video by typing its URL in the search bar and then comment it
3251 from within the software's interface.
3252 </source>
3253 <target>
3254 或者您也å¯ä»¥ä½¿ç”¨åœ¨ä»»ä½•ç›¸å®¹æ–¼ ActibityPub 的實體上的帳號評論。
3255 在大多數的平臺上,您å¯ä»¥é€éŽè¼¸å…¥ URL 來找到影片,從而å°å…¶è©•è«–
3256 從軟體的界é¢ã€‚
3257 </target>
3258 <context-group name="null">
3259 <context context-type="linenumber">36</context>
3260 </context-group>
3261 </trans-unit>
3262 <trans-unit id="968b02fbc645be799727de0d1ec3c6f9b11b20eb">
3263 <source>
3264 If you have an account on Mastodon or Pleroma, you can open it directly in their interface:
3265 </source>
3266 <target>
3267 如果您有 Mastodon 或 Pleroma 的帳號,您å¯ä»¥åœ¨ä»–們的界é¢ä¸­ç›´æŽ¥é–‹å•Ÿå®ƒï¼š
3268 </target>
3269 <context-group name="null">
3270 <context context-type="linenumber">41</context>
3271 </context-group>
3272 </trans-unit>
3008 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285"> 3273 <trans-unit id="a607fab03e11b0e07c1640e11a1b02d7af06b285">
3009 <source>Highlighted comment</source> 3274 <source>Highlighted comment</source>
3010 <target>å·²çªé¡¯çš„è©•è«–</target> 3275 <target>å·²çªé¡¯çš„è©•è«–</target>
@@ -3054,37 +3319,44 @@ When you will upload a video in this channel, the video support field will be au
3054 <context context-type="linenumber">1</context> 3319 <context context-type="linenumber">1</context>
3055 </context-group> 3320 </context-group>
3056 </trans-unit> 3321 </trans-unit>
3057 <trans-unit id="27a71a0aee65258179e90ecf0841c0a68f95beed"> 3322 <trans-unit id="d9fc2b03f04056671d7d4ffcac7197189d959cd6">
3058 <source>You set custom <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>. </source> 3323 <source>240p</source>
3059 <target>您å¯ä»¥è¨­å®šè‡ªè¨‚ <x id="INTERPOLATION" equiv-text="{{customizationsText}}"/>。</target> 3324 <target>240p</target>
3325 <context-group name="null">
3326 <context context-type="linenumber">1</context>
3327 </context-group>
3328 </trans-unit>
3329 <trans-unit id="c8cfad7e7a16c57c42535331b65cb7de40d8402e">
3330 <source>360p</source>
3331 <target>360p</target>
3060 <context-group name="null"> 3332 <context-group name="null">
3061 <context context-type="linenumber">1</context> 3333 <context context-type="linenumber">1</context>
3062 </context-group> 3334 </context-group>
3063 </trans-unit> 3335 </trans-unit>
3064 <trans-unit id="865bc18d22e223101ede0916967ead0abd515d0e"> 3336 <trans-unit id="48f0af5a0d0bea4e84b27eaf41b19c85a531c2a5">
3065 <source>This could lead to security issues or bugs if you do not understand it. </source> 3337 <source>480p</source>
3066 <target>這å¯èƒ½æœƒå°Žè‡´å®‰å…¨æ€§å•é¡Œæˆ–臭蟲。若您ä¸äº†è§£å®ƒã€‚</target> 3338 <target>480p</target>
3067 <context-group name="null"> 3339 <context-group name="null">
3068 <context context-type="linenumber">1</context> 3340 <context context-type="linenumber">1</context>
3069 </context-group> 3341 </context-group>
3070 </trans-unit> 3342 </trans-unit>
3071 <trans-unit id="262e18b2efb5912651684a522fc08d77c99972d0"> 3343 <trans-unit id="6f06138daf6363746ff26bfc0cb2491c09cdfdf2">
3072 <source>Are you sure you want to update the configuration?</source> 3344 <source>720p</source>
3073 <target>您確定您想è¦æ›´æ–°è¨­å®šå—Žï¼Ÿ</target> 3345 <target>720p</target>
3074 <context-group name="null"> 3346 <context-group name="null">
3075 <context context-type="linenumber">1</context> 3347 <context context-type="linenumber">1</context>
3076 </context-group> 3348 </context-group>
3077 </trans-unit> 3349 </trans-unit>
3078 <trans-unit id="1ae0ab69f5c19d179282c8d882fd2f3c00e29119"> 3350 <trans-unit id="65c94f9beb6fe957808c40060da280cc7ace7ab9">
3079 <source>Please type</source> 3351 <source>1080p</source>
3080 <target>請輸入</target> 3352 <target>1080p</target>
3081 <context-group name="null"> 3353 <context-group name="null">
3082 <context context-type="linenumber">1</context> 3354 <context context-type="linenumber">1</context>
3083 </context-group> 3355 </context-group>
3084 </trans-unit> 3356 </trans-unit>
3085 <trans-unit id="75f4bb68ee4c6b282abfd9d8d32be22c6202794d"> 3357 <trans-unit id="421a937491f19774d17eefa1d24816dae1a9f111">
3086 <source>to confirm.</source> 3358 <source>Auto (via ffmpeg)</source>
3087 <target>以確èªã</target> 3359 <target>èªå‹•ï¼ˆééŽ ffmpeg)</target>
3088 <context-group name="null"> 3360 <context-group name="null">
3089 <context context-type="linenumber">1</context> 3361 <context context-type="linenumber">1</context>
3090 </context-group> 3362 </context-group>
@@ -3110,6 +3382,69 @@ When you will upload a video in this channel, the video support field will be au
3110 <context context-type="linenumber">1</context> 3382 <context context-type="linenumber">1</context>
3111 </context-group> 3383 </context-group>
3112 </trans-unit> 3384 </trans-unit>
3385 <trans-unit id="54adc67482fdaa0d361a2992bc91e064dc61cc9a">
3386 <source>100MB</source>
3387 <target>100MB</target>
3388 <context-group name="null">
3389 <context context-type="linenumber">1</context>
3390 </context-group>
3391 </trans-unit>
3392 <trans-unit id="cd34ef1f476d5422f49f6ed429f61fc1cfcb1174">
3393 <source>500MB</source>
3394 <target>500MB</target>
3395 <context-group name="null">
3396 <context context-type="linenumber">1</context>
3397 </context-group>
3398 </trans-unit>
3399 <trans-unit id="4a47b4beea31cac6e5970b6bc522902f545acc8b">
3400 <source>1GB</source>
3401 <target>1GB</target>
3402 <context-group name="null">
3403 <context context-type="linenumber">1</context>
3404 </context-group>
3405 </trans-unit>
3406 <trans-unit id="b26d0cac75638623098ab7e06e16b096d1f55cc8">
3407 <source>5GB</source>
3408 <target>5GB</target>
3409 <context-group name="null">
3410 <context context-type="linenumber">1</context>
3411 </context-group>
3412 </trans-unit>
3413 <trans-unit id="f9fc4e7ec6743cb6f69bea2d0859a655ed44ffae">
3414 <source>20GB</source>
3415 <target>20GB</target>
3416 <context-group name="null">
3417 <context context-type="linenumber">1</context>
3418 </context-group>
3419 </trans-unit>
3420 <trans-unit id="a56e3f92fe16d97ee4f05051ea61c466ecb51d5e">
3421 <source>50GB</source>
3422 <target>50GB</target>
3423 <context-group name="null">
3424 <context context-type="linenumber">1</context>
3425 </context-group>
3426 </trans-unit>
3427 <trans-unit id="31dcc0c63f6234ace8caa84ae1abc33d4022122d">
3428 <source>10MB</source>
3429 <target>10MB</target>
3430 <context-group name="null">
3431 <context context-type="linenumber">1</context>
3432 </context-group>
3433 </trans-unit>
3434 <trans-unit id="f2f968b6f2199b919f567702c6f23b43e5ea71af">
3435 <source>50MB</source>
3436 <target>50MB</target>
3437 <context-group name="null">
3438 <context context-type="linenumber">1</context>
3439 </context-group>
3440 </trans-unit>
3441 <trans-unit id="c31575424fe1b2a57064413f3eda7ce657c46c8a">
3442 <source>2GB</source>
3443 <target>2GB</target>
3444 <context-group name="null">
3445 <context context-type="linenumber">1</context>
3446 </context-group>
3447 </trans-unit>
3113 <trans-unit id="fc5731a28a99b25c62d43333ceebb250d60aff84"> 3448 <trans-unit id="fc5731a28a99b25c62d43333ceebb250d60aff84">
3114 <source><x id="INTERPOLATION" equiv-text="{{host}}"/> is not valid</source> 3449 <source><x id="INTERPOLATION" equiv-text="{{host}}"/> is not valid</source>
3115 <target><x id="INTERPOLATION" equiv-text="{{host}}"/> 無效</target> 3450 <target><x id="INTERPOLATION" equiv-text="{{host}}"/> 無效</target>
@@ -3173,6 +3508,27 @@ When you will upload a video in this channel, the video support field will be au
3173 <context context-type="linenumber">1</context> 3508 <context context-type="linenumber">1</context>
3174 </context-group> 3509 </context-group>
3175 </trans-unit> 3510 </trans-unit>
3511 <trans-unit id="4d8f527638f3e0b518a96e07d41d886bcce01246">
3512 <source>enabled</source>
3513 <target>已啟用</target>
3514 <context-group name="null">
3515 <context context-type="linenumber">1</context>
3516 </context-group>
3517 </trans-unit>
3518 <trans-unit id="795733aac948794cadeb3be6386882efac2c38ad">
3519 <source>disabled</source>
3520 <target>å·²åœç”¨</target>
3521 <context-group name="null">
3522 <context context-type="linenumber">1</context>
3523 </context-group>
3524 </trans-unit>
3525 <trans-unit id="1123807fc813c816404598147173403d00117557">
3526 <source>Redundancy for <x id="INTERPOLATION" equiv-text="{{host}}"/> is <x id="INTERPOLATION_1" equiv-text="{{stateLabel}}"/></source>
3527 <target>冗餘 <x id="INTERPOLATION" equiv-text="{{host}}"/> is <x id="INTERPOLATION_1" equiv-text="{{stateLabel}}"/></target>
3528 <context-group name="null">
3529 <context context-type="linenumber">1</context>
3530 </context-group>
3531 </trans-unit>
3176 <trans-unit id="800cd3cdf47751b576587259ba3a1bc0a7f435b6"> 3532 <trans-unit id="800cd3cdf47751b576587259ba3a1bc0a7f435b6">
3177 <source>Comment updated.</source> 3533 <source>Comment updated.</source>
3178 <target>評論已更新。</target> 3534 <target>評論已更新。</target>
@@ -3250,20 +3606,6 @@ When you will upload a video in this channel, the video support field will be au
3250 <context context-type="linenumber">1</context> 3606 <context context-type="linenumber">1</context>
3251 </context-group> 3607 </context-group>
3252 </trans-unit> 3608 </trans-unit>
3253 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
3254 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
3255 <target>使用者 <x id="INTERPOLATION" equiv-text="{{username}}"/> 已阻擋。</target>
3256 <context-group name="null">
3257 <context context-type="linenumber">1</context>
3258 </context-group>
3259 </trans-unit>
3260 <trans-unit id="6a323f80f9d90a32db8ce52cc82075938c3c36f0">
3261 <source>Ban</source>
3262 <target>阻擋</target>
3263 <context-group name="null">
3264 <context context-type="linenumber">1</context>
3265 </context-group>
3266 </trans-unit>
3267 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8"> 3609 <trans-unit id="50dc7afa2305131cdbdb384cfc1f2a5f0f4647d8">
3268 <source>Unban</source> 3610 <source>Unban</source>
3269 <target>å–消阻擋</target> 3611 <target>å–消阻擋</target>
@@ -3278,20 +3620,6 @@ When you will upload a video in this channel, the video support field will be au
3278 <context context-type="linenumber">1</context> 3620 <context context-type="linenumber">1</context>
3279 </context-group> 3621 </context-group>
3280 </trans-unit> 3622 </trans-unit>
3281 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
3282 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
3283 <target>您真的想è¦å–消阻擋 <x id="INTERPOLATION" equiv-text="{{username}}"/> 嗎?</target>
3284 <context-group name="null">
3285 <context context-type="linenumber">1</context>
3286 </context-group>
3287 </trans-unit>
3288 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
3289 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
3290 <target>使用者 <x id="INTERPOLATION" equiv-text="{{username}}"/> å·²å–消阻擋。</target>
3291 <context-group name="null">
3292 <context context-type="linenumber">1</context>
3293 </context-group>
3294 </trans-unit>
3295 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11"> 3623 <trans-unit id="911fc197949e47aa5f0541627bc319f59edd9d11">
3296 <source>You cannot delete root.</source> 3624 <source>You cannot delete root.</source>
3297 <target>您無法刪除 root。</target> 3625 <target>您無法刪除 root。</target>
@@ -3299,13 +3627,6 @@ When you will upload a video in this channel, the video support field will be au
3299 <context context-type="linenumber">1</context> 3627 <context context-type="linenumber">1</context>
3300 </context-group> 3628 </context-group>
3301 </trans-unit> 3629 </trans-unit>
3302 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
3303 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
3304 <target>使用者 <x id="INTERPOLATION" equiv-text="{{username}}"/> 已刪除。</target>
3305 <context-group name="null">
3306 <context context-type="linenumber">1</context>
3307 </context-group>
3308 </trans-unit>
3309 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e"> 3630 <trans-unit id="507192ee1fa84aefed02d603caada2d84927023e">
3310 <source>Ownership accepted</source> 3631 <source>Ownership accepted</source>
3311 <target>所有權已接å—</target> 3632 <target>所有權已接å—</target>
@@ -3320,6 +3641,13 @@ When you will upload a video in this channel, the video support field will be au
3320 <context context-type="linenumber">1</context> 3641 <context context-type="linenumber">1</context>
3321 </context-group> 3642 </context-group>
3322 </trans-unit> 3643 </trans-unit>
3644 <trans-unit id="466fc8cf56fd4e4e90fec4b900ef083d52bec38c">
3645 <source>You current password is invalid.</source>
3646 <target>您目å‰å¯†ç¢¼ç„¡æ•ˆã€‚</target>
3647 <context-group name="null">
3648 <context context-type="linenumber">1</context>
3649 </context-group>
3650 </trans-unit>
3323 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047"> 3651 <trans-unit id="ca8e8cf0f1686604db3b6a2ebadab7f7b426a047">
3324 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source> 3652 <source>Are you sure you want to delete your account? This will delete all you data, including channels, videos etc.</source>
3325 <target>您確定è¦åˆªé™¤æ‚¨çš„帳號?這將會刪除您所有的資料,包å«é »é“ã€å½±ç‰‡ç­‰ã€‚</target> 3653 <target>您確定è¦åˆªé™¤æ‚¨çš„帳號?這將會刪除您所有的資料,包å«é »é“ã€å½±ç‰‡ç­‰ã€‚</target>
@@ -3539,6 +3867,13 @@ When you will upload a video in this channel, the video support field will be au
3539 <context context-type="linenumber">1</context> 3867 <context context-type="linenumber">1</context>
3540 </context-group> 3868 </context-group>
3541 </trans-unit> 3869 </trans-unit>
3870 <trans-unit id="5c0c574151dc8671d9199980ee04bf65aec3b452">
3871 <source>Keyboard Shortcuts:</source>
3872 <target>éµç›¤å¿«æ·éµï¼š</target>
3873 <context-group name="null">
3874 <context context-type="linenumber">1</context>
3875 </context-group>
3876 </trans-unit>
3542 <trans-unit id="247071f6c9233b7e5bc1d8f46795ab6b032f1fbe"> 3877 <trans-unit id="247071f6c9233b7e5bc1d8f46795ab6b032f1fbe">
3543 <source>Incorrect username or password.</source> 3878 <source>Incorrect username or password.</source>
3544 <target>ä¸æ­£ç¢ºçš„使用者å稱或密碼。</target> 3879 <target>ä¸æ­£ç¢ºçš„使用者å稱或密碼。</target>
@@ -4680,6 +5015,41 @@ When you will upload a video in this channel, the video support field will be au
4680 <context context-type="linenumber">1</context> 5015 <context context-type="linenumber">1</context>
4681 </context-group> 5016 </context-group>
4682 </trans-unit> 5017 </trans-unit>
5018 <trans-unit id="3ab99e62550869aebc85661fca2faf46785263dd">
5019 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> banned.</source>
5020 <target>使用者 <x id="INTERPOLATION" equiv-text="{{username}}"/> 已阻擋。</target>
5021 <context-group name="null">
5022 <context context-type="linenumber">1</context>
5023 </context-group>
5024 </trans-unit>
5025 <trans-unit id="faafee0c03ad25c8a43aa91bd5d98185b67ff734">
5026 <source>Do you really want to unban <x id="INTERPOLATION" equiv-text="{{username}}"/>?</source>
5027 <target>您真的想è¦å–消阻擋 <x id="INTERPOLATION" equiv-text="{{username}}"/> 嗎?</target>
5028 <context-group name="null">
5029 <context context-type="linenumber">1</context>
5030 </context-group>
5031 </trans-unit>
5032 <trans-unit id="925ba9946b7b256a586f0fcbe3e04fa7a0dee7bd">
5033 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> unbanned.</source>
5034 <target>使用者 <x id="INTERPOLATION" equiv-text="{{username}}"/> å·²å–消阻擋。</target>
5035 <context-group name="null">
5036 <context context-type="linenumber">1</context>
5037 </context-group>
5038 </trans-unit>
5039 <trans-unit id="ad07d34d4aadfe03c964cec02ca1d3a921e6b603">
5040 <source>If you remove this user, you will not be able to create another with the same username!</source>
5041 <target>如果您移除此使用者,您就沒辦法å†ä½¿ç”¨åŒä¸€å€‹ä½¿ç”¨è€…å稱來建立å¦ä¸€å€‹ä½¿ç”¨è€…ï¼</target>
5042 <context-group name="null">
5043 <context context-type="linenumber">1</context>
5044 </context-group>
5045 </trans-unit>
5046 <trans-unit id="28220fae6799ab98ef6b41af449aa9680082357a">
5047 <source>User <x id="INTERPOLATION" equiv-text="{{username}}"/> deleted.</source>
5048 <target>使用者 <x id="INTERPOLATION" equiv-text="{{username}}"/> 已刪除。</target>
5049 <context-group name="null">
5050 <context context-type="linenumber">1</context>
5051 </context-group>
5052 </trans-unit>
4683 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac"> 5053 <trans-unit id="0c0f5bbcd2386018ec057877f9d3c5c2c9880cac">
4684 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source> 5054 <source>Request is too large for the server. Please contact you administrator if you want to increase the limit size.</source>
4685 <target>請求å°ä¼ºæœå™¨ä¾†èªªå¤ªå¤§ã€‚若您想è¦å¢žåŠ é™åˆ¶å¤§å°ï¼Œè«‹è¯çµ¡æ‚¨çš„管ç†å“¡ã€‚</target> 5055 <target>請求å°ä¼ºæœå™¨ä¾†èªªå¤ªå¤§ã€‚若您想è¦å¢žåŠ é™åˆ¶å¤§å°ï¼Œè«‹è¯çµ¡æ‚¨çš„管ç†å“¡ã€‚</target>
@@ -4736,6 +5106,13 @@ When you will upload a video in this channel, the video support field will be au
4736 <context context-type="linenumber">1</context> 5106 <context context-type="linenumber">1</context>
4737 </context-group> 5107 </context-group>
4738 </trans-unit> 5108 </trans-unit>
5109 <trans-unit id="38c877fb0a5fdcadc379256953ad2d1eb8233fdf">
5110 <source>Moderator</source>
5111 <target>主æŒäºº</target>
5112 <context-group name="null">
5113 <context context-type="linenumber">1</context>
5114 </context-group>
5115 </trans-unit>
4739 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb"> 5116 <trans-unit id="d4195053fd38eacf6dee1fc507296928978cc8fb">
4740 <source>Only I can see this video</source> 5117 <source>Only I can see this video</source>
4741 <target>åªæœ‰æˆ‘å¯ä»¥çœ‹è¦‹æ­¤å½±ç‰‡</target> 5118 <target>åªæœ‰æˆ‘å¯ä»¥çœ‹è¦‹æ­¤å½±ç‰‡</target>
diff --git a/client/src/locale/target/player_de_DE.json b/client/src/locale/target/player_de_DE.json
index afcc2a286..fb4847590 100644
--- a/client/src/locale/target/player_de_DE.json
+++ b/client/src/locale/target/player_de_DE.json
@@ -1 +1 @@
{"Audio Player":"Audio-Player","Video Player":"Video-Player","Play":"Wiedergabe","Pause":"Wiedergabe pausieren","Replay":"Nochmal","Current Time":"Aktuelle Zeit","Duration":"Länge","Remaining Time":"Verbleibende Zeit","Stream Type":"Streamtyp","LIVE":"Live","Loaded":"Geladen","Progress":"Fortschritt","Progress Bar":"Fortschrittsanzeige","progress bar timing: currentTime={1} duration={2}":"{1} von {2}","Fullscreen":"Vollbildschirm","Non-Fullscreen":"Kein Vollbildschirm","Mute":"Ton aus","Unmute":"Ton an","Playback Rate":"Wiedergabegeschwindigkeit","Subtitles":"Untertitel","subtitles off":"Untertitel aus","Captions":"Untertitel für Gehörlose und Schwerhörige","captions off":"Untertitel für Gehörlose und Schwerhörige aus","Chapters":"Kapitel","Descriptions":"Beschreibungen","descriptions off":"Beschreibungen aus","Audio Track":"Tonspur","Volume Level":"Lautstärke","You aborted the media playback":"Du hast die Medienwiedergabe abgebrochen.","A network error caused the media download to fail part-way.":"Ein Netzwerkfehler hat das Herunterladen des Videos teilweise verhindert.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Es ist ein Fehler beim Laden aufgetreten. Das kann an einer fehlenden Netzwerk-Verbindung liegen oder daran, dass das Format nicht unterstützt wird.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Die Medienwiedergabe wurde abgebrochen, weil die erhaltenen Daten entweder fehlerhaft sind vom aktuellen Browser nicht unterstützt werden.","No compatible source was found for this media.":"Es konnte keine kompatible Quelle gefunden werden.","The media is encrypted and we do not have the keys to decrypt it.":"Die Daten sind verschlüsselt und es liegen keine Schlüssel dafür vor.","Play Video":"Video abspielen","Close":"Schließen","Close Modal Dialog":"Dialogfenster schließen","Modal Window":"Dialogfenster","This is a modal window":"Dies ist ein Dialogfenster.","This modal can be closed by pressing the Escape key or activating the close button.":"Dieses Dialogfenster kann geschlossen werden, indem man die Escape-Taste drückt oder auf die Schaltfläche zum Schließen des Fenster klickt.",", opens captions settings dialog":", öffnet die Einstellungen für Untertitel für Gehörlose und Schwerhörige",", opens subtitles settings dialog":", öffnet die Einstellungen für Untertitel",", opens descriptions settings dialog":", öffnet die Einstellungen für Beschreibungen",", selected":", ausgewählt","captions settings":"Einstellungen für Untertitel für Gehörlose und Schwerhörige","subtitles settings":"Einstellungen für Untertitel","descriptions settings":"Einstellungen für Beschreibungen","Text":"Text","White":"Weiß","Black":"Schwarz","Red":"Rot","Green":"Grün","Blue":"Blau","Yellow":"Gelb","Magenta":"Magenta","Cyan":"Cyan","Background":"Hintergrund","Window":"Fenster","Transparent":"durchsichtig","Semi-Transparent":"halbdurchsichtig","Opaque":"undurchsichtig","Font Size":"Schriftgröße","Text Edge Style":"Textkantenstil","None":"Nichts","Raised":"Erhöht","Depressed":"Erniedrigt","Uniform":"Gleichmäßig","Dropshadow":"Schlagschatten","Font Family":"Schriftart","Proportional Sans-Serif":"Proportionale Grotesk","Monospace Sans-Serif":"Nichtproportionale Grotesk","Proportional Serif":"Proportionale Serifen-Schrit","Monospace Serif":"Nichtproportionale Serifen-Schrift","Casual":"Gewöhnlich","Script":"Schreibschrift","Small Caps":"Kapitälchen","Reset":"Zurücksetzen","restore all settings to the default values":"Alle Einstellungen auf ihre Standardwerte zurücksetzen","Done":"Fertig","Caption Settings Dialog":"Dialogfenster für Einstellungen für Untertitel für Gehörlose und Schwerhörige","Beginning of dialog window. Escape will cancel and close the window.":"Anfang des Dialogfensters. Mit der Escape-Taste wird das Fenster ohne Speichern geschlossen.","End of dialog window.":"Ende des Dialogfensters.","{1} is loading.":"{1} lädt.","Quality":"Qualität","Auto":"Automatisch","Speed":"Geschwindigkeit","Subtitles/CC":"Untertitel","peers":"Peers","Go to the video page":"Zur Video-Seite gehen","Settings":"Einstellungen","Uses P2P, others may know you are watching this video.":"Nutzt Peer-to-Peer-Technologie, daher könnten andere wissen, dass du dieses Video ansiehst.","Copy the video URL":"Video-URL kopieren","Copy the video URL at the current time":"Video-URL an dieser Stelle kopieren","Copy embed code":"Einbettungscode kopieren"} \ No newline at end of file {"Audio Player":"Audio-Player","Video Player":"Video-Player","Play":"Wiedergabe","Pause":"Wiedergabe pausieren","Replay":"Nochmal","Current Time":"Aktuelle Zeit","Duration":"Länge","Remaining Time":"Verbleibende Zeit","Stream Type":"Streamtyp","LIVE":"Live","Loaded":"Geladen","Progress":"Fortschritt","Progress Bar":"Fortschrittsanzeige","progress bar timing: currentTime={1} duration={2}":"{1} von {2}","Fullscreen":"Vollbild","Non-Fullscreen":"Vollbild beenden","Mute":"Ton aus","Unmute":"Ton an","Playback Rate":"Wiedergabegeschwindigkeit","Subtitles":"Untertitel","subtitles off":"Untertitel aus","Captions":"Untertitel für Gehörlose und Schwerhörige","captions off":"Untertitel für Gehörlose und Schwerhörige aus","Chapters":"Kapitel","Descriptions":"Beschreibungen","descriptions off":"Beschreibungen aus","Audio Track":"Tonspur","Volume Level":"Lautstärke","You aborted the media playback":"Du hast die Medienwiedergabe abgebrochen.","A network error caused the media download to fail part-way.":"Ein Netzwerkfehler hat das Herunterladen des Videos teilweise verhindert.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Es ist ein Fehler beim Laden aufgetreten. Das kann an einer fehlenden Netzwerk-Verbindung liegen oder daran, dass das Format nicht unterstützt wird.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Die Medienwiedergabe wurde abgebrochen, weil die erhaltenen Daten entweder fehlerhaft sind vom aktuellen Browser nicht unterstützt werden.","No compatible source was found for this media.":"Es konnte keine kompatible Quelle gefunden werden.","The media is encrypted and we do not have the keys to decrypt it.":"Die Daten sind verschlüsselt und es liegen keine Schlüssel dafür vor.","Play Video":"Video abspielen","Close":"Schließen","Close Modal Dialog":"Dialogfenster schließen","Modal Window":"Dialogfenster","This is a modal window":"Dies ist ein Dialogfenster.","This modal can be closed by pressing the Escape key or activating the close button.":"Dieses Dialogfenster kann geschlossen werden, indem man die Escape-Taste drückt oder auf die Schaltfläche zum Schließen des Fenster klickt.",", opens captions settings dialog":", öffnet die Einstellungen für Untertitel für Gehörlose und Schwerhörige",", opens subtitles settings dialog":", öffnet die Einstellungen für Untertitel",", opens descriptions settings dialog":", öffnet die Einstellungen für Beschreibungen",", selected":", ausgewählt","captions settings":"Einstellungen für Untertitel für Gehörlose und Schwerhörige","subtitles settings":"Einstellungen für Untertitel","descriptions settings":"Einstellungen für Beschreibungen","Text":"Text","White":"Weiß","Black":"Schwarz","Red":"Rot","Green":"Grün","Blue":"Blau","Yellow":"Gelb","Magenta":"Magenta","Cyan":"Cyan","Background":"Hintergrund","Window":"Fenster","Transparent":"durchsichtig","Semi-Transparent":"halbdurchsichtig","Opaque":"undurchsichtig","Font Size":"Schriftgröße","Text Edge Style":"Textkantenstil","None":"Nichts","Raised":"Erhöht","Depressed":"Erniedrigt","Uniform":"Gleichmäßig","Dropshadow":"Schlagschatten","Font Family":"Schriftart","Proportional Sans-Serif":"Proportionale Grotesk","Monospace Sans-Serif":"Nichtproportionale Grotesk","Proportional Serif":"Proportionale Serifen-Schrit","Monospace Serif":"Nichtproportionale Serifen-Schrift","Casual":"Gewöhnlich","Script":"Schreibschrift","Small Caps":"Kapitälchen","Reset":"Zurücksetzen","restore all settings to the default values":"Alle Einstellungen auf ihre Standardwerte zurücksetzen","Done":"Fertig","Caption Settings Dialog":"Dialogfenster für Einstellungen für Untertitel für Gehörlose und Schwerhörige","Beginning of dialog window. Escape will cancel and close the window.":"Anfang des Dialogfensters. Mit der Escape-Taste wird das Fenster ohne Speichern geschlossen.","End of dialog window.":"Ende des Dialogfensters.","{1} is loading.":"{1} lädt.","Quality":"Qualität","Auto":"Automatisch","Speed":"Geschwindigkeit","Subtitles/CC":"Untertitel","peers":"Peers","Go to the video page":"Zur Video-Seite gehen","Settings":"Einstellungen","Uses P2P, others may know you are watching this video.":"Nutzt Peer-to-Peer-Technologie, daher könnten andere wissen, dass du dieses Video ansiehst.","Copy the video URL":"Video-URL kopieren","Copy the video URL at the current time":"Video-URL an dieser Stelle kopieren","Copy embed code":"Einbettungscode kopieren"} \ No newline at end of file
diff --git a/client/src/locale/target/player_sv_SE.json b/client/src/locale/target/player_sv_SE.json
index 5bf4cb63a..b7582e244 100644
--- a/client/src/locale/target/player_sv_SE.json
+++ b/client/src/locale/target/player_sv_SE.json
@@ -1 +1 @@
{"Audio Player":"Ljudspelare","Video Player":"Videospelare","Play":"Spela upp","Pause":"Pausa","Replay":"Spela igen","Current Time":"Nuvarande tid","Duration":"Längd","Remaining Time":"Kvarvarande tid","Stream Type":"Strömtyp","LIVE":"DIREKT","Loaded":"Laddad","Progress":"Förlopp","Progress Bar":"Förloppsindikator","progress bar timing: currentTime={1} duration={2}":"{1} av {2}","Fullscreen":"Fullskärm","Non-Fullscreen":"Inte fullskärm","Mute":"Stäng av ljudet","Unmute":"Sätt på ljudet","Playback Rate":"Uppspelningshastighet","Subtitles":"Undertexter","subtitles off":"undertexter av","Captions":"Textning","captions off":"textning av","Chapters":"Kapitel","Descriptions":"Beskrivningar","descriptions off":"beskrivningar av","Audio Track":"Ljudspår","Volume Level":"Volymnivå","You aborted the media playback":"Du avbröt uppspelningen","A network error caused the media download to fail part-way.":"Ett nätverksfel gjorde att nedladdningen av mediafilen misslyckades","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Mediet kunde inte laddas, antingen på grund av ett server- eller nätverksfel eller eftersom formatet inte stöds.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Uppspelningen avbröts på grund av ett korruptionsfel eller eftersom mediet använde funktioner din webbläsare inte stöder.","No compatible source was found for this media.":"Ingen kompatibel källa hittades för detta media.","The media is encrypted and we do not have the keys to decrypt it.":"Mediet är krypterat och vi har inte nycklarna för att dekryptera.","Play Video":"Spela upp video","Close":"Stäng","Close Modal Dialog":"Stäng dialogruta","Modal Window":"Dialogrutan","This is a modal window":"Detta är en dialogruta","This modal can be closed by pressing the Escape key or activating the close button.":"Dialogrutan kan stängas genom att trycka Escape eller klicka på stäng-knappen.",", opens captions settings dialog":", öppnar dialogrutan för inställning av textning",", opens subtitles settings dialog":", öppnar dialogrutan för inställning av undertexter",", opens descriptions settings dialog":", öppnar dialogrutan för inställning av beskrivningar",", selected":", vald","captions settings":"textningsinställningar","subtitles settings":"inställningar för undertexter","descriptions settings":"inställningar för beskrivning","Text":"Text","White":"Vit","Black":"Svart","Red":"Röd","Green":"Grön","Blue":"Blå","Yellow":"Gul","Magenta":"Magenta","Cyan":"Cyan","Background":"Bakgrund","Window":"Fönster","Transparent":"Genomskinlig","Semi-Transparent":"Halvgenomskinlig","Opaque":"Ogenomskinlig","Font Size":"Textstorlek","Text Edge Style":"Textkanter","None":"Ingen","Raised":"Upphöjd","Depressed":"Nedsänkt","Uniform":"Enhetlig","Dropshadow":"Skuggning","Font Family":"Typsnitt","Proportional Sans-Serif":"Proportionerlig sans-serif","Monospace Sans-Serif":"Monospace sans-serif","Proportional Serif":"Proportionerlig serif","Monospace Serif":"Monospace serif","Casual":"Ledig stil","Script":"Skript","Small Caps":"Små kapitäler","Reset":"Återställ","restore all settings to the default values":"återställ alla inställningar till sina standardvärden","Done":"Klar","Caption Settings Dialog":"Dialogruta för textningsinställningar","Beginning of dialog window. Escape will cancel and close the window.":"Början av dialogruta. Tryck Escape för att avbryta och stänga fönstret.","End of dialog window.":"Slut på dialogruta.","{1} is loading.":"{1} laddar.","Quality":"Kvalitet","Auto":"Auto","Speed":"Hastighet","Subtitles/CC":"Undertext","peers":"peers","Go to the video page":"Gå till videosidan","Settings":"Inställningar","Uses P2P, others may know you are watching this video.":"Använder P2P, andra kan veta att du tittar på den här videon.","Copy the video URL":"Kopiera videons URL","Copy the video URL at the current time":"Kopiera videons URL vid den här tidpunkten","Copy embed code":"Kopiera inbäddningskod"} \ No newline at end of file {"Audio Player":"Ljudspelare","Video Player":"Videospelare","Play":"Spela","Pause":"Pausa","Replay":"Spela igen","Current Time":"Aktuell tid","Duration":"Total tid","Remaining Time":"Återstående tid","Stream Type":"Strömningstyp","LIVE":"DIREKT","Loaded":"Laddad","Progress":"Förlopp","Progress Bar":"Förloppsindikator","progress bar timing: currentTime={1} duration={2}":"{1} av {2}","Fullscreen":"Fullskärm","Non-Fullscreen":"Inte fullskärm","Mute":"Ljud av","Unmute":"Ljud på","Playback Rate":"Uppspelningshastighet","Subtitles":"Undertexter på","subtitles off":"Undertexter av","Captions":"Textning","captions off":"Textning av","Chapters":"Kapitel","Descriptions":"Beskrivningar på","descriptions off":"Beskrivningar av","Audio Track":"Ljudspår","Volume Level":"Volymnivå","You aborted the media playback":"Du avbröt uppspelningen.","A network error caused the media download to fail part-way.":"Ett nätverksfel gjorde att nedladdningen av videon misslyckades.","The media could not be loaded, either because the server or network failed or because the format is not supported.":"Det gick inte att ladda videon, antingen på grund av ett server- eller nätverksfel, eller för att formatet inte stöds.","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"Uppspelningen avbröts på grund av att videon är skadad eller för att videon använder funktioner som din webbläsare inte stöder.","No compatible source was found for this media.":"Det gick inte att hitta någon kompatibel källa för videon.","The media is encrypted and we do not have the keys to decrypt it.":"Videon är krypterad och vi har inte dekrypteringsnycklarna.","Play Video":"Spela upp video","Close":"Stäng","Close Modal Dialog":"Stäng dialogruta","Modal Window":"Dialogrutan","This is a modal window":"Detta är en dialogruta","This modal can be closed by pressing the Escape key or activating the close button.":"Dialogrutan kan stängas genom att trycka Escape eller klicka på stäng-knappen.",", opens captions settings dialog":", öppnar dialogrutan för inställning av textning",", opens subtitles settings dialog":", öppnar dialogrutan för inställning av undertexter",", opens descriptions settings dialog":", öppnar dialogrutan för inställning av beskrivningar",", selected":", vald","captions settings":"textningsinställningar","subtitles settings":"inställningar för undertexter","descriptions settings":"inställningar för beskrivning","Text":"Text","White":"Vit","Black":"Svart","Red":"Röd","Green":"Grön","Blue":"Blå","Yellow":"Gul","Magenta":"Magenta","Cyan":"Cyan","Background":"Bakgrund","Window":"Fönster","Transparent":"Genomskinlig","Semi-Transparent":"Halvgenomskinlig","Opaque":"Ogenomskinlig","Font Size":"Textstorlek","Text Edge Style":"Textkanter","None":"Ingen","Raised":"Upphöjd","Depressed":"Nedsänkt","Uniform":"Enhetlig","Dropshadow":"Skuggning","Font Family":"Typsnitt","Proportional Sans-Serif":"Proportionerlig sans-serif","Monospace Sans-Serif":"Monospace sans-serif","Proportional Serif":"Proportionerlig serif","Monospace Serif":"Monospace serif","Casual":"Ledig stil","Script":"Skript","Small Caps":"Små kapitäler","Reset":"Återställ","restore all settings to the default values":"återställ alla inställningar till sina standardvärden","Done":"Klar","Caption Settings Dialog":"Dialogruta för textningsinställningar","Beginning of dialog window. Escape will cancel and close the window.":"Början av dialogruta. Tryck Escape för att avbryta och stänga fönstret.","End of dialog window.":"Slut på dialogruta.","{1} is loading.":"{1} laddar.","Quality":"Kvalitet","Auto":"Auto","Speed":"Hastighet","Subtitles/CC":"Undertext","peers":"peers","Go to the video page":"Gå till videosidan","Settings":"Inställningar","Uses P2P, others may know you are watching this video.":"Använder P2P, andra kan veta att du tittar på den här videon.","Copy the video URL":"Kopiera videons URL","Copy the video URL at the current time":"Kopiera videons URL vid den här tidpunkten","Copy embed code":"Kopiera inbäddningskod"} \ No newline at end of file
diff --git a/client/src/locale/target/player_zh_Hans_CN.json b/client/src/locale/target/player_zh_Hans_CN.json
index b7ed005d8..4d7fcf047 100644
--- a/client/src/locale/target/player_zh_Hans_CN.json
+++ b/client/src/locale/target/player_zh_Hans_CN.json
@@ -1 +1 @@
{"Audio Player":"音ä¹æ’­æ”¾å™¨","Video Player":"视频播放器","Play":"播放","Pause":"æš‚åœ","Replay":"é‡æ”¾","Current Time":"当å‰æ—¶é—´","Duration":"时长","Remaining Time":"剩余时间","Stream Type":"媒体æµç±»åž‹","LIVE":"ç›´æ’­","Loaded":"加载完毕","Progress":"进度","Progress Bar":"进度æ¡","progress bar timing: currentTime={1} duration={2}":"已加载 {1},总时长 {2}","Fullscreen":"å…¨å±","Non-Fullscreen":"退出全å±","Mute":"é™éŸ³","Unmute":"å–消é™éŸ³","Playback Rate":"播放速度","Subtitles":"字幕","subtitles off":"关闭字幕","Captions":"内嵌字幕","captions off":"关闭内嵌字幕","Chapters":"节目段è½","Descriptions":"æè¿°","descriptions off":"关闭æè¿°","Audio Track":"音轨","Volume Level":"音é‡","You aborted the media playback":"视频播放被终止","A network error caused the media download to fail part-way.":"网络错误导致视频下载中途失败。","The media could not be loaded, either because the server or network failed or because the format is not supported.":"视频因格å¼ä¸æ”¯æŒæˆ–者æœåŠ¡å™¨æˆ–网络的问题无法加载。","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"由于视频文件æŸå或是该视频使用了你的æµè§ˆå™¨ä¸æ”¯æŒçš„功能,播放终止。","No compatible source was found for this media.":"无法找到此视频兼容的æºã€‚","The media is encrypted and we do not have the keys to decrypt it.":"视频已加密,无法解密。","Play Video":"播放视频","Close":"关闭","Close Modal Dialog":"关闭弹窗","Modal Window":"弹窗","This is a modal window":"这是一个弹窗","This modal can be closed by pressing the Escape key or activating the close button.":"å¯ä»¥æŒ‰ ESC 按键或å¯ç”¨å…³é—­æŒ‰é’®æ¥å…³é—­æ­¤å¼¹çª—。",", opens captions settings dialog":",开å¯æ ‡é¢˜è®¾ç½®å¼¹çª—",", opens subtitles settings dialog":",开å¯å­—幕设置弹窗",", opens descriptions settings dialog":",开å¯æ述设置弹窗",", selected":",选择","captions settings":"内嵌字幕设置","subtitles settings":"字幕设置","descriptions settings":"æ述设置","Text":"文字","White":"白","Black":"黑","Red":"红","Green":"绿","Blue":"è“","Yellow":"黄","Magenta":"紫红","Cyan":"é’","Background":"背景","Window":"视窗","Transparent":"é€æ˜Ž","Semi-Transparent":"åŠé€æ˜Ž","Opaque":"ä¸é€æ˜Ž","Font Size":"字体尺寸","Text Edge Style":"字体边缘样å¼","None":"æ— ","Raised":"浮雕","Depressed":"压低","Uniform":"å‡åŒ€","Dropshadow":"下阴影","Font Family":"字体库","Proportional Sans-Serif":"比例无细体","Monospace Sans-Serif":"å•é—´éš”无细体","Proportional Serif":"比例细体","Monospace Serif":"å•é—´éš”细体","Casual":"舒适","Script":"手写体","Small Caps":"å°åž‹å¤§å†™å­—体","Reset":"é‡å¯","restore all settings to the default values":"æ¢å¤å…¨éƒ¨è®¾ç½®è‡³é¢„设值","Done":"完æˆ","Caption Settings Dialog":"字幕设置弹窗","Beginning of dialog window. Escape will cancel and close the window.":"开始对è¯å¼¹çª—。离开会å–消并关闭弹窗。","End of dialog window.":"结æŸå¯¹è¯å¼¹çª—","{1} is loading.":"正在加载 {1}。","Quality":"画质","Auto":"自动","Speed":"速度","Subtitles/CC":"字幕","peers":" ä½ç”¨æˆ·","Go to the video page":"进入视频页é¢","Settings":"设置","Uses P2P, others may know you are watching this video.":"使用 P2P 时,其他人将能够知é“您正在观看此视频。","Copy the video URL":"å¤åˆ¶è§†é¢‘网å€","Copy the video URL at the current time":"å¤åˆ¶å½“å‰æ—¶é—´çš„视频网å€","Copy embed code":"å¤åˆ¶åµŒå…¥ä»£ç "} \ No newline at end of file {"Audio Player":"音ä¹æ’­æ”¾å™¨","Video Player":"视频播放器","Play":"播放","Pause":"æš‚åœ","Replay":"é‡æ”¾","Current Time":"当å‰æ—¶é—´","Duration":"时长","Remaining Time":"剩余时间","Stream Type":"媒体æµç±»åž‹","LIVE":"ç›´æ’­","Loaded":"加载完毕","Progress":"进度","Progress Bar":"进度æ¡","progress bar timing: currentTime={1} duration={2}":"已加载 {1},总时长 {2}","Fullscreen":"å…¨å±","Non-Fullscreen":"退出全å±","Mute":"é™éŸ³","Unmute":"å–消é™éŸ³","Playback Rate":"播放速度","Subtitles":"字幕","subtitles off":"关闭字幕","Captions":"内嵌字幕","captions off":"关闭内嵌字幕","Chapters":"节目段è½","Descriptions":"æè¿°","descriptions off":"关闭æè¿°","Audio Track":"音轨","Volume Level":"音é‡","You aborted the media playback":"视频播放被终止","A network error caused the media download to fail part-way.":"网络错误导致视频下载中途失败。","The media could not be loaded, either because the server or network failed or because the format is not supported.":"视频因格å¼ä¸æ”¯æŒæˆ–者æœåŠ¡å™¨æˆ–网络的问题无法加载。","The media playback was aborted due to a corruption problem or because the media used features your browser did not support.":"由于视频文件æŸå或是该视频使用了你的æµè§ˆå™¨ä¸æ”¯æŒçš„功能,播放终止。","No compatible source was found for this media.":"无法找到此视频兼容的æºã€‚","The media is encrypted and we do not have the keys to decrypt it.":"视频已加密,无法解密。","Play Video":"播放视频","Close":"关闭","Close Modal Dialog":"关闭弹窗","Modal Window":"弹窗","This is a modal window":"这是一个弹窗","This modal can be closed by pressing the Escape key or activating the close button.":"å¯ä»¥æŒ‰ ESC 按键或å¯ç”¨å…³é—­æŒ‰é’®æ¥å…³é—­æ­¤å¼¹çª—。",", opens captions settings dialog":",开å¯æ ‡é¢˜è®¾ç½®å¼¹çª—",", opens subtitles settings dialog":",开å¯å­—幕设置弹窗",", opens descriptions settings dialog":",开å¯æ述设置弹窗",", selected":",选择","captions settings":"内嵌字幕设置","subtitles settings":"字幕设置","descriptions settings":"æ述设置","Text":"文字","White":"白","Black":"黑","Red":"红","Green":"绿","Blue":"è“","Yellow":"黄","Magenta":"紫红","Cyan":"é’","Background":"背景","Window":"视窗","Transparent":"é€æ˜Ž","Semi-Transparent":"åŠé€æ˜Ž","Opaque":"ä¸é€æ˜Ž","Font Size":"字体尺寸","Text Edge Style":"字体边缘样å¼","None":"æ— ","Raised":"浮雕","Depressed":"压低","Uniform":"å‡åŒ€","Dropshadow":"下阴影","Font Family":"字体库","Proportional Sans-Serif":"比例无细体","Monospace Sans-Serif":"å•é—´éš”无细体","Proportional Serif":"比例细体","Monospace Serif":"å•é—´éš”细体","Casual":"舒适","Script":"手写体","Small Caps":"å°åž‹å¤§å†™å­—体","Reset":"é‡å¯","restore all settings to the default values":"æ¢å¤å…¨éƒ¨è®¾ç½®è‡³é¢„设值","Done":"完æˆ","Caption Settings Dialog":"字幕设置弹窗","Beginning of dialog window. Escape will cancel and close the window.":"开始对è¯å¼¹çª—。离开会å–消并关闭弹窗。","End of dialog window.":"结æŸå¯¹è¯å¼¹çª—","{1} is loading.":"正在加载 {1}。","Quality":"画质","Auto":"自动","Speed":"速度","Subtitles/CC":"字幕","peers":"个æ¥æº","Go to the video page":"进入视频页é¢","Settings":"设置","Uses P2P, others may know you are watching this video.":"使用 P2P 时,其他人将能够知é“您正在观看此视频。","Copy the video URL":"å¤åˆ¶è§†é¢‘网å€","Copy the video URL at the current time":"å¤åˆ¶å½“å‰æ—¶é—´çš„视频网å€","Copy embed code":"å¤åˆ¶åµŒå…¥ä»£ç "} \ No newline at end of file
diff --git a/client/src/locale/target/server_ar_001.xml b/client/src/locale/target/server_ar_001.xml
index 83ceaae51..ad8a23a32 100644
--- a/client/src/locale/target/server_ar_001.xml
+++ b/client/src/locale/target/server_ar_001.xml
@@ -43,10 +43,6 @@
43 <source>Entertainment</source> 43 <source>Entertainment</source>
44 <target>ترÙيه</target> 44 <target>ترÙيه</target>
45 </trans-unit> 45 </trans-unit>
46 <trans-unit id="News">
47 <source>News</source>
48 <target>أخبار</target>
49 </trans-unit>
50 <trans-unit id="How To"> 46 <trans-unit id="How To">
51 <source>How To</source> 47 <source>How To</source>
52 <target>كيÙ</target> 48 <target>كيÙ</target>
diff --git a/client/src/locale/target/server_ca_ES.json b/client/src/locale/target/server_ca_ES.json
index 95994e618..f20f0fa61 100644
--- a/client/src/locale/target/server_ca_ES.json
+++ b/client/src/locale/target/server_ca_ES.json
@@ -1 +1 @@
{"Music":"Música","Films":"Pel·lícules","Vehicles":"Vehicles","Art":"Art","Sports":"Esports","Travels":"Viatges","Gaming":"Jocs","People":"Gent","Comedy":"Comèdia","Entertainment":"Entreteniment","News":"Notícies","How To":"Com fer","Education":"Educació","Activism":"Activisme","Science & Technology":"Ciència i tecnologia","Animals":"Animals","Kids":"Nens","Food":"Aliments","Attribution":"Atribució","Attribution - Share Alike":"Atribució: Comparteix-ho per igual","Attribution - No Derivatives":"Atribució - Sense Derivats","Attribution - Non Commercial":"Atribució: No Comercial","Attribution - Non Commercial - Share Alike":"Atribució - No Comercial - Compartir per igual","Attribution - Non Commercial - No Derivatives":"Attribution - No Comercial - Sense Derivats","Public Domain Dedication":"Dedicació de Domini Públic","Public":"Públic","Unlisted":"No llistat","Private":"Privat","Misc":"Miscel·lània","Unknown":"Desconegut","Afar":"Àfar","Abkhazian":"Abkhaz","Afrikaans":"Afrikaans","Akan":"Àkan","Amharic":"Amhàric","Arabic":"Àrab","Aragonese":"Aragonès","American Sign Language":"Llengua de Signes Nord-Americana","Assamese":"Assamès","Avaric":"Àvar","Aymara":"Aimara","Azerbaijani":"Àzeri","Bashkir":"Baixkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalí","British Sign Language":"Llengua de Signes Britànica","Bislama":"Bislama","Tibetan":"Tibetà","Bosnian":"Bosnià","Breton":"Bretó","Bulgarian":"Búlgar","Brazilian Sign Language":"Llengua de Signes Brasiler","Catalan":"Català","Czech":"Txec","Chamorro":"Chamorro","Chechen":"Txetxè","Chuvash":"Txuvaix","Cornish":"Korni","Corsican":"Cors","Cree":"Cree","Czech Sign Language":"Llengua de Signes Txec","Chinese Sign Language":"Llengua de Signes Xinesa","Welsh":"Gal·lès","Danish":"Danès","German":"Alemany","Dhivehi":"Divehi","Danish Sign Language":"Llengua de Signes Danesa","Dzongkha":"Dzongka","Modern Greek (1453-)":"Grec modern (1453-)","English":"Anglès","Estonian":"Estonià","Basque":"Basc","Ewe":"Ewe","Faroese":"Feroès","Persian":"Persa","Fijian":"Fijià","Finnish":"Finlandès","French":"Francès","Western Frisian":"Frisó occidental","French Sign Language":"Llengua de Signes Francesa","Fulah":"Ful","Scottish Gaelic":"Gaèlic Escocès","Irish":"Irlandès","Galician":"Gallec","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Llengua de Signes Alemanya","Gujarati":"Gujarati","Haitian":"Haitià","Hausa":"Haussa","Serbo-Croatian":"Serbocroat","Hebrew":"Hebreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Hongarès","Armenian":"Armeni","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonesi","Inupiaq":"Inupiaq","Icelandic":"Islandès","Italian":"Italià","Javanese":"Javanès","Japanese":"Japonès","Japanese Sign Language":"Llengua de Signes Japonesa","Kalaallisut":"Kalaallisut","Kannada":"Kannada","Kashmiri":"Caixmiri","Georgian":"Georgià","Kanuri":"Kanuri","Kazakh":"Kazakh","Khmer":"Khmer","Kikuyu":"Kikuiu","Kinyarwanda":"Ruandès","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Koongo","Korean":"Coreà","Kuanyama":"Kwanyama","Kurdish":"Kurd","Lao":"Laosià","Latvian":"Letó","Limburgan":"Limburgan","Lingala":"Lingala","Lithuanian":"Lituà","Luxembourgish":"Luxemburguès","Luba-Katanga":"Luba","Ganda":"Ganda","Marshallese":"Marshallès","Malayalam":"Malaialam","Marathi":"Marathi","Macedonian":"Macedoni","Malagasy":"Malgache","Maltese":"Maltès","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malai (macro llengua)","Burmese":"Birmà","Nauru":"Nauruà","Navajo":"Navaho","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalès (macro llengua)","Dutch":"Holandès","Norwegian Nynorsk":"Noruec Nynorsk","Norwegian Bokmål":"Noruec Bokmål","Norwegian":"Noruec","Nyanja":"Nyanga","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macro llengua)","Oromo":"Oromo","Ossetian":"Osset","Panjabi":"Panjabi","Pakistan Sign Language":"Llengua de Signes de Pakistan","Polish":"Polonès","Portuguese":"Portuguès","Pushto":"Paixtu","Quechua":"Quítxua","Romansh":"Romanx","Romanian":"Romanès","Russian Sign Language":"Llengua de Signes Russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","Saudi Arabian Sign Language":"Llengua de Signes de l'Aràbia Saudita","South African Sign Language":"Llengua de Signes Sud-Africana","Sinhala":"Singalès","Slovak":"Eslovac","Slovenian":"Eslovè","Northern Sami":"Sami del Nord","Samoan":"Samoà","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho del Sud","Spanish":"Espanyol","Albanian":"Albanès","Sardinian":"Sard","Serbian":"Serbi","Swati":"Swati","Sundanese":"Sundanès","Swahili (macrolanguage)":"Suahili (macro llengua)","Swedish":"Suec","Swedish Sign Language":"Llengua de Signes Sueca","Tahitian":"Tahití","Tamil":"Tàmil","Tatar":"Tàtar","Telugu":"Telugu","Tajik":"Tadjik","Tagalog":"Tagàlog","Thai":"Tailandès","Tigrinya":"Tigrinya","Tonga (Tonga Islands)":"Tongalès (arxipèlag de Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turcman","Turkish":"Turc","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraïnès","Urdu":"Urdú","Uzbek":"Uzbek","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Való","Wolof":"Wòlof","Xhosa":"Xosa","Yiddish":"Jiddisch","Yoruba":"Ioruba","Zhuang":"Zhuang","Chinese":"Xinès","Zulu":"Zulu"} \ No newline at end of file {"Music":"Música","Films":"Pel·lícules","Vehicles":"Vehicles","Art":"Art","Sports":"Esports","Travels":"Viatges","Gaming":"Jocs","People":"Gent","Comedy":"Comèdia","Entertainment":"Entreteniment","How To":"Com fer","Education":"Educació","Activism":"Activisme","Science & Technology":"Ciència i tecnologia","Animals":"Animals","Kids":"Nens","Food":"Aliments","Attribution":"Atribució","Attribution - Share Alike":"Atribució: Comparteix-ho per igual","Attribution - No Derivatives":"Atribució - Sense Derivats","Attribution - Non Commercial":"Atribució: No Comercial","Attribution - Non Commercial - Share Alike":"Atribució - No Comercial - Compartir per igual","Attribution - Non Commercial - No Derivatives":"Attribution - No Comercial - Sense Derivats","Public Domain Dedication":"Dedicació de Domini Públic","Public":"Públic","Unlisted":"No llistat","Private":"Privat","Misc":"Miscel·lània","Unknown":"Desconegut","Afar":"Àfar","Abkhazian":"Abkhaz","Afrikaans":"Afrikaans","Akan":"Àkan","Amharic":"Amhàric","Arabic":"Àrab","Aragonese":"Aragonès","American Sign Language":"Llengua de Signes Nord-Americana","Assamese":"Assamès","Avaric":"Àvar","Aymara":"Aimara","Azerbaijani":"Àzeri","Bashkir":"Baixkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalí","British Sign Language":"Llengua de Signes Britànica","Bislama":"Bislama","Tibetan":"Tibetà","Bosnian":"Bosnià","Breton":"Bretó","Bulgarian":"Búlgar","Brazilian Sign Language":"Llengua de Signes Brasiler","Catalan":"Català","Czech":"Txec","Chamorro":"Chamorro","Chechen":"Txetxè","Chuvash":"Txuvaix","Cornish":"Korni","Corsican":"Cors","Cree":"Cree","Czech Sign Language":"Llengua de Signes Txec","Chinese Sign Language":"Llengua de Signes Xinesa","Welsh":"Gal·lès","Danish":"Danès","German":"Alemany","Dhivehi":"Divehi","Danish Sign Language":"Llengua de Signes Danesa","Dzongkha":"Dzongka","Modern Greek (1453-)":"Grec modern (1453-)","English":"Anglès","Estonian":"Estonià","Basque":"Basc","Ewe":"Ewe","Faroese":"Feroès","Persian":"Persa","Fijian":"Fijià","Finnish":"Finlandès","French":"Francès","Western Frisian":"Frisó occidental","French Sign Language":"Llengua de Signes Francesa","Fulah":"Ful","Scottish Gaelic":"Gaèlic Escocès","Irish":"Irlandès","Galician":"Gallec","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Llengua de Signes Alemanya","Gujarati":"Gujarati","Haitian":"Haitià","Hausa":"Haussa","Serbo-Croatian":"Serbocroat","Hebrew":"Hebreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Hongarès","Armenian":"Armeni","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonesi","Inupiaq":"Inupiaq","Icelandic":"Islandès","Italian":"Italià","Javanese":"Javanès","Japanese":"Japonès","Japanese Sign Language":"Llengua de Signes Japonesa","Kalaallisut":"Kalaallisut","Kannada":"Kannada","Kashmiri":"Caixmiri","Georgian":"Georgià","Kanuri":"Kanuri","Kazakh":"Kazakh","Khmer":"Khmer","Kikuyu":"Kikuiu","Kinyarwanda":"Ruandès","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Koongo","Korean":"Coreà","Kuanyama":"Kwanyama","Kurdish":"Kurd","Lao":"Laosià","Latvian":"Letó","Limburgan":"Limburgan","Lingala":"Lingala","Lithuanian":"Lituà","Luxembourgish":"Luxemburguès","Luba-Katanga":"Luba","Ganda":"Ganda","Marshallese":"Marshallès","Malayalam":"Malaialam","Marathi":"Marathi","Macedonian":"Macedoni","Malagasy":"Malgache","Maltese":"Maltès","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malai (macro llengua)","Burmese":"Birmà","Nauru":"Nauruà","Navajo":"Navaho","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalès (macro llengua)","Dutch":"Holandès","Norwegian Nynorsk":"Noruec Nynorsk","Norwegian Bokmål":"Noruec Bokmål","Norwegian":"Noruec","Nyanja":"Nyanga","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macro llengua)","Oromo":"Oromo","Ossetian":"Osset","Panjabi":"Panjabi","Pakistan Sign Language":"Llengua de Signes de Pakistan","Polish":"Polonès","Portuguese":"Portuguès","Pushto":"Paixtu","Quechua":"Quítxua","Romansh":"Romanx","Romanian":"Romanès","Russian Sign Language":"Llengua de Signes Russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","Saudi Arabian Sign Language":"Llengua de Signes de l'Aràbia Saudita","South African Sign Language":"Llengua de Signes Sud-Africana","Sinhala":"Singalès","Slovak":"Eslovac","Slovenian":"Eslovè","Northern Sami":"Sami del Nord","Samoan":"Samoà","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho del Sud","Spanish":"Espanyol","Albanian":"Albanès","Sardinian":"Sard","Serbian":"Serbi","Swati":"Swati","Sundanese":"Sundanès","Swahili (macrolanguage)":"Suahili (macro llengua)","Swedish":"Suec","Swedish Sign Language":"Llengua de Signes Sueca","Tahitian":"Tahití","Tamil":"Tàmil","Tatar":"Tàtar","Telugu":"Telugu","Tajik":"Tadjik","Tagalog":"Tagàlog","Thai":"Tailandès","Tigrinya":"Tigrinya","Tonga (Tonga Islands)":"Tongalès (arxipèlag de Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turcman","Turkish":"Turc","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraïnès","Urdu":"Urdú","Uzbek":"Uzbek","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Való","Wolof":"Wòlof","Xhosa":"Xosa","Yiddish":"Jiddisch","Yoruba":"Ioruba","Zhuang":"Zhuang","Chinese":"Xinès","Zulu":"Zulu"} \ No newline at end of file
diff --git a/client/src/locale/target/server_cs_CZ.json b/client/src/locale/target/server_cs_CZ.json
index 593983c46..f78bf2815 100644
--- a/client/src/locale/target/server_cs_CZ.json
+++ b/client/src/locale/target/server_cs_CZ.json
@@ -1 +1 @@
{"Music":"Hudba","Films":"Filmy","Vehicles":"Auta","Art":"UmÄ›ní","Sports":"Sport","Travels":"Cestování","Gaming":"Hry","People":"Lidé","Comedy":"Komedie","Entertainment":"Zábava","News":"Zprávy","How To":"Jak na to","Education":"Výukové","Activism":"Aktivismus","Science & Technology":"VÄ›da a technologie","Animals":"Zvířata","Kids":"DÄ›ti","Food":"Jídlo a vaÅ™ení","Attribution":"UveÄte autora","Attribution - Share Alike":"UveÄte autora - Zachovejte licenci","Attribution - No Derivatives":"UveÄte autora - Nezpracovávejte","Attribution - Non Commercial":"UveÄte autora - NeÅ¡iÅ™te dílo komerÄnÄ›","Attribution - Non Commercial - Share Alike":"UveÄte autora - NeÅ¡iÅ™te dílo komerÄnÄ› - Zachovejte licenci","Attribution - Non Commercial - No Derivatives":"UveÄte autora - NeÅ¡iÅ™te dílo komerÄnÄ› - Nezpracovávejte","Public Domain Dedication":"Volné dílo","Public":"VeÅ™ejné","Unlisted":"Nezobrazeno","Private":"Soukromé","Misc":"Různé","Unknown":"Neznámé","Afar":"AfarÅ¡tina","Abkhazian":"AbcházÅ¡tina","Afrikaans":"AfrikánÅ¡tina","Akan":"AkanÅ¡tina","Amharic":"AmharÅ¡tina","Arabic":"ArabÅ¡tina","Aragonese":"AragonÅ¡tina","American Sign Language":"Americká znaková Å™eÄ","Assamese":"ÃsámÅ¡tina","Avaric":"AvarÅ¡tina","Kotava":"Kotava","Aymara":"AjmarÅ¡tina","Azerbaijani":"ÃzerbájdžánÅ¡tina","Bashkir":"BaÅ¡kirÅ¡tina","Bambara":"BambarÅ¡tina","Belarusian":"BÄ›loruÅ¡tina","Bengali":"BengálÅ¡tina","British Sign Language":"Britská znaková Å™eÄ","Bislama":"BislamÅ¡tina","Tibetan":"TibetÅ¡tina","Bosnian":"BosenÅ¡tina","Breton":"BretonÅ¡tina","Bulgarian":"BulharÅ¡tina","Brazilian Sign Language":"Brazilská znaková Å™eÄ","Catalan":"KatalánÅ¡tina","Czech":"ÄŒeÅ¡tina","Chamorro":"Chamorro","Chechen":"ÄŒeÄenÅ¡tina","Chuvash":"ÄŒuvaÅ¡tina","Cornish":"KornÅ¡tina","Corsican":"KorsiÄtina","Cree":"KríjÅ¡tina","Czech Sign Language":"ÄŒeská znaková Å™eÄ","Chinese Sign Language":"Čínská znaková Å™eÄ","Welsh":"VelÅ¡tina","Danish":"DánÅ¡tina","German":"NÄ›mÄina","Dhivehi":"MaledivÅ¡tina","Danish Sign Language":"Dánská znaková Å™eÄ","Dzongkha":"Dzongkä","Modern Greek (1453-)":"Moderní Å™eÄtina","English":"AngliÄtina","Esperanto":"Esperanto","Estonian":"EstonÅ¡tina","Basque":"BaskiÄtina","Ewe":"EveÅ¡tina","Faroese":"FaerÅ¡tina","Persian":"PerÅ¡tina","Fijian":"FidžijÅ¡tina","Finnish":"FinÅ¡tina","French":"FrancouzÅ¡tina","Western Frisian":"Západofríština","French Sign Language":"Francouzská znaková Å™eÄ","Fulah":"FulbÅ¡tina","Scottish Gaelic":"Skotská gaelÅ¡tina","Irish":"IrÅ¡tina","Galician":"GalicijÅ¡tina","Manx":"ManÅ¡tina","Guarani":"GuaranÅ¡tina","German Sign Language":"NÄ›mecká znaková Å™eÄ","Gujarati":"GudžarátÅ¡tina","Haitian":"Haitská kreolÅ¡tina","Hausa":"HauÅ¡tina","Serbo-Croatian":"SrcbochorvatÅ¡inta","Hebrew":"HebrejÅ¡tina","Herero":"Herero","Hindi":"HindÅ¡tina","Hiri Motu":"Hiri Motu","Croatian":"ChorvatÅ¡tina","Hungarian":"MaÄarÅ¡tina","Armenian":"ArménÅ¡tina","Igbo":"IgboÅ¡tina","Sichuan Yi":"Nuosu","Inuktitut":"InuktitutÅ¡tina","Indonesian":"Indonéština","Inupiaq":"Inupiaq","Icelandic":"IslandÅ¡tina","Italian":"ItalÅ¡tina","Javanese":"JavánÅ¡tina","Lojban":"Lojban","Japanese":"JaponÅ¡tina","Japanese Sign Language":"Japonská znaková Å™eÄ","Kalaallisut":"GrónÅ¡tina","Kannada":"KannadÅ¡tina","Kashmiri":"KaÅ¡mírÅ¡tina","Georgian":"GruzínÅ¡tina","Kanuri":"KanurijÅ¡tina","Kazakh":"KazaÅ¡tina","Khmer":"KhmerÅ¡tina","Kikuyu":"KikujÅ¡tina","Kinyarwanda":"RwandÅ¡tina","Kirghiz":"KyrgyzÅ¡tina","Komi":"Komi","Kongo":"Konžština","Korean":"KorejÅ¡tina","Kuanyama":"Kuanyama","Kurdish":"KurdÅ¡tina","Lao":"LaoÅ¡tina","Latvian":"LotyÅ¡tina","Limburgan":"LimburÅ¡tina","Lingala":"NgalÅ¡tina","Lithuanian":"LitevÅ¡tina","Luxembourgish":"LucemburÅ¡tina","Luba-Katanga":"Luba-Katanga","Ganda":"GandÅ¡tina","Marshallese":"MaršálÅ¡tina","Malayalam":"MalajálamÅ¡tina","Marathi":"MaráthÅ¡tina","Macedonian":"MakedonÅ¡tina","Malagasy":"MalgaÅ¡tina","Maltese":"MaltÅ¡tina","Mongolian":"MongolÅ¡tina","Maori":"MaorÅ¡tina","Malay (macrolanguage)":"MalajÅ¡tina","Burmese":"BarmÅ¡tina","Nauru":"NaurÅ¡tina","Navajo":"Navažština","South Ndebele":"Jižní ndebelÅ¡tina","North Ndebele":"Severní ndebelÅ¡tina","Ndonga":"NdondÅ¡tina","Nepali (macrolanguage)":"NepálÅ¡tina","Dutch":"DánÅ¡tina","Norwegian Nynorsk":"NorÅ¡tina Nynorsk","Norwegian BokmÃ¥l":"NorÅ¡tina BokmÃ¥l","Norwegian":"NorÅ¡tina ","Nyanja":"ÄŒiÄevÅ¡tina","Occitan":"OkcitánÅ¡tina","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"UrijÅ¡tina","Oromo":"OromÅ¡tina","Ossetian":"OsetÅ¡tina","Panjabi":"PaňdžábÅ¡tina","Pakistan Sign Language":"Pakistánská znaková Å™eÄ","Polish":"PolÅ¡tina","Portuguese":"PortugalÅ¡tina","Pushto":"PaÅ¡tÅ¡tina","Quechua":"KeÄuánÅ¡tina","Romansh":"RétorománÅ¡tina","Romanian":"RumunÅ¡tina","Russian Sign Language":"Ruská znaková Å™eÄ","Rundi":"Kirundi","Russian":"RuÅ¡tina","Sango":"Sango","Saudi Arabian Sign Language":"Saudská arabská znaková Å™eÄ","South African Sign Language":"Jihoafrická znaková Å™eÄ","Sinhala":"SinhálÅ¡tina","Slovak":"SlovenÅ¡tina","Slovenian":"SlovinÅ¡tina","Northern Sami":"Severní sámÅ¡tina","Samoan":"SamojÅ¡tina","Shona":"Shona","Sindhi":"SindhÅ¡tina","Somali":"SomálÅ¡tina","Southern Sotho":"Jižní sotÅ¡tina","Spanish":"Å panÄ›lÅ¡tina","Albanian":"AlbánÅ¡tina","Sardinian":"SardínÅ¡tina","Serbian":"SrbÅ¡tina","Swati":"Swati","Sundanese":"SundÅ¡tina","Swahili (macrolanguage)":"SvahilÅ¡tina","Swedish":"Å védÅ¡tina","Swedish Sign Language":"Å védská znaková Å™eÄ","Tahitian":"TahitÅ¡tina","Tamil":"TamilÅ¡tina","Tatar":"TatarÅ¡tina","Telugu":"TelugÅ¡tina","Tajik":"TádžiÄtina","Tagalog":"Tagalog","Thai":"ThajÅ¡tina","Tigrinya":"Tigrinya","Klingon":"KlingonÅ¡tina","Tonga (Tonga Islands)":"TongánÅ¡tina","Tswana":"SetswanÅ¡tina","Tsonga":"TsongÅ¡tina","Turkmen":"TurkmenÅ¡tina","Turkish":"TureÄtina","Twi":"Twi","Uighur":"UjgurÅ¡tina","Ukrainian":"UkrajinÅ¡tina","Urdu":"UrdÅ¡tina","Uzbek":"UzbeÄtina","Venda":"VendÅ¡tina","Vietnamese":"VietnamÅ¡tina","Walloon":"ValonÅ¡tina","Wolof":"Wolof ","Xhosa":"XhoÅ¡tina","Yiddish":"JidiÅ¡","Yoruba":"JorubÅ¡tina","Zhuang":"ÄŒuangÅ¡tina","Chinese":"ČínÅ¡tina","Zulu":"ZuluÅ¡tina"} \ No newline at end of file {"Music":"Hudba","Films":"Filmy","Vehicles":"Auta","Art":"UmÄ›ní","Sports":"Sport","Travels":"Cestování","Gaming":"Hry","People":"Lidé","Comedy":"Komedie","Entertainment":"Zábava","How To":"Jak na to","Education":"Výukové","Activism":"Aktivismus","Science & Technology":"VÄ›da a technologie","Animals":"Zvířata","Kids":"DÄ›ti","Food":"Jídlo a vaÅ™ení","Attribution":"UveÄte autora","Attribution - Share Alike":"UveÄte autora - Zachovejte licenci","Attribution - No Derivatives":"UveÄte autora - Nezpracovávejte","Attribution - Non Commercial":"UveÄte autora - NeÅ¡iÅ™te dílo komerÄnÄ›","Attribution - Non Commercial - Share Alike":"UveÄte autora - NeÅ¡iÅ™te dílo komerÄnÄ› - Zachovejte licenci","Attribution - Non Commercial - No Derivatives":"UveÄte autora - NeÅ¡iÅ™te dílo komerÄnÄ› - Nezpracovávejte","Public Domain Dedication":"Volné dílo","Public":"VeÅ™ejné","Unlisted":"Nezobrazeno","Private":"Soukromé","Misc":"Různé","Unknown":"Neznámé","Afar":"AfarÅ¡tina","Abkhazian":"AbcházÅ¡tina","Afrikaans":"AfrikánÅ¡tina","Akan":"AkanÅ¡tina","Amharic":"AmharÅ¡tina","Arabic":"ArabÅ¡tina","Aragonese":"AragonÅ¡tina","American Sign Language":"Americká znaková Å™eÄ","Assamese":"ÃsámÅ¡tina","Avaric":"AvarÅ¡tina","Kotava":"Kotava","Aymara":"AjmarÅ¡tina","Azerbaijani":"ÃzerbájdžánÅ¡tina","Bashkir":"BaÅ¡kirÅ¡tina","Bambara":"BambarÅ¡tina","Belarusian":"BÄ›loruÅ¡tina","Bengali":"BengálÅ¡tina","British Sign Language":"Britská znaková Å™eÄ","Bislama":"BislamÅ¡tina","Tibetan":"TibetÅ¡tina","Bosnian":"BosenÅ¡tina","Breton":"BretonÅ¡tina","Bulgarian":"BulharÅ¡tina","Brazilian Sign Language":"Brazilská znaková Å™eÄ","Catalan":"KatalánÅ¡tina","Czech":"ÄŒeÅ¡tina","Chamorro":"Chamorro","Chechen":"ÄŒeÄenÅ¡tina","Chuvash":"ÄŒuvaÅ¡tina","Cornish":"KornÅ¡tina","Corsican":"KorsiÄtina","Cree":"KríjÅ¡tina","Czech Sign Language":"ÄŒeská znaková Å™eÄ","Chinese Sign Language":"Čínská znaková Å™eÄ","Welsh":"VelÅ¡tina","Danish":"DánÅ¡tina","German":"NÄ›mÄina","Dhivehi":"MaledivÅ¡tina","Danish Sign Language":"Dánská znaková Å™eÄ","Dzongkha":"Dzongkä","Modern Greek (1453-)":"Moderní Å™eÄtina","English":"AngliÄtina","Esperanto":"Esperanto","Estonian":"EstonÅ¡tina","Basque":"BaskiÄtina","Ewe":"EveÅ¡tina","Faroese":"FaerÅ¡tina","Persian":"PerÅ¡tina","Fijian":"FidžijÅ¡tina","Finnish":"FinÅ¡tina","French":"FrancouzÅ¡tina","Western Frisian":"Západofríština","French Sign Language":"Francouzská znaková Å™eÄ","Fulah":"FulbÅ¡tina","Scottish Gaelic":"Skotská gaelÅ¡tina","Irish":"IrÅ¡tina","Galician":"GalicijÅ¡tina","Manx":"ManÅ¡tina","Guarani":"GuaranÅ¡tina","German Sign Language":"NÄ›mecká znaková Å™eÄ","Gujarati":"GudžarátÅ¡tina","Haitian":"Haitská kreolÅ¡tina","Hausa":"HauÅ¡tina","Serbo-Croatian":"SrcbochorvatÅ¡inta","Hebrew":"HebrejÅ¡tina","Herero":"Herero","Hindi":"HindÅ¡tina","Hiri Motu":"Hiri Motu","Croatian":"ChorvatÅ¡tina","Hungarian":"MaÄarÅ¡tina","Armenian":"ArménÅ¡tina","Igbo":"IgboÅ¡tina","Sichuan Yi":"Nuosu","Inuktitut":"InuktitutÅ¡tina","Indonesian":"Indonéština","Inupiaq":"Inupiaq","Icelandic":"IslandÅ¡tina","Italian":"ItalÅ¡tina","Javanese":"JavánÅ¡tina","Lojban":"Lojban","Japanese":"JaponÅ¡tina","Japanese Sign Language":"Japonská znaková Å™eÄ","Kalaallisut":"GrónÅ¡tina","Kannada":"KannadÅ¡tina","Kashmiri":"KaÅ¡mírÅ¡tina","Georgian":"GruzínÅ¡tina","Kanuri":"KanurijÅ¡tina","Kazakh":"KazaÅ¡tina","Khmer":"KhmerÅ¡tina","Kikuyu":"KikujÅ¡tina","Kinyarwanda":"RwandÅ¡tina","Kirghiz":"KyrgyzÅ¡tina","Komi":"Komi","Kongo":"Konžština","Korean":"KorejÅ¡tina","Kuanyama":"Kuanyama","Kurdish":"KurdÅ¡tina","Lao":"LaoÅ¡tina","Latvian":"LotyÅ¡tina","Limburgan":"LimburÅ¡tina","Lingala":"NgalÅ¡tina","Lithuanian":"LitevÅ¡tina","Luxembourgish":"LucemburÅ¡tina","Luba-Katanga":"Luba-Katanga","Ganda":"GandÅ¡tina","Marshallese":"MaršálÅ¡tina","Malayalam":"MalajálamÅ¡tina","Marathi":"MaráthÅ¡tina","Macedonian":"MakedonÅ¡tina","Malagasy":"MalgaÅ¡tina","Maltese":"MaltÅ¡tina","Mongolian":"MongolÅ¡tina","Maori":"MaorÅ¡tina","Malay (macrolanguage)":"MalajÅ¡tina","Burmese":"BarmÅ¡tina","Nauru":"NaurÅ¡tina","Navajo":"Navažština","South Ndebele":"Jižní ndebelÅ¡tina","North Ndebele":"Severní ndebelÅ¡tina","Ndonga":"NdondÅ¡tina","Nepali (macrolanguage)":"NepálÅ¡tina","Dutch":"DánÅ¡tina","Norwegian Nynorsk":"NorÅ¡tina Nynorsk","Norwegian BokmÃ¥l":"NorÅ¡tina BokmÃ¥l","Norwegian":"NorÅ¡tina ","Nyanja":"ÄŒiÄevÅ¡tina","Occitan":"OkcitánÅ¡tina","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"UrijÅ¡tina","Oromo":"OromÅ¡tina","Ossetian":"OsetÅ¡tina","Panjabi":"PaňdžábÅ¡tina","Pakistan Sign Language":"Pakistánská znaková Å™eÄ","Polish":"PolÅ¡tina","Portuguese":"PortugalÅ¡tina","Pushto":"PaÅ¡tÅ¡tina","Quechua":"KeÄuánÅ¡tina","Romansh":"RétorománÅ¡tina","Romanian":"RumunÅ¡tina","Russian Sign Language":"Ruská znaková Å™eÄ","Rundi":"Kirundi","Russian":"RuÅ¡tina","Sango":"Sango","Saudi Arabian Sign Language":"Saudská arabská znaková Å™eÄ","South African Sign Language":"Jihoafrická znaková Å™eÄ","Sinhala":"SinhálÅ¡tina","Slovak":"SlovenÅ¡tina","Slovenian":"SlovinÅ¡tina","Northern Sami":"Severní sámÅ¡tina","Samoan":"SamojÅ¡tina","Shona":"Shona","Sindhi":"SindhÅ¡tina","Somali":"SomálÅ¡tina","Southern Sotho":"Jižní sotÅ¡tina","Spanish":"Å panÄ›lÅ¡tina","Albanian":"AlbánÅ¡tina","Sardinian":"SardínÅ¡tina","Serbian":"SrbÅ¡tina","Swati":"Swati","Sundanese":"SundÅ¡tina","Swahili (macrolanguage)":"SvahilÅ¡tina","Swedish":"Å védÅ¡tina","Swedish Sign Language":"Å védská znaková Å™eÄ","Tahitian":"TahitÅ¡tina","Tamil":"TamilÅ¡tina","Tatar":"TatarÅ¡tina","Telugu":"TelugÅ¡tina","Tajik":"TádžiÄtina","Tagalog":"Tagalog","Thai":"ThajÅ¡tina","Tigrinya":"Tigrinya","Klingon":"KlingonÅ¡tina","Tonga (Tonga Islands)":"TongánÅ¡tina","Tswana":"SetswanÅ¡tina","Tsonga":"TsongÅ¡tina","Turkmen":"TurkmenÅ¡tina","Turkish":"TureÄtina","Twi":"Twi","Uighur":"UjgurÅ¡tina","Ukrainian":"UkrajinÅ¡tina","Urdu":"UrdÅ¡tina","Uzbek":"UzbeÄtina","Venda":"VendÅ¡tina","Vietnamese":"VietnamÅ¡tina","Walloon":"ValonÅ¡tina","Wolof":"Wolof ","Xhosa":"XhoÅ¡tina","Yiddish":"JidiÅ¡","Yoruba":"JorubÅ¡tina","Zhuang":"ÄŒuangÅ¡tina","Chinese":"ČínÅ¡tina","Zulu":"ZuluÅ¡tina"} \ No newline at end of file
diff --git a/client/src/locale/target/server_de_DE.json b/client/src/locale/target/server_de_DE.json
index 0f513cbd5..0f98ae65e 100644
--- a/client/src/locale/target/server_de_DE.json
+++ b/client/src/locale/target/server_de_DE.json
@@ -1 +1 @@
{"Music":"Musik","Films":"Filme","Vehicles":"Fahrzeuge","Art":"Kunst","Sports":"Sport","Travels":"Reisen","Gaming":"Spiele","People":"Leute","Comedy":"Komödie","Entertainment":"Unterhaltung","News":"Nachrichten","How To":"How-to","Education":"Bildung","Activism":"Aktivismus","Science & Technology":"Wissenschaft und Technologie","Animals":"Tiere","Kids":"Kinder","Food":"Essen","Attribution":"Namensnennung","Attribution - Share Alike":"Namensnennung - Weitergabe unter gleichen Bedingungen","Attribution - No Derivatives":"Namensnennung - Keine Bearbeitung","Attribution - Non Commercial":"Namensnennung - nicht kommerziell","Attribution - Non Commercial - Share Alike":"Namensnennung - nicht kommerziell, Weitergabe unter gleichen Bedingungen","Attribution - Non Commercial - No Derivatives":"Namensnennung - nicht kommerziell, keine Bearbeitung","Public Domain Dedication":"In Gemeinfreiheit entlassen","Public":"Öffentlich","Unlisted":"Nicht gelistet","Private":"Privat","Published":"Veröffentlicht","To transcode":"Zu transkodieren","To import":"Zu importieren","Pending":"Ausstehend","Success":"Erfolg","Failed":"Fehlgeschlagen","Misc":"Verschiedenes","Unknown":"Unbekannt","Afar":"Afar","Abkhazian":"Abchasisch","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharisch","Arabic":"Arabisch","Aragonese":"Aragonesisch","American Sign Language":"Amerikanische Gebärdensprache","Assamese":"Assamesisch","Avaric":"Awarisch","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Aserbeidschanisch","Bashkir":"Baschkirisch","Bambara":"Bambara","Belarusian":"Weißrussisch","Bengali":"Bengali","British Sign Language":"Britische Gebärdensprache","Bislama":"Beach-la-mar","Tibetan":"Tibetisch","Bosnian":"Bosnisch","Breton":"Bretonisch","Bulgarian":"Bulgarisch","Brazilian Sign Language":"Brasilianische Gebärdensprache","Catalan":"Katalanisch","Czech":"Tschechisch","Chamorro":"Chamorro","Chechen":"Tschetschenisch","Chuvash":"Tschuwaschisch","Cornish":"Kornisch","Corsican":"Korsisch","Cree":"Cree","Czech Sign Language":"Tschechische Gebärdensprache","Chinese Sign Language":"Chinesiche Gebärdensprache","Welsh":"Kymrisch","Danish":"Dänisch","German":"Deutsch","Dhivehi":"Maledivisch","Danish Sign Language":"Dänische Gebärdensprache","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Neugriechisch","English":"Englisch","Esperanto":"Esperanto","Estonian":"Estnisch","Basque":"Baskisch","Ewe":"Ewe","Faroese":"Färöisch","Persian":"Persisch","Fijian":"Fidschi","Finnish":"Finnisch","French":"Französisch","Western Frisian":"Friesisch","French Sign Language":"Französiche Gebärdensprache","Fulah":"Ful","Scottish Gaelic":"Gälisch-Schottisch","Irish":"Irisch","Galician":"Galicisch","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Deutsche Gebärdensprache","Gujarati":"Gujarati","Haitian":"Haïtien (Haiti-Kreolisch)","Hausa":"Hausa","Serbo-Croatian":"Serbokroatisch","Hebrew":"Hebräisch","Herero":"Otjiherero","Hindi":"Hindi","Hiri Motu":"Hiri-Motu","Croatian":"Kroatisch","Hungarian":"Ungarisch","Armenian":"Armenisch","Igbo":"Igbo","Sichuan Yi":"Yi","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupik","Icelandic":"Isländisch","Italian":"Italienisch","Javanese":"Javanisch","Lojban":"Lojban","Japanese":"Japanisch","Japanese Sign Language":"Japanische Gebärdensprache","Kalaallisut":"Grönländisch","Kannada":"Kannada","Kashmiri":"Kaschmiri","Georgian":"Georgisch","Kanuri":"Kanuri","Kazakh":"Kasachisch","Khmer":"Kambodschanisch","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Kirgisisch","Komi":"Komi","Kongo":"Kikongo","Korean":"Koreanisch","Kuanyama":"Kuanyama","Kurdish":"Kurdisch","Lao":"Laotisch","Latvian":"Lettisch","Limburgan":"Limburgisch","Lingala":"Lingala","Lithuanian":"Litauisch","Luxembourgish":"Luxemburgisch","Luba-Katanga":"Kiluba","Ganda":"Luganda","Marshallese":"Marschallesisch","Malayalam":"Malayalam","Marathi":"Marathi","Macedonian":"Makedonisch","Malagasy":"Malagassi","Maltese":"Maltesisch","Mongolian":"Mongolisch","Maori":"MÄori","Malay (macrolanguage)":"Malaiisch","Burmese":"Birmanisch","Nauru":"Nauruanisch","Navajo":"Navajo","South Ndebele":"Süd-Ndebele","North Ndebele":"Nord-Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali","Dutch":"Niederländisch","Norwegian Nynorsk":"Nynorsk","Norwegian BokmÃ¥l":"BokmÃ¥l","Norwegian":"Norwegisch","Nyanja":"Chichewa","Occitan":"Okzitanisch","Ojibwa":"Ojibwe","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Ossetisch","Panjabi":"Panjabi","Pakistan Sign Language":"Pakistanische Gebärdensprache","Polish":"Polnisch","Portuguese":"Portugiesisch","Pushto":"Paschtu","Quechua":"Quechua","Romansh":"Rätoromanisch","Romanian":"Rumänisch","Russian Sign Language":"Russische Gebärdensprache","Rundi":"Kirundi","Russian":"Russisch","Sango":"Sango","Saudi Arabian Sign Language":"Saudi-arabische Gebärdensprache","South African Sign Language":"Südafrikanische Gebärdensprache","Sinhala":"Singhalesisch","Slovak":"Slowakisch","Slovenian":"Slowenisch","Northern Sami":"Nordsaamisch","Samoan":"Samoanisch","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sesotho","Spanish":"Spanisch","Albanian":"Albanisch","Sardinian":"Sardisch","Serbian":"Serbisch","Swati":"siSwati","Sundanese":"Sundanesisch","Swahili (macrolanguage)":"Swahili","Swedish":"Schwedisch","Swedish Sign Language":"Schwedische Gebärdensprache","Tahitian":"Tahitisch","Tamil":"Tamil","Tatar":"Tatarisch","Telugu":"Telugu","Tajik":"Tadschikisch","Tagalog":"Tagalog","Thai":"Thailändisch","Tigrinya":"Tigrinisch","Klingon":"Klingonisch","Tonga (Tonga Islands)":"Tongaisch","Tswana":"Setswana","Tsonga":"Xitsonga","Turkmen":"Turkmenisch","Turkish":"Türkisch","Twi":"Twi","Uighur":"Uigurisch","Ukrainian":"Ukrainisch","Urdu":"Urdu","Uzbek":"Usbekisch","Venda":"Tshivenda","Vietnamese":"Vietnamesisch","Walloon":"Wallonisch","Wolof":"Wolof","Xhosa":"isiXhosa","Yiddish":"Jiddisch","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinesisch","Zulu":"isiZulu"} \ No newline at end of file {"Music":"Musik","Films":"Filme","Vehicles":"Fahrzeuge","Art":"Kunst","Sports":"Sport","Travels":"Reisen","Gaming":"Spiele","People":"Menschen","Comedy":"Komödie","Entertainment":"Unterhaltung","How To":"Anleitung","Education":"Bildung","Activism":"Aktivismus","Science & Technology":"Wissenschaft und Technologie","Animals":"Tiere","Kids":"Kinder","Food":"Essen","Attribution":"Namensnennung","Attribution - Share Alike":"Namensnennung - Weitergabe unter gleichen Bedingungen","Attribution - No Derivatives":"Namensnennung - Keine Bearbeitung","Attribution - Non Commercial":"Namensnennung - Nicht kommerziell","Attribution - Non Commercial - Share Alike":"Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen","Attribution - Non Commercial - No Derivatives":"Namensnennung - Nicht-kommerziell - Keine Bearbeitung","Public Domain Dedication":"In Gemeinfreiheit entlassen","Public":"Öffentlich","Unlisted":"Nicht gelistet","Private":"Privat","Published":"Veröffentlicht","To transcode":"Zu transkodieren","To import":"Zu importieren","Pending":"Ausstehend","Success":"Erfolg","Failed":"Fehlgeschlagen","Misc":"Verschiedenes","Unknown":"Unbekannt","Afar":"Afar","Abkhazian":"Abchasisch","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharisch","Arabic":"Arabisch","Aragonese":"Aragonesisch","American Sign Language":"Amerikanische Gebärdensprache","Assamese":"Assamesisch","Avaric":"Awarisch","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Aserbeidschanisch","Bashkir":"Baschkirisch","Bambara":"Bambara","Belarusian":"Weißrussisch","Bengali":"Bengali","British Sign Language":"Britische Gebärdensprache","Bislama":"Beach-la-mar","Tibetan":"Tibetisch","Bosnian":"Bosnisch","Breton":"Bretonisch","Bulgarian":"Bulgarisch","Brazilian Sign Language":"Brasilianische Gebärdensprache","Catalan":"Katalanisch","Czech":"Tschechisch","Chamorro":"Chamorro","Chechen":"Tschetschenisch","Chuvash":"Tschuwaschisch","Cornish":"Kornisch","Corsican":"Korsisch","Cree":"Cree","Czech Sign Language":"Tschechische Gebärdensprache","Chinese Sign Language":"Chinesiche Gebärdensprache","Welsh":"Kymrisch","Danish":"Dänisch","German":"Deutsch","Dhivehi":"Maledivisch","Danish Sign Language":"Dänische Gebärdensprache","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Neugriechisch","English":"Englisch","Esperanto":"Esperanto","Estonian":"Estnisch","Basque":"Baskisch","Ewe":"Ewe","Faroese":"Färöisch","Persian":"Persisch","Fijian":"Fidschi","Finnish":"Finnisch","French":"Französisch","Western Frisian":"Friesisch","French Sign Language":"Französiche Gebärdensprache","Fulah":"Ful","Scottish Gaelic":"Gälisch-Schottisch","Irish":"Irisch","Galician":"Galicisch","Manx":"Manx","Guarani":"Guaraní","German Sign Language":"Deutsche Gebärdensprache","Gujarati":"Gujarati","Haitian":"Haïtien (Haiti-Kreolisch)","Hausa":"Hausa","Serbo-Croatian":"Serbokroatisch","Hebrew":"Hebräisch","Herero":"Otjiherero","Hindi":"Hindi","Hiri Motu":"Hiri-Motu","Croatian":"Kroatisch","Hungarian":"Ungarisch","Armenian":"Armenisch","Igbo":"Igbo","Sichuan Yi":"Yi","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupik","Icelandic":"Isländisch","Italian":"Italienisch","Javanese":"Javanisch","Lojban":"Lojban","Japanese":"Japanisch","Japanese Sign Language":"Japanische Gebärdensprache","Kalaallisut":"Grönländisch","Kannada":"Kannada","Kashmiri":"Kaschmiri","Georgian":"Georgisch","Kanuri":"Kanuri","Kazakh":"Kasachisch","Khmer":"Kambodschanisch","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Kirgisisch","Komi":"Komi","Kongo":"Kikongo","Korean":"Koreanisch","Kuanyama":"Kuanyama","Kurdish":"Kurdisch","Lao":"Laotisch","Latvian":"Lettisch","Limburgan":"Limburgisch","Lingala":"Lingala","Lithuanian":"Litauisch","Luxembourgish":"Luxemburgisch","Luba-Katanga":"Kiluba","Ganda":"Luganda","Marshallese":"Marschallesisch","Malayalam":"Malayalam","Marathi":"Marathi","Macedonian":"Makedonisch","Malagasy":"Malagassi","Maltese":"Maltesisch","Mongolian":"Mongolisch","Maori":"MÄori","Malay (macrolanguage)":"Malaiisch","Burmese":"Birmanisch","Nauru":"Nauruanisch","Navajo":"Navajo","South Ndebele":"Süd-Ndebele","North Ndebele":"Nord-Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali","Dutch":"Niederländisch","Norwegian Nynorsk":"Nynorsk","Norwegian BokmÃ¥l":"BokmÃ¥l","Norwegian":"Norwegisch","Nyanja":"Chichewa","Occitan":"Okzitanisch","Ojibwa":"Ojibwe","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Ossetisch","Panjabi":"Panjabi","Pakistan Sign Language":"Pakistanische Gebärdensprache","Polish":"Polnisch","Portuguese":"Portugiesisch","Pushto":"Paschtu","Quechua":"Quechua","Romansh":"Rätoromanisch","Romanian":"Rumänisch","Russian Sign Language":"Russische Gebärdensprache","Rundi":"Kirundi","Russian":"Russisch","Sango":"Sango","Saudi Arabian Sign Language":"Saudi-arabische Gebärdensprache","South African Sign Language":"Südafrikanische Gebärdensprache","Sinhala":"Singhalesisch","Slovak":"Slowakisch","Slovenian":"Slowenisch","Northern Sami":"Nordsaamisch","Samoan":"Samoanisch","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sesotho","Spanish":"Spanisch","Albanian":"Albanisch","Sardinian":"Sardisch","Serbian":"Serbisch","Swati":"siSwati","Sundanese":"Sundanesisch","Swahili (macrolanguage)":"Swahili","Swedish":"Schwedisch","Swedish Sign Language":"Schwedische Gebärdensprache","Tahitian":"Tahitisch","Tamil":"Tamil","Tatar":"Tatarisch","Telugu":"Telugu","Tajik":"Tadschikisch","Tagalog":"Tagalog","Thai":"Thailändisch","Tigrinya":"Tigrinisch","Klingon":"Klingonisch","Tonga (Tonga Islands)":"Tongaisch","Tswana":"Setswana","Tsonga":"Xitsonga","Turkmen":"Turkmenisch","Turkish":"Türkisch","Twi":"Twi","Uighur":"Uigurisch","Ukrainian":"Ukrainisch","Urdu":"Urdu","Uzbek":"Usbekisch","Venda":"Tshivenda","Vietnamese":"Vietnamesisch","Walloon":"Wallonisch","Wolof":"Wolof","Xhosa":"isiXhosa","Yiddish":"Jiddisch","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinesisch","Zulu":"isiZulu"} \ No newline at end of file
diff --git a/client/src/locale/target/server_eo.json b/client/src/locale/target/server_eo.json
index 43cfef5ff..7931161ad 100644
--- a/client/src/locale/target/server_eo.json
+++ b/client/src/locale/target/server_eo.json
@@ -1 +1 @@
{"Music":"Muziko","Films":"Filmoj","Vehicles":"Veturiloj","Art":"Arto","Sports":"Sporto","Travels":"VojaÄado","Gaming":"Ludoj","People":"Homoj","Comedy":"Komedio","Entertainment":"Amuzo","News":"Novaĵoj","How To":"Instrukcioj","Education":"Instruado","Activism":"Aktivismo","Science & Technology":"Scienco Ï— teÄ¥nikaro","Animals":"Bestoj","Kids":"Infanoj","Food":"ManÄo","Attribution":"Atribuite","Attribution - Share Alike":"Atribuite – Samkondiĉe","Attribution - No Derivatives":"Atribuite – Nemodifite","Attribution - Non Commercial":"Atribuite – Nekomerce","Attribution - Non Commercial - Share Alike":"Atribuite – Nekomerce – Samkondiĉe","Attribution - Non Commercial - No Derivatives":"Atribuite – Nekomerce – Nemodifite","Public Domain Dedication":"Dediĉo al publika posedo","Public":"Publika","Unlisted":"Nelistigata","Private":"Privata","Success":"Sukcesis","Failed":"Malsukcesis","Misc":"Diversaĵoj","Unknown":"Nekonata","Afar":"Afara","Abkhazian":"AbÄ¥aza","Afrikaans":"Afrikansa","Akan":"Akana","Amharic":"Amhara","Arabic":"Araba","Aragonese":"Aragona","American Sign Language":"Usona gestlingvo","Assamese":"Asama","Avaric":"Avara","Kotava":"Kotavo","Aymara":"Ajmara","Azerbaijani":"AzerbajÄana","Bashkir":"BaÅkira","Bambara":"Bambara","Belarusian":"Belorusa","Bengali":"Bengala","British Sign Language":"Brita gestlingvo","Bislama":"Bislama","Tibetan":"Tibeta","Bosnian":"Bosna","Breton":"Bretona","Bulgarian":"Bulgara","Brazilian Sign Language":"Brazila gestlingvo","Catalan":"Kataluna","Czech":"ĈeÄ¥a","Chamorro":"Ĉamora","Chechen":"Ĉeĉena","Chuvash":"ĈuvaÅa","Cornish":"Kornvala","Corsican":"Korsika","Czech Sign Language":"ĈeÄ¥a gestlingvo","Chinese Sign Language":"Ĉina gestlingvo","Welsh":"Kimra","Danish":"Dana","German":"Germana","Dhivehi":"Maldiva","Danish Sign Language":"Dana gestlingvo","Dzongkha":"Butana","Modern Greek (1453-)":"Novgreka","English":"Angla","Esperanto":"Esperanto","Estonian":"Estona","Basque":"EÅ­ska","Ewe":"Evea","Faroese":"Feroa","Persian":"Persa","Fijian":"FiÄia","Finnish":"Finna","French":"Franca","Western Frisian":"Okcidentfrisa","French Sign Language":"Franca gestlingvo","Fulah":"Fula","Scottish Gaelic":"Skotgaela","Irish":"Irlanda","Galician":"Galega","Manx":"Manksa","Guarani":"Gvarania","German Sign Language":"Germana gestlingvo","Gujarati":"GuÄarata","Haitian":"Haitia","Hausa":"HaÅ­sa","Serbo-Croatian":"Kroatserba","Hebrew":"Hebrea","Herero":"Herera","Hindi":"Hinda","Hiri Motu":"Hirimotua","Croatian":"Kroata","Hungarian":"Hungara","Armenian":"Armena","Igbo":"Igba","Sichuan Yi":"Jia","Inuktitut":"Inuktituta","Indonesian":"Indonezia","Inupiaq":"Inupiko","Icelandic":"Islanda","Italian":"Itala","Javanese":"Java","Lojban":"Loĵbano","Japanese":"Japana","Japanese Sign Language":"Japana gestlingvo","Kalaallisut":"Gronlanda","Kannada":"Kanara","Kashmiri":"KaÅmira","Georgian":"Kartvela","Kanuri":"Kanuria","Kazakh":"KazaÄ¥a","Khmer":"Kmera","Kirghiz":"Kirgiza","Komi":"Komia","Kongo":"Konga","Korean":"Korea","Kuanyama":"Kvanjama","Kurdish":"Kurda","Lao":"Laosa","Latvian":"Latva","Limburgan":"Limburga","Lingala":"Lingala","Lithuanian":"Litova","Luxembourgish":"Luksemburga","Marshallese":"MarÅalinsula","Malayalam":"Malajalama","Marathi":"Marata","Macedonian":"Makedona","Malagasy":"MalgaÅa","Maltese":"Malta","Mongolian":"Mongola","Maori":"Maoria","Malay (macrolanguage)":"Malaja","Burmese":"Birma","Nauru":"Naura","Navajo":"Navajo","South Ndebele":"Sudndebela","North Ndebele":"Nordndebela","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepala","Dutch":"Nederlanda","Norwegian Nynorsk":"Novnorvega","Norwegian BokmÃ¥l":"Bukmolo","Norwegian":"Norvega","Nyanja":"Ĉiĉeva","Ojibwa":"OÄibua","Oriya (macrolanguage)":"Orisa","Oromo":"Oroma","Ossetian":"Oseta","Panjabi":"PanÄaba","Pakistan Sign Language":"Pakistana gestlingvo","Polish":"Pola","Portuguese":"Portugala","Pushto":"PaÅtua","Quechua":"Keĉua","Romansh":"Romanĉa","Romanian":"Rumana","Russian Sign Language":"Rusa gestlingvo","Russian":"Rusa","Saudi Arabian Sign Language":"Saudarabuja gestlingvo","South African Sign Language":"Sudafrika gestlingvo","Sinhala":"Sinhala","Slovak":"Slovaka","Slovenian":"Slovena","Northern Sami":"Nordlapona","Samoan":"Samoa","Shona":"Åœona","Sindhi":"Sinda","Somali":"Somala","Southern Sotho":"Sudsota","Spanish":"Hispana","Albanian":"Albana","Sardinian":"Sarda","Serbian":"Serba","Swati":"Svazia","Sundanese":"Sunda","Swahili (macrolanguage)":"Svahila","Swedish":"Sveda","Swedish Sign Language":"Sveda gestlingvo","Tahitian":"Tahitia","Tamil":"Tamula","Tatar":"Tatara","Telugu":"Telugua","Tajik":"TaÄika","Tagalog":"Tagaloga","Thai":"Taja","Klingon":"Klingona","Tonga (Tonga Islands)":"Tonga","Tswana":"Cvana","Tsonga":"Conga","Turkmen":"Turkmena","Turkish":"Turka","Uighur":"Ujgura","Ukrainian":"Ukrajna","Urdu":"Urdua","Uzbek":"Uzbeka","Venda":"Vendaa","Vietnamese":"Vjetnama","Walloon":"Valona","Wolof":"Volofa","Xhosa":"Kosa","Yiddish":"Jido","Yoruba":"Joruba","Zhuang":"Ĉuanga","Chinese":"Ĉina","Zulu":"Zulua"} \ No newline at end of file {"Music":"Muziko","Films":"Filmoj","Vehicles":"Veturiloj","Art":"Arto","Sports":"Sporto","Travels":"VojaÄado","Gaming":"Ludoj","People":"Homoj","Comedy":"Komedio","Entertainment":"Amuzo","How To":"Instrukcioj","Education":"Instruado","Activism":"Aktivismo","Science & Technology":"Scienco Ï— teÄ¥nikaro","Animals":"Bestoj","Kids":"Infanoj","Food":"ManÄo","Attribution":"Atribuite","Attribution - Share Alike":"Atribuite – Samkondiĉe","Attribution - No Derivatives":"Atribuite – Nemodifite","Attribution - Non Commercial":"Atribuite – Nekomerce","Attribution - Non Commercial - Share Alike":"Atribuite – Nekomerce – Samkondiĉe","Attribution - Non Commercial - No Derivatives":"Atribuite – Nekomerce – Nemodifite","Public Domain Dedication":"Dediĉo al publika posedo","Public":"Publika","Unlisted":"Nelistigata","Private":"Privata","Success":"Sukcesis","Failed":"Malsukcesis","Misc":"Diversaĵoj","Unknown":"Nekonata","Afar":"Afara","Abkhazian":"AbÄ¥aza","Afrikaans":"Afrikansa","Akan":"Akana","Amharic":"Amhara","Arabic":"Araba","Aragonese":"Aragona","American Sign Language":"Usona gestlingvo","Assamese":"Asama","Avaric":"Avara","Kotava":"Kotavo","Aymara":"Ajmara","Azerbaijani":"AzerbajÄana","Bashkir":"BaÅkira","Bambara":"Bambara","Belarusian":"Belorusa","Bengali":"Bengala","British Sign Language":"Brita gestlingvo","Bislama":"Bislama","Tibetan":"Tibeta","Bosnian":"Bosna","Breton":"Bretona","Bulgarian":"Bulgara","Brazilian Sign Language":"Brazila gestlingvo","Catalan":"Kataluna","Czech":"ĈeÄ¥a","Chamorro":"Ĉamora","Chechen":"Ĉeĉena","Chuvash":"ĈuvaÅa","Cornish":"Kornvala","Corsican":"Korsika","Czech Sign Language":"ĈeÄ¥a gestlingvo","Chinese Sign Language":"Ĉina gestlingvo","Welsh":"Kimra","Danish":"Dana","German":"Germana","Dhivehi":"Maldiva","Danish Sign Language":"Dana gestlingvo","Dzongkha":"Butana","Modern Greek (1453-)":"Novgreka","English":"Angla","Esperanto":"Esperanto","Estonian":"Estona","Basque":"EÅ­ska","Ewe":"Evea","Faroese":"Feroa","Persian":"Persa","Fijian":"FiÄia","Finnish":"Finna","French":"Franca","Western Frisian":"Okcidentfrisa","French Sign Language":"Franca gestlingvo","Fulah":"Fula","Scottish Gaelic":"Skotgaela","Irish":"Irlanda","Galician":"Galega","Manx":"Manksa","Guarani":"Gvarania","German Sign Language":"Germana gestlingvo","Gujarati":"GuÄarata","Haitian":"Haitia","Hausa":"HaÅ­sa","Serbo-Croatian":"Kroatserba","Hebrew":"Hebrea","Herero":"Herera","Hindi":"Hinda","Hiri Motu":"Hirimotua","Croatian":"Kroata","Hungarian":"Hungara","Armenian":"Armena","Igbo":"Igba","Sichuan Yi":"Jia","Inuktitut":"Inuktituta","Indonesian":"Indonezia","Inupiaq":"Inupiko","Icelandic":"Islanda","Italian":"Itala","Javanese":"Java","Lojban":"Loĵbano","Japanese":"Japana","Japanese Sign Language":"Japana gestlingvo","Kalaallisut":"Gronlanda","Kannada":"Kanara","Kashmiri":"KaÅmira","Georgian":"Kartvela","Kanuri":"Kanuria","Kazakh":"KazaÄ¥a","Khmer":"Kmera","Kirghiz":"Kirgiza","Komi":"Komia","Kongo":"Konga","Korean":"Korea","Kuanyama":"Kvanjama","Kurdish":"Kurda","Lao":"Laosa","Latvian":"Latva","Limburgan":"Limburga","Lingala":"Lingala","Lithuanian":"Litova","Luxembourgish":"Luksemburga","Marshallese":"MarÅalinsula","Malayalam":"Malajalama","Marathi":"Marata","Macedonian":"Makedona","Malagasy":"MalgaÅa","Maltese":"Malta","Mongolian":"Mongola","Maori":"Maoria","Malay (macrolanguage)":"Malaja","Burmese":"Birma","Nauru":"Naura","Navajo":"Navajo","South Ndebele":"Sudndebela","North Ndebele":"Nordndebela","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepala","Dutch":"Nederlanda","Norwegian Nynorsk":"Novnorvega","Norwegian BokmÃ¥l":"Bukmolo","Norwegian":"Norvega","Nyanja":"Ĉiĉeva","Ojibwa":"OÄibua","Oriya (macrolanguage)":"Orisa","Oromo":"Oroma","Ossetian":"Oseta","Panjabi":"PanÄaba","Pakistan Sign Language":"Pakistana gestlingvo","Polish":"Pola","Portuguese":"Portugala","Pushto":"PaÅtua","Quechua":"Keĉua","Romansh":"Romanĉa","Romanian":"Rumana","Russian Sign Language":"Rusa gestlingvo","Russian":"Rusa","Saudi Arabian Sign Language":"Saudarabuja gestlingvo","South African Sign Language":"Sudafrika gestlingvo","Sinhala":"Sinhala","Slovak":"Slovaka","Slovenian":"Slovena","Northern Sami":"Nordlapona","Samoan":"Samoa","Shona":"Åœona","Sindhi":"Sinda","Somali":"Somala","Southern Sotho":"Sudsota","Spanish":"Hispana","Albanian":"Albana","Sardinian":"Sarda","Serbian":"Serba","Swati":"Svazia","Sundanese":"Sunda","Swahili (macrolanguage)":"Svahila","Swedish":"Sveda","Swedish Sign Language":"Sveda gestlingvo","Tahitian":"Tahitia","Tamil":"Tamula","Tatar":"Tatara","Telugu":"Telugua","Tajik":"TaÄika","Tagalog":"Tagaloga","Thai":"Taja","Klingon":"Klingona","Tonga (Tonga Islands)":"Tonga","Tswana":"Cvana","Tsonga":"Conga","Turkmen":"Turkmena","Turkish":"Turka","Uighur":"Ujgura","Ukrainian":"Ukrajna","Urdu":"Urdua","Uzbek":"Uzbeka","Venda":"Vendaa","Vietnamese":"Vjetnama","Walloon":"Valona","Wolof":"Volofa","Xhosa":"Kosa","Yiddish":"Jido","Yoruba":"Joruba","Zhuang":"Ĉuanga","Chinese":"Ĉina","Zulu":"Zulua"} \ No newline at end of file
diff --git a/client/src/locale/target/server_es_ES.json b/client/src/locale/target/server_es_ES.json
index 21831df98..77beb9036 100644
--- a/client/src/locale/target/server_es_ES.json
+++ b/client/src/locale/target/server_es_ES.json
@@ -1 +1 @@
{"Music":"Música","Films":"Películas","Vehicles":"Transporte","Art":"Arte","Sports":"Deportes","Travels":"Viajes","Gaming":"Juegos","People":"Personalidades","Comedy":"Comedia","Entertainment":"Entretenimiento","News":"Noticias","How To":"Tutorial","Education":"Educación","Activism":"Activismo","Science & Technology":"Cienca & Tecnología","Animals":"Animales","Kids":"Niños","Food":"Cocina","Attribution":"Atribución","Attribution - Share Alike":"Atribución - Compartir Igual","Attribution - No Derivatives":"Atribución - No Derivadas","Attribution - Non Commercial":"Atribución - No Comercial","Attribution - Non Commercial - Share Alike":"Atribución - No Comercial - Compartir Igual","Attribution - Non Commercial - No Derivatives":"Atribución - No Comercial - No Derivadas","Public Domain Dedication":"Dominio Público","Public":"Público","Unlisted":"Sin listar","Private":"Privado","Published":"Pulicados","To transcode":"Para codificar","To import":"Para importar","Pending":"Pendientes","Misc":"Miscelánea","Unknown":"Desconocido","Afar":"Afar","Abkhazian":"Abjasio","Afrikaans":"Afrikáans","Akan":"Acano","Amharic":"Amhárico","Arabic":"Ãrabe","Aragonese":"Aragonés","American Sign Language":"Lengua de signos americana","Assamese":"Asamés","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerí","Bashkir":"Baskir","Bambara":"Bambara","Belarusian":"Bielorruso","Bengali":"Bengalí","British Sign Language":"Lenga de signos británica","Bislama":"Bislama","Tibetan":"Tibetano","Bosnian":"Bosnio","Breton":"Bretón","Bulgarian":"Búlgaro","Brazilian Sign Language":"Lengua de signos brasileña","Catalan":"Catalán","Czech":"Checo","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Chuvasio","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Lengua de signos checa","Chinese Sign Language":"Lengua de signos china","Welsh":"Gaélico","Danish":"Danés","German":"Alemán","Dhivehi":"Maldivo","Danish Sign Language":"Lengua de signos danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Griego moderno","English":"Inglés","Esperanto":"Esperanto","Estonian":"Estonio","Basque":"Euskera","Ewe":"Ewé","Faroese":"Feroés","Persian":"Persa","Fijian":"Fiyiano","Finnish":"Finés","French":"Francés","Western Frisian":"Frisón occidental","French Sign Language":"Lengua de signos francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico escocés","Irish":"Irlandés","Galician":"Gallego","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lengua de signos alemana","Gujarati":"Gujaratí","Haitian":"Haitiano","Hausa":"Hausa","Serbo-Croatian":"Serbocroata","Hebrew":"Hebreo","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armenio","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuit","Indonesian":"Indonesio","Inupiaq":"Iñupiaq","Icelandic":"Islandés","Italian":"Italiano","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lengua de signos japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cachemir","Georgian":"Georgiano","Kanuri":"Kanurí","Kazakh":"Kazajo","Khmer":"Camboyano","Kikuyu":"Kikuyú","Kinyarwanda":"Kiñaruanda","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Kongo","Korean":"Coreano","Kuanyama":"Kuanyama","Kurdish":"Kurdo","Lao":"Lao","Latvian":"Letón","Limburgan":"Limburgués","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburgués","Luba-Katanga":"Luba oriental","Ganda":"Luganda","Marshallese":"Mashalés","Malayalam":"Malabar","Marathi":"Maratí","Macedonian":"Macedonio","Malagasy":"Malgache","Maltese":"Maltés","Mongolian":"Mongol","Maori":"Maorí","Malay (macrolanguage)":"Malayo","Burmese":"Birmano","Nauru":"Nauruano","Navajo":"Navajo","South Ndebele":"Ndebele del sur","North Ndebele":"Ndebele del norte","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalí","Dutch":"Neerlandés","Norwegian Nynorsk":"Nynorsk","Norwegian BokmÃ¥l":"BokmÃ¥l","Norwegian":"Noruego","Nyanja":"Chichewa","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Osetio","Panjabi":"Panyabí","Pakistan Sign Language":"Lengua de signos pakistaní","Polish":"Polaco","Portuguese":"Portugués","Pushto":"Pastún","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Rumano","Russian Sign Language":"Lengua de signos rusa","Rundi":"Kirundí","Russian":"Ruso","Sango":"Sango","Saudi Arabian Sign Language":"Lengua de signos saudí","South African Sign Language":"Lengua de signos sudafricana","Sinhala":"Cingalés","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami septentrional","Samoan":"Samoano","Shona":"Shona","Sindhi":"Sindi","Somali":"Somalí","Southern Sotho":"Soto meridional","Spanish":"Español","Albanian":"Albano","Sardinian":"Sardo","Serbian":"Serbio","Swati":"Suazi","Sundanese":"Sudanés","Swahili (macrolanguage)":"Suajili","Swedish":"Sueco","Swedish Sign Language":"Lengua de signos sueca","Tahitian":"Tahitiano","Tamil":"Támil","Tatar":"Tártaro","Telugu":"Télugu","Tajik":"Tayiko","Tagalog":"Tagalo","Thai":"Tailandés","Tigrinya":"Tigriña","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongano","Tswana":"Setsuana","Tsonga":"Tsonga","Turkmen":"Turcomano","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeko","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valón","Wolof":"Wólof","Xhosa":"Xhosa","Yiddish":"Yidis","Yoruba":"Yoruba","Zhuang":"Chuang","Chinese":"Chino","Zulu":"Zulú"} \ No newline at end of file {"Music":"Música","Films":"Películas","Vehicles":"Transporte","Art":"Arte","Sports":"Deportes","Travels":"Viajes","Gaming":"Juegos","People":"Personalidades","Comedy":"Comedia","Entertainment":"Entretenimiento","How To":"Tutorial","Education":"Educación","Activism":"Activismo","Science & Technology":"Cienca & Tecnología","Animals":"Animales","Kids":"Niños","Food":"Cocina","Attribution":"Atribución","Attribution - Share Alike":"Atribución - Compartir Igual","Attribution - No Derivatives":"Atribución - No Derivadas","Attribution - Non Commercial":"Atribución - No Comercial","Attribution - Non Commercial - Share Alike":"Atribución - No Comercial - Compartir Igual","Attribution - Non Commercial - No Derivatives":"Atribución - No Comercial - No Derivadas","Public Domain Dedication":"Dominio Público","Public":"Público","Unlisted":"Sin listar","Private":"Privado","Published":"Pulicados","To transcode":"Para codificar","To import":"Para importar","Pending":"Pendientes","Misc":"Miscelánea","Unknown":"Desconocido","Afar":"Afar","Abkhazian":"Abjasio","Afrikaans":"Afrikáans","Akan":"Acano","Amharic":"Amhárico","Arabic":"Ãrabe","Aragonese":"Aragonés","American Sign Language":"Lengua de signos americana","Assamese":"Asamés","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerí","Bashkir":"Baskir","Bambara":"Bambara","Belarusian":"Bielorruso","Bengali":"Bengalí","British Sign Language":"Lenga de signos británica","Bislama":"Bislama","Tibetan":"Tibetano","Bosnian":"Bosnio","Breton":"Bretón","Bulgarian":"Búlgaro","Brazilian Sign Language":"Lengua de signos brasileña","Catalan":"Catalán","Czech":"Checo","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Chuvasio","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Lengua de signos checa","Chinese Sign Language":"Lengua de signos china","Welsh":"Gaélico","Danish":"Danés","German":"Alemán","Dhivehi":"Maldivo","Danish Sign Language":"Lengua de signos danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Griego moderno","English":"Inglés","Esperanto":"Esperanto","Estonian":"Estonio","Basque":"Euskera","Ewe":"Ewé","Faroese":"Feroés","Persian":"Persa","Fijian":"Fiyiano","Finnish":"Finés","French":"Francés","Western Frisian":"Frisón occidental","French Sign Language":"Lengua de signos francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico escocés","Irish":"Irlandés","Galician":"Gallego","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lengua de signos alemana","Gujarati":"Gujaratí","Haitian":"Haitiano","Hausa":"Hausa","Serbo-Croatian":"Serbocroata","Hebrew":"Hebreo","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armenio","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuit","Indonesian":"Indonesio","Inupiaq":"Iñupiaq","Icelandic":"Islandés","Italian":"Italiano","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lengua de signos japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cachemir","Georgian":"Georgiano","Kanuri":"Kanurí","Kazakh":"Kazajo","Khmer":"Camboyano","Kikuyu":"Kikuyú","Kinyarwanda":"Kiñaruanda","Kirghiz":"Kirguís","Komi":"Komi","Kongo":"Kongo","Korean":"Coreano","Kuanyama":"Kuanyama","Kurdish":"Kurdo","Lao":"Lao","Latvian":"Letón","Limburgan":"Limburgués","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburgués","Luba-Katanga":"Luba oriental","Ganda":"Luganda","Marshallese":"Mashalés","Malayalam":"Malabar","Marathi":"Maratí","Macedonian":"Macedonio","Malagasy":"Malgache","Maltese":"Maltés","Mongolian":"Mongol","Maori":"Maorí","Malay (macrolanguage)":"Malayo","Burmese":"Birmano","Nauru":"Nauruano","Navajo":"Navajo","South Ndebele":"Ndebele del sur","North Ndebele":"Ndebele del norte","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalí","Dutch":"Neerlandés","Norwegian Nynorsk":"Nynorsk","Norwegian BokmÃ¥l":"BokmÃ¥l","Norwegian":"Noruego","Nyanja":"Chichewa","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Oromo","Ossetian":"Osetio","Panjabi":"Panyabí","Pakistan Sign Language":"Lengua de signos pakistaní","Polish":"Polaco","Portuguese":"Portugués","Pushto":"Pastún","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Rumano","Russian Sign Language":"Lengua de signos rusa","Rundi":"Kirundí","Russian":"Ruso","Sango":"Sango","Saudi Arabian Sign Language":"Lengua de signos saudí","South African Sign Language":"Lengua de signos sudafricana","Sinhala":"Cingalés","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami septentrional","Samoan":"Samoano","Shona":"Shona","Sindhi":"Sindi","Somali":"Somalí","Southern Sotho":"Soto meridional","Spanish":"Español","Albanian":"Albano","Sardinian":"Sardo","Serbian":"Serbio","Swati":"Suazi","Sundanese":"Sudanés","Swahili (macrolanguage)":"Suajili","Swedish":"Sueco","Swedish Sign Language":"Lengua de signos sueca","Tahitian":"Tahitiano","Tamil":"Támil","Tatar":"Tártaro","Telugu":"Télugu","Tajik":"Tayiko","Tagalog":"Tagalo","Thai":"Tailandés","Tigrinya":"Tigriña","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongano","Tswana":"Setsuana","Tsonga":"Tsonga","Turkmen":"Turcomano","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeko","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valón","Wolof":"Wólof","Xhosa":"Xhosa","Yiddish":"Yidis","Yoruba":"Yoruba","Zhuang":"Chuang","Chinese":"Chino","Zulu":"Zulú"} \ No newline at end of file
diff --git a/client/src/locale/target/server_eu_ES.json b/client/src/locale/target/server_eu_ES.json
index b725d4f55..28c76f31b 100644
--- a/client/src/locale/target/server_eu_ES.json
+++ b/client/src/locale/target/server_eu_ES.json
@@ -1 +1 @@
{"Music":"Musika","Films":"Filmak","Vehicles":"Ibilgailuak","Art":"Artea","Sports":"Kirolak","Travels":"Bidaiak","Gaming":"Jolasak","People":"Jendea","Comedy":"Komedia","Entertainment":"Aisia","News":"Berriak","How To":"Argibideak","Education":"Hezkuntza","Activism":"Aktibismoa","Science & Technology":"Zientzia eta teknologia","Animals":"Animaliak","Kids":"Haurrak","Food":"Janaria","Attribution":"Atribuzioa","Attribution - Share Alike":"Atribuzioa - Partekatu berdin","Attribution - No Derivatives":"Atribuzioa - Eratorririk ez","Attribution - Non Commercial":"Atribuzioa - Ez komertziala","Attribution - Non Commercial - Share Alike":"Atribuzioa - Ez komertziala - Partekatu berdin","Attribution - Non Commercial - No Derivatives":"Atribuzioa - Ez komertziala - Eratorririk ez","Public Domain Dedication":"Domeinu publikoa","Public":"Publikoa","Unlisted":"Zerrendatu gabea","Private":"Pribatua","Published":"Argitaratua","To transcode":"Transkodetzeko","To import":"Inportatzeko","Pending":"Egiteke","Success":"Arrakasta","Failed":"Hutsa","Misc":"Denetarik","Unknown":"Ezezaguna","Afar":"Afar","Abkhazian":"Abkhaziera","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharera","Arabic":"Arabiera","Aragonese":"Aragoiera","American Sign Language":"Amerikako zeinu-hizkuntza ","Assamese":"Assamera","Avaric":"Avarera","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerbaijanera","Bashkir":"Baxkirera","Bambara":"Banbara","Belarusian":"Bielorrusiera","Bengali":"Bengalera","British Sign Language":"Britainiako zeinu-hizkuntza","Bislama":"Bislama","Tibetan":"Tibetera","Bosnian":"Bosniera","Breton":"Bretoiera","Bulgarian":"Bulgariera","Brazilian Sign Language":"Brasilgo zeinu-hizkuntza","Catalan":"Katalana","Czech":"Txekiera","Chamorro":"Chamorro","Chechen":"Txetxenera","Chuvash":"Txuvaxera","Cornish":"Kornubiera","Corsican":"Korsikera","Cree":"Cree","Czech Sign Language":"Txekiako zeinu-hizkuntza","Chinese Sign Language":"Txinako zeinu-hizkuntza","Welsh":"Galesa","Danish":"Daniera","German":"Alemana","Dhivehi":"Dhivehi (maldivera) ","Danish Sign Language":"Danimarkako zeinu-hizkuntza","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Greziera moernoa (1453-)","English":"Ingelesa","Esperanto":"Esperantoa","Estonian":"Estoniera","Basque":"Euskara","Ewe":"Eweera","Faroese":"Faroera","Persian":"Persiera","Fijian":"Fijiera","Finnish":"Suomiera","French":"Frantsesa","Western Frisian":"Mendebaldeko frisiera","French Sign Language":"Frantziako zeinu-hizkuntza","Fulah":"Fula","Scottish Gaelic":"Eskoziako gaelikoa","Irish":"Irlandera","Galician":"Galiziera","Manx":"Manera","Guarani":"Guaraniera","German Sign Language":"Alemaniako zeinu-hizkuntza","Gujarati":"Gujaratera","Haitian":"Haitiko kreolera","Hausa":"Hausa","Serbo-Croatian":"Serbokroaziera ","Hebrew":"Hebreera","Herero":"Hereroera","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Kroaziera","Hungarian":"Hungariera","Armenian":"Armeniera","Igbo":"Igboera","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutera","Indonesian":"Indonesiera","Inupiaq":"Inupiaq","Icelandic":"Islandiera","Italian":"Italiera","Javanese":"Javera","Lojban":"Lojban","Japanese":"Japoniera","Japanese Sign Language":"Japoniako zeinu-hizkuntza","Kalaallisut":"Groenlandiera","Kannada":"Kannada","Kashmiri":"Kaxmirera","Georgian":"Georgiera / Kartveliera ","Kanuri":"Kanuri","Kazakh":"Kazakhera","Khmer":"Khmerera","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyaruanda","Kirghiz":"Kirgizera","Komi":"Komiera","Kongo":"Kikongo","Korean":"Koreera","Kuanyama":"Kuanyama","Kurdish":"Kurduera","Lao":"Laosera","Latvian":"Letoniera","Limburgan":"Limburgera","Lingala":"Lingala","Lithuanian":"Lituaniera","Luxembourgish":"Luxenburgera","Luba-Katanga":"Luba-Katanga","Ganda":"Luganda","Marshallese":"Marshallera","Malayalam":"Malabarera","Marathi":"Marathera","Macedonian":"Mazedoniera","Malagasy":"Malgaxe","Maltese":"Maltera","Mongolian":"Mongoliera","Maori":"Maoriera","Malay (macrolanguage)":"Malaysiera (makro-hizkuntza)","Burmese":"Birmaniera","Nauru":"Nauruera","Navajo":"Navajoa","South Ndebele":"Hego Ndebele","North Ndebele":"Ipar Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalera (makro-hizkuntza)","Dutch":"Nederlandera","Norwegian Nynorsk":"Norvegiako Nynorsk","Norwegian Bokmål":"Norvegiako Bokmål","Norwegian":"Norvegiera","Nyanja":"Txewera","Occitan":"Okzitaniera","Ojibwa":"Ojibwera","Oriya (macrolanguage)":"Oriya (makro-hizkuntza)","Oromo":"Oromoera","Ossetian":"Osetiera","Panjabi":"Punjabera","Pakistan Sign Language":"Pakistango zeinu-hizkuntza","Polish":"Poloniera","Portuguese":"Portugesa","Pushto":"Paxtuera","Quechua":"Kitxua","Romansh":"Erromantxea","Romanian":"Errumaniera","Russian Sign Language":"Errusiako zeinu-hizkuntza","Rundi":"Kirundi","Russian":"Errusiera","Sango":"Sango","Saudi Arabian Sign Language":"Saudi Arabiako zeinu-hizkuntza","South African Sign Language":"Hego Afrikako zeinu-hizkuntza","Sinhala":"Sinhala","Slovak":"Eslovakiera","Slovenian":"Esloveniera","Northern Sami":"Ipar Samiera","Samoan":"Samoera","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somaliera","Southern Sotho":"Sothoera","Spanish":"Espainiera","Albanian":"Albaniera","Sardinian":"Sardiniera","Serbian":"Serbiera","Swati":"Swaziera","Sundanese":"Sundera","Swahili (macrolanguage)":"Swahili (makro-hizkuntza)","Swedish":"Suediera","Swedish Sign Language":"Suediako zeinu-hizkuntza","Tahitian":"Maoriera","Tamil":"Tamilera","Tatar":"Tatarera","Telugu":"Telugu","Tajik":"Tajikera","Tagalog":"Tagaloa","Thai":"Thailandiera","Tigrinya":"Tigrinyera","Klingon":"Klingon","Tonga (Tonga Islands)":"Tonga (Tonga irlak)","Tswana":"Tswanera","Tsonga":"Tsongera","Turkmen":"Turkmenera","Turkish":"Turkiera","Twi":"Twi","Uighur":"Uigurrera","Ukrainian":"Ukrainera","Urdu":"Urduera","Uzbek":"Uzbekera","Venda":"Vendera","Vietnamese":"Vietnamera","Walloon":"Valoniera","Wolof":"Wolofera","Xhosa":"Xhosera","Yiddish":"Yiddish","Yoruba":"Jorubera","Zhuang":"Zhuang","Chinese":"Txinera","Zulu":"Zuluera"} \ No newline at end of file {"Music":"Musika","Films":"Filmak","Vehicles":"Ibilgailuak","Art":"Artea","Sports":"Kirolak","Travels":"Bidaiak","Gaming":"Jolasak","People":"Jendea","Comedy":"Komedia","Entertainment":"Aisia","How To":"Argibideak","Education":"Hezkuntza","Activism":"Aktibismoa","Science & Technology":"Zientzia eta teknologia","Animals":"Animaliak","Kids":"Haurrak","Food":"Janaria","Attribution":"Atribuzioa","Attribution - Share Alike":"Atribuzioa - Partekatu berdin","Attribution - No Derivatives":"Atribuzioa - Eratorririk ez","Attribution - Non Commercial":"Atribuzioa - Ez komertziala","Attribution - Non Commercial - Share Alike":"Atribuzioa - Ez komertziala - Partekatu berdin","Attribution - Non Commercial - No Derivatives":"Atribuzioa - Ez komertziala - Eratorririk ez","Public Domain Dedication":"Domeinu publikoa","Public":"Publikoa","Unlisted":"Zerrendatu gabea","Private":"Pribatua","Published":"Argitaratua","To transcode":"Transkodetzeko","To import":"Inportatzeko","Pending":"Egiteke","Success":"Arrakasta","Failed":"Hutsa","Misc":"Denetarik","Unknown":"Ezezaguna","Afar":"Afar","Abkhazian":"Abkhaziera","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharera","Arabic":"Arabiera","Aragonese":"Aragoiera","American Sign Language":"Amerikako zeinu-hizkuntza ","Assamese":"Assamera","Avaric":"Avarera","Kotava":"Kotava","Aymara":"Aimara","Azerbaijani":"Azerbaijanera","Bashkir":"Baxkirera","Bambara":"Banbara","Belarusian":"Bielorrusiera","Bengali":"Bengalera","British Sign Language":"Britainiako zeinu-hizkuntza","Bislama":"Bislama","Tibetan":"Tibetera","Bosnian":"Bosniera","Breton":"Bretoiera","Bulgarian":"Bulgariera","Brazilian Sign Language":"Brasilgo zeinu-hizkuntza","Catalan":"Katalana","Czech":"Txekiera","Chamorro":"Chamorro","Chechen":"Txetxenera","Chuvash":"Txuvaxera","Cornish":"Kornubiera","Corsican":"Korsikera","Cree":"Cree","Czech Sign Language":"Txekiako zeinu-hizkuntza","Chinese Sign Language":"Txinako zeinu-hizkuntza","Welsh":"Galesa","Danish":"Daniera","German":"Alemana","Dhivehi":"Dhivehi (maldivera) ","Danish Sign Language":"Danimarkako zeinu-hizkuntza","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Greziera moernoa (1453-)","English":"Ingelesa","Esperanto":"Esperantoa","Estonian":"Estoniera","Basque":"Euskara","Ewe":"Eweera","Faroese":"Faroera","Persian":"Persiera","Fijian":"Fijiera","Finnish":"Suomiera","French":"Frantsesa","Western Frisian":"Mendebaldeko frisiera","French Sign Language":"Frantziako zeinu-hizkuntza","Fulah":"Fula","Scottish Gaelic":"Eskoziako gaelikoa","Irish":"Irlandera","Galician":"Galiziera","Manx":"Manera","Guarani":"Guaraniera","German Sign Language":"Alemaniako zeinu-hizkuntza","Gujarati":"Gujaratera","Haitian":"Haitiko kreolera","Hausa":"Hausa","Serbo-Croatian":"Serbokroaziera ","Hebrew":"Hebreera","Herero":"Hereroera","Hindi":"Hindi","Hiri Motu":"Hiri Motu","Croatian":"Kroaziera","Hungarian":"Hungariera","Armenian":"Armeniera","Igbo":"Igboera","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitutera","Indonesian":"Indonesiera","Inupiaq":"Inupiaq","Icelandic":"Islandiera","Italian":"Italiera","Javanese":"Javera","Lojban":"Lojban","Japanese":"Japoniera","Japanese Sign Language":"Japoniako zeinu-hizkuntza","Kalaallisut":"Groenlandiera","Kannada":"Kannada","Kashmiri":"Kaxmirera","Georgian":"Georgiera / Kartveliera ","Kanuri":"Kanuri","Kazakh":"Kazakhera","Khmer":"Khmerera","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyaruanda","Kirghiz":"Kirgizera","Komi":"Komiera","Kongo":"Kikongo","Korean":"Koreera","Kuanyama":"Kuanyama","Kurdish":"Kurduera","Lao":"Laosera","Latvian":"Letoniera","Limburgan":"Limburgera","Lingala":"Lingala","Lithuanian":"Lituaniera","Luxembourgish":"Luxenburgera","Luba-Katanga":"Luba-Katanga","Ganda":"Luganda","Marshallese":"Marshallera","Malayalam":"Malabarera","Marathi":"Marathera","Macedonian":"Mazedoniera","Malagasy":"Malgaxe","Maltese":"Maltera","Mongolian":"Mongoliera","Maori":"Maoriera","Malay (macrolanguage)":"Malaysiera (makro-hizkuntza)","Burmese":"Birmaniera","Nauru":"Nauruera","Navajo":"Navajoa","South Ndebele":"Hego Ndebele","North Ndebele":"Ipar Ndebele","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepalera (makro-hizkuntza)","Dutch":"Nederlandera","Norwegian Nynorsk":"Norvegiako Nynorsk","Norwegian Bokmål":"Norvegiako Bokmål","Norwegian":"Norvegiera","Nyanja":"Txewera","Occitan":"Okzitaniera","Ojibwa":"Ojibwera","Oriya (macrolanguage)":"Oriya (makro-hizkuntza)","Oromo":"Oromoera","Ossetian":"Osetiera","Panjabi":"Punjabera","Pakistan Sign Language":"Pakistango zeinu-hizkuntza","Polish":"Poloniera","Portuguese":"Portugesa","Pushto":"Paxtuera","Quechua":"Kitxua","Romansh":"Erromantxea","Romanian":"Errumaniera","Russian Sign Language":"Errusiako zeinu-hizkuntza","Rundi":"Kirundi","Russian":"Errusiera","Sango":"Sango","Saudi Arabian Sign Language":"Saudi Arabiako zeinu-hizkuntza","South African Sign Language":"Hego Afrikako zeinu-hizkuntza","Sinhala":"Sinhala","Slovak":"Eslovakiera","Slovenian":"Esloveniera","Northern Sami":"Ipar Samiera","Samoan":"Samoera","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somaliera","Southern Sotho":"Sothoera","Spanish":"Espainiera","Albanian":"Albaniera","Sardinian":"Sardiniera","Serbian":"Serbiera","Swati":"Swaziera","Sundanese":"Sundera","Swahili (macrolanguage)":"Swahili (makro-hizkuntza)","Swedish":"Suediera","Swedish Sign Language":"Suediako zeinu-hizkuntza","Tahitian":"Maoriera","Tamil":"Tamilera","Tatar":"Tatarera","Telugu":"Telugu","Tajik":"Tajikera","Tagalog":"Tagaloa","Thai":"Thailandiera","Tigrinya":"Tigrinyera","Klingon":"Klingon","Tonga (Tonga Islands)":"Tonga (Tonga irlak)","Tswana":"Tswanera","Tsonga":"Tsongera","Turkmen":"Turkmenera","Turkish":"Turkiera","Twi":"Twi","Uighur":"Uigurrera","Ukrainian":"Ukrainera","Urdu":"Urduera","Uzbek":"Uzbekera","Venda":"Vendera","Vietnamese":"Vietnamera","Walloon":"Valoniera","Wolof":"Wolofera","Xhosa":"Xhosera","Yiddish":"Yiddish","Yoruba":"Jorubera","Zhuang":"Zhuang","Chinese":"Txinera","Zulu":"Zuluera"} \ No newline at end of file
diff --git a/client/src/locale/target/server_fr_FR.json b/client/src/locale/target/server_fr_FR.json
index f575556a2..505ddcf6a 100644
--- a/client/src/locale/target/server_fr_FR.json
+++ b/client/src/locale/target/server_fr_FR.json
@@ -1 +1 @@
{"Music":"Musiques","Films":"Films","Vehicles":"Transport","Art":"Art","Sports":"Sports","Travels":"Voyages","Gaming":"Jeux vidéos","People":"Personnalités","Comedy":"Humour","Entertainment":"Divertissement","News":"Actualités","How To":"Tutoriels","Education":"Éducation","Activism":"Militantisme","Science & Technology":"Science & Technologie","Animals":"Animaux","Kids":"Enfants","Food":"Cuisine","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Partage dans les mêmes conditions","Attribution - No Derivatives":"Attribution - Pas d’œuvre dérivée","Attribution - Non Commercial":"Attribution - Utilisation non commerciale","Attribution - Non Commercial - Share Alike":"Attribution - Utilisation non commerciale - Partage dans les mêmes conditions","Attribution - Non Commercial - No Derivatives":"Attribution - Utilisation non commerciale - Pas d’œuvre dérivée","Public Domain Dedication":"Domaine public","Public":"Publique","Unlisted":"Non listée","Private":"Privée","Published":"Publiée","To transcode":"À transcoder","To import":"À importer","Pending":"En cours","Success":"Succès","Failed":"Échoué","Misc":"Divers","Unknown":"Inconnu","Afar":"Afar","Abkhazian":"Abkhaze","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharique","Arabic":"Arabe","Aragonese":"Aragonais","American Sign Language":"Langue des signes américaine","Assamese":"Assamais","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azéri","Bashkir":"Bachkir","Bambara":"Bambara","Belarusian":"Biélorusse","Bengali":"Bengali","British Sign Language":"Langue des signes britannique","Bislama":"Bichlamar","Tibetan":"Tibétain","Bosnian":"Bosniaque","Breton":"Breton","Bulgarian":"Bulgare","Brazilian Sign Language":"Langue des signes brésilienne","Catalan":"Catalan","Czech":"Tchèque","Chamorro":"Chamorro","Chechen":"Tchétchène","Chuvash":"Tchouvache","Cornish":"Cornique","Corsican":"Corse","Cree":"Cree","Czech Sign Language":"Langue des signes tchèque","Chinese Sign Language":"Langue des signes chinoise","Welsh":"Gallois","Danish":"Danois","German":"Allemand","Dhivehi":"Maldivien","Danish Sign Language":"Langue des signes danoise","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grec moderne (après 1453)","English":"Anglais","Esperanto":"Espéranto","Estonian":"Estonien","Basque":"Basque","Ewe":"Éwé","Faroese":"Féroïen","Persian":"Persan","Fijian":"Fidjien","Finnish":"Finnois","French":"Français","Western Frisian":"Frison occidental","French Sign Language":"Langue des signes française","Fulah":"Peul","Scottish Gaelic":"Gaélique","Irish":"Irlandais","Galician":"Galicien","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Langue des signes allemande","Gujarati":"Goudjrati","Haitian":"Haïtien","Hausa":"Haoussa","Serbo-Croatian":"Serbo-croate","Hebrew":"Hébreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croate","Hungarian":"Hongrois","Armenian":"Arménien","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonésien","Inupiaq":"Inupiaq","Icelandic":"Islandais","Italian":"Italien","Javanese":"Javanais","Lojban":"Lojban","Japanese":"Japonais","Japanese Sign Language":"Langue des signes japonaise","Kalaallisut":"Groenlandais","Kannada":"Kannada","Kashmiri":"Kashmiri","Georgian":"Géorgien","Kanuri":"Kanouri","Kazakh":"Kazakh","Khmer":"Khmer central","Kikuyu":"Kikuyu","Kinyarwanda":"Rwanda","Kirghiz":"Kirghiz","Komi":"Kom","Kongo":"Kongo","Korean":"Coréen","Kuanyama":"Kuanyama","Kurdish":"Kurde","Lao":"Lao","Latvian":"Letton","Limburgan":"Limbourgeois","Lingala":"Lingala","Lithuanian":"Lituanien","Luxembourgish":"Luxembourgeois","Luba-Katanga":"Luba-katanga","Ganda":"Ganda","Marshallese":"Marshall","Malayalam":"Malayalam","Marathi":"Marathe","Macedonian":"Macédonien","Malagasy":"Malgache","Maltese":"Maltais","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malais","Burmese":"Birman","Nauru":"Nauruan","Navajo":"Navaho","South Ndebele":"Ndébélé du Sud","North Ndebele":"Ndébélé du Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Népalais","Dutch":"Néerlandais","Norwegian Nynorsk":"Norvégien nynorsk","Norwegian Bokmål":"Norvégien bokmål","Norwegian":"Norvégien","Nyanja":"Chichewa","Occitan":"Occitane","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Galla","Ossetian":"Ossète","Panjabi":"Pendjabi","Pakistan Sign Language":"Langue des signes pakistanaise","Polish":"Polonais","Portuguese":"Portugais","Pushto":"Pachto","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Roumain","Russian Sign Language":"Langue des signes russe","Rundi":"Rundi","Russian":"Russe","Sango":"Sango","Saudi Arabian Sign Language":"Langue des signes saoudienne","South African Sign Language":"Langue des signes sud-africaine","Sinhala":"Singhalais","Slovak":"Slovaque","Slovenian":"Slovène","Northern Sami":"Sami du Nord","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho du Sud","Spanish":"Espagnol","Albanian":"Albanais","Sardinian":"Sarde","Serbian":"Serbe","Swati":"Swati","Sundanese":"Soundanais","Swahili (macrolanguage)":"Swahili","Swedish":"Suédois","Swedish Sign Language":"Langue des signes suédoise","Tahitian":"Tahitien","Tamil":"Tamoul","Tatar":"Tatar","Telugu":"Télougou","Tajik":"Tadjik","Tagalog":"Tagalog","Thai":"Thaï","Tigrinya":"Tigrigna","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongan (Îles Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turkmène","Turkish":"Turc","Twi":"Twi","Uighur":"Ouïgour","Ukrainian":"Ukrainien","Urdu":"Ourdou","Uzbek":"Ouszbek","Venda":"Venda","Vietnamese":"Vietnamien","Walloon":"Wallon","Wolof":"Wolof","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinois","Zulu":"Zoulou"} \ No newline at end of file {"Music":"Musiques","Films":"Films","Vehicles":"Transport","Art":"Art","Sports":"Sports","Travels":"Voyages","Gaming":"Jeux vidéos","People":"Personnalités","Comedy":"Humour","Entertainment":"Divertissement","How To":"Tutoriels","Education":"Éducation","Activism":"Militantisme","Science & Technology":"Science & Technologie","Animals":"Animaux","Kids":"Enfants","Food":"Cuisine","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Partage dans les mêmes conditions","Attribution - No Derivatives":"Attribution - Pas d’œuvre dérivée","Attribution - Non Commercial":"Attribution - Utilisation non commerciale","Attribution - Non Commercial - Share Alike":"Attribution - Utilisation non commerciale - Partage dans les mêmes conditions","Attribution - Non Commercial - No Derivatives":"Attribution - Utilisation non commerciale - Pas d’œuvre dérivée","Public Domain Dedication":"Domaine public","Public":"Publique","Unlisted":"Non listée","Private":"Privée","Published":"Publiée","To transcode":"À transcoder","To import":"À importer","Pending":"En cours","Success":"Succès","Failed":"Échoué","Misc":"Divers","Unknown":"Inconnu","Afar":"Afar","Abkhazian":"Abkhaze","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharique","Arabic":"Arabe","Aragonese":"Aragonais","American Sign Language":"Langue des signes américaine","Assamese":"Assamais","Avaric":"Avar","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azéri","Bashkir":"Bachkir","Bambara":"Bambara","Belarusian":"Biélorusse","Bengali":"Bengali","British Sign Language":"Langue des signes britannique","Bislama":"Bichlamar","Tibetan":"Tibétain","Bosnian":"Bosniaque","Breton":"Breton","Bulgarian":"Bulgare","Brazilian Sign Language":"Langue des signes brésilienne","Catalan":"Catalan","Czech":"Tchèque","Chamorro":"Chamorro","Chechen":"Tchétchène","Chuvash":"Tchouvache","Cornish":"Cornique","Corsican":"Corse","Cree":"Cree","Czech Sign Language":"Langue des signes tchèque","Chinese Sign Language":"Langue des signes chinoise","Welsh":"Gallois","Danish":"Danois","German":"Allemand","Dhivehi":"Maldivien","Danish Sign Language":"Langue des signes danoise","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grec moderne (après 1453)","English":"Anglais","Esperanto":"Espéranto","Estonian":"Estonien","Basque":"Basque","Ewe":"Éwé","Faroese":"Féroïen","Persian":"Persan","Fijian":"Fidjien","Finnish":"Finnois","French":"Français","Western Frisian":"Frison occidental","French Sign Language":"Langue des signes française","Fulah":"Peul","Scottish Gaelic":"Gaélique","Irish":"Irlandais","Galician":"Galicien","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Langue des signes allemande","Gujarati":"Goudjrati","Haitian":"Haïtien","Hausa":"Haoussa","Serbo-Croatian":"Serbo-croate","Hebrew":"Hébreu","Herero":"Herero","Hindi":"Hindi","Hiri Motu":"Hiri motu","Croatian":"Croate","Hungarian":"Hongrois","Armenian":"Arménien","Igbo":"Igbo","Sichuan Yi":"Yi de Sichuan","Inuktitut":"Inuktitut","Indonesian":"Indonésien","Inupiaq":"Inupiaq","Icelandic":"Islandais","Italian":"Italien","Javanese":"Javanais","Lojban":"Lojban","Japanese":"Japonais","Japanese Sign Language":"Langue des signes japonaise","Kalaallisut":"Groenlandais","Kannada":"Kannada","Kashmiri":"Kashmiri","Georgian":"Géorgien","Kanuri":"Kanouri","Kazakh":"Kazakh","Khmer":"Khmer central","Kikuyu":"Kikuyu","Kinyarwanda":"Rwanda","Kirghiz":"Kirghiz","Komi":"Kom","Kongo":"Kongo","Korean":"Coréen","Kuanyama":"Kuanyama","Kurdish":"Kurde","Lao":"Lao","Latvian":"Letton","Limburgan":"Limbourgeois","Lingala":"Lingala","Lithuanian":"Lituanien","Luxembourgish":"Luxembourgeois","Luba-Katanga":"Luba-katanga","Ganda":"Ganda","Marshallese":"Marshall","Malayalam":"Malayalam","Marathi":"Marathe","Macedonian":"Macédonien","Malagasy":"Malgache","Maltese":"Maltais","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malais","Burmese":"Birman","Nauru":"Nauruan","Navajo":"Navaho","South Ndebele":"Ndébélé du Sud","North Ndebele":"Ndébélé du Nord","Ndonga":"Ndonga","Nepali (macrolanguage)":"Népalais","Dutch":"Néerlandais","Norwegian Nynorsk":"Norvégien nynorsk","Norwegian Bokmål":"Norvégien bokmål","Norwegian":"Norvégien","Nyanja":"Chichewa","Occitan":"Occitane","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya","Oromo":"Galla","Ossetian":"Ossète","Panjabi":"Pendjabi","Pakistan Sign Language":"Langue des signes pakistanaise","Polish":"Polonais","Portuguese":"Portugais","Pushto":"Pachto","Quechua":"Quechua","Romansh":"Romanche","Romanian":"Roumain","Russian Sign Language":"Langue des signes russe","Rundi":"Rundi","Russian":"Russe","Sango":"Sango","Saudi Arabian Sign Language":"Langue des signes saoudienne","South African Sign Language":"Langue des signes sud-africaine","Sinhala":"Singhalais","Slovak":"Slovaque","Slovenian":"Slovène","Northern Sami":"Sami du Nord","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho du Sud","Spanish":"Espagnol","Albanian":"Albanais","Sardinian":"Sarde","Serbian":"Serbe","Swati":"Swati","Sundanese":"Soundanais","Swahili (macrolanguage)":"Swahili","Swedish":"Suédois","Swedish Sign Language":"Langue des signes suédoise","Tahitian":"Tahitien","Tamil":"Tamoul","Tatar":"Tatar","Telugu":"Télougou","Tajik":"Tadjik","Tagalog":"Tagalog","Thai":"Thaï","Tigrinya":"Tigrigna","Klingon":"Klingon","Tonga (Tonga Islands)":"Tongan (Îles Tonga)","Tswana":"Tswana","Tsonga":"Tsonga","Turkmen":"Turkmène","Turkish":"Turc","Twi":"Twi","Uighur":"Ouïgour","Ukrainian":"Ukrainien","Urdu":"Ourdou","Uzbek":"Ouszbek","Venda":"Venda","Vietnamese":"Vietnamien","Walloon":"Wallon","Wolof":"Wolof","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinois","Zulu":"Zoulou"} \ No newline at end of file
diff --git a/client/src/locale/target/server_gl_ES.xml b/client/src/locale/target/server_gl_ES.xml
index 33aaf78dd..6ae3a16b4 100644
--- a/client/src/locale/target/server_gl_ES.xml
+++ b/client/src/locale/target/server_gl_ES.xml
@@ -43,10 +43,6 @@
43 <source>Entertainment</source> 43 <source>Entertainment</source>
44 <target>Entretemento</target> 44 <target>Entretemento</target>
45 </trans-unit> 45 </trans-unit>
46 <trans-unit id="News">
47 <source>News</source>
48 <target>Novas</target>
49 </trans-unit>
50 <trans-unit id="How To"> 46 <trans-unit id="How To">
51 <source>How To</source> 47 <source>How To</source>
52 <target>Manuais</target> 48 <target>Manuais</target>
diff --git a/client/src/locale/target/server_nl_NL.xml b/client/src/locale/target/server_nl_NL.xml
index 7e7ce8f08..797d022c5 100644
--- a/client/src/locale/target/server_nl_NL.xml
+++ b/client/src/locale/target/server_nl_NL.xml
@@ -43,10 +43,6 @@
43 <source>Entertainment</source> 43 <source>Entertainment</source>
44 <target>Entertainment</target> 44 <target>Entertainment</target>
45 </trans-unit> 45 </trans-unit>
46 <trans-unit id="News">
47 <source>News</source>
48 <target>Nieuws</target>
49 </trans-unit>
50 <trans-unit id="How To"> 46 <trans-unit id="How To">
51 <source>How To</source> 47 <source>How To</source>
52 <target>Tutorials</target> 48 <target>Tutorials</target>
diff --git a/client/src/locale/target/server_oc.json b/client/src/locale/target/server_oc.json
index 09f7b3d7f..ba6be7139 100644
--- a/client/src/locale/target/server_oc.json
+++ b/client/src/locale/target/server_oc.json
@@ -1 +1 @@
{"Music":"Musica","Films":"Films","Vehicles":"Veituras","Art":"Art","Sports":"Espòrts","Travels":"Viatges","Gaming":"Vidèo jòc","People":"Gent","Comedy":"Comèdia","Entertainment":"Léser ","News":"Actualitat","How To":"Demonstracions","Education":"Educacion","Activism":"Activisme","Science & Technology":"Sciéncia & Tecnologia","Animals":"Animals","Kids":"Mainatges","Food":"Manjar","Attribution":"Atribucion","Attribution - Share Alike":"Atribucion - Partejar a l’identic","Attribution - No Derivatives":"Atribucion - Cap de derivacion","Attribution - Non Commercial":"Atribucion - Pas comercial","Attribution - Non Commercial - Share Alike":"Atribucion - Pas comercial - Partejar a l’identic","Attribution - Non Commercial - No Derivatives":"Atribucion - Pas comercial - Cap de derivacion","Public Domain Dedication":"Domeni public","Public":"Public","Unlisted":"Pas listat","Private":"Privat","Published":"Publicada","To transcode":"De transcodar","To import":"D’importar","Pending":"En espèra","Success":"Reüssida","Failed":"Fracàs","Misc":"Divèrs","Unknown":"Desconegut","Afar":"Afar","Abkhazian":"Abcaz","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharic","Arabic":"Arabi","Aragonese":"Aragonés","American Sign Language":"Lenga de signes americana","Assamese":"Assamés","Avaric":"Avaric","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azèri","Bashkir":"Bashkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalin","British Sign Language":"Lenga de signes britanica","Bislama":"Bislama","Tibetan":"Tibetan","Bosnian":"Bosnian","Breton":"Breton","Bulgarian":"Bulgar","Brazilian Sign Language":"Lenga de signes brasiliana","Catalan":"Catalan","Czech":"Chèc","Chamorro":"Chamorro","Chechen":"Chenchèn","Chuvash":"Chuvash","Cornish":"Cornic","Corsican":"Còrs","Cree":"Cree","Czech Sign Language":"Lenga de signes chèca","Chinese Sign Language":"Lenga de signes chinesa","Welsh":"Galés","Danish":"Danés","German":"Alemand","Danish Sign Language":"Lenga de signes danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grèc","English":"Anglés","Esperanto":"Esperanto","Estonian":"Estonian","Basque":"Basc","Ewe":"Ewe","Faroese":"Faroés","Persian":"Persan","Fijian":"Fijian","Finnish":"Finés","French":"Francés","Western Frisian":"Frison occitendal","French Sign Language":"Lenga de signes francesa","Fulah":"Fulah","Scottish Gaelic":"Gaelic escossés","Irish":"Irlandés","Galician":"Galician","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lenga de signes alemanda","Gujarati":"Gujarati","Haitian":"Haitian","Hausa":"Hausa","Serbo-Croatian":"Sèrbocroat","Hebrew":"Ebrieu","Herero":"Herero","Hindi":"Indi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Ongrés","Armenian":"Armèni","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupiaq","Icelandic":"Islandés","Italian":"Italian","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lenga de signes japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Georgian":"Georgian","Kanuri":"Kanuri","Kazakh":"Cazac","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Kongo","Korean":"Corean","Kuanyama":"Kuanyama","Kurdish":"Curd","Lao":"Laosian","Latvian":"Leton","Limburgan":"Limborgués","Lingala":"Lingala","Lithuanian":"Lituanian","Luxembourgish":"Luxemborgés","Luba-Katanga":"Luba-Katanga","Ganda":"Ganda","Marshallese":"Marshallés","Marathi":"Marathi","Macedonian":"Macedonian","Malagasy":"Malgash","Maltese":"Maltés","Mongolian":"Mongòl","Maori":"Maòri","Malay (macrolanguage)":"Malai (macrolengatge)","Burmese":"Birman","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nòrd","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali (macrolengatge)","Dutch":"Neerlandés","Norwegian Nynorsk":"Norvegian Nynorsk","Norwegian Bokmål":"Norvegian","Norwegian":"Norwegian","Nyanja":"Nyanja","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macrolengatge)","Oromo":"Oromo","Panjabi":"Panjabi","Polish":"Polonés","Portuguese":"Portugués","Pushto":"Pushto","Quechua":"Quíchoa","Romansh":"Romanch","Romanian":"Romanés","Russian Sign Language":"Lenga de signes russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","South African Sign Language":"Lenga de signes d’Africa del Sud","Sinhala":"Singalés","Slovak":"Eslovac","Slovenian":"Eslovèn","Northern Sami":"Sami septentrional","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho meridional","Spanish":"Espanhòl","Albanian":"Albanés","Sardinian":"Sard","Serbian":"Sèrbe","Swati":"Swati","Sundanese":"Sodanés","Swahili (macrolanguage)":"Swahili (macrolengatge)","Swedish":"Suedés","Swedish Sign Language":"Lenga de signes suedesa","Tahitian":"Tahician","Tamil":"Tamil","Tatar":"Tatar","Telugu":"Telugu","Tajik":"Tajik","Tagalog":"Tagalòg","Thai":"Tailandés","Tigrinya":"Tigrinya","Klingon":"Klingon","Tonga (Tonga Islands)":"Tònga (islas Tònga)","Tswana":"Tswana","Turkmen":"Turcmèn","Turkish":"Turc","Uighur":"Oigors","Ukrainian":"Ucraïnian","Urdu":"Ordo","Uzbek":"Uzbec","Venda":"Venda","Vietnamese":"Vietnamian","Walloon":"Valon","Wolof":"Wolòf","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinés","Zulu":"Zulu"} \ No newline at end of file {"Music":"Musica","Films":"Films","Vehicles":"Veituras","Art":"Art","Sports":"Espòrts","Travels":"Viatges","Gaming":"Vidèo jòc","People":"Gent","Comedy":"Comèdia","Entertainment":"Léser ","How To":"Demonstracions","Education":"Educacion","Activism":"Activisme","Science & Technology":"Sciéncia & Tecnologia","Animals":"Animals","Kids":"Mainatges","Food":"Manjar","Attribution":"Atribucion","Attribution - Share Alike":"Atribucion - Partejar a l’identic","Attribution - No Derivatives":"Atribucion - Cap de derivacion","Attribution - Non Commercial":"Atribucion - Pas comercial","Attribution - Non Commercial - Share Alike":"Atribucion - Pas comercial - Partejar a l’identic","Attribution - Non Commercial - No Derivatives":"Atribucion - Pas comercial - Cap de derivacion","Public Domain Dedication":"Domeni public","Public":"Public","Unlisted":"Pas listat","Private":"Privat","Published":"Publicada","To transcode":"De transcodar","To import":"D’importar","Pending":"En espèra","Success":"Reüssida","Failed":"Fracàs","Misc":"Divèrs","Unknown":"Desconegut","Afar":"Afar","Abkhazian":"Abcaz","Afrikaans":"Afrikaans","Akan":"Akan","Amharic":"Amharic","Arabic":"Arabi","Aragonese":"Aragonés","American Sign Language":"Lenga de signes americana","Assamese":"Assamés","Avaric":"Avaric","Kotava":"Kotava","Aymara":"Aymara","Azerbaijani":"Azèri","Bashkir":"Bashkir","Bambara":"Bambara","Belarusian":"Bielorús","Bengali":"Bengalin","British Sign Language":"Lenga de signes britanica","Bislama":"Bislama","Tibetan":"Tibetan","Bosnian":"Bosnian","Breton":"Breton","Bulgarian":"Bulgar","Brazilian Sign Language":"Lenga de signes brasiliana","Catalan":"Catalan","Czech":"Chèc","Chamorro":"Chamorro","Chechen":"Chenchèn","Chuvash":"Chuvash","Cornish":"Cornic","Corsican":"Còrs","Cree":"Cree","Czech Sign Language":"Lenga de signes chèca","Chinese Sign Language":"Lenga de signes chinesa","Welsh":"Galés","Danish":"Danés","German":"Alemand","Dhivehi":"Maldivian","Danish Sign Language":"Lenga de signes danesa","Dzongkha":"Dzongkha","Modern Greek (1453-)":"Grèc","English":"Anglés","Esperanto":"Esperanto","Estonian":"Estonian","Basque":"Basc","Ewe":"Ewe","Faroese":"Faroés","Persian":"Persan","Fijian":"Fijian","Finnish":"Finés","French":"Francés","Western Frisian":"Frison occitendal","French Sign Language":"Lenga de signes francesa","Fulah":"Fulah","Scottish Gaelic":"Gaelic escossés","Irish":"Irlandés","Galician":"Galician","Manx":"Manés","Guarani":"Guaraní","German Sign Language":"Lenga de signes alemanda","Gujarati":"Gujarati","Haitian":"Haitian","Hausa":"Hausa","Serbo-Croatian":"Sèrbocroat","Hebrew":"Ebrieu","Herero":"Herero","Hindi":"Indi","Hiri Motu":"Hiri Motu","Croatian":"Croat","Hungarian":"Ongrés","Armenian":"Armèni","Igbo":"Igbo","Sichuan Yi":"Nuosu","Inuktitut":"Inuktitut","Indonesian":"Bahasa Indonesia","Inupiaq":"Inupiaq","Icelandic":"Islandés","Italian":"Italian","Javanese":"Javanés","Lojban":"Lojban","Japanese":"Japonés","Japanese Sign Language":"Lenga de signes japonesa","Kalaallisut":"Kalaallisut","Kannada":"Canarés","Kashmiri":"Cashmiri","Georgian":"Georgian","Kanuri":"Kanuri","Kazakh":"Cazac","Khmer":"Cmèr","Kikuyu":"Kikuyu","Kinyarwanda":"Kinyarwanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Kongo","Korean":"Corean","Kuanyama":"Kuanyama","Kurdish":"Curd","Lao":"Laosian","Latvian":"Leton","Limburgan":"Limborgués","Lingala":"Lingala","Lithuanian":"Lituanian","Luxembourgish":"Luxemborgés","Luba-Katanga":"Luba-Katanga","Ganda":"Ganda","Marshallese":"Marshallés","Malayalam":"Malaialam","Marathi":"Marathi","Macedonian":"Macedonian","Malagasy":"Malgash","Maltese":"Maltés","Mongolian":"Mongòl","Maori":"Maòri","Malay (macrolanguage)":"Malai (macrolengatge)","Burmese":"Birman","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele del Sud","North Ndebele":"Ndebele del Nòrd","Ndonga":"Ndonga","Nepali (macrolanguage)":"Nepali (macrolengatge)","Dutch":"Neerlandés","Norwegian Nynorsk":"Norvegian Nynorsk","Norwegian Bokmål":"Norvegian","Norwegian":"Norwegian","Nyanja":"Nyanja","Occitan":"Occitan","Ojibwa":"Ojibwa","Oriya (macrolanguage)":"Oriya (macrolengatge)","Oromo":"Oromo","Ossetian":"Ossèt","Panjabi":"Panjabi","Pakistan Sign Language":"Lenga de signes de Paquistan","Polish":"Polonés","Portuguese":"Portugués","Pushto":"Pushto","Quechua":"Quíchoa","Romansh":"Romanch","Romanian":"Romanés","Russian Sign Language":"Lenga de signes russa","Rundi":"Rundi","Russian":"Rus","Sango":"Sango","Saudi Arabian Sign Language":"Lenga de signes d'Arabia Saudita","South African Sign Language":"Lenga de signes d’Africa del Sud","Sinhala":"Singalés","Slovak":"Eslovac","Slovenian":"Eslovèn","Northern Sami":"Sami septentrional","Samoan":"Samoan","Shona":"Shona","Sindhi":"Sindhi","Somali":"Somali","Southern Sotho":"Sotho meridional","Spanish":"Espanhòl","Albanian":"Albanés","Sardinian":"Sard","Serbian":"Sèrbe","Swati":"Swati","Sundanese":"Sodanés","Swahili (macrolanguage)":"Swahili (macrolengatge)","Swedish":"Suedés","Swedish Sign Language":"Lenga de signes suedesa","Tahitian":"Tahician","Tamil":"Tamil","Tatar":"Tatar","Telugu":"Telugu","Tajik":"Tajik","Tagalog":"Tagalòg","Thai":"Tailandés","Tigrinya":"Tigrinya","Klingon":"Klingon","Tonga (Tonga Islands)":"Tònga (islas Tònga)","Tswana":"Tswana","Tsonga":"Tsònga","Turkmen":"Turcmèn","Turkish":"Turc","Twi":"Toï","Uighur":"Oigors","Ukrainian":"Ucraïnian","Urdu":"Ordo","Uzbek":"Uzbec","Venda":"Venda","Vietnamese":"Vietnamian","Walloon":"Valon","Wolof":"Wolòf","Xhosa":"Xhosa","Yiddish":"Yiddish","Yoruba":"Yoruba","Zhuang":"Zhuang","Chinese":"Chinés","Zulu":"Zulu"} \ No newline at end of file
diff --git a/client/src/locale/target/server_pl_PL.xml b/client/src/locale/target/server_pl_PL.xml
index 30b403986..f5ce3f9ad 100644
--- a/client/src/locale/target/server_pl_PL.xml
+++ b/client/src/locale/target/server_pl_PL.xml
@@ -43,10 +43,6 @@
43 <source>Entertainment</source> 43 <source>Entertainment</source>
44 <target>Rozrywka</target> 44 <target>Rozrywka</target>
45 </trans-unit> 45 </trans-unit>
46 <trans-unit id="News">
47 <source>News</source>
48 <target>Wiadomości</target>
49 </trans-unit>
50 <trans-unit id="How To"> 46 <trans-unit id="How To">
51 <source>How To</source> 47 <source>How To</source>
52 <target>Poradniki</target> 48 <target>Poradniki</target>
diff --git a/client/src/locale/target/server_pt_BR.json b/client/src/locale/target/server_pt_BR.json
index 375da1829..2bfcbaa59 100644
--- a/client/src/locale/target/server_pt_BR.json
+++ b/client/src/locale/target/server_pt_BR.json
@@ -1 +1 @@
{"Music":"Músicas","Films":"Filmes","Vehicles":"Veículos","Art":"Arte","Sports":"Esportes","Travels":"Viagens","Gaming":"Jogos","People":"Pessoas","Comedy":"Comédia","Entertainment":"Entretenimento","News":"Notícias","How To":"Como fazer","Education":"Educação","Activism":"Ativismo","Science & Technology":"Ciência & Tecnologia","Animals":"Animais","Kids":"Infantil","Food":"Comida","Attribution":"Atribuição","Attribution - Share Alike":"Atribuição - Compartilha Igual","Attribution - No Derivatives":"Atribuição - Sem Derivações","Attribution - Non Commercial":"Atribuição - Não Comercial","Attribution - Non Commercial - Share Alike":"Atribuição - Não Comercial - Compartilha Igual","Attribution - Non Commercial - No Derivatives":"Atribuição - Não Comercial - Sem Derivações","Public Domain Dedication":"Dedicação para Domínio Público","Public":"Público","Unlisted":"Não listado","Private":"Privado","Published":"Publicado","To transcode":"Para transcodificar","To import":"Para importar","Pending":"Pendente","Success":"Sucesso","Failed":"Falhou","Misc":"Diversos","Unknown":"Desconhecido","Afar":"Afar","Abkhazian":"Abcázio","Afrikaans":"Africâner","Akan":"Akan","Amharic":"Amárico","Arabic":"Ãrabe","Aragonese":"Aragonês","American Sign Language":"Língua de sinais americana","Assamese":"Assamês","Avaric":"Avárico","Kotava":"Coreano","Aymara":"Aimará","Azerbaijani":"Azerbaidjano","Bashkir":"Basquir","Bambara":"Bambara","Belarusian":"Bielorusso","Bengali":"Bengali","British Sign Language":"Língua de sinais britânica","Bislama":"Bislamá","Tibetan":"Tibetano","Bosnian":"Bósnio","Breton":"Bretão","Bulgarian":"Búlgaro","Brazilian Sign Language":"Língua de sinais brasileira","Catalan":"Catalão","Czech":"Tcheco","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Tchuvache","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Língua de sinais tcheca","Chinese Sign Language":"Língua de sinais chinesa","Welsh":"Galês","Danish":"Dinamarquês","German":"Alemão","Dhivehi":"Sérvio","Danish Sign Language":"Língua de sinais dinamarquesa","Dzongkha":"Butanês","Modern Greek (1453-)":"Grego, Moderno (1453-)","English":"Inglês","Esperanto":"Esperanto","Estonian":"Estoniano","Basque":"Basco","Ewe":"Jeje","Faroese":"Faroês","Persian":"Persa","Fijian":"Fidjiano","Finnish":"Finlandês","French":"Francês","Western Frisian":"Frísio ocidental","French Sign Language":"Língua de sinais francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico Escocês","Irish":"Irlandês","Galician":"Galego","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Língua de sinais alemã","Gujarati":"Gujerati","Haitian":"Italiano","Hausa":"Hauçá","Serbo-Croatian":"Croata","Hebrew":"Hebraico","Herero":"Hereró","Hindi":"Híndi","Hiri Motu":"Hiri Motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armênio","Igbo":"Ibo","Sichuan Yi":"Lituano","Inuktitut":"Inuktitut","Indonesian":"Indonésio","Inupiaq":"Inupiaque","Icelandic":"Islandês","Italian":"Italiano","Javanese":"Javanês","Lojban":"Lojban","Japanese":"Japonês","Japanese Sign Language":"Língua de sinais japonesa","Kalaallisut":"Groenlandês (Kalaallisut)","Kannada":"Canarês","Kashmiri":"Caxemira","Georgian":"Georgiano","Kanuri":"Canúri","Kazakh":"Cazaque","Khmer":"Khmer","Kikuyu":"Kikuyu","Kinyarwanda":"Ruanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Congo","Korean":"Coreano","Kuanyama":"Cuanhama","Kurdish":"Curdo","Lao":"Laosiano","Latvian":"Letão","Limburgan":"Lituano","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburguês","Luba-Katanga":"Baluba","Ganda":"Nganda","Marshallese":"Marshalês","Malayalam":"Malaiala","Marathi":"Marati","Macedonian":"Macedônio","Malagasy":"Malgaxe","Maltese":"Maltês","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malaiala (macrolíngua)","Burmese":"Birmanês","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele do Sul","North Ndebele":"Ndebele do Norte","Ndonga":"Ovampo","Nepali (macrolanguage)":"Nepalês (macrolíngua)","Dutch":"Holandês","Norwegian Nynorsk":"Norueguês Nynorsk","Norwegian BokmÃ¥l":"Norueguês Nynorsk","Norwegian":"Norueguês","Nyanja":"Lituano","Occitan":"Occitano","Ojibwa":"Obíjua","Oriya (macrolanguage)":"Oriá (macrolíngua)","Oromo":"Oromo","Ossetian":"Ossétio","Panjabi":"Panjabi","Pakistan Sign Language":"Língua de sinais paquistanesa","Polish":"Polonês","Portuguese":"Português","Pushto":"Pachto","Quechua":"Quíchua","Romansh":"Romanche","Romanian":"Romeno","Russian Sign Language":"Idiomas de Sinais","Rundi":"Kirundi","Russian":"Russo","Sango":"Sango","Saudi Arabian Sign Language":"Língua de sinais da Arábia Saudita","South African Sign Language":"Língua de sinais da Ãfrica do Sul","Sinhala":"Cingalês","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami do norte","Samoan":"Samoano","Shona":"Xona","Sindhi":"Síndi","Somali":"Somali","Southern Sotho":"Soto do Sul","Spanish":"Espanhol","Albanian":"Albanês","Sardinian":"Sardo","Serbian":"Sérvio","Swati":"Swati","Sundanese":"Sundanês","Swahili (macrolanguage)":"Suaíli (macrolíngua)","Swedish":"Sueco","Swedish Sign Language":"Língua de sinais sueca","Tahitian":"Taitiano","Tamil":"Tâmil","Tatar":"Tártaro","Telugu":"Télugo","Tajik":"Tadjique","Tagalog":"Tagalo","Thai":"Tailandês","Tigrinya":"Tigrínia","Klingon":"Letão","Tonga (Tonga Islands)":"Tonga","Tswana":"Tsuana","Tsonga":"Tsonga","Turkmen":"Turcomeno","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeque","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valão","Wolof":"Uólofe","Xhosa":"Xhosa","Yiddish":"Iídiche","Yoruba":"Ioruba","Zhuang":"Zuni","Chinese":"Chinês","Zulu":"Zulu"} \ No newline at end of file {"Music":"Músicas","Films":"Filmes","Vehicles":"Veículos","Art":"Arte","Sports":"Esportes","Travels":"Viagens","Gaming":"Jogos","People":"Pessoas","Comedy":"Comédia","Entertainment":"Entretenimento","How To":"Como fazer","Education":"Educação","Activism":"Ativismo","Science & Technology":"Ciência & Tecnologia","Animals":"Animais","Kids":"Infantil","Food":"Comida","Attribution":"Atribuição","Attribution - Share Alike":"Atribuição - Compartilha Igual","Attribution - No Derivatives":"Atribuição - Sem Derivações","Attribution - Non Commercial":"Atribuição - Não Comercial","Attribution - Non Commercial - Share Alike":"Atribuição - Não Comercial - Compartilha Igual","Attribution - Non Commercial - No Derivatives":"Atribuição - Não Comercial - Sem Derivações","Public Domain Dedication":"Dedicação para Domínio Público","Public":"Público","Unlisted":"Não listado","Private":"Privado","Published":"Publicado","To transcode":"Para transcodificar","To import":"Para importar","Pending":"Pendente","Success":"Sucesso","Failed":"Falhou","Misc":"Diversos","Unknown":"Desconhecido","Afar":"Afar","Abkhazian":"Abcázio","Afrikaans":"Africâner","Akan":"Akan","Amharic":"Amárico","Arabic":"Ãrabe","Aragonese":"Aragonês","American Sign Language":"Língua de sinais americana","Assamese":"Assamês","Avaric":"Avárico","Kotava":"Coreano","Aymara":"Aimará","Azerbaijani":"Azerbaidjano","Bashkir":"Basquir","Bambara":"Bambara","Belarusian":"Bielorusso","Bengali":"Bengali","British Sign Language":"Língua de sinais britânica","Bislama":"Bislamá","Tibetan":"Tibetano","Bosnian":"Bósnio","Breton":"Bretão","Bulgarian":"Búlgaro","Brazilian Sign Language":"Língua de sinais brasileira","Catalan":"Catalão","Czech":"Tcheco","Chamorro":"Chamorro","Chechen":"Checheno","Chuvash":"Tchuvache","Cornish":"Córnico","Corsican":"Corso","Cree":"Cree","Czech Sign Language":"Língua de sinais tcheca","Chinese Sign Language":"Língua de sinais chinesa","Welsh":"Galês","Danish":"Dinamarquês","German":"Alemão","Dhivehi":"Sérvio","Danish Sign Language":"Língua de sinais dinamarquesa","Dzongkha":"Butanês","Modern Greek (1453-)":"Grego, Moderno (1453-)","English":"Inglês","Esperanto":"Esperanto","Estonian":"Estoniano","Basque":"Basco","Ewe":"Jeje","Faroese":"Faroês","Persian":"Persa","Fijian":"Fidjiano","Finnish":"Finlandês","French":"Francês","Western Frisian":"Frísio ocidental","French Sign Language":"Língua de sinais francesa","Fulah":"Fula","Scottish Gaelic":"Gaélico Escocês","Irish":"Irlandês","Galician":"Galego","Manx":"Manx","Guarani":"Guarani","German Sign Language":"Língua de sinais alemã","Gujarati":"Gujerati","Haitian":"Italiano","Hausa":"Hauçá","Serbo-Croatian":"Croata","Hebrew":"Hebraico","Herero":"Hereró","Hindi":"Híndi","Hiri Motu":"Hiri Motu","Croatian":"Croata","Hungarian":"Húngaro","Armenian":"Armênio","Igbo":"Ibo","Sichuan Yi":"Lituano","Inuktitut":"Inuktitut","Indonesian":"Indonésio","Inupiaq":"Inupiaque","Icelandic":"Islandês","Italian":"Italiano","Javanese":"Javanês","Lojban":"Lojban","Japanese":"Japonês","Japanese Sign Language":"Língua de sinais japonesa","Kalaallisut":"Groenlandês (Kalaallisut)","Kannada":"Canarês","Kashmiri":"Caxemira","Georgian":"Georgiano","Kanuri":"Canúri","Kazakh":"Cazaque","Khmer":"Khmer","Kikuyu":"Kikuyu","Kinyarwanda":"Ruanda","Kirghiz":"Quirguiz","Komi":"Komi","Kongo":"Congo","Korean":"Coreano","Kuanyama":"Cuanhama","Kurdish":"Curdo","Lao":"Laosiano","Latvian":"Letão","Limburgan":"Lituano","Lingala":"Lingala","Lithuanian":"Lituano","Luxembourgish":"Luxemburguês","Luba-Katanga":"Baluba","Ganda":"Nganda","Marshallese":"Marshalês","Malayalam":"Malaiala","Marathi":"Marati","Macedonian":"Macedônio","Malagasy":"Malgaxe","Maltese":"Maltês","Mongolian":"Mongol","Maori":"Maori","Malay (macrolanguage)":"Malaiala (macrolíngua)","Burmese":"Birmanês","Nauru":"Nauru","Navajo":"Navajo","South Ndebele":"Ndebele do Sul","North Ndebele":"Ndebele do Norte","Ndonga":"Ovampo","Nepali (macrolanguage)":"Nepalês (macrolíngua)","Dutch":"Holandês","Norwegian Nynorsk":"Norueguês Nynorsk","Norwegian BokmÃ¥l":"Norueguês Nynorsk","Norwegian":"Norueguês","Nyanja":"Lituano","Occitan":"Occitano","Ojibwa":"Obíjua","Oriya (macrolanguage)":"Oriá (macrolíngua)","Oromo":"Oromo","Ossetian":"Ossétio","Panjabi":"Panjabi","Pakistan Sign Language":"Língua de sinais paquistanesa","Polish":"Polonês","Portuguese":"Português","Pushto":"Pachto","Quechua":"Quíchua","Romansh":"Romanche","Romanian":"Romeno","Russian Sign Language":"Idiomas de Sinais","Rundi":"Kirundi","Russian":"Russo","Sango":"Sango","Saudi Arabian Sign Language":"Língua de sinais da Arábia Saudita","South African Sign Language":"Língua de sinais da Ãfrica do Sul","Sinhala":"Cingalês","Slovak":"Eslovaco","Slovenian":"Esloveno","Northern Sami":"Sami do norte","Samoan":"Samoano","Shona":"Xona","Sindhi":"Síndi","Somali":"Somali","Southern Sotho":"Soto do Sul","Spanish":"Espanhol","Albanian":"Albanês","Sardinian":"Sardo","Serbian":"Sérvio","Swati":"Swati","Sundanese":"Sundanês","Swahili (macrolanguage)":"Suaíli (macrolíngua)","Swedish":"Sueco","Swedish Sign Language":"Língua de sinais sueca","Tahitian":"Taitiano","Tamil":"Tâmil","Tatar":"Tártaro","Telugu":"Télugo","Tajik":"Tadjique","Tagalog":"Tagalo","Thai":"Tailandês","Tigrinya":"Tigrínia","Klingon":"Letão","Tonga (Tonga Islands)":"Tonga","Tswana":"Tsuana","Tsonga":"Tsonga","Turkmen":"Turcomeno","Turkish":"Turco","Twi":"Twi","Uighur":"Uigur","Ukrainian":"Ucraniano","Urdu":"Urdu","Uzbek":"Uzbeque","Venda":"Venda","Vietnamese":"Vietnamita","Walloon":"Valão","Wolof":"Uólofe","Xhosa":"Xhosa","Yiddish":"Iídiche","Yoruba":"Ioruba","Zhuang":"Zuni","Chinese":"Chinês","Zulu":"Zulu"} \ No newline at end of file
diff --git a/client/src/locale/target/server_sv_SE.json b/client/src/locale/target/server_sv_SE.json
index 6df53199b..f0e85f139 100644
--- a/client/src/locale/target/server_sv_SE.json
+++ b/client/src/locale/target/server_sv_SE.json
@@ -1 +1 @@
{"Music":"Musik","Films":"Filmer","Vehicles":"Fordon","Art":"Konst","Sports":"Sport","Travels":"Resor","Gaming":"Spel","People":"Människor","Comedy":"Komedi","Entertainment":"Underhållning","News":"Nyheter","How To":"Instruktioner","Education":"Utbildning","Activism":"Aktivism","Science & Technology":"Vetenskap och teknik","Animals":"Djur","Kids":"Barn","Food":"Mat","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Share Alike","Attribution - No Derivatives":"Attribution - No Derivatives","Attribution - Non Commercial":"Attribution - Non Commercial","Attribution - Non Commercial - Share Alike":"Attribution - Non Commercial - Share Alike","Attribution - Non Commercial - No Derivatives":"Attribution - Non Commercial - No Derivatives","Public Domain Dedication":"Public Domain Dedication","Public":"Offentlig","Unlisted":"Olistad","Private":"Privat","Published":"Publicerad","To transcode":"Att omkoda","To import":"Att importera","Pending":"I kö","Success":"Lyckades","Failed":"Misslyckades","Misc":"Diverse","Unknown":"Okänd","Afar":"afar","Abkhazian":"abchaziska","Afrikaans":"afrikaans","Akan":"akan","Amharic":"amhariska","Arabic":"arabiska","Aragonese":"aragonska","American Sign Language":"amerikanskt teckenspråk","Assamese":"assamesiska","Avaric":"avariska","Kotava":"kotava","Aymara":"aymara","Azerbaijani":"azerbajdzjanska","Bashkir":"basjkiriska","Bambara":"bambara","Belarusian":"vitryska","Bengali":"bengali","British Sign Language":"brittiskt teckenspråk","Bislama":"bislama","Tibetan":"tibetanska","Bosnian":"bosniska","Breton":"bretonska","Bulgarian":"bulgariska","Brazilian Sign Language":"brasilianskt teckenspråk","Catalan":"katalanska","Czech":"tjeckiska","Chamorro":"chamorro","Chechen":"tjetjenska","Chuvash":"tjuvasjiska","Cornish":"korniska","Corsican":"korsikanska","Cree":"cree","Czech Sign Language":"tjeckiskt teckenspråk","Chinese Sign Language":"kinesiskt teckenspråk","Welsh":"kymriska","Danish":"danska","German":"tyska","Dhivehi":"divehi","Danish Sign Language":"danskt teckenspråk","Dzongkha":"dzongkha","Modern Greek (1453-)":"modern grekiska (1453–)","English":"engelska","Esperanto":"esperanto","Estonian":"estniska","Basque":"baskiska","Ewe":"ewe","Faroese":"färöiska","Persian":"persiska","Fijian":"fijianska","Finnish":"finska","French":"franska","Western Frisian":"västfrisiska","French Sign Language":"franskt teckenspråk","Fulah":"fula","Scottish Gaelic":"skotsk gäliska","Irish":"iriska","Galician":"galiciska","Manx":"manx","Guarani":"guaraní","German Sign Language":"tyskt teckenspråk","Gujarati":"gujarati","Haitian":"haitisk kreol","Hausa":"hausa","Serbo-Croatian":"serbokroatiska","Hebrew":"hebreiska","Herero":"herero","Hindi":"hindi","Hiri Motu":"hiri motu","Croatian":"kroatiska","Hungarian":"ungerska","Armenian":"armeniska","Igbo":"igbo","Sichuan Yi":"sichuan yi","Inuktitut":"inuktitut","Indonesian":"indonesiska","Inupiaq":"iñupiaq","Icelandic":"isländska","Italian":"italienska","Javanese":"javanesiska","Lojban":"lojban","Japanese":"japanska","Japanese Sign Language":"japanskt teckenspråk","Kalaallisut":"kalaallisut","Kannada":"kannada","Kashmiri":"kashmiri","Georgian":"georgiska","Kanuri":"kanuri","Kazakh":"kazakiska","Khmer":"khmer","Kikuyu":"kikuyu","Kinyarwanda":"rwanda","Kirghiz":"kirgiziska","Komi":"komi","Kongo":"kikongo","Korean":"koreanska","Kuanyama":"kwanyama","Kurdish":"kurdiska","Lao":"lao","Latvian":"lettiska","Limburgan":"limburgiska","Lingala":"lingala","Lithuanian":"litauiska","Luxembourgish":"luxemburgiska","Luba-Katanga":"luba-katanga","Ganda":"luganda","Marshallese":"marshallesiska","Malayalam":"malayalam","Marathi":"marathi","Macedonian":"makedonska","Malagasy":"malagassiska","Maltese":"maltesiska","Mongolian":"mongoliska","Maori":"maori","Malay (macrolanguage)":"malajiska","Burmese":"burmesiska","Nauru":"nauruanska","Navajo":"navajo","South Ndebele":"sydndebele","North Ndebele":"nordndebele","Ndonga":"ndonga","Nepali (macrolanguage)":"nepali","Dutch":"nederländska","Norwegian Nynorsk":"nynorska","Norwegian Bokmål":"bokmål","Norwegian":"norska","Nyanja":"chichewa","Occitan":"occitanska","Ojibwa":"ojibwa","Oriya (macrolanguage)":"oriya","Oromo":"oromo","Ossetian":"ossetiska","Panjabi":"punjabi","Pakistan Sign Language":"pakistanskt teckenspråk","Polish":"polska","Portuguese":"portugisiska","Pushto":"pashto","Quechua":"quechua","Romansh":"rätoromanska","Romanian":"rumänska","Russian Sign Language":"ryskt teckenspråk","Rundi":"kirundi","Russian":"ryska","Sango":"sango","Saudi Arabian Sign Language":"saudiarabiskt teckenspråk","South African Sign Language":"sydafrikanskt teckenspråk","Sinhala":"singalesiska","Slovak":"slovakiska","Slovenian":"slovenska","Northern Sami":"nordsamiska","Samoan":"samoanska","Shona":"shona","Sindhi":"sindhi","Somali":"somaliska","Southern Sotho":"sesotho","Spanish":"spanska","Albanian":"albanska","Sardinian":"sardiska","Serbian":"serbiska","Swati":"siSwati","Sundanese":"sundanesiska","Swahili (macrolanguage)":"swahili","Swedish":"svenska","Swedish Sign Language":"svenskt teckenspråk","Tahitian":"tahitiska","Tamil":"tamil","Tatar":"tatariska","Telugu":"telugu","Tajik":"tadzjikiska","Tagalog":"tagalog","Thai":"thai","Tigrinya":"tigrinska","Klingon":"klingon","Tonga (Tonga Islands)":"tonganska","Tswana":"setswana","Tsonga":"tsonga","Turkmen":"turkmeniska","Turkish":"turkiska","Twi":"twi","Uighur":"uiguriska","Ukrainian":"ukrainska","Urdu":"urdu","Uzbek":"uzbekiska","Venda":"venda","Vietnamese":"vietnamesiska","Walloon":"vallonska","Wolof":"wolof","Xhosa":"xhosa","Yiddish":"jiddisch","Yoruba":"yoruba","Zhuang":"zhuang","Chinese":"kinesiska","Zulu":"zulu"} \ No newline at end of file {"Music":"Musik","Films":"Filmer","Vehicles":"Fordon","Art":"Konst","Sports":"Sport","Travels":"Resor","Gaming":"Spel","People":"Människor","Comedy":"Komedi","Entertainment":"Underhållning","How To":"Instruktioner","Education":"Utbildning","Activism":"Aktivism","Science & Technology":"Vetenskap och teknik","Animals":"Djur","Kids":"Barn","Food":"Mat","Attribution":"Attribution","Attribution - Share Alike":"Attribution - Share Alike","Attribution - No Derivatives":"Attribution - No Derivatives","Attribution - Non Commercial":"Attribution - Non Commercial","Attribution - Non Commercial - Share Alike":"Attribution - Non Commercial - Share Alike","Attribution - Non Commercial - No Derivatives":"Attribution - Non Commercial - No Derivatives","Public Domain Dedication":"Public Domain Dedication","Public":"Offentlig","Unlisted":"Olistad","Private":"Privat","Published":"Publicerad","To transcode":"Att omkoda","To import":"Att importera","Pending":"I kö","Success":"Lyckades","Failed":"Misslyckades","Misc":"Diverse","Unknown":"Okänd","Afar":"afar","Abkhazian":"abchaziska","Afrikaans":"afrikaans","Akan":"akan","Amharic":"amhariska","Arabic":"arabiska","Aragonese":"aragonska","American Sign Language":"amerikanskt teckenspråk","Assamese":"assamesiska","Avaric":"avariska","Kotava":"kotava","Aymara":"aymara","Azerbaijani":"azerbajdzjanska","Bashkir":"basjkiriska","Bambara":"bambara","Belarusian":"vitryska","Bengali":"bengali","British Sign Language":"brittiskt teckenspråk","Bislama":"bislama","Tibetan":"tibetanska","Bosnian":"bosniska","Breton":"bretonska","Bulgarian":"bulgariska","Brazilian Sign Language":"brasilianskt teckenspråk","Catalan":"katalanska","Czech":"tjeckiska","Chamorro":"chamorro","Chechen":"tjetjenska","Chuvash":"tjuvasjiska","Cornish":"korniska","Corsican":"korsikanska","Cree":"cree","Czech Sign Language":"tjeckiskt teckenspråk","Chinese Sign Language":"kinesiskt teckenspråk","Welsh":"kymriska","Danish":"danska","German":"tyska","Dhivehi":"divehi","Danish Sign Language":"danskt teckenspråk","Dzongkha":"dzongkha","Modern Greek (1453-)":"modern grekiska (1453–)","English":"engelska","Esperanto":"esperanto","Estonian":"estniska","Basque":"baskiska","Ewe":"ewe","Faroese":"färöiska","Persian":"persiska","Fijian":"fijianska","Finnish":"finska","French":"franska","Western Frisian":"västfrisiska","French Sign Language":"franskt teckenspråk","Fulah":"fula","Scottish Gaelic":"skotsk gäliska","Irish":"iriska","Galician":"galiciska","Manx":"manx","Guarani":"guaraní","German Sign Language":"tyskt teckenspråk","Gujarati":"gujarati","Haitian":"haitisk kreol","Hausa":"hausa","Serbo-Croatian":"serbokroatiska","Hebrew":"hebreiska","Herero":"herero","Hindi":"hindi","Hiri Motu":"hiri motu","Croatian":"kroatiska","Hungarian":"ungerska","Armenian":"armeniska","Igbo":"igbo","Sichuan Yi":"sichuan yi","Inuktitut":"inuktitut","Indonesian":"indonesiska","Inupiaq":"iñupiaq","Icelandic":"isländska","Italian":"italienska","Javanese":"javanesiska","Lojban":"lojban","Japanese":"japanska","Japanese Sign Language":"japanskt teckenspråk","Kalaallisut":"kalaallisut","Kannada":"kannada","Kashmiri":"kashmiri","Georgian":"georgiska","Kanuri":"kanuri","Kazakh":"kazakiska","Khmer":"khmer","Kikuyu":"kikuyu","Kinyarwanda":"rwanda","Kirghiz":"kirgiziska","Komi":"komi","Kongo":"kikongo","Korean":"koreanska","Kuanyama":"kwanyama","Kurdish":"kurdiska","Lao":"lao","Latvian":"lettiska","Limburgan":"limburgiska","Lingala":"lingala","Lithuanian":"litauiska","Luxembourgish":"luxemburgiska","Luba-Katanga":"luba-katanga","Ganda":"luganda","Marshallese":"marshallesiska","Malayalam":"malayalam","Marathi":"marathi","Macedonian":"makedonska","Malagasy":"malagassiska","Maltese":"maltesiska","Mongolian":"mongoliska","Maori":"maori","Malay (macrolanguage)":"malajiska","Burmese":"burmesiska","Nauru":"nauruanska","Navajo":"navajo","South Ndebele":"sydndebele","North Ndebele":"nordndebele","Ndonga":"ndonga","Nepali (macrolanguage)":"nepali","Dutch":"nederländska","Norwegian Nynorsk":"nynorska","Norwegian Bokmål":"bokmål","Norwegian":"norska","Nyanja":"chichewa","Occitan":"occitanska","Ojibwa":"ojibwa","Oriya (macrolanguage)":"oriya","Oromo":"oromo","Ossetian":"ossetiska","Panjabi":"punjabi","Pakistan Sign Language":"pakistanskt teckenspråk","Polish":"polska","Portuguese":"portugisiska","Pushto":"pashto","Quechua":"quechua","Romansh":"rätoromanska","Romanian":"rumänska","Russian Sign Language":"ryskt teckenspråk","Rundi":"kirundi","Russian":"ryska","Sango":"sango","Saudi Arabian Sign Language":"saudiarabiskt teckenspråk","South African Sign Language":"sydafrikanskt teckenspråk","Sinhala":"singalesiska","Slovak":"slovakiska","Slovenian":"slovenska","Northern Sami":"nordsamiska","Samoan":"samoanska","Shona":"shona","Sindhi":"sindhi","Somali":"somaliska","Southern Sotho":"sesotho","Spanish":"spanska","Albanian":"albanska","Sardinian":"sardiska","Serbian":"serbiska","Swati":"siSwati","Sundanese":"sundanesiska","Swahili (macrolanguage)":"swahili","Swedish":"svenska","Swedish Sign Language":"svenskt teckenspråk","Tahitian":"tahitiska","Tamil":"tamil","Tatar":"tatariska","Telugu":"telugu","Tajik":"tadzjikiska","Tagalog":"tagalog","Thai":"thai","Tigrinya":"tigrinska","Klingon":"klingon","Tonga (Tonga Islands)":"tonganska","Tswana":"setswana","Tsonga":"tsonga","Turkmen":"turkmeniska","Turkish":"turkiska","Twi":"twi","Uighur":"uiguriska","Ukrainian":"ukrainska","Urdu":"urdu","Uzbek":"uzbekiska","Venda":"venda","Vietnamese":"vietnamesiska","Walloon":"vallonska","Wolof":"wolof","Xhosa":"xhosa","Yiddish":"jiddisch","Yoruba":"yoruba","Zhuang":"zhuang","Chinese":"kinesiska","Zulu":"zulu"} \ No newline at end of file
diff --git a/client/src/locale/target/server_zh_Hans_CN.json b/client/src/locale/target/server_zh_Hans_CN.json
index 1ba54d276..4d54f364e 100644
--- a/client/src/locale/target/server_zh_Hans_CN.json
+++ b/client/src/locale/target/server_zh_Hans_CN.json
@@ -1 +1 @@
{"Music":"音ä¹","Films":"电影","Vehicles":"汽车","Art":"艺术","Sports":"体育","Travels":"旅游","Gaming":"游æˆ","People":"人物","Comedy":"喜剧","Entertainment":"娱ä¹","News":"æ–°é—»","How To":"教程","Education":"教育","Activism":"社会活动","Science & Technology":"科学和技术","Animals":"动物","Kids":"å„¿ç«¥","Food":"美食","Attribution":"ç½²å","Attribution - Share Alike":"ç½²å - 相åŒæ–¹å¼å…±äº«","Attribution - No Derivatives":"ç½²å - ç¦æ­¢æ¼”绎","Attribution - Non Commercial":"ç½²å - éžå•†ä¸šæ€§ä½¿ç”¨","Attribution - Non Commercial - Share Alike":"ç½²å - éžå•†ä¸šæ€§ä½¿ç”¨ - 相åŒæ–¹å¼å…±äº«","Attribution - Non Commercial - No Derivatives":"ç½²å - éžå•†ä¸šæ€§ä½¿ç”¨ - ç¦æ­¢æ¼”绎","Public Domain Dedication":"公共领域贡献","Public":"公开","Unlisted":"ä¸å…¬å¼€","Private":"ç§äº«","Published":"å·²å‘布","To transcode":"转ç ä¸­","To import":"导入中","Pending":"等待中","Success":"æˆåŠŸ","Failed":"失败","Misc":"æ‚项","Unknown":"未知","Afar":"阿法尔语","Abkhazian":"阿布哈兹语","Afrikaans":"阿éžåˆ©å ªæ–¯è¯­","Akan":"阿åŽè¯­","Amharic":"阿姆哈拉语","Arabic":"阿拉伯语","Aragonese":"阿拉贡语","American Sign Language":"美国手语","Assamese":"阿è¨å§†è¯­","Avaric":"阿瓦尔语","Kotava":"科塔瓦语","Aymara":"艾马拉语","Azerbaijani":"阿塞拜疆语","Bashkir":"巴什基尔语","Bambara":"ç­å·´æ‹‰è¯­","Belarusian":"白俄罗斯语","Bengali":"孟加拉语","British Sign Language":"英国手语","Bislama":"比斯拉玛语","Tibetan":"è—语","Bosnian":"波斯尼亚语","Breton":"布列塔尼语","Bulgarian":"ä¿åŠ åˆ©äºšè¯­","Brazilian Sign Language":"巴西手语","Catalan":"加泰隆语","Czech":"æ·å…‹è¯­","Chamorro":"查莫罗语","Chechen":"车臣语","Chuvash":"楚瓦什语","Cornish":"康沃尔语","Corsican":"科西嘉语","Cree":"克里语","Czech Sign Language":"æ·å…‹æ‰‹è¯­","Chinese Sign Language":"中国手语","Welsh":"å¨å°”士语","Danish":"丹麦语","German":"德语","Dhivehi":"迪维希语","Danish Sign Language":"丹麦手语","Dzongkha":"ä¸ä¸¹è¯­","Modern Greek (1453-)":"现代希腊语","English":"英语","Esperanto":"世界语","Estonian":"爱沙尼亚语","Basque":"巴斯克语","Ewe":"埃维语","Faroese":"法罗斯语","Persian":"波斯语","Fijian":"æ–济语","Finnish":"芬兰语","French":"法语","Western Frisian":"弗里西亚语","French Sign Language":"法国手语","Fulah":"富拉语","Scottish Gaelic":"è‹æ ¼å…°ç›–尔语","Irish":"爱尔兰语","Galician":"加利西亚语","Manx":"马æ©å²›è¯­","Guarani":"瓜拉尼语","German Sign Language":"德国手语","Gujarati":"å¤å‰æ‹‰ç‰¹è¯­","Haitian":"海地语","Hausa":"豪è¨è¯­","Serbo-Croatian":"塞尔维亚-克罗地亚语","Hebrew":"希伯æ¥è¯­","Herero":"赫雷罗语","Hindi":"å°åœ°è¯­","Hiri Motu":"希里莫图语","Croatian":"克罗地亚语","Hungarian":"匈牙利语","Armenian":"亚美尼亚语","Igbo":"伊åšè¯­","Sichuan Yi":"å››å·å½è¯­","Inuktitut":"伊努伊特语","Indonesian":"å°å°¼è¯­","Inupiaq":"ä¾åŠªåº‡å…‹è¯­","Icelandic":"冰岛语","Italian":"æ„大利语","Javanese":"爪哇语","Lojban":"逻辑语","Japanese":"日语","Japanese Sign Language":"日本手语","Kalaallisut":"格陵兰语","Kannada":"åŽçº³è¾¾è¯­","Kashmiri":"克什米尔语","Georgian":"æ ¼é²å‰äºšè¯­","Kanuri":"å¡åŠªé‡Œè¯­","Kazakh":"哈è¨å…‹è¯­","Khmer":"高棉语","Kikuyu":"基库尤语","Kinyarwanda":"基尼阿万达语","Kirghiz":"å‰å°”å‰æ–¯è¯­","Komi":"科米语","Kongo":"刚果语","Korean":"æœé²œè¯­","Kuanyama":"宽亚玛语","Kurdish":"库尔德语","Lao":"è€æŒè¯­","Latvian":"拉脱维亚语","Limburgan":"林堡语","Lingala":"林加拉语","Lithuanian":"立陶宛语","Luxembourgish":"å¢æ£®å ¡è¯­","Luba-Katanga":"å¢å·´-加丹加语","Ganda":"干达语","Marshallese":"马ç»å°”语","Malayalam":"马拉亚拉姆语","Marathi":"马拉æ语","Macedonian":"马其顿语","Malagasy":"马达加斯加语","Maltese":"马耳他语","Mongolian":"è’™å¤è¯­","Maori":"毛利语","Malay (macrolanguage)":"马æ¥è¯­ï¼ˆå¹¿ä¹‰ï¼‰","Burmese":"缅甸语","Nauru":"ç‘™é²è¯­","Navajo":"纳瓦éœè¯­","South Ndebele":"å—æ©å¾·è´å‹’语","North Ndebele":"北æ©å¾·è´å‹’语","Ndonga":"æ©æ•¦åŠ è¯­","Nepali (macrolanguage)":"尼泊尔语(广义)","Dutch":"è·å…°è¯­","Norwegian Nynorsk":"新挪å¨è¯­","Norwegian BokmÃ¥l":"挪å¨å¸ƒå…‹èŽ«å°”语","Norwegian":"挪å¨è¯­","Nyanja":"尼扬贾语","Occitan":"奥克西å”语","Ojibwa":"奥å‰å¸ƒç“¦è¯­","Oriya (macrolanguage)":"奥利亚语(广义)","Oromo":"阿芳·奥洛莫语","Ossetian":"奥塞梯语","Panjabi":"æ—é®æ™®è¯­","Pakistan Sign Language":"巴基斯å¦æ‰‹è¯­","Polish":"波兰语","Portuguese":"è‘¡è„牙语","Pushto":"普什图语","Quechua":"凯楚亚语","Romansh":"罗曼什语","Romanian":"罗马尼亚语","Russian Sign Language":"俄罗斯手语","Rundi":"基隆迪语","Russian":"俄语","Sango":"桑戈语","Saudi Arabian Sign Language":"沙特阿拉伯手语","South African Sign Language":"å—éžæ‰‹è¯­","Sinhala":"僧加罗语","Slovak":"斯洛ä¼å…‹è¯­","Slovenian":"斯洛文尼亚语","Northern Sami":"北è¨ç±³è¯­","Samoan":"è¨æ‘©äºšè¯­","Shona":"ç»çº³è¯­","Sindhi":"信德语","Somali":"索马里语","Southern Sotho":"塞索托语","Spanish":"西ç­ç‰™è¯­","Albanian":"阿尔巴尼亚语","Sardinian":"æ’’ä¸è¯­","Serbian":"塞尔维亚语","Swati":"塞斯瓦替语","Sundanese":"巽他语","Swahili (macrolanguage)":"斯瓦希里语(广义)","Swedish":"瑞典语","Swedish Sign Language":"瑞典手语","Tahitian":"塔希æ语","Tamil":"泰米尔语","Tatar":"塔塔尔语","Telugu":"æ³°å¢å›ºè¯­","Tajik":"å¡”å‰å…‹è¯­","Tagalog":"他加禄语","Thai":"泰语","Tigrinya":"æ格里尼亚语","Klingon":"克林贡语","Tonga (Tonga Islands)":"汤加语","Tswana":"塞茨瓦纳语","Tsonga":"宗加语","Turkmen":"土库曼语","Turkish":"土耳其语","Twi":"特å¨è¯­","Uighur":"ç»´å¾å°”语","Ukrainian":"乌克兰语","Urdu":"乌尔都语","Uzbek":"乌兹别克语","Venda":"文达语","Vietnamese":"越å—语","Walloon":"沃伦语","Wolof":"沃洛夫语","Xhosa":"科è¨è¯­","Yiddish":"ä¾åœ°è¯­","Yoruba":"约é²å·´è¯­","Zhuang":"壮语","Chinese":"汉语","Zulu":"祖é²è¯­"} \ No newline at end of file {"Music":"音ä¹","Films":"电影","Vehicles":"汽车","Art":"艺术","Sports":"体育","Travels":"旅游","Gaming":"游æˆ","People":"人物","Comedy":"喜剧","Entertainment":"娱ä¹","How To":"教程","Education":"教育","Activism":"社会活动","Science & Technology":"科学和技术","Animals":"动物","Kids":"å„¿ç«¥","Food":"美食","Attribution":"ç½²å","Attribution - Share Alike":"ç½²å - 相åŒæ–¹å¼å…±äº«","Attribution - No Derivatives":"ç½²å - ç¦æ­¢æ¼”绎","Attribution - Non Commercial":"ç½²å - éžå•†ä¸šæ€§ä½¿ç”¨","Attribution - Non Commercial - Share Alike":"ç½²å - éžå•†ä¸šæ€§ä½¿ç”¨ - 相åŒæ–¹å¼å…±äº«","Attribution - Non Commercial - No Derivatives":"ç½²å - éžå•†ä¸šæ€§ä½¿ç”¨ - ç¦æ­¢æ¼”绎","Public Domain Dedication":"公共领域贡献","Public":"公开","Unlisted":"ä¸å…¬å¼€","Private":"ç§äº«","Published":"å·²å‘布","To transcode":"转ç ä¸­","To import":"导入中","Pending":"等待中","Success":"æˆåŠŸ","Failed":"失败","Misc":"æ‚项","Unknown":"未知","Afar":"阿法尔语","Abkhazian":"阿布哈兹语","Afrikaans":"阿éžåˆ©å ªæ–¯è¯­","Akan":"阿åŽè¯­","Amharic":"阿姆哈拉语","Arabic":"阿拉伯语","Aragonese":"阿拉贡语","American Sign Language":"美国手语","Assamese":"阿è¨å§†è¯­","Avaric":"阿瓦尔语","Kotava":"科塔瓦语","Aymara":"艾马拉语","Azerbaijani":"阿塞拜疆语","Bashkir":"巴什基尔语","Bambara":"ç­å·´æ‹‰è¯­","Belarusian":"白俄罗斯语","Bengali":"孟加拉语","British Sign Language":"英国手语","Bislama":"比斯拉玛语","Tibetan":"è—语","Bosnian":"波斯尼亚语","Breton":"布列塔尼语","Bulgarian":"ä¿åŠ åˆ©äºšè¯­","Brazilian Sign Language":"巴西手语","Catalan":"加泰隆语","Czech":"æ·å…‹è¯­","Chamorro":"查莫罗语","Chechen":"车臣语","Chuvash":"楚瓦什语","Cornish":"康沃尔语","Corsican":"科西嘉语","Cree":"克里语","Czech Sign Language":"æ·å…‹æ‰‹è¯­","Chinese Sign Language":"中国手语","Welsh":"å¨å°”士语","Danish":"丹麦语","German":"德语","Dhivehi":"迪维希语","Danish Sign Language":"丹麦手语","Dzongkha":"ä¸ä¸¹è¯­","Modern Greek (1453-)":"现代希腊语","English":"英语","Esperanto":"世界语","Estonian":"爱沙尼亚语","Basque":"巴斯克语","Ewe":"埃维语","Faroese":"法罗斯语","Persian":"波斯语","Fijian":"æ–济语","Finnish":"芬兰语","French":"法语","Western Frisian":"弗里西亚语","French Sign Language":"法国手语","Fulah":"富拉语","Scottish Gaelic":"è‹æ ¼å…°ç›–尔语","Irish":"爱尔兰语","Galician":"加利西亚语","Manx":"马æ©å²›è¯­","Guarani":"瓜拉尼语","German Sign Language":"德国手语","Gujarati":"å¤å‰æ‹‰ç‰¹è¯­","Haitian":"海地语","Hausa":"豪è¨è¯­","Serbo-Croatian":"塞尔维亚-克罗地亚语","Hebrew":"希伯æ¥è¯­","Herero":"赫雷罗语","Hindi":"å°åœ°è¯­","Hiri Motu":"希里莫图语","Croatian":"克罗地亚语","Hungarian":"匈牙利语","Armenian":"亚美尼亚语","Igbo":"伊åšè¯­","Sichuan Yi":"å››å·å½è¯­","Inuktitut":"伊努伊特语","Indonesian":"å°å°¼è¯­","Inupiaq":"ä¾åŠªåº‡å…‹è¯­","Icelandic":"冰岛语","Italian":"æ„大利语","Javanese":"爪哇语","Lojban":"逻辑语","Japanese":"日语","Japanese Sign Language":"日本手语","Kalaallisut":"格陵兰语","Kannada":"åŽçº³è¾¾è¯­","Kashmiri":"克什米尔语","Georgian":"æ ¼é²å‰äºšè¯­","Kanuri":"å¡åŠªé‡Œè¯­","Kazakh":"哈è¨å…‹è¯­","Khmer":"高棉语","Kikuyu":"基库尤语","Kinyarwanda":"基尼阿万达语","Kirghiz":"å‰å°”å‰æ–¯è¯­","Komi":"科米语","Kongo":"刚果语","Korean":"æœé²œè¯­","Kuanyama":"宽亚玛语","Kurdish":"库尔德语","Lao":"è€æŒè¯­","Latvian":"拉脱维亚语","Limburgan":"林堡语","Lingala":"林加拉语","Lithuanian":"立陶宛语","Luxembourgish":"å¢æ£®å ¡è¯­","Luba-Katanga":"å¢å·´-加丹加语","Ganda":"干达语","Marshallese":"马ç»å°”语","Malayalam":"马拉亚拉姆语","Marathi":"马拉æ语","Macedonian":"马其顿语","Malagasy":"马达加斯加语","Maltese":"马耳他语","Mongolian":"è’™å¤è¯­","Maori":"毛利语","Malay (macrolanguage)":"马æ¥è¯­ï¼ˆå¹¿ä¹‰ï¼‰","Burmese":"缅甸语","Nauru":"ç‘™é²è¯­","Navajo":"纳瓦éœè¯­","South Ndebele":"å—æ©å¾·è´å‹’语","North Ndebele":"北æ©å¾·è´å‹’语","Ndonga":"æ©æ•¦åŠ è¯­","Nepali (macrolanguage)":"尼泊尔语(广义)","Dutch":"è·å…°è¯­","Norwegian Nynorsk":"新挪å¨è¯­","Norwegian BokmÃ¥l":"挪å¨å¸ƒå…‹èŽ«å°”语","Norwegian":"挪å¨è¯­","Nyanja":"尼扬贾语","Occitan":"奥克西å”语","Ojibwa":"奥å‰å¸ƒç“¦è¯­","Oriya (macrolanguage)":"奥利亚语(广义)","Oromo":"阿芳·奥洛莫语","Ossetian":"奥塞梯语","Panjabi":"æ—é®æ™®è¯­","Pakistan Sign Language":"巴基斯å¦æ‰‹è¯­","Polish":"波兰语","Portuguese":"è‘¡è„牙语","Pushto":"普什图语","Quechua":"凯楚亚语","Romansh":"罗曼什语","Romanian":"罗马尼亚语","Russian Sign Language":"俄罗斯手语","Rundi":"基隆迪语","Russian":"俄语","Sango":"桑戈语","Saudi Arabian Sign Language":"沙特阿拉伯手语","South African Sign Language":"å—éžæ‰‹è¯­","Sinhala":"僧加罗语","Slovak":"斯洛ä¼å…‹è¯­","Slovenian":"斯洛文尼亚语","Northern Sami":"北è¨ç±³è¯­","Samoan":"è¨æ‘©äºšè¯­","Shona":"ç»çº³è¯­","Sindhi":"信德语","Somali":"索马里语","Southern Sotho":"塞索托语","Spanish":"西ç­ç‰™è¯­","Albanian":"阿尔巴尼亚语","Sardinian":"æ’’ä¸è¯­","Serbian":"塞尔维亚语","Swati":"塞斯瓦替语","Sundanese":"巽他语","Swahili (macrolanguage)":"斯瓦希里语(广义)","Swedish":"瑞典语","Swedish Sign Language":"瑞典手语","Tahitian":"塔希æ语","Tamil":"泰米尔语","Tatar":"塔塔尔语","Telugu":"æ³°å¢å›ºè¯­","Tajik":"å¡”å‰å…‹è¯­","Tagalog":"他加禄语","Thai":"泰语","Tigrinya":"æ格里尼亚语","Klingon":"克林贡语","Tonga (Tonga Islands)":"汤加语","Tswana":"塞茨瓦纳语","Tsonga":"宗加语","Turkmen":"土库曼语","Turkish":"土耳其语","Twi":"特å¨è¯­","Uighur":"ç»´å¾å°”语","Ukrainian":"乌克兰语","Urdu":"乌尔都语","Uzbek":"乌兹别克语","Venda":"文达语","Vietnamese":"越å—语","Walloon":"沃伦语","Wolof":"沃洛夫语","Xhosa":"科è¨è¯­","Yiddish":"ä¾åœ°è¯­","Yoruba":"约é²å·´è¯­","Zhuang":"壮语","Chinese":"汉语","Zulu":"祖é²è¯­"} \ No newline at end of file
diff --git a/client/src/locale/target/server_zh_Hant_TW.json b/client/src/locale/target/server_zh_Hant_TW.json
index 7b210d564..11bcde412 100644
--- a/client/src/locale/target/server_zh_Hant_TW.json
+++ b/client/src/locale/target/server_zh_Hant_TW.json
@@ -1 +1 @@
{"Music":"音樂","Films":"電影","Vehicles":"汽車","Art":"è—è¡“","Sports":"é‹å‹•","Travels":"æ—…éŠ","Gaming":"éŠæˆ²","People":"大眾","Comedy":"喜劇","Entertainment":"娛樂","News":"æ–°èž","How To":"How To","Education":"教育","Activism":"行動","Science & Technology":"科學與科技","Animals":"動物","Kids":"å…’ç«¥","Food":"食物","Attribution":"姓å標示","Attribution - Share Alike":"姓å標示 - 相åŒæ–¹å¼åˆ†äº«","Attribution - No Derivatives":"姓å標示 - ç¦æ­¢æ”¹ä½œ","Attribution - Non Commercial":"姓å標示 - éžå•†æ¥­æ€§","Attribution - Non Commercial - Share Alike":"姓å標示 - éžå•†æ¥­æ€§ - 相åŒæ–¹å¼åˆ†äº«","Attribution - Non Commercial - No Derivatives":"姓å標示 - éžå•†æ¥­æ€§ - ç¦æ­¢æ”¹ä½œ","Public Domain Dedication":"公有領域","Public":"公開","Unlisted":"ä¸åˆ—出","Private":"ç§äºº","Published":"已發佈","To transcode":"待轉æ›ç·¨ç¢¼","To import":"待匯入","Pending":"擱置中","Success":"æˆåŠŸ","Failed":"失敗","Misc":"雜項","Unknown":"未知","Afar":"阿法爾語","Abkhazian":"阿布哈茲語","Afrikaans":"å—éžèªž","Akan":"阿寒語","Amharic":"阿姆哈拉語","Arabic":"阿拉伯語","Aragonese":"亞拉岡語","American Sign Language":"美國手語","Assamese":"阿薩姆語","Avaric":"阿瓦爾語","Kotava":"Kotava 語","Aymara":"艾馬拉語","Azerbaijani":"亞塞拜然語","Bashkir":"巴什基爾語","Bambara":"ç­å·´æ‹‰èªž","Belarusian":"白俄羅斯語","Bengali":"孟加拉語","British Sign Language":"英國手語","Bislama":"比斯拉馬語","Tibetan":"è—語","Bosnian":"波士尼亞語","Breton":"布列塔尼語","Bulgarian":"ä¿åŠ åˆ©äºžèªž","Brazilian Sign Language":"巴西手語","Catalan":"加泰隆尼亞語","Czech":"æ·å…‹èªž","Chamorro":"查莫羅語","Chechen":"車臣語","Chuvash":"楚瓦什語","Cornish":"康瓦爾語","Corsican":"科西嘉語","Cree":"克里語","Czech Sign Language":"æ·å…‹æ‰‹èªž","Chinese Sign Language":"中國手語","Welsh":"å¨çˆ¾æ–¯èªž","Danish":"丹麥語","German":"德語","Dhivehi":"迪維西語","Danish Sign Language":"丹麥手語","Dzongkha":"ä¸ä¸¹èªž","Modern Greek (1453-)":"ç¾ä»£å¸Œè‡˜èªžï¼ˆ1453年後)","English":"英語","Esperanto":"世界語","Estonian":"愛沙尼亞語","Basque":"巴斯克語","Ewe":"埃維語","Faroese":"法羅語","Persian":"波斯語","Fijian":"æ–濟語","Finnish":"芬蘭語","French":"法語","Western Frisian":"西è²å£«è˜­èªž","French Sign Language":"法國手語","Fulah":"富拉語","Scottish Gaelic":"蘇格蘭蓋爾語","Irish":"愛爾蘭語","Galician":"加利西亞語","Manx":"曼島語","Guarani":"瓜拉尼語","German Sign Language":"德國手語","Gujarati":"å¤å‰æ‹‰ç‰¹èªž","Haitian":"海地語","Hausa":"豪薩語","Serbo-Croatian":"塞爾維亞-克羅埃西亞語","Hebrew":"希伯來語","Herero":"赫雷羅語","Hindi":"å°åœ°èªž","Hiri Motu":"希里摩圖語","Croatian":"克羅埃西亞語","Hungarian":"匈牙利語","Armenian":"亞美尼亞語","Igbo":"伊åšèªž","Sichuan Yi":"å½èªžåŒ—部方言","Inuktitut":"å› ç´ç‰¹èªž","Indonesian":"å°å°¼èªž","Inupiaq":"å› ç´çš®é›…特語","Icelandic":"冰島語","Italian":"義大利語","Javanese":"爪哇語","Lojban":"é‚輯語","Japanese":"日語","Japanese Sign Language":"日本手語","Kalaallisut":"格陵蘭語","Kannada":"康ç´é”語","Kashmiri":"喀什米爾語","Georgian":"喬治亞語","Kanuri":"å¡åŠªé‡Œèªž","Kazakh":"哈薩克語","Khmer":"高棉語","Kikuyu":"基庫尤語","Kinyarwanda":"盧安é”語","Kirghiz":"å‰çˆ¾å‰æ–¯èªž","Komi":"科米語","Kongo":"剛果語","Korean":"韓語","Kuanyama":"Kuanyama 語","Kurdish":"庫德語","Lao":"寮語","Latvian":"拉脫維亞語","Limburgan":"林堡語","Lingala":"林格拉語","Lithuanian":"立陶宛語","Luxembourgish":"盧森堡語","Luba-Katanga":"盧巴å¡ä¸¹åŠ èªž","Ganda":"盧干é”語","Marshallese":"馬紹爾語","Malayalam":"馬拉雅拉姆語","Marathi":"馬拉æ語","Macedonian":"馬其頓語","Malagasy":"馬拉加斯語","Maltese":"馬爾他語","Mongolian":"è’™å¤èªž","Maori":"毛利語","Malay (macrolanguage)":"馬來語","Burmese":"緬甸語","Nauru":"諾魯語","Navajo":"ç´ç“¦è·èªž","South Ndebele":"å—æ©å¾·è²å‹’語","North Ndebele":"北æ©å¾·è²å‹’語","Ndonga":"æ©æ•¦åŠ èªž","Nepali (macrolanguage)":"尼泊爾語","Dutch":"è·è˜­èªž","Norwegian Nynorsk":"新挪å¨èªž","Norwegian BokmÃ¥l":"書é¢æŒªå¨èªž","Norwegian":"挪å¨èªž","Nyanja":"å°¼æšè³ˆèªž","Occitan":"奧克西當語","Ojibwa":"æ­åŠå¸ƒå¨èªž","Oriya (macrolanguage)":"æ­åˆ©äºžèªž","Oromo":"奧羅莫語","Ossetian":"奧塞æ亞語","Panjabi":"æ—é®æ™®èªž","Pakistan Sign Language":"巴基斯å¦æ‰‹èªž","Polish":"波蘭語","Portuguese":"è‘¡è„牙語","Pushto":"普什圖語","Quechua":"奇楚瓦語","Romansh":"羅曼什語","Romanian":"羅馬尼亞語","Russian Sign Language":"俄羅斯手語","Rundi":"克倫地語","Russian":"俄語","Sango":"桑戈語","Saudi Arabian Sign Language":"æ²™çƒåœ°é˜¿æ‹‰ä¼¯æ‰‹èªž","South African Sign Language":"å—éžæ‰‹èªž","Sinhala":"僧伽羅語","Slovak":"斯洛ä¼å…‹èªž","Slovenian":"斯洛維尼亞語","Northern Sami":"北方薩米語","Samoan":"薩摩亞語","Shona":"ä¿®ç´èªž","Sindhi":"信德語","Somali":"索馬利亞語","Southern Sotho":"塞索托語","Spanish":"西ç­ç‰™èªž","Albanian":"阿爾巴尼亞語","Sardinian":"è–©ä¸å°¼äºžèªž","Serbian":"塞爾維亞語","Swati":"å²ç“¦æ¿Ÿèªž","Sundanese":"巽他語","Swahili (macrolanguage)":"斯瓦希里語","Swedish":"瑞典語","Swedish Sign Language":"瑞典手語","Tahitian":"大溪地語","Tamil":"å¦ç±³çˆ¾èªž","Tatar":"韃é¼èªž","Telugu":"泰盧固語","Tajik":"å¡”å‰å…‹èªž","Tagalog":"他加祿語","Thai":"泰語","Tigrinya":"æ格利尼亞語","Klingon":"克林貢語","Tonga (Tonga Islands)":"æ±åŠ èªž","Tswana":"札那語","Tsonga":"宋加語","Turkmen":"土庫曼語","Turkish":"土耳其語","Twi":"契維語","Uighur":"維å¾çˆ¾èªž","Ukrainian":"çƒå…‹è˜­èªž","Urdu":"çƒçˆ¾éƒ½èªž","Uzbek":"çƒèŒ²åˆ¥å…‹èªž","Venda":"æ–‡é”語","Vietnamese":"越å—語","Walloon":"瓦隆語","Wolof":"沃洛夫語","Xhosa":"科薩語","Yiddish":"æ„第緒語","Yoruba":"約魯巴語","Zhuang":"壯語","Chinese":"漢語","Zulu":"祖魯語"} \ No newline at end of file {"Music":"音樂","Films":"電影","Vehicles":"汽車","Art":"è—è¡“","Sports":"é‹å‹•","Travels":"æ—…éŠ","Gaming":"éŠæˆ²","People":"大眾","Comedy":"喜劇","Entertainment":"娛樂","How To":"How To","Education":"教育","Activism":"行動","Science & Technology":"科學與科技","Animals":"動物","Kids":"å…’ç«¥","Food":"食物","Attribution":"姓å標示","Attribution - Share Alike":"姓å標示 - 相åŒæ–¹å¼åˆ†äº«","Attribution - No Derivatives":"姓å標示 - ç¦æ­¢æ”¹ä½œ","Attribution - Non Commercial":"姓å標示 - éžå•†æ¥­æ€§","Attribution - Non Commercial - Share Alike":"姓å標示 - éžå•†æ¥­æ€§ - 相åŒæ–¹å¼åˆ†äº«","Attribution - Non Commercial - No Derivatives":"姓å標示 - éžå•†æ¥­æ€§ - ç¦æ­¢æ”¹ä½œ","Public Domain Dedication":"公有領域","Public":"公開","Unlisted":"ä¸åˆ—出","Private":"ç§äºº","Published":"已發佈","To transcode":"待轉æ›ç·¨ç¢¼","To import":"待匯入","Pending":"擱置中","Success":"æˆåŠŸ","Failed":"失敗","Misc":"雜項","Unknown":"未知","Afar":"阿法爾語","Abkhazian":"阿布哈茲語","Afrikaans":"å—éžèªž","Akan":"阿寒語","Amharic":"阿姆哈拉語","Arabic":"阿拉伯語","Aragonese":"亞拉岡語","American Sign Language":"美國手語","Assamese":"阿薩姆語","Avaric":"阿瓦爾語","Kotava":"Kotava 語","Aymara":"艾馬拉語","Azerbaijani":"亞塞拜然語","Bashkir":"巴什基爾語","Bambara":"ç­å·´æ‹‰èªž","Belarusian":"白俄羅斯語","Bengali":"孟加拉語","British Sign Language":"英國手語","Bislama":"比斯拉馬語","Tibetan":"è—語","Bosnian":"波士尼亞語","Breton":"布列塔尼語","Bulgarian":"ä¿åŠ åˆ©äºžèªž","Brazilian Sign Language":"巴西手語","Catalan":"加泰隆尼亞語","Czech":"æ·å…‹èªž","Chamorro":"查莫羅語","Chechen":"車臣語","Chuvash":"楚瓦什語","Cornish":"康瓦爾語","Corsican":"科西嘉語","Cree":"克里語","Czech Sign Language":"æ·å…‹æ‰‹èªž","Chinese Sign Language":"中國手語","Welsh":"å¨çˆ¾æ–¯èªž","Danish":"丹麥語","German":"德語","Dhivehi":"迪維西語","Danish Sign Language":"丹麥手語","Dzongkha":"ä¸ä¸¹èªž","Modern Greek (1453-)":"ç¾ä»£å¸Œè‡˜èªžï¼ˆ1453年後)","English":"英語","Esperanto":"世界語","Estonian":"愛沙尼亞語","Basque":"巴斯克語","Ewe":"埃維語","Faroese":"法羅語","Persian":"波斯語","Fijian":"æ–濟語","Finnish":"芬蘭語","French":"法語","Western Frisian":"西è²å£«è˜­èªž","French Sign Language":"法國手語","Fulah":"富拉語","Scottish Gaelic":"蘇格蘭蓋爾語","Irish":"愛爾蘭語","Galician":"加利西亞語","Manx":"曼島語","Guarani":"瓜拉尼語","German Sign Language":"德國手語","Gujarati":"å¤å‰æ‹‰ç‰¹èªž","Haitian":"海地語","Hausa":"豪薩語","Serbo-Croatian":"塞爾維亞-克羅埃西亞語","Hebrew":"希伯來語","Herero":"赫雷羅語","Hindi":"å°åœ°èªž","Hiri Motu":"希里摩圖語","Croatian":"克羅埃西亞語","Hungarian":"匈牙利語","Armenian":"亞美尼亞語","Igbo":"伊åšèªž","Sichuan Yi":"å½èªžåŒ—部方言","Inuktitut":"å› ç´ç‰¹èªž","Indonesian":"å°å°¼èªž","Inupiaq":"å› ç´çš®é›…特語","Icelandic":"冰島語","Italian":"義大利語","Javanese":"爪哇語","Lojban":"é‚輯語","Japanese":"日語","Japanese Sign Language":"日本手語","Kalaallisut":"格陵蘭語","Kannada":"康ç´é”語","Kashmiri":"喀什米爾語","Georgian":"喬治亞語","Kanuri":"å¡åŠªé‡Œèªž","Kazakh":"哈薩克語","Khmer":"高棉語","Kikuyu":"基庫尤語","Kinyarwanda":"盧安é”語","Kirghiz":"å‰çˆ¾å‰æ–¯èªž","Komi":"科米語","Kongo":"剛果語","Korean":"韓語","Kuanyama":"Kuanyama 語","Kurdish":"庫德語","Lao":"寮語","Latvian":"拉脫維亞語","Limburgan":"林堡語","Lingala":"林格拉語","Lithuanian":"立陶宛語","Luxembourgish":"盧森堡語","Luba-Katanga":"盧巴å¡ä¸¹åŠ èªž","Ganda":"盧干é”語","Marshallese":"馬紹爾語","Malayalam":"馬拉雅拉姆語","Marathi":"馬拉æ語","Macedonian":"馬其頓語","Malagasy":"馬拉加斯語","Maltese":"馬爾他語","Mongolian":"è’™å¤èªž","Maori":"毛利語","Malay (macrolanguage)":"馬來語","Burmese":"緬甸語","Nauru":"諾魯語","Navajo":"ç´ç“¦è·èªž","South Ndebele":"å—æ©å¾·è²å‹’語","North Ndebele":"北æ©å¾·è²å‹’語","Ndonga":"æ©æ•¦åŠ èªž","Nepali (macrolanguage)":"尼泊爾語","Dutch":"è·è˜­èªž","Norwegian Nynorsk":"新挪å¨èªž","Norwegian BokmÃ¥l":"書é¢æŒªå¨èªž","Norwegian":"挪å¨èªž","Nyanja":"å°¼æšè³ˆèªž","Occitan":"奧克西當語","Ojibwa":"æ­åŠå¸ƒå¨èªž","Oriya (macrolanguage)":"æ­åˆ©äºžèªž","Oromo":"奧羅莫語","Ossetian":"奧塞æ亞語","Panjabi":"æ—é®æ™®èªž","Pakistan Sign Language":"巴基斯å¦æ‰‹èªž","Polish":"波蘭語","Portuguese":"è‘¡è„牙語","Pushto":"普什圖語","Quechua":"奇楚瓦語","Romansh":"羅曼什語","Romanian":"羅馬尼亞語","Russian Sign Language":"俄羅斯手語","Rundi":"克倫地語","Russian":"俄語","Sango":"桑戈語","Saudi Arabian Sign Language":"æ²™çƒåœ°é˜¿æ‹‰ä¼¯æ‰‹èªž","South African Sign Language":"å—éžæ‰‹èªž","Sinhala":"僧伽羅語","Slovak":"斯洛ä¼å…‹èªž","Slovenian":"斯洛維尼亞語","Northern Sami":"北方薩米語","Samoan":"薩摩亞語","Shona":"ä¿®ç´èªž","Sindhi":"信德語","Somali":"索馬利亞語","Southern Sotho":"塞索托語","Spanish":"西ç­ç‰™èªž","Albanian":"阿爾巴尼亞語","Sardinian":"è–©ä¸å°¼äºžèªž","Serbian":"塞爾維亞語","Swati":"å²ç“¦æ¿Ÿèªž","Sundanese":"巽他語","Swahili (macrolanguage)":"斯瓦希里語","Swedish":"瑞典語","Swedish Sign Language":"瑞典手語","Tahitian":"大溪地語","Tamil":"å¦ç±³çˆ¾èªž","Tatar":"韃é¼èªž","Telugu":"泰盧固語","Tajik":"å¡”å‰å…‹èªž","Tagalog":"他加祿語","Thai":"泰語","Tigrinya":"æ格利尼亞語","Klingon":"克林貢語","Tonga (Tonga Islands)":"æ±åŠ èªž","Tswana":"札那語","Tsonga":"宋加語","Turkmen":"土庫曼語","Turkish":"土耳其語","Twi":"契維語","Uighur":"維å¾çˆ¾èªž","Ukrainian":"çƒå…‹è˜­èªž","Urdu":"çƒçˆ¾éƒ½èªž","Uzbek":"çƒèŒ²åˆ¥å…‹èªž","Venda":"æ–‡é”語","Vietnamese":"越å—語","Walloon":"瓦隆語","Wolof":"沃洛夫語","Xhosa":"科薩語","Yiddish":"æ„第緒語","Yoruba":"約魯巴語","Zhuang":"壯語","Chinese":"漢語","Zulu":"祖魯語"} \ No newline at end of file
diff --git a/client/src/main.ts b/client/src/main.ts
index f456e89c5..dee962180 100644
--- a/client/src/main.ts
+++ b/client/src/main.ts
@@ -8,7 +8,7 @@ import { hmrBootstrap } from './hmr'
8import { getDevLocale, isOnDevLocale } from '@app/shared/i18n/i18n-utils' 8import { getDevLocale, isOnDevLocale } from '@app/shared/i18n/i18n-utils'
9import { buildFileLocale } from '../../shared' 9import { buildFileLocale } from '../../shared'
10 10
11let providers = [] 11let providers: any[] = []
12if (environment.production) { 12if (environment.production) {
13 enableProdMode() 13 enableProdMode()
14} 14}
diff --git a/client/src/polyfills.ts b/client/src/polyfills.ts
index eec30760d..dfe45b591 100644
--- a/client/src/polyfills.ts
+++ b/client/src/polyfills.ts
@@ -18,24 +18,26 @@
18 * BROWSER POLYFILLS 18 * BROWSER POLYFILLS
19 */ 19 */
20 20
21/** IE9, IE10 and IE11 requires all of the following polyfills. **/ 21/**
22 * IE9, IE10 and IE11 requires all of the following polyfills.
23 */
22 24
23// For Google Bot 25// For Google Bot
24import 'core-js/es6/symbol'; 26import 'core-js/es6/symbol'
25import 'core-js/es6/object'; 27import 'core-js/es6/object'
26import 'core-js/es6/function'; 28import 'core-js/es6/function'
27import 'core-js/es6/parse-int'; 29import 'core-js/es6/parse-int'
28import 'core-js/es6/parse-float'; 30import 'core-js/es6/parse-float'
29import 'core-js/es6/number'; 31import 'core-js/es6/number'
30import 'core-js/es6/math'; 32import 'core-js/es6/math'
31import 'core-js/es6/string'; 33import 'core-js/es6/string'
32import 'core-js/es6/date'; 34import 'core-js/es6/date'
33import 'core-js/es6/array'; 35import 'core-js/es6/array'
34import 'core-js/es6/regexp'; 36import 'core-js/es6/regexp'
35import 'core-js/es6/map'; 37import 'core-js/es6/map'
36import 'core-js/es6/weak-map'; 38import 'core-js/es6/weak-map'
37import 'core-js/es6/set'; 39import 'core-js/es6/set'
38import 'core-js/es7/object'; 40import 'core-js/es7/object'
39 41
40/** IE10 and IE11 requires the following for NgClass support on SVG elements */ 42/** IE10 and IE11 requires the following for NgClass support on SVG elements */
41// import 'classlist.js'; // Run `npm install --save classlist.js`. 43// import 'classlist.js'; // Run `npm install --save classlist.js`.
@@ -43,17 +45,18 @@ import 'core-js/es7/object';
43/** IE10 and IE11 requires the following for the Reflect API. */ 45/** IE10 and IE11 requires the following for the Reflect API. */
44 46
45// For Google Bot 47// For Google Bot
46import 'core-js/es6/reflect'; 48import 'core-js/es6/reflect'
47 49
48/** Evergreen browsers require these. **/ 50/**
51 * Evergreen browsers require these.
52 */
49// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. 53// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
50import 'core-js/es7/reflect' 54import 'core-js/es7/reflect'
51 55
52
53/** 56/**
54 * Required to support Web Animations `@angular/platform-browser/animations`. 57 * Required to support Web Animations `@angular/platform-browser/animations`.
55 * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation 58 * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
56 **/ 59 */
57// import 'web-animations-js'; // Run `npm install --save web-animations-js`. 60// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
58 61
59/** 62/**
@@ -70,19 +73,17 @@ import 'core-js/es7/reflect'
70*/ 73*/
71// (window as any).__Zone_enable_cross_context_check = true; 74// (window as any).__Zone_enable_cross_context_check = true;
72 75
73
74/*************************************************************************************************** 76/***************************************************************************************************
75 * Zone JS is required by default for Angular itself. 77 * Zone JS is required by default for Angular itself.
76 */ 78 */
77import 'zone.js/dist/zone' // Included with Angular CLI. 79import 'zone.js/dist/zone' // Included with Angular CLI.
78 80
79
80/*************************************************************************************************** 81/***************************************************************************************************
81 * APPLICATION IMPORTS 82 * APPLICATION IMPORTS
82 */ 83 */
83 84
84// global/process polyfills 85// global/process polyfills
85 86
86;(window as any).global = window; 87;(window as any).global = window
87;(window as any).process = require('process/'); 88;(window as any).process = require('process/')
88;(window as any).Buffer = require('buffer/').Buffer; 89;(window as any).Buffer = require('buffer/').Buffer
diff --git a/client/src/sass/include/_bootstrap-variables.scss b/client/src/sass/include/_bootstrap-variables.scss
index ce2532af5..77a20cfe1 100644
--- a/client/src/sass/include/_bootstrap-variables.scss
+++ b/client/src/sass/include/_bootstrap-variables.scss
@@ -29,4 +29,6 @@ $input-btn-focus-color: inherit;
29$input-focus-border-color: #ced4da; 29$input-focus-border-color: #ced4da;
30 30
31$nav-pills-link-active-bg: #F0F0F0; 31$nav-pills-link-active-bg: #F0F0F0;
32$nav-pills-link-active-color: #000; \ No newline at end of file 32$nav-pills-link-active-color: #000;
33
34$zindex-dropdown: 10000; \ No newline at end of file
diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss
index 2efd6a1d3..b25d7ae0f 100644
--- a/client/src/sass/include/_mixins.scss
+++ b/client/src/sass/include/_mixins.scss
@@ -29,7 +29,7 @@
29 display: block; 29 display: block;
30 /* Fallback for non-webkit */ 30 /* Fallback for non-webkit */
31 display: -webkit-box; 31 display: -webkit-box;
32 max-height: $font-size*$line-height*$lines-to-show; 32 max-height: $font-size*$line-height*$lines-to-show + 0.2;
33 /* Fallback for non-webkit */ 33 /* Fallback for non-webkit */
34 font-size: $font-size; 34 font-size: $font-size;
35 line-height: $line-height; 35 line-height: $line-height;
diff --git a/client/src/sass/primeng-custom.scss b/client/src/sass/primeng-custom.scss
index 5a03ac9c5..0568de4e2 100644
--- a/client/src/sass/primeng-custom.scss
+++ b/client/src/sass/primeng-custom.scss
@@ -14,8 +14,17 @@
14p-table { 14p-table {
15 font-size: 15px !important; 15 font-size: 15px !important;
16 16
17 .ui-table-caption {
18 border: none;
19
20 .caption {
21 height: 40px;
22 display: flex;
23 align-items: center;
24 }
25 }
26
17 td { 27 td {
18 // border: 1px solid #E5E5E5 !important;
19 padding-left: 15px !important; 28 padding-left: 15px !important;
20 29
21 &:not(.action-cell) { 30 &:not(.action-cell) {
@@ -28,6 +37,11 @@ p-table {
28 tr { 37 tr {
29 background-color: var(--mainBackgroundColor) !important; 38 background-color: var(--mainBackgroundColor) !important;
30 height: 46px; 39 height: 46px;
40
41 &.ui-state-highlight {
42 background-color:var(--submenuColor) !important;
43 color:var(--mainForegroundColor) !important;
44 }
31 } 45 }
32 46
33 .ui-table-tbody { 47 .ui-table-tbody {
@@ -216,4 +230,32 @@ p-calendar .ui-datepicker {
216 @include glyphicon-light; 230 @include glyphicon-light;
217 } 231 }
218 } 232 }
233}
234
235.ui-chkbox-box {
236 &.ui-state-active {
237 border-color: var(--mainColor) !important;
238 background-color: var(--mainColor) !important;
239 }
240
241 .ui-chkbox-icon {
242 position: relative;
243
244 &:after {
245 content: '';
246 position: absolute;
247 left: 5px;
248 width: 5px;
249 height: 12px;
250 opacity: 0;
251 transform: rotate(45deg) scale(0);
252 border-right: 2px solid var(--mainBackgroundColor);
253 border-bottom: 2px solid var(--mainBackgroundColor);
254 }
255
256 &.pi-check:after {
257 opacity: 1;
258 transform: rotate(45deg) scale(1);
259 }
260 }
219} \ No newline at end of file 261} \ No newline at end of file
diff --git a/client/src/shims/noop.ts b/client/src/shims/noop.ts
index 899b69bf3..086a60e32 100644
--- a/client/src/shims/noop.ts
+++ b/client/src/shims/noop.ts
@@ -1,3 +1,3 @@
1// Does nothing. Used to shim out node.js modules 1// Does nothing. Used to shim out node.js modules
2// which are no-ops in the browser. 2// which are no-ops in the browser.
3export const NOOP = 0 \ No newline at end of file 3export const NOOP = 0
diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts
index ea3436c7c..c113c67da 100644
--- a/client/src/standalone/videos/embed.ts
+++ b/client/src/standalone/videos/embed.ts
@@ -17,7 +17,10 @@ import 'core-js/es6/set'
17// For google bot that uses Chrome 41 and does not understand fetch 17// For google bot that uses Chrome 41 and does not understand fetch
18import 'whatwg-fetch' 18import 'whatwg-fetch'
19 19
20// FIXME: something weird with our path definition in tsconfig and typings
21// @ts-ignore
20import * as vjs from 'video.js' 22import * as vjs from 'video.js'
23
21import * as Channel from 'jschannel' 24import * as Channel from 'jschannel'
22 25
23import { peertubeTranslate, ResultList, VideoDetails } from '../../../../shared' 26import { peertubeTranslate, ResultList, VideoDetails } from '../../../../shared'
@@ -304,7 +307,7 @@ class PeerTubeEmbed {
304 307
305 this.playerOptions = videojsOptions 308 this.playerOptions = videojsOptions
306 this.player = vjs(this.videoContainerId, videojsOptions, () => { 309 this.player = vjs(this.videoContainerId, videojsOptions, () => {
307 this.player.on('customError', (event, data) => this.handleError(data.err)) 310 this.player.on('customError', (event: any, data: any) => this.handleError(data.err))
308 311
309 window[ 'videojsPlayer' ] = this.player 312 window[ 'videojsPlayer' ] = this.player
310 313
diff --git a/client/src/standalone/videos/test-embed.ts b/client/src/standalone/videos/test-embed.ts
index dba331e90..30a298573 100644
--- a/client/src/standalone/videos/test-embed.ts
+++ b/client/src/standalone/videos/test-embed.ts
@@ -1,6 +1,6 @@
1import './test-embed.scss' 1import './test-embed.scss'
2import { PeerTubePlayer } from '../player/player' 2import { PeerTubePlayer } from '../player/player'
3import { PlayerEventType } from '../player/definitions' 3import { PeerTubeResolution, PlayerEventType } from '../player/definitions'
4 4
5window.addEventListener('load', async () => { 5window.addEventListener('load', async () => {
6 const urlParts = window.location.href.split('/') 6 const urlParts = window.location.href.split('/')
@@ -66,7 +66,7 @@ window.addEventListener('load', async () => {
66 updateRates() 66 updateRates()
67 }) 67 })
68 68
69 let updateResolutions = resolutions => { 69 let updateResolutions = ((resolutions: PeerTubeResolution[]) => {
70 let resolutionListEl = document.querySelector('#resolution-list') 70 let resolutionListEl = document.querySelector('#resolution-list')
71 resolutionListEl.innerHTML = '' 71 resolutionListEl.innerHTML = ''
72 72
@@ -87,7 +87,7 @@ window.addEventListener('load', async () => {
87 resolutionListEl.appendChild(itemEl) 87 resolutionListEl.appendChild(itemEl)
88 } 88 }
89 }) 89 })
90 } 90 })
91 91
92 player.getResolutions().then( 92 player.getResolutions().then(
93 resolutions => updateResolutions(resolutions)) 93 resolutions => updateResolutions(resolutions))
diff --git a/client/src/typings.d.ts b/client/src/typings.d.ts
index ef5c7bd62..ef6c9f2f5 100644
--- a/client/src/typings.d.ts
+++ b/client/src/typings.d.ts
@@ -1,5 +1,6 @@
1/* SystemJS module definition */ 1/* SystemJS module definition */
2declare var module: NodeModule; 2declare var module: NodeModule
3
3interface NodeModule { 4interface NodeModule {
4 id: string; 5 id: string
5} 6}