mirror of
				https://github.com/TeamPiped/Piped.git
				synced 2024-08-14 23:57:27 +00:00 
			
		
		
		
	Update efy branch from master
This commit is contained in:
		
						commit
						240c419823
					
				
					 41 changed files with 1310 additions and 1026 deletions
				
			
		
							
								
								
									
										11
									
								
								.github/workflows/ci.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.github/workflows/ci.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -8,20 +8,19 @@ jobs:
 | 
			
		|||
    build:
 | 
			
		||||
        runs-on: ubuntu-latest
 | 
			
		||||
        steps:
 | 
			
		||||
            - uses: actions/checkout@v3
 | 
			
		||||
<<<<<<< HEAD
 | 
			
		||||
              with:
 | 
			
		||||
                  submodules: true
 | 
			
		||||
=======
 | 
			
		||||
            - uses: actions/checkout@v4
 | 
			
		||||
            - name: Setup pnpm
 | 
			
		||||
              uses: pnpm/action-setup@v2
 | 
			
		||||
              with:
 | 
			
		||||
                  version: latest
 | 
			
		||||
>>>>>>> master
 | 
			
		||||
            - name: Setup Node.js
 | 
			
		||||
              uses: actions/setup-node@v3
 | 
			
		||||
              with:
 | 
			
		||||
                  cache: "pnpm"
 | 
			
		||||
            - run: pnpm install
 | 
			
		||||
            - run: pnpm build
 | 
			
		||||
            - uses: actions/upload-artifact@v3
 | 
			
		||||
              with:
 | 
			
		||||
                  name: build
 | 
			
		||||
                  path: dist
 | 
			
		||||
            - run: pnpm lint --no-fix
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								.github/workflows/codeql.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/codeql.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -29,7 +29,7 @@ jobs:
 | 
			
		|||
 | 
			
		||||
    steps:
 | 
			
		||||
    - name: Checkout repository
 | 
			
		||||
      uses: actions/checkout@v3
 | 
			
		||||
      uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
    # Initializes the CodeQL tools for scanning.
 | 
			
		||||
    - name: Initialize CodeQL
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								.github/workflows/deploy-azure.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/deploy-azure.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -11,7 +11,7 @@ jobs:
 | 
			
		|||
    runs-on: ubuntu-latest
 | 
			
		||||
    name: Build and Deploy Job
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
        with:
 | 
			
		||||
          submodules: true
 | 
			
		||||
      - name: Build And Deploy
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								.github/workflows/docker-build.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/docker-build.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -11,7 +11,7 @@ jobs:
 | 
			
		|||
    build-docker-image:
 | 
			
		||||
        runs-on: ubuntu-latest
 | 
			
		||||
        steps:
 | 
			
		||||
            - uses: actions/checkout@v3
 | 
			
		||||
            - uses: actions/checkout@v4
 | 
			
		||||
            - name: Setup pnpm
 | 
			
		||||
              uses: pnpm/action-setup@v2
 | 
			
		||||
              with:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								.github/workflows/ipfs-build.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/ipfs-build.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -11,7 +11,7 @@ jobs:
 | 
			
		|||
    build:
 | 
			
		||||
        runs-on: ubuntu-latest
 | 
			
		||||
        steps:
 | 
			
		||||
            - uses: actions/checkout@v3
 | 
			
		||||
            - uses: actions/checkout@v4
 | 
			
		||||
            - name: Setup pnpm
 | 
			
		||||
              uses: pnpm/action-setup@v2
 | 
			
		||||
              with:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								.github/workflows/reviewdog.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/reviewdog.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -8,7 +8,7 @@ jobs:
 | 
			
		|||
            contents: read
 | 
			
		||||
            pull-requests: write
 | 
			
		||||
        steps:
 | 
			
		||||
            - uses: actions/checkout@v3
 | 
			
		||||
            - uses: actions/checkout@v4
 | 
			
		||||
            - name: Setup pnpm
 | 
			
		||||
              uses: pnpm/action-setup@v2
 | 
			
		||||
              with:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								.github/workflows/weblate-merge.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/weblate-merge.yml
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -8,7 +8,7 @@ jobs:
 | 
			
		|||
  merge:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - uses: actions/checkout@v3
 | 
			
		||||
      - uses: actions/checkout@v4
 | 
			
		||||
      - name: Check if en.json has been updated
 | 
			
		||||
        run: |
 | 
			
		||||
          if -n git diff ${{ github.event.pull_request.base.sha }}..${{ github.sha }} src/locales/en.json; then
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -153,6 +153,7 @@ Contributions in any other form are also welcomed.
 | 
			
		|||
-   [Piped-Material](https://github.com/mmjee/Piped-Material) - A fork of Piped, focusing on better performance and a more usable design.
 | 
			
		||||
-   [ReacTube](https://github.com/NeeRaj-2401/ReacTube) - Privacy friendly & distraction free Youtube front-end using Piped API.
 | 
			
		||||
-   [YTDLnis](https://github.com/deniscerri/ytdlnis) - Video and audio downloader for Android that uses Piped to update formats.
 | 
			
		||||
-   [DeskVideo](https://github.com/malisipi/DeskVideo) - A desktop styled, customizable alternative front-end for YouTube.
 | 
			
		||||
 | 
			
		||||
## YourKit
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										28
									
								
								package.json
									
										
									
									
									
								
							
							
						
						
									
										28
									
								
								package.json
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -22,7 +22,7 @@
 | 
			
		|||
        "linkifyjs": "4.1.1",
 | 
			
		||||
        "mux.js": "6.3.0",
 | 
			
		||||
        "qrcode": "^1.5.3",
 | 
			
		||||
        "shaka-player": "4.3.8",
 | 
			
		||||
        "shaka-player": "4.4.0",
 | 
			
		||||
        "stream-browserify": "3.0.0",
 | 
			
		||||
        "vue": "3.3.4",
 | 
			
		||||
        "vue-i18n": "9.2.2",
 | 
			
		||||
| 
						 | 
				
			
			@ -32,24 +32,24 @@
 | 
			
		|||
    "devDependencies": {
 | 
			
		||||
        "@iconify-json/fa6-brands": "1.1.13",
 | 
			
		||||
        "@iconify-json/fa6-solid": "1.1.15",
 | 
			
		||||
        "@intlify/unplugin-vue-i18n": "0.12.2",
 | 
			
		||||
        "@unocss/eslint-config": "0.55.0",
 | 
			
		||||
        "@unocss/preset-icons": "0.55.0",
 | 
			
		||||
        "@unocss/preset-uno": "0.55.0",
 | 
			
		||||
        "@unocss/preset-web-fonts": "0.55.0",
 | 
			
		||||
        "@unocss/reset": "0.55.0",
 | 
			
		||||
        "@unocss/transformer-directives": "0.55.0",
 | 
			
		||||
        "@unocss/transformer-variant-group": "0.55.0",
 | 
			
		||||
        "@intlify/unplugin-vue-i18n": "0.13.0",
 | 
			
		||||
        "@unocss/eslint-config": "0.55.6",
 | 
			
		||||
        "@unocss/preset-icons": "0.55.6",
 | 
			
		||||
        "@unocss/preset-uno": "0.55.6",
 | 
			
		||||
        "@unocss/preset-web-fonts": "0.55.6",
 | 
			
		||||
        "@unocss/reset": "0.55.6",
 | 
			
		||||
        "@unocss/transformer-directives": "0.55.6",
 | 
			
		||||
        "@unocss/transformer-variant-group": "0.55.6",
 | 
			
		||||
        "@vitejs/plugin-legacy": "4.1.1",
 | 
			
		||||
        "@vitejs/plugin-vue": "4.2.3",
 | 
			
		||||
        "@vitejs/plugin-vue": "4.3.4",
 | 
			
		||||
        "@vue/compiler-sfc": "3.3.4",
 | 
			
		||||
        "eslint": "8.47.0",
 | 
			
		||||
        "eslint": "8.48.0",
 | 
			
		||||
        "eslint-config-prettier": "9.0.0",
 | 
			
		||||
        "eslint-plugin-prettier": "5.0.0",
 | 
			
		||||
        "eslint-plugin-vue": "9.17.0",
 | 
			
		||||
        "lightningcss": "1.21.5",
 | 
			
		||||
        "prettier": "3.0.1",
 | 
			
		||||
        "unocss": "0.55.0",
 | 
			
		||||
        "lightningcss": "1.21.7",
 | 
			
		||||
        "prettier": "3.0.3",
 | 
			
		||||
        "unocss": "0.55.6",
 | 
			
		||||
        "vite": "4.4.9",
 | 
			
		||||
        "vite-plugin-eslint": "1.8.1",
 | 
			
		||||
        "vite-plugin-pwa": "0.16.4",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1487
									
								
								pnpm-lock.yaml
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										1487
									
								
								pnpm-lock.yaml
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
<template>
 | 
			
		||||
    <ModalComponent>
 | 
			
		||||
    <ModalComponent @close="$emit('close')">
 | 
			
		||||
        <h4 v-t="'actions.select_playlist'" class="mb-2" />
 | 
			
		||||
        <select class="select w-full mb-2" v-model="selectedPlaylist">
 | 
			
		||||
            <option v-for="playlist in playlists" :value="playlist.id" :key="playlist.id" v-text="playlist.name" />
 | 
			
		||||
        <select v-model="selectedPlaylist" class="select w-full mb-2">
 | 
			
		||||
            <option v-for="playlist in playlists" :key="playlist.id" :value="playlist.id" v-text="playlist.name" />
 | 
			
		||||
        </select>
 | 
			
		||||
        <div class="flex justify-end">
 | 
			
		||||
            <button ref="addButton" v-t="'actions.create_playlist'" class="btn" @click="onCreatePlaylist" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,8 +4,15 @@
 | 
			
		|||
        <button v-t="'actions.create_playlist'" class="btn mr-2" @click="onCreatePlaylist" />
 | 
			
		||||
        <div class="flex">
 | 
			
		||||
            <button v-if="playlists.length > 0" v-t="'actions.export_to_json'" @click="exportPlaylists" />
 | 
			
		||||
            <input id="fileSelector" ref="fileSelector" type="file" class="display-none" @change="importPlaylists" />
 | 
			
		||||
            <label for="fileSelector" v-t="'actions.import_from_json'" class="btn ml-2" role="button" />
 | 
			
		||||
            <input
 | 
			
		||||
                id="fileSelector"
 | 
			
		||||
                ref="fileSelector"
 | 
			
		||||
                type="file"
 | 
			
		||||
                class="display-none"
 | 
			
		||||
                multiple="multiple"
 | 
			
		||||
                @change="importPlaylists"
 | 
			
		||||
            />
 | 
			
		||||
            <label v-t="'actions.import_from_json_csv'" for="fileSelector" class="btn ml-2" role="button" />
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,26 @@
 | 
			
		|||
<template>
 | 
			
		||||
    <div class="flex justify-between w-full">
 | 
			
		||||
        <div class="flex">
 | 
			
		||||
            <button class="btn mr-2">
 | 
			
		||||
                <router-link to="/import" v-t="'actions.import_from_json'" />
 | 
			
		||||
            </button>
 | 
			
		||||
            <button v-t="'actions.export_to_json'" class="btn" @click="exportHandler" />
 | 
			
		||||
    <!-- import / export section -->
 | 
			
		||||
    <div class="w-full flex justify-between">
 | 
			
		||||
        <div class="flex gap-2">
 | 
			
		||||
            <router-link v-t="'actions.import_from_json_csv'" to="/import" role="button" />
 | 
			
		||||
            <button v-t="'actions.export_to_json'" @click="exportHandler" />
 | 
			
		||||
            <input
 | 
			
		||||
                id="fileSelector"
 | 
			
		||||
                ref="fileSelector"
 | 
			
		||||
                type="file"
 | 
			
		||||
                class="display-none"
 | 
			
		||||
                multiple="multiple"
 | 
			
		||||
                @change="importGroupsHandler"
 | 
			
		||||
            />
 | 
			
		||||
            <label
 | 
			
		||||
                for="fileSelector"
 | 
			
		||||
                role="button"
 | 
			
		||||
                v-text="`${$t('actions.import_from_json')} (${$t('titles.channel_groups')})`"
 | 
			
		||||
            />
 | 
			
		||||
            <button
 | 
			
		||||
                @click="exportGroupsHandler"
 | 
			
		||||
                v-text="`${$t('actions.export_to_json')} (${$t('titles.channel_groups')})`"
 | 
			
		||||
            />
 | 
			
		||||
        </div>
 | 
			
		||||
        <i18n-t keypath="subscriptions.subscribed_channels_count">{{ subscriptions.length }}</i18n-t>
 | 
			
		||||
    </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -13,7 +29,7 @@
 | 
			
		|||
        <button
 | 
			
		||||
            v-for="group in channelGroups"
 | 
			
		||||
            :key="group.groupName"
 | 
			
		||||
            class="btn mx-1 w-max"
 | 
			
		||||
            class="mx-1 w-max"
 | 
			
		||||
            :class="{ selected: selectedGroup === group }"
 | 
			
		||||
            @click="selectGroup(group)"
 | 
			
		||||
        >
 | 
			
		||||
| 
						 | 
				
			
			@ -239,6 +255,24 @@ export default {
 | 
			
		|||
                : this.selectedGroup.channels.concat(channelId);
 | 
			
		||||
            this.createOrUpdateChannelGroup(this.selectedGroup);
 | 
			
		||||
        },
 | 
			
		||||
        async importGroupsHandler() {
 | 
			
		||||
            const files = this.$refs.fileSelector.files;
 | 
			
		||||
            for (let file of files) {
 | 
			
		||||
                const groups = JSON.parse(await file.text()).groups;
 | 
			
		||||
                for (let group of groups) {
 | 
			
		||||
                    this.createOrUpdateChannelGroup(group);
 | 
			
		||||
                    this.channelGroups.push(group);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        exportGroupsHandler() {
 | 
			
		||||
            const json = {
 | 
			
		||||
                format: "Piped",
 | 
			
		||||
                version: 1,
 | 
			
		||||
                groups: this.channelGroups.slice(1),
 | 
			
		||||
            };
 | 
			
		||||
            this.download(JSON.stringify(json), "channel_groups.json", "application/json");
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -25,6 +25,11 @@
 | 
			
		|||
            <span v-t="'actions.skip_segment'" />
 | 
			
		||||
            <i class="material-icons-round">skip_next</i>
 | 
			
		||||
        </button>
 | 
			
		||||
        <span
 | 
			
		||||
            v-if="error > 0"
 | 
			
		||||
            v-t="{ path: 'player.failed', args: [error] }"
 | 
			
		||||
            class="absolute top-8 rounded bg-black/80 p-2 text-lg backdrop-blur-sm"
 | 
			
		||||
        />
 | 
			
		||||
    </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +72,7 @@ export default {
 | 
			
		|||
            isHoveringTimebar: false,
 | 
			
		||||
            currentTime: 0,
 | 
			
		||||
            seekbarPadding: 2,
 | 
			
		||||
            error: 0,
 | 
			
		||||
        };
 | 
			
		||||
    },
 | 
			
		||||
    computed: {
 | 
			
		||||
| 
						 | 
				
			
			@ -510,6 +516,9 @@ export default {
 | 
			
		|||
                manifest: {
 | 
			
		||||
                    disableVideo: disableVideo,
 | 
			
		||||
                },
 | 
			
		||||
                streaming: {
 | 
			
		||||
                    segmentPrefetchLimit: 10,
 | 
			
		||||
                },
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            const quality = this.getPreferenceNumber("quality", 0);
 | 
			
		||||
| 
						 | 
				
			
			@ -517,73 +526,79 @@ export default {
 | 
			
		|||
                quality > 0 && (this.video.audioStreams.length > 0 || this.video.livestream) && !disableVideo;
 | 
			
		||||
            if (qualityConds) this.$player.configure("abr.enabled", false);
 | 
			
		||||
 | 
			
		||||
            player.load(uri, 0, mime).then(() => {
 | 
			
		||||
                const isSafari = window.navigator?.vendor?.includes("Apple");
 | 
			
		||||
            player
 | 
			
		||||
                .load(uri, 0, mime)
 | 
			
		||||
                .then(() => {
 | 
			
		||||
                    const isSafari = window.navigator?.vendor?.includes("Apple");
 | 
			
		||||
 | 
			
		||||
                if (!isSafari) {
 | 
			
		||||
                    // Set the audio language
 | 
			
		||||
                    const prefLang = this.getPreferenceString("hl", "en").substr(0, 2);
 | 
			
		||||
                    var lang = "en";
 | 
			
		||||
                    for (var l in player.getAudioLanguages()) {
 | 
			
		||||
                        if (l == prefLang) {
 | 
			
		||||
                            lang = l;
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    player.selectAudioLanguage(lang);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (qualityConds) {
 | 
			
		||||
                    var leastDiff = Number.MAX_VALUE;
 | 
			
		||||
                    var bestStream = null;
 | 
			
		||||
 | 
			
		||||
                    var bestAudio = 0;
 | 
			
		||||
 | 
			
		||||
                    const tracks = player
 | 
			
		||||
                        .getVariantTracks()
 | 
			
		||||
                        .filter(track => track.language == lang || track.language == "und");
 | 
			
		||||
 | 
			
		||||
                    // Choose the best audio stream
 | 
			
		||||
                    if (quality >= 480)
 | 
			
		||||
                        tracks.forEach(track => {
 | 
			
		||||
                            const audioBandwidth = track.audioBandwidth;
 | 
			
		||||
                            if (audioBandwidth > bestAudio) bestAudio = audioBandwidth;
 | 
			
		||||
                        });
 | 
			
		||||
 | 
			
		||||
                    // Find best matching stream based on resolution and bitrate
 | 
			
		||||
                    tracks
 | 
			
		||||
                        .sort((a, b) => a.bandwidth - b.bandwidth)
 | 
			
		||||
                        .forEach(stream => {
 | 
			
		||||
                            if (stream.audioBandwidth < bestAudio) return;
 | 
			
		||||
 | 
			
		||||
                            const diff = Math.abs(quality - stream.height);
 | 
			
		||||
                            if (diff < leastDiff) {
 | 
			
		||||
                                leastDiff = diff;
 | 
			
		||||
                                bestStream = stream;
 | 
			
		||||
                    if (!isSafari) {
 | 
			
		||||
                        // Set the audio language
 | 
			
		||||
                        const prefLang = this.getPreferenceString("hl", "en").substr(0, 2);
 | 
			
		||||
                        var lang = "en";
 | 
			
		||||
                        for (var l in player.getAudioLanguages()) {
 | 
			
		||||
                            if (l == prefLang) {
 | 
			
		||||
                                lang = l;
 | 
			
		||||
                                return;
 | 
			
		||||
                            }
 | 
			
		||||
                        });
 | 
			
		||||
                        }
 | 
			
		||||
                        player.selectAudioLanguage(lang);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    player.selectVariantTrack(bestStream);
 | 
			
		||||
                }
 | 
			
		||||
                    if (qualityConds) {
 | 
			
		||||
                        var leastDiff = Number.MAX_VALUE;
 | 
			
		||||
                        var bestStream = null;
 | 
			
		||||
 | 
			
		||||
                this.video.subtitles.map(subtitle => {
 | 
			
		||||
                    player.addTextTrackAsync(
 | 
			
		||||
                        subtitle.url,
 | 
			
		||||
                        subtitle.code,
 | 
			
		||||
                        "subtitles",
 | 
			
		||||
                        subtitle.mimeType,
 | 
			
		||||
                        null,
 | 
			
		||||
                        subtitle.name,
 | 
			
		||||
                    );
 | 
			
		||||
                        var bestAudio = 0;
 | 
			
		||||
 | 
			
		||||
                        const tracks = player
 | 
			
		||||
                            .getVariantTracks()
 | 
			
		||||
                            .filter(track => track.language == lang || track.language == "und");
 | 
			
		||||
 | 
			
		||||
                        // Choose the best audio stream
 | 
			
		||||
                        if (quality >= 480)
 | 
			
		||||
                            tracks.forEach(track => {
 | 
			
		||||
                                const audioBandwidth = track.audioBandwidth;
 | 
			
		||||
                                if (audioBandwidth > bestAudio) bestAudio = audioBandwidth;
 | 
			
		||||
                            });
 | 
			
		||||
 | 
			
		||||
                        // Find best matching stream based on resolution and bitrate
 | 
			
		||||
                        tracks
 | 
			
		||||
                            .sort((a, b) => a.bandwidth - b.bandwidth)
 | 
			
		||||
                            .forEach(stream => {
 | 
			
		||||
                                if (stream.audioBandwidth < bestAudio) return;
 | 
			
		||||
 | 
			
		||||
                                const diff = Math.abs(quality - stream.height);
 | 
			
		||||
                                if (diff < leastDiff) {
 | 
			
		||||
                                    leastDiff = diff;
 | 
			
		||||
                                    bestStream = stream;
 | 
			
		||||
                                }
 | 
			
		||||
                            });
 | 
			
		||||
 | 
			
		||||
                        player.selectVariantTrack(bestStream);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    this.video.subtitles.map(subtitle => {
 | 
			
		||||
                        player.addTextTrackAsync(
 | 
			
		||||
                            subtitle.url,
 | 
			
		||||
                            subtitle.code,
 | 
			
		||||
                            "subtitles",
 | 
			
		||||
                            subtitle.mimeType,
 | 
			
		||||
                            null,
 | 
			
		||||
                            subtitle.name,
 | 
			
		||||
                        );
 | 
			
		||||
                    });
 | 
			
		||||
                    videoEl.volume = this.getPreferenceNumber("volume", 1);
 | 
			
		||||
                    const rate = this.getPreferenceNumber("rate", 1);
 | 
			
		||||
                    videoEl.playbackRate = rate;
 | 
			
		||||
                    videoEl.defaultPlaybackRate = rate;
 | 
			
		||||
 | 
			
		||||
                    const autoDisplayCaptions = this.getPreferenceBoolean("autoDisplayCaptions", false);
 | 
			
		||||
                    this.$player.setTextTrackVisibility(autoDisplayCaptions);
 | 
			
		||||
                })
 | 
			
		||||
                .catch(e => {
 | 
			
		||||
                    console.error(e);
 | 
			
		||||
                    this.error = e.code;
 | 
			
		||||
                });
 | 
			
		||||
                videoEl.volume = this.getPreferenceNumber("volume", 1);
 | 
			
		||||
                const rate = this.getPreferenceNumber("rate", 1);
 | 
			
		||||
                videoEl.playbackRate = rate;
 | 
			
		||||
                videoEl.defaultPlaybackRate = rate;
 | 
			
		||||
 | 
			
		||||
                const autoDisplayCaptions = this.getPreferenceBoolean("autoDisplayCaptions", false);
 | 
			
		||||
                this.$player.setTextTrackVisibility(autoDisplayCaptions);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            // expand the player to fullscreen when the fullscreen query equals true
 | 
			
		||||
            if (this.$route.query.fullscreen === "true" && !this.$ui.getControls().isFullScreenEnabled())
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,10 +90,15 @@
 | 
			
		|||
                        @click="subscribeHandler"
 | 
			
		||||
                    />
 | 
			
		||||
                    <!-- Playlist Add button -->
 | 
			
		||||
                    <button v-if="authenticated" class="btn" @click="showModal = !showModal">
 | 
			
		||||
                    <button class="btn flex items-center" @click="showModal = !showModal">
 | 
			
		||||
                        {{ $t("actions.add_to_playlist") }}<font-awesome-icon class="ml-1" icon="circle-plus" />
 | 
			
		||||
                    </button>
 | 
			
		||||
                    <PlaylistAddModal v-if="showModal" :video-id="getVideoId()" @close="showModal = !showModal" />
 | 
			
		||||
                    <PlaylistAddModal
 | 
			
		||||
                        v-if="showModal"
 | 
			
		||||
                        :video-id="getVideoId()"
 | 
			
		||||
                        :video-info="video"
 | 
			
		||||
                        @close="showModal = !showModal"
 | 
			
		||||
                    />
 | 
			
		||||
                    <!-- Share Dialog -->
 | 
			
		||||
                    <ShareModal
 | 
			
		||||
                        v-if="showShareModal"
 | 
			
		||||
| 
						 | 
				
			
			@ -133,6 +138,9 @@
 | 
			
		|||
                    >
 | 
			
		||||
                        <font-awesome-icon class="mx-1.5" icon="rss" />
 | 
			
		||||
                    </a>
 | 
			
		||||
                    <button class="btn flex items-center gap-1 <md:hidden" @click="downloadCurrentFrame">
 | 
			
		||||
                        <i class="i-fa6-solid:download" />{{ $t("actions.download_frame") }}
 | 
			
		||||
                    </button>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -674,6 +682,21 @@ export default {
 | 
			
		|||
            if (paramStr.length > 0) url += "&" + paramStr;
 | 
			
		||||
            this.$router.push(url);
 | 
			
		||||
        },
 | 
			
		||||
        downloadCurrentFrame() {
 | 
			
		||||
            const video = document.querySelector("video");
 | 
			
		||||
            const canvas = document.createElement("canvas");
 | 
			
		||||
            canvas.width = video.videoWidth;
 | 
			
		||||
            canvas.height = video.videoHeight;
 | 
			
		||||
 | 
			
		||||
            const context = canvas.getContext("2d");
 | 
			
		||||
            context.drawImage(video, 0, 0, canvas.width, canvas.height);
 | 
			
		||||
 | 
			
		||||
            let link = document.createElement("a");
 | 
			
		||||
            const currentTime = Math.round(video.currentTime * 1000) / 1000;
 | 
			
		||||
            link.download = `${this.video.title}_${currentTime}s.png`;
 | 
			
		||||
            link.href = canvas.toDataURL();
 | 
			
		||||
            link.click();
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,8 @@
 | 
			
		|||
        "dearrow": "دي ارو"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "شاهد عبر"
 | 
			
		||||
        "watch_on": "شاهد عبر",
 | 
			
		||||
        "failed": "فشل مع رمز الخطأ {0}، راجع السجلات لمزيد من المعلومات"
 | 
			
		||||
    },
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "subscribe": "اشتراك - {count}",
 | 
			
		||||
| 
						 | 
				
			
			@ -71,7 +72,7 @@
 | 
			
		|||
        "language_selection": "اللغة",
 | 
			
		||||
        "instances_list": "قائمة المثيلات",
 | 
			
		||||
        "enabled_codecs": "برامج الترميز الممكنة (متعددة)",
 | 
			
		||||
        "import_from_json": "استيراد من JSON/CSV",
 | 
			
		||||
        "import_from_json": "استيراد من JSON",
 | 
			
		||||
        "loop_this_video": "تكرار هذا الفيديو",
 | 
			
		||||
        "auto_play_next_video": "التشغيل التلقائي للفيديو التالي",
 | 
			
		||||
        "donations": "التبرعات للتطوير",
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +144,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "تخطيط الفصول على الهاتف",
 | 
			
		||||
        "delete_automatically": "الحذف تلقائيا بعد",
 | 
			
		||||
        "enable_dearrow": "تمكين دي ارو",
 | 
			
		||||
        "generate_qrcode": "إنشاء رمز الاستجابة السريعة"
 | 
			
		||||
        "generate_qrcode": "إنشاء رمز الاستجابة السريعة",
 | 
			
		||||
        "import_from_json_csv": "استيراد من JSON/CSV",
 | 
			
		||||
        "download_frame": "إطار التحميل"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "sponsor_segments": "المقاطع الإعلانية",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,8 @@
 | 
			
		|||
        "livestreams": "Canlı Yayımlar",
 | 
			
		||||
        "channels": "Kanallar",
 | 
			
		||||
        "bookmarks": "Əlfəcinlər",
 | 
			
		||||
        "channel_groups": "Kanal qrupları"
 | 
			
		||||
        "channel_groups": "Kanal qrupları",
 | 
			
		||||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "{0} saytında bax"
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +50,7 @@
 | 
			
		|||
        "default_quality": "Standart Keyfiyyət",
 | 
			
		||||
        "buffering_goal": "Tamponlama hədəfi (saniyələrlə)",
 | 
			
		||||
        "export_to_json": "JSON-a İxrac Et",
 | 
			
		||||
        "import_from_json": "JSON/CSV-dan İdxal Et",
 | 
			
		||||
        "import_from_json": "JSON -dan İdxal Et",
 | 
			
		||||
        "loop_this_video": "Bu Videonu Təkrarla",
 | 
			
		||||
        "auto_play_next_video": "Növbəti Videonu Avto-Oynat",
 | 
			
		||||
        "donations": "İnkişaf ianələri",
 | 
			
		||||
| 
						 | 
				
			
			@ -74,12 +75,12 @@
 | 
			
		|||
        "select_playlist": "Oynatma Siyahısı Seç",
 | 
			
		||||
        "delete_playlist_confirm": "Bu oynatma siyahısı silinsin?",
 | 
			
		||||
        "please_select_playlist": "Xahiş edilir, oynatma siyahısı seç",
 | 
			
		||||
        "country_selection": "Ölkə Seçimi",
 | 
			
		||||
        "country_selection": "Ölkə",
 | 
			
		||||
        "default_homepage": "Standart Əsas Səhifə",
 | 
			
		||||
        "show_comments": "Şərhləri Göstər",
 | 
			
		||||
        "instance_selection": "Nümunə Seçimi",
 | 
			
		||||
        "instance_selection": "İnstansiya",
 | 
			
		||||
        "minimize_description_default": "Açıqlamanı Standart Olaraq Kiçilt",
 | 
			
		||||
        "language_selection": "Dil Seçimi",
 | 
			
		||||
        "language_selection": "Dil",
 | 
			
		||||
        "instances_list": "Nümunələr Siyahısı",
 | 
			
		||||
        "show_more": "Daha Çox Göstər",
 | 
			
		||||
        "no": "Xeyr",
 | 
			
		||||
| 
						 | 
				
			
			@ -97,11 +98,11 @@
 | 
			
		|||
        "restore_preferences": "Seçimləri bərpa et",
 | 
			
		||||
        "invalidate_session": "Bütün cihazlardan çıxın",
 | 
			
		||||
        "different_auth_instance": "Təsdiqləmə üçün fərqli nümunə istifadə et",
 | 
			
		||||
        "instance_auth_selection": "Təsdiqləmə Nümunəsi Seçimi",
 | 
			
		||||
        "instance_auth_selection": "Təsdiqləmə İnstansiyası",
 | 
			
		||||
        "clone_playlist": "Oynatma Siyahısın Klonla",
 | 
			
		||||
        "clone_playlist_success": "Uğurla klonlandı!",
 | 
			
		||||
        "time_code": "Vaxt kodu (saniyələrlə)",
 | 
			
		||||
        "store_search_history": "Axtarış tarixçəsini saxla",
 | 
			
		||||
        "store_search_history": "Axtarış Tarixçəsin Saxla",
 | 
			
		||||
        "documentation": "Sənədləşdirmə",
 | 
			
		||||
        "status_page": "Vəziyyət",
 | 
			
		||||
        "source_code": "Mənbə kodu",
 | 
			
		||||
| 
						 | 
				
			
			@ -135,11 +136,16 @@
 | 
			
		|||
        "cancel": "Ləğv et",
 | 
			
		||||
        "edit_playlist": "Oynatma siyahısın redaktə et",
 | 
			
		||||
        "playlist_description": "Oynatma siyahısı təsviri",
 | 
			
		||||
        "okay": "Oldu!",
 | 
			
		||||
        "okay": "Oldu",
 | 
			
		||||
        "chapters_layout_mobile": "Mobildə Bölmələrin Tərtibatı",
 | 
			
		||||
        "playlist_name": "Oynatma siyahısı adı",
 | 
			
		||||
        "show_search_suggestions": "Axtarış təkliflərin göstər",
 | 
			
		||||
        "auto_display_captions": "Titrləri Avtomatik Göstər"
 | 
			
		||||
        "auto_display_captions": "Titrləri Avtomatik Göstər",
 | 
			
		||||
        "import_from_json_csv": "JSON/CSV-dən idxal et",
 | 
			
		||||
        "delete_automatically": "Sonranı avtomatik silin",
 | 
			
		||||
        "download_frame": "Yükləmə çərçivəsi",
 | 
			
		||||
        "enable_dearrow": "DeArrow'u Aktivləşdir",
 | 
			
		||||
        "generate_qrcode": "QR Kodu Yarat"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "{author} tərəfindən sabitlənib",
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +164,9 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "İstifadəçi Adı",
 | 
			
		||||
        "password": "Şifrə"
 | 
			
		||||
        "password": "Şifrə",
 | 
			
		||||
        "password_confirm": "Parolu təsdiqlə",
 | 
			
		||||
        "passwords_incorrect": "Parollar uyğunlaşmır!"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "Videolar",
 | 
			
		||||
| 
						 | 
				
			
			@ -172,7 +180,9 @@
 | 
			
		|||
        "all": "Hamısı",
 | 
			
		||||
        "category": "Kateqoriya",
 | 
			
		||||
        "chapters_horizontal": "Üfüqi",
 | 
			
		||||
        "chapters_vertical": "Şaquli"
 | 
			
		||||
        "chapters_vertical": "Şaquli",
 | 
			
		||||
        "license": "Lisenziya",
 | 
			
		||||
        "visibility": "Görünüş"
 | 
			
		||||
    },
 | 
			
		||||
    "search": {
 | 
			
		||||
        "did_you_mean": "Bunu nəzərdə tutursunuz: {0}?",
 | 
			
		||||
| 
						 | 
				
			
			@ -183,7 +193,8 @@
 | 
			
		|||
        "music_songs": "YT Music: Mahnılar",
 | 
			
		||||
        "music_videos": "YT Music: Videolar",
 | 
			
		||||
        "music_albums": "YT Music: Albomlar",
 | 
			
		||||
        "music_playlists": "YT Music: Oynatma Siyahıları"
 | 
			
		||||
        "music_playlists": "YT Music: Oynatma Siyahıları",
 | 
			
		||||
        "music_artists": "YT Music: Sənətkarlar"
 | 
			
		||||
    },
 | 
			
		||||
    "subscriptions": {
 | 
			
		||||
        "subscribed_channels_count": "Abunə oldu: {0}"
 | 
			
		||||
| 
						 | 
				
			
			@ -198,6 +209,10 @@
 | 
			
		|||
        "cannot_copy": "Nüsxələnmir!",
 | 
			
		||||
        "local_storage": "Bu fəaliyyət yerli yaddaş tələb edir, məlumat bazası aktivdir?",
 | 
			
		||||
        "register_no_email_note": "E-poçt-u istifadəçi adı kimi istifadə etmək tövsiyə edilmir. Baxmayaraq ki, davam edilsin?",
 | 
			
		||||
        "next_video_countdown": "Növbəti video {0} saniyəyə oynadılır"
 | 
			
		||||
        "next_video_countdown": "Növbəti video {0} saniyəyə oynadılır",
 | 
			
		||||
        "hours": "{amount} saat",
 | 
			
		||||
        "days": "{amount} gün",
 | 
			
		||||
        "months": "{amount} ay",
 | 
			
		||||
        "weeks": "{amount} həftə"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,7 @@
 | 
			
		|||
        "yes": "Ano",
 | 
			
		||||
        "no": "Ne",
 | 
			
		||||
        "export_to_json": "Exportovat do JSON",
 | 
			
		||||
        "import_from_json": "Importovat z JSON/CSV",
 | 
			
		||||
        "import_from_json": "Importovat z JSON",
 | 
			
		||||
        "auto_play_next_video": "Automaticky přehrát další video",
 | 
			
		||||
        "donations": "Dary na vývoj",
 | 
			
		||||
        "show_description": "Zobrazit popis",
 | 
			
		||||
| 
						 | 
				
			
			@ -140,10 +140,13 @@
 | 
			
		|||
        "chapters_layout_mobile": "Rozložení kapitol na mobilu",
 | 
			
		||||
        "enable_dearrow": "Povolit DeArrow",
 | 
			
		||||
        "delete_automatically": "Automaticky odstranit po",
 | 
			
		||||
        "generate_qrcode": "Vygenerovat QR kód"
 | 
			
		||||
        "generate_qrcode": "Vygenerovat QR kód",
 | 
			
		||||
        "import_from_json_csv": "Importovat z JSON/CSV",
 | 
			
		||||
        "download_frame": "Stáhnout snímek"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Sledovat na {0}"
 | 
			
		||||
        "watch_on": "Sledovat na {0}",
 | 
			
		||||
        "failed": "Akce se nezdařila. Chybový kód {0}, pro více informací viz protokol"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "Připnuto uživatelem {author}",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@
 | 
			
		|||
        "donations": "Spenden",
 | 
			
		||||
        "auto_play_next_video": "Nächstes Video automatisch abspielen",
 | 
			
		||||
        "loop_this_video": "Dieses Video wiederholen",
 | 
			
		||||
        "import_from_json": "Aus JSON/CSV importieren",
 | 
			
		||||
        "import_from_json": "Aus JSON importieren",
 | 
			
		||||
        "export_to_json": "Als JSON exportieren",
 | 
			
		||||
        "show_more": "Mehr anzeigen",
 | 
			
		||||
        "no": "Nein",
 | 
			
		||||
| 
						 | 
				
			
			@ -122,10 +122,13 @@
 | 
			
		|||
        "chapters_layout_mobile": "Kapitel-Layout auf Mobilgeräten",
 | 
			
		||||
        "delete_automatically": "Automatisch löschen nach",
 | 
			
		||||
        "enable_dearrow": "DeArrow verwenden",
 | 
			
		||||
        "generate_qrcode": "QR-Code generieren"
 | 
			
		||||
        "generate_qrcode": "QR-Code generieren",
 | 
			
		||||
        "import_from_json_csv": "Aus JSON/CSV importieren",
 | 
			
		||||
        "download_frame": "Einzelbild (Frame) downloaden"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Auf {0} ansehen"
 | 
			
		||||
        "watch_on": "Auf {0} ansehen",
 | 
			
		||||
        "failed": "Fehlgeschlagen mit Fehlercode {0}, siehe Protokolle für weitere Informationen"
 | 
			
		||||
    },
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "history": "Verlauf",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,8 @@
 | 
			
		|||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Watch on {0}"
 | 
			
		||||
        "watch_on": "Watch on {0}",
 | 
			
		||||
        "failed": "Failed with error code {0}, see logs for more info"
 | 
			
		||||
    },
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "subscribe": "Subscribe - {count}",
 | 
			
		||||
| 
						 | 
				
			
			@ -69,7 +70,8 @@
 | 
			
		|||
        "yes": "Yes",
 | 
			
		||||
        "no": "No",
 | 
			
		||||
        "export_to_json": "Export to JSON",
 | 
			
		||||
        "import_from_json": "Import from JSON/CSV",
 | 
			
		||||
        "import_from_json": "Import from JSON",
 | 
			
		||||
        "import_from_json_csv": "Import from JSON/CSV",
 | 
			
		||||
        "loop_this_video": "Loop this Video",
 | 
			
		||||
        "auto_play_next_video": "Auto Play next Video",
 | 
			
		||||
        "auto_display_captions": "Auto Display Captions",
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +145,8 @@
 | 
			
		|||
        "okay": "Okay",
 | 
			
		||||
        "show_search_suggestions": "Show search suggestions",
 | 
			
		||||
        "delete_automatically": "Delete automatically after",
 | 
			
		||||
        "generate_qrcode": "Generate QR Code"
 | 
			
		||||
        "generate_qrcode": "Generate QR Code",
 | 
			
		||||
        "download_frame": "Download frame"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "Pinned by {author}",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,8 @@
 | 
			
		|||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Vidi en {0}"
 | 
			
		||||
        "watch_on": "Vidi en {0}",
 | 
			
		||||
        "failed": "Fiaskis kun erarkodo {0}, vidu protokolojn por pli da informo"
 | 
			
		||||
    },
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "subscribe": "Aboni - {count}",
 | 
			
		||||
| 
						 | 
				
			
			@ -78,7 +79,7 @@
 | 
			
		|||
        "export_to_json": "Elporti JSON-n",
 | 
			
		||||
        "loop_this_video": "Ripetadi ĉi tiun Videon",
 | 
			
		||||
        "enable_lbry_proxy": "Ebligi Prokurilon por LBRY",
 | 
			
		||||
        "import_from_json": "Importi el JSON/CSV",
 | 
			
		||||
        "import_from_json": "Importi el JSON",
 | 
			
		||||
        "show_description": "Montri Priskribon",
 | 
			
		||||
        "instances_list": "Listo de Nodoj",
 | 
			
		||||
        "auto_play_next_video": "Aŭtomate Ludi sekvan Videon",
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +144,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "Aranĝo de ĉapitroj en poŝtelefono",
 | 
			
		||||
        "delete_automatically": "Aŭtomate forigi post",
 | 
			
		||||
        "enable_dearrow": "Ebligi DeArrow",
 | 
			
		||||
        "generate_qrcode": "Generi QR-kodon"
 | 
			
		||||
        "generate_qrcode": "Generi QR-kodon",
 | 
			
		||||
        "import_from_json_csv": "Importi el JSON/CSV",
 | 
			
		||||
        "download_frame": "Elŝuti bildon"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "chapters": "Sekcioj",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,7 @@
 | 
			
		|||
        "donations": "Donaciones para desarrollo",
 | 
			
		||||
        "auto_play_next_video": "Reproducción automática del siguiente vídeo",
 | 
			
		||||
        "loop_this_video": "Poner en bucle este vídeo",
 | 
			
		||||
        "import_from_json": "Importar desde JSON/CSV",
 | 
			
		||||
        "import_from_json": "Importar desde JSON",
 | 
			
		||||
        "export_to_json": "Exportar a JSON",
 | 
			
		||||
        "no": "No",
 | 
			
		||||
        "yes": "Sí",
 | 
			
		||||
| 
						 | 
				
			
			@ -95,8 +95,8 @@
 | 
			
		|||
        "create_playlist": "Crear una lista de reproducción",
 | 
			
		||||
        "add_to_playlist": "Añadir a la lista de reproducción",
 | 
			
		||||
        "delete_playlist_video_confirm": "¿Eliminar vídeo de lista de reproducción?",
 | 
			
		||||
        "please_select_playlist": "Seleccione una lista de reproducción",
 | 
			
		||||
        "select_playlist": "Seleccione una lista de reproducción",
 | 
			
		||||
        "please_select_playlist": "Por favor, selecciona una lista de reproducción",
 | 
			
		||||
        "select_playlist": "Selecciona una lista de reproducción",
 | 
			
		||||
        "show_markers": "Mostrar Marcadores en Reproductor",
 | 
			
		||||
        "delete_account": "Eliminar Cuenta",
 | 
			
		||||
        "different_auth_instance": "Usar una instancia diferente para autenticación",
 | 
			
		||||
| 
						 | 
				
			
			@ -140,7 +140,7 @@
 | 
			
		|||
        "skip_segment": "Saltar Segmento",
 | 
			
		||||
        "show_less": "Mostrar menos",
 | 
			
		||||
        "autoplay_next_countdown": "Cuenta atrás predeterminada antes del siguiente vídeo (en segundos)",
 | 
			
		||||
        "dismiss": "Cancelar",
 | 
			
		||||
        "dismiss": "Descartar",
 | 
			
		||||
        "group_name": "Nombre del grupo",
 | 
			
		||||
        "create_group": "Crear grupo",
 | 
			
		||||
        "auto_display_captions": "Mostrar automáticamente subtítulos",
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +153,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "Disposición de capítulos en móvil",
 | 
			
		||||
        "delete_automatically": "Borrar automáticamente después de",
 | 
			
		||||
        "enable_dearrow": "Activar DeArrow",
 | 
			
		||||
        "generate_qrcode": "Generar código QR"
 | 
			
		||||
        "generate_qrcode": "Generar código QR",
 | 
			
		||||
        "import_from_json_csv": "Importar desde JSON/CSV",
 | 
			
		||||
        "download_frame": "Descargar fotograma"
 | 
			
		||||
    },
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "feed": "Contenido",
 | 
			
		||||
| 
						 | 
				
			
			@ -174,7 +176,8 @@
 | 
			
		|||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Ver en {0}"
 | 
			
		||||
        "watch_on": "Ver en {0}",
 | 
			
		||||
        "failed": "Falló con el código de error {0}, consulta los registros para más información"
 | 
			
		||||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "password": "Contraseña",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										47
									
								
								src/locales/gl.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/locales/gl.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
{
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "register": "Crear conta",
 | 
			
		||||
        "feed": "Cronoloxía",
 | 
			
		||||
        "preferences": "Preferencias",
 | 
			
		||||
        "history": "Historial",
 | 
			
		||||
        "trending": "En voga",
 | 
			
		||||
        "account": "Conta",
 | 
			
		||||
        "player": "Reprodutor",
 | 
			
		||||
        "login": "Acceder",
 | 
			
		||||
        "instance": "Instancia",
 | 
			
		||||
        "bookmarks": "Marcadores",
 | 
			
		||||
        "subscriptions": "Subscricións",
 | 
			
		||||
        "playlists": "Listas",
 | 
			
		||||
        "livestreams": "En directo",
 | 
			
		||||
        "channels": "Canles",
 | 
			
		||||
        "channel_groups": "Grupos de canles"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Ver en {0}",
 | 
			
		||||
        "failed": "Fallou con código do erro {0}, mira o rexistro para máis info"
 | 
			
		||||
    },
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "subscribe": "Subscribirse - {count}",
 | 
			
		||||
        "sort_by": "Orde por:",
 | 
			
		||||
        "least_recent": "Máis antigo",
 | 
			
		||||
        "most_recent": "Máis recente",
 | 
			
		||||
        "channel_name_asc": "Nome da canle (A-Z)",
 | 
			
		||||
        "unsubscribe": "Retirar subscrición - {count}",
 | 
			
		||||
        "view_subscriptions": "Ver Subscricións",
 | 
			
		||||
        "back": "Volver",
 | 
			
		||||
        "uses_api_from": "Usa a API desde ",
 | 
			
		||||
        "enable_sponsorblock": "Activar Sponsoblock",
 | 
			
		||||
        "skip_button_only": "Mostrar botón omitir",
 | 
			
		||||
        "skip_automatically": "Automáticamente",
 | 
			
		||||
        "channel_name_desc": "Nome da canle (Z-A)",
 | 
			
		||||
        "skip_sponsors": "Omitir Sponsors",
 | 
			
		||||
        "show_markers": "Mostrar Marcadores no Reprodutor",
 | 
			
		||||
        "skip_segment": "Omitir Segmento",
 | 
			
		||||
        "dark": "Escuro",
 | 
			
		||||
        "min_segment_length": "Lonxitude mínima do segmento (en segundos)",
 | 
			
		||||
        "theme": "Decorado",
 | 
			
		||||
        "auto": "Auto",
 | 
			
		||||
        "light": "Claro",
 | 
			
		||||
        "autoplay_video": "Reprodución automática"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +18,8 @@
 | 
			
		|||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "לצפות ב־{0}"
 | 
			
		||||
        "watch_on": "לצפות ב־{0}",
 | 
			
		||||
        "failed": "חל כשל עם קוד שגיאה {0}, מידע נוסף ביומנים"
 | 
			
		||||
    },
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "subscribe": "מינוי - {count}",
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +60,7 @@
 | 
			
		|||
        "yes": "כן",
 | 
			
		||||
        "no": "לא",
 | 
			
		||||
        "export_to_json": "ייצוא ל־JSON",
 | 
			
		||||
        "import_from_json": "ייבוא מ־JSON/CSV",
 | 
			
		||||
        "import_from_json": "ייבוא מ־JSON",
 | 
			
		||||
        "show_markers": "הצגת סמנים בנגן",
 | 
			
		||||
        "auto_play_next_video": "לנגן את הסרטון הבא אוטומטית",
 | 
			
		||||
        "donations": "תרומות בפיתוח",
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +144,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "פריסת פרקים בנייד",
 | 
			
		||||
        "delete_automatically": "למחוק אוטומטית לאחר",
 | 
			
		||||
        "enable_dearrow": "הפעלת DeArrow",
 | 
			
		||||
        "generate_qrcode": "יצירת קוד QR"
 | 
			
		||||
        "generate_qrcode": "יצירת קוד QR",
 | 
			
		||||
        "import_from_json_csv": "ייבוא מ־JSON/CSV",
 | 
			
		||||
        "download_frame": "הורדת תמונית"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "ננעץ על ידי {author}",
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +165,9 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "שם משתמש",
 | 
			
		||||
        "password": "סיסמה"
 | 
			
		||||
        "password": "סיסמה",
 | 
			
		||||
        "password_confirm": "אישור סיסמה",
 | 
			
		||||
        "passwords_incorrect": "הסיסמאות שונות זו מזו!"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "סרטונים",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -178,7 +178,9 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "password": "Lozinka",
 | 
			
		||||
        "username": "Korisničko ime"
 | 
			
		||||
        "username": "Korisničko ime",
 | 
			
		||||
        "password_confirm": "Potvrdi lozinku",
 | 
			
		||||
        "passwords_incorrect": "Lozinke se ne poklapaju!"
 | 
			
		||||
    },
 | 
			
		||||
    "search": {
 | 
			
		||||
        "did_you_mean": "Misliš li: {0}?",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,8 @@
 | 
			
		|||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Tonton di {0}"
 | 
			
		||||
        "watch_on": "Tonton di {0}",
 | 
			
		||||
        "failed": "Gagal dengan kode kesalahan {0}, lihat catatan untuk info lebih lanjut"
 | 
			
		||||
    },
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "subscribe": "Berlangganan - {count}",
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +56,7 @@
 | 
			
		|||
        "show_more": "Tampilkan Lebih Banyak",
 | 
			
		||||
        "yes": "Iya",
 | 
			
		||||
        "no": "Tidak",
 | 
			
		||||
        "import_from_json": "Impor dari JSON/CSV",
 | 
			
		||||
        "import_from_json": "Impor dari JSON",
 | 
			
		||||
        "loop_this_video": "Ulangi Video ini",
 | 
			
		||||
        "auto_play_next_video": "Mainkan video berikutnya secara otomatis",
 | 
			
		||||
        "donations": "Donasi pengembangan",
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +144,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "Tata Letak Bab di Ponsel",
 | 
			
		||||
        "delete_automatically": "Hapus secara otomatis setelah",
 | 
			
		||||
        "enable_dearrow": "Aktifkan DeArrow",
 | 
			
		||||
        "generate_qrcode": "Buat Kode QR"
 | 
			
		||||
        "generate_qrcode": "Buat Kode QR",
 | 
			
		||||
        "import_from_json_csv": "Impor dari JSON/CSV",
 | 
			
		||||
        "download_frame": "Unduh bingkai"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "Dipasangi pin oleh {author}",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -136,7 +136,8 @@
 | 
			
		|||
        "player": "Riproduttore",
 | 
			
		||||
        "livestreams": "Streaming live",
 | 
			
		||||
        "channels": "Canali",
 | 
			
		||||
        "bookmarks": "Segnalibri"
 | 
			
		||||
        "bookmarks": "Segnalibri",
 | 
			
		||||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "sponsor_segments": "Segmenti sponsor",
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +151,8 @@
 | 
			
		|||
        "all": "Tutti",
 | 
			
		||||
        "category": "Categoria",
 | 
			
		||||
        "chapters_horizontal": "Orizzontale",
 | 
			
		||||
        "chapters_vertical": "Verticale"
 | 
			
		||||
        "chapters_vertical": "Verticale",
 | 
			
		||||
        "license": "Licenza"
 | 
			
		||||
    },
 | 
			
		||||
    "preferences": {
 | 
			
		||||
        "ssl_score": "Valutazione SSL",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,7 +60,7 @@
 | 
			
		|||
        "yes": "はい",
 | 
			
		||||
        "no": "いいえ",
 | 
			
		||||
        "export_to_json": "JSONに出力",
 | 
			
		||||
        "import_from_json": "JSON/CSVを読み込む",
 | 
			
		||||
        "import_from_json": "JSONから読み込む",
 | 
			
		||||
        "loop_this_video": "この動画をループ再生",
 | 
			
		||||
        "auto_play_next_video": "次の動画を自動再生",
 | 
			
		||||
        "donations": "開発者に寄付",
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +143,8 @@
 | 
			
		|||
        "show_search_suggestions": "検索語句の候補を表示",
 | 
			
		||||
        "delete_automatically": "指定時間後に自動削除",
 | 
			
		||||
        "enable_dearrow": "DeArrow を使用",
 | 
			
		||||
        "generate_qrcode": "QRコードの生成"
 | 
			
		||||
        "generate_qrcode": "QRコードの生成",
 | 
			
		||||
        "import_from_json_csv": "JSON/CSVから読み込む"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "{author} によって固定",
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +163,9 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "ユーザー名",
 | 
			
		||||
        "password": "パスワード"
 | 
			
		||||
        "password": "パスワード",
 | 
			
		||||
        "password_confirm": "パスワードの確認",
 | 
			
		||||
        "passwords_incorrect": "パスワードが一致しません!"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "動画",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,8 @@
 | 
			
		|||
        "login": "പ്രവേശിക്കുക",
 | 
			
		||||
        "subscriptions": "സബ്സ്ക്രിപ്ഷനുകൾ",
 | 
			
		||||
        "playlists": "പ്ലേലിസ്റ്റുകൾ",
 | 
			
		||||
        "player": "കളിക്കാരൻ"
 | 
			
		||||
        "player": "കളിക്കാരൻ",
 | 
			
		||||
        "account": "അക്കോണട്"
 | 
			
		||||
    },
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "view_subscriptions": "സബ്സ്ക്രിപ്ഷനുകൾ കാണുക",
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +56,7 @@
 | 
			
		|||
        "yes": "അതെ",
 | 
			
		||||
        "show_more": "കൂടുതൽ കാണിക്കുക",
 | 
			
		||||
        "buffering_goal": "ബഫറിംഗ് ലക്ഷ്യം(സെക്കൻഡുകളിൽ)",
 | 
			
		||||
        "import_from_json": "JSON/CSV നിന്ന് ഇറക്കുമതി ചെയ്യൂ",
 | 
			
		||||
        "import_from_json": "JSONിൽ നിന്ന് ഇറക്കുമതി ചെയ്യൂ",
 | 
			
		||||
        "export_to_json": "JSON-ലേക്ക് എക്സ്പ്പോർട്ട് ചെയ്യുക",
 | 
			
		||||
        "instance_selection": "ഇൻസ്റ്റ്ൻസ് തിരഞ്ഞെടുക്കുക",
 | 
			
		||||
        "loading": "ലഭ്യമാക്കുന്നു...",
 | 
			
		||||
| 
						 | 
				
			
			@ -74,16 +75,32 @@
 | 
			
		|||
        "please_select_playlist": "ഒരു പ്ലേലിസ്റ്റ് തിരഞ്ഞെടുക്കുക",
 | 
			
		||||
        "delete_playlist_video_confirm": "ഈ പ്ലേലിസ്റ്റിൽ നിന്ന് ഈ വീഡിയോ ഒഴിവാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ?",
 | 
			
		||||
        "delete_playlist_confirm": "ഈ പ്ലേലിസ്റ്റ് ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടൊ?",
 | 
			
		||||
        "skip_automatically": "സ്വയമേവ"
 | 
			
		||||
        "skip_automatically": "സ്വയമേവ",
 | 
			
		||||
        "show_watch_on_youtube": "YouTubeിൽ കാണാം എന്ന button കാണിക്കുകാ",
 | 
			
		||||
        "time_code": "സമയമായം (സെക്കന്റുകളിൽ)",
 | 
			
		||||
        "show_less": "കുറച്ച്മാതറം",
 | 
			
		||||
        "with_timecode": "സമയമായവുമായി പങ്കുവെക്കുക",
 | 
			
		||||
        "back_to_home": "തിരിച്ച് വീട്ടിലേക്ക്",
 | 
			
		||||
        "dismiss": "തിരിച്ച്",
 | 
			
		||||
        "create_group": "കൂട്ടം ഉണടാക്കുകാ",
 | 
			
		||||
        "okay": "ശരി",
 | 
			
		||||
        "invalidate_session": "എല ടിവയഡിൽ നിന്നും ലൊഗൗഠ അവുകാ",
 | 
			
		||||
        "enabled_codecs": "ഉപയോഗിക്കുന്ന കോടെക്കൃകൽ",
 | 
			
		||||
        "share": "പങ്കുവെക്കുക",
 | 
			
		||||
        "documentation": "സഹായക്കുറിപ്പുകൽ",
 | 
			
		||||
        "cancel": "റദ്ദാക്കുക",
 | 
			
		||||
        "generate_qrcode": "QR Code ഉണ്ടാക്കുക",
 | 
			
		||||
        "import_from_json_csv": "JSON/CSVിൽ നിന്ന് ഇറക്കുമതി ചെയ്യൂ"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "കാണുക {0}"
 | 
			
		||||
        "watch_on": "{0}ിൻ കാണൃകാ"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "watched": "കണ്ടതാണ്",
 | 
			
		||||
        "views": "{views} കാഴ്ചകൾ",
 | 
			
		||||
        "videos": "വിഡിയോകൾ",
 | 
			
		||||
        "sponsor_segments": "സ്പോൺസർമാരുടെ ഭാഗങ്ങൾ"
 | 
			
		||||
        "sponsor_segments": "സ്പോൺസർമാരുടെ ഭാഗങ്ങൾ",
 | 
			
		||||
        "all": "എല്ലാം"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "പിൻ ചെയ്തിരിക്കുന്നത് {author}"
 | 
			
		||||
| 
						 | 
				
			
			@ -98,5 +115,8 @@
 | 
			
		|||
    "login": {
 | 
			
		||||
        "password": "രഹസ്യവാക്ക്",
 | 
			
		||||
        "username": "ഉപയോക്തൃനാമം"
 | 
			
		||||
    },
 | 
			
		||||
    "search": {
 | 
			
		||||
        "did_you_mean": "{0} ആണൊ ഉദേശിച്ചെ?"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,13 @@
 | 
			
		|||
{
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "skip_sponsors": "Sponsors Overslaan",
 | 
			
		||||
        "skip_outro": "Eindkaarten/Credits Overslaan",
 | 
			
		||||
        "add_to_playlist": "Aan Afspeellijst Toevoegen",
 | 
			
		||||
        "sort_by": "Sorteer op:",
 | 
			
		||||
        "skip_sponsors": "Sponsors overslaan",
 | 
			
		||||
        "skip_outro": "Eindkaarten/credits overslaan",
 | 
			
		||||
        "add_to_playlist": "Toevoegen aan afspeellijst",
 | 
			
		||||
        "sort_by": "Sorteren op:",
 | 
			
		||||
        "buffering_goal": "Bufferdoel (in seconden)",
 | 
			
		||||
        "country_selection": "Land Selectie",
 | 
			
		||||
        "show_recommendations": "Aanbevelingen Weergeven",
 | 
			
		||||
        "disable_lbry": "LBRY voor Streamen Uitschakelen",
 | 
			
		||||
        "country_selection": "Land",
 | 
			
		||||
        "show_recommendations": "Aanbevelingen tonen",
 | 
			
		||||
        "disable_lbry": "LBRY voor streamen uitschakelen",
 | 
			
		||||
        "enable_lbry_proxy": "Proxy voor LBRY Inschakelen",
 | 
			
		||||
        "view_ssl_score": "SSL-score Bekijken",
 | 
			
		||||
        "search": "Zoeken (Ctrl+K)",
 | 
			
		||||
| 
						 | 
				
			
			@ -16,68 +16,68 @@
 | 
			
		|||
        "theme": "Thema",
 | 
			
		||||
        "subscribe": "Abonneren - {count}",
 | 
			
		||||
        "skip_non_music": "Muziek Overslaan: Niet-muzieksectie",
 | 
			
		||||
        "show_comments": "Toon Reacties",
 | 
			
		||||
        "skip_self_promo": "Onbetaalde/Zelf-promotie Overslaan",
 | 
			
		||||
        "show_comments": "Opmerkingen tonen",
 | 
			
		||||
        "skip_self_promo": "Onbetaalde-/zelfpromotie overslaan",
 | 
			
		||||
        "skip_highlight": "Markering Overslaan",
 | 
			
		||||
        "skip_interaction": "Interactieherinnering Overslaan (Abonneren)",
 | 
			
		||||
        "show_more": "Toon meer",
 | 
			
		||||
        "skip_interaction": "Interactieherinnering overslaan (abonneren)",
 | 
			
		||||
        "show_more": "Meer tonen",
 | 
			
		||||
        "unsubscribe": "Afmelden - {count}",
 | 
			
		||||
        "view_subscriptions": "Abonnementen Bekijken",
 | 
			
		||||
        "enable_sponsorblock": "Sponsorblok Inschakelen",
 | 
			
		||||
        "skip_preview": "Voorbeeld/Samenvatting Overslaan",
 | 
			
		||||
        "view_subscriptions": "Abonnementen bekijken",
 | 
			
		||||
        "enable_sponsorblock": "Sponsorblok inschakelen",
 | 
			
		||||
        "skip_preview": "Voorbeschouwing/samenvatting overslaan",
 | 
			
		||||
        "auto": "Auto",
 | 
			
		||||
        "dark": "Donker",
 | 
			
		||||
        "light": "Licht",
 | 
			
		||||
        "default_quality": "Standaard Kwaliteit",
 | 
			
		||||
        "loop_this_video": "Deze Video Herhalen",
 | 
			
		||||
        "loop_this_video": "Deze video herhalen",
 | 
			
		||||
        "donations": "Ontwikkelingsdonaties",
 | 
			
		||||
        "minimize_description": "Beschrijving Minimaliseren",
 | 
			
		||||
        "show_description": "Toon Beschrijving",
 | 
			
		||||
        "minimize_recommendations": "Aanbevelingen Minimaliseren",
 | 
			
		||||
        "most_recent": "Meest Recente",
 | 
			
		||||
        "least_recent": "Minst Recente",
 | 
			
		||||
        "minimize_description": "Omschrijving minimaliseren",
 | 
			
		||||
        "show_description": "Omschrijving tonen",
 | 
			
		||||
        "minimize_recommendations": "Aanbevelingen minimaliseren",
 | 
			
		||||
        "most_recent": "Meest recent",
 | 
			
		||||
        "least_recent": "Minst recent",
 | 
			
		||||
        "channel_name_asc": "Kanaalnaam (A-Z)",
 | 
			
		||||
        "channel_name_desc": "Kanaalnaam (Z-A)",
 | 
			
		||||
        "back": "Terug",
 | 
			
		||||
        "uses_api_from": "Gebruikt de API van ",
 | 
			
		||||
        "skip_intro": "Pauze/Intro-animatie Overslaan",
 | 
			
		||||
        "uses_api_from": "API gebruiken van ",
 | 
			
		||||
        "skip_intro": "Onderbrekings-/intro-animatie overslaan",
 | 
			
		||||
        "autoplay_video": "Video Automatisch Afspelen",
 | 
			
		||||
        "store_watch_history": "Kijkgeschiedenis Opslaan",
 | 
			
		||||
        "loading": "Laden...",
 | 
			
		||||
        "audio_only": "Alleen Audio",
 | 
			
		||||
        "default_homepage": "Standaard Startpagina",
 | 
			
		||||
        "minimize_description_default": "Beschrijving Standaard Minimaliseren",
 | 
			
		||||
        "language_selection": "Taalkeuze",
 | 
			
		||||
        "minimize_description_default": "Omschrijving standaard minimaliseren",
 | 
			
		||||
        "language_selection": "Taal",
 | 
			
		||||
        "instances_list": "Instantieslijst",
 | 
			
		||||
        "yes": "Ja",
 | 
			
		||||
        "export_to_json": "Exporteren naar JSON",
 | 
			
		||||
        "hide_replies": "Verberg Antwoorden",
 | 
			
		||||
        "hide_replies": "Reacties verbergen",
 | 
			
		||||
        "enabled_codecs": "Ingeschakelde Codecs (Meerdere)",
 | 
			
		||||
        "no": "Nee",
 | 
			
		||||
        "auto_play_next_video": "Volgende Video Automatisch Afspelen",
 | 
			
		||||
        "remove_from_playlist": "Uit Afspeellijst Verwijderen",
 | 
			
		||||
        "select_playlist": "Selecteer een Afspeellijst",
 | 
			
		||||
        "auto_play_next_video": "Volgende video automatisch afspelen",
 | 
			
		||||
        "remove_from_playlist": "Uit afspeellijst verwijderen",
 | 
			
		||||
        "select_playlist": "Afspeellijst selecteren",
 | 
			
		||||
        "delete_playlist_confirm": "Deze afspeellijst verwijderen?",
 | 
			
		||||
        "please_select_playlist": "Selecteer een afspeellijst alsjeblief",
 | 
			
		||||
        "instance_selection": "Instantie Selectie",
 | 
			
		||||
        "import_from_json": "Importeren uit JSON/CSV",
 | 
			
		||||
        "clear_history": "Geschiedenis Wissen",
 | 
			
		||||
        "load_more_replies": "Laad meer Antwoorden",
 | 
			
		||||
        "please_select_playlist": "Selecteer een afspeellijst",
 | 
			
		||||
        "instance_selection": "Instantie",
 | 
			
		||||
        "import_from_json": "Importeren uit JSON",
 | 
			
		||||
        "clear_history": "Geschiedenis wissen",
 | 
			
		||||
        "load_more_replies": "Meer reacties laden",
 | 
			
		||||
        "delete_playlist_video_confirm": "Video uit deze afspeellijst verwijderen?",
 | 
			
		||||
        "create_playlist": "Afspeellijst Maken",
 | 
			
		||||
        "delete_playlist": "Afspeellijst Verwijderen",
 | 
			
		||||
        "create_playlist": "Afspeellijst aanmaken",
 | 
			
		||||
        "delete_playlist": "Afspeellijst verwijderen",
 | 
			
		||||
        "show_markers": "Laat markeringen op speler zien",
 | 
			
		||||
        "store_search_history": "Zoekgeschiedenis Opslaan",
 | 
			
		||||
        "minimize_chapters_default": "Hoofdstukken Standaard Minimaliseren",
 | 
			
		||||
        "show_watch_on_youtube": "Toon Bekijk op YouTube knop",
 | 
			
		||||
        "store_search_history": "Zoekgeschiedenis bijhouden",
 | 
			
		||||
        "minimize_chapters_default": "Hoofdstukken standaard minimaliseren",
 | 
			
		||||
        "show_watch_on_youtube": "De knop ‘Bekijken op YouTube’ tonen",
 | 
			
		||||
        "restore_preferences": "Voorkeuren herstellen",
 | 
			
		||||
        "with_timecode": "Delen met tijdcode",
 | 
			
		||||
        "piped_link": "Piped link",
 | 
			
		||||
        "follow_link": "Volg link",
 | 
			
		||||
        "piped_link": "Piped-link",
 | 
			
		||||
        "follow_link": "Volglink",
 | 
			
		||||
        "copy_link": "Link kopiëren",
 | 
			
		||||
        "hide_watched": "Verberg bekeken video's in de feed",
 | 
			
		||||
        "hide_watched": "Bekeken video's in feed verbergen",
 | 
			
		||||
        "minimize_comments": "Opmerkingen minimaliseren",
 | 
			
		||||
        "instance_auth_selection": "Selectie authenticatie-instantie",
 | 
			
		||||
        "instance_auth_selection": "Authenticatie-instantie",
 | 
			
		||||
        "clone_playlist": "Afspeellijst dupliceren",
 | 
			
		||||
        "download_as_txt": "Downloaden als .txt",
 | 
			
		||||
        "share": "Delen",
 | 
			
		||||
| 
						 | 
				
			
			@ -86,30 +86,45 @@
 | 
			
		|||
        "time_code": "Tijdcode (in seconden)",
 | 
			
		||||
        "show_chapters": "Hoofdstukken",
 | 
			
		||||
        "source_code": "Broncode",
 | 
			
		||||
        "instance_donations": "Instantie donaties",
 | 
			
		||||
        "reply_count": "{count} antwoorden",
 | 
			
		||||
        "instance_donations": "Instantiedonaties",
 | 
			
		||||
        "reply_count": "{count} reacties",
 | 
			
		||||
        "no_valid_playlists": "Het bestand bevat geen geldige afspeellijsten!",
 | 
			
		||||
        "clone_playlist_success": "Dupliceren gelukt!",
 | 
			
		||||
        "reset_preferences": "Voorkeuren herstellen",
 | 
			
		||||
        "reset_preferences": "Voorkeuren resetten",
 | 
			
		||||
        "back_to_home": "Terug naar de start",
 | 
			
		||||
        "minimize_comments_default": "Opmerkingen Standaard Minimaliseren",
 | 
			
		||||
        "delete_account": "Account Verwijderen",
 | 
			
		||||
        "minimize_comments_default": "Opmerkingen standaard minimaliseren",
 | 
			
		||||
        "delete_account": "Account verwijderen",
 | 
			
		||||
        "logout": "Uitloggen op dit apparaat",
 | 
			
		||||
        "minimize_recommendations_default": "Aanbevelingen Standaard Minimaliseren",
 | 
			
		||||
        "confirm_reset_preferences": "Weet u zeker dat u uw voorkeuren opnieuw wilt instellen?",
 | 
			
		||||
        "backup_preferences": "Back-up voorkeuren",
 | 
			
		||||
        "minimize_recommendations_default": "Aanbevelingen standaard minimaliseren",
 | 
			
		||||
        "confirm_reset_preferences": "Weet u zeker dat u uw voorkeuren wilt resetten?",
 | 
			
		||||
        "backup_preferences": "Back-up-voorkeuren",
 | 
			
		||||
        "invalidate_session": "Uitloggen op alle apparaten",
 | 
			
		||||
        "different_auth_instance": "Gebruik een andere instantie voor authenticatie",
 | 
			
		||||
        "with_playlist": "Delen met afspeellijst",
 | 
			
		||||
        "playlist_bookmarked": "Bladwijzer gemaakt",
 | 
			
		||||
        "bookmark_playlist": "Bladwijzer",
 | 
			
		||||
        "skip_automatically": "Automatisch",
 | 
			
		||||
        "skip_button_only": "toon de overslaan knop",
 | 
			
		||||
        "skip_button_only": "Overslaan-knop tonen",
 | 
			
		||||
        "min_segment_length": "Minimale segmentlengte (in seconden)",
 | 
			
		||||
        "skip_segment": "segment overslaan",
 | 
			
		||||
        "show_less": "Toon minder",
 | 
			
		||||
        "show_less": "Minder tonen",
 | 
			
		||||
        "autoplay_next_countdown": "Standaard aftellen tot de volgende video (in seconden)",
 | 
			
		||||
        "dismiss": "Afwijzen"
 | 
			
		||||
        "dismiss": "Afwijzen",
 | 
			
		||||
        "enable_dearrow": "DeArrow inschakelen",
 | 
			
		||||
        "playlist_description": "Afspeellijstomschrijving",
 | 
			
		||||
        "cancel": "Annuleren",
 | 
			
		||||
        "show_search_suggestions": "Zoeksuggesties tonen",
 | 
			
		||||
        "delete_automatically": "Automatisch verwijderen na",
 | 
			
		||||
        "okay": "Oké",
 | 
			
		||||
        "playlist_name": "Afspeellijstnaam",
 | 
			
		||||
        "edit_playlist": "Afspeellijst bewerken",
 | 
			
		||||
        "create_group": "Groep aanmaken",
 | 
			
		||||
        "group_name": "Groepnaam",
 | 
			
		||||
        "generate_qrcode": "QR-code genereren",
 | 
			
		||||
        "chapters_layout_mobile": "Mobiele lay-out voor hoofdstukken",
 | 
			
		||||
        "auto_display_captions": "Ondertiteling automatisch tonen",
 | 
			
		||||
        "import_from_json_csv": "Importeren uit JSON/CSV",
 | 
			
		||||
        "download_frame": "Beeld downloaden"
 | 
			
		||||
    },
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "register": "Registreren",
 | 
			
		||||
| 
						 | 
				
			
			@ -118,32 +133,38 @@
 | 
			
		|||
        "preferences": "Voorkeuren",
 | 
			
		||||
        "history": "Geschiedenis",
 | 
			
		||||
        "subscriptions": "Abonnementen",
 | 
			
		||||
        "trending": "populair",
 | 
			
		||||
        "trending": "Trending",
 | 
			
		||||
        "playlists": "Afspeellijsten",
 | 
			
		||||
        "account": "profiel",
 | 
			
		||||
        "account": "Account",
 | 
			
		||||
        "instance": "Instantie",
 | 
			
		||||
        "player": "Speler",
 | 
			
		||||
        "livestreams": "Livestreams",
 | 
			
		||||
        "channels": "Kanalen",
 | 
			
		||||
        "bookmarks": "Bladwijzers"
 | 
			
		||||
        "bookmarks": "Bladwijzers",
 | 
			
		||||
        "dearrow": "DeArrow",
 | 
			
		||||
        "channel_groups": "Kanaalgroepen"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Kijk op {0}"
 | 
			
		||||
        "watch_on": "Kijken op {0}",
 | 
			
		||||
        "failed": "Mislukt met foutcode {0}, zie logboeken voor meer informatie"
 | 
			
		||||
    },
 | 
			
		||||
    "search": {
 | 
			
		||||
        "videos": "YouTube: Video's",
 | 
			
		||||
        "channels": "YouTube: Kanalen",
 | 
			
		||||
        "playlists": "YouTube: Afspeellijsten",
 | 
			
		||||
        "music_songs": "YT Muziek: Liedjes",
 | 
			
		||||
        "music_videos": "YT Muziek: Video's",
 | 
			
		||||
        "music_albums": "YT Muziek: Albums",
 | 
			
		||||
        "music_playlists": "YT Muziek: Afspeellijsten",
 | 
			
		||||
        "music_songs": "YT Music: Nummers",
 | 
			
		||||
        "music_videos": "YT Music: Video's",
 | 
			
		||||
        "music_albums": "YT Music: Albums",
 | 
			
		||||
        "music_playlists": "YT Music: Afspeellijsten",
 | 
			
		||||
        "did_you_mean": "Bedoelde u: {0}?",
 | 
			
		||||
        "all": "YouTube: Alles"
 | 
			
		||||
        "all": "YouTube: Alles",
 | 
			
		||||
        "music_artists": "YT Music: Artiesten"
 | 
			
		||||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "Gebruikersnaam",
 | 
			
		||||
        "password": "Wachtwoord"
 | 
			
		||||
        "password": "Wachtwoord",
 | 
			
		||||
        "password_confirm": "Wachtwoord bevestigen",
 | 
			
		||||
        "passwords_incorrect": "Wachtwoorden komen niet overeen!"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "Video's",
 | 
			
		||||
| 
						 | 
				
			
			@ -151,17 +172,21 @@
 | 
			
		|||
        "chapters": "Hoofdstukken",
 | 
			
		||||
        "watched": "Gekeken",
 | 
			
		||||
        "sponsor_segments": "Sponsorsegmenten",
 | 
			
		||||
        "ratings_disabled": "Beoordelingen Uitgeschakeld",
 | 
			
		||||
        "live": "{0} Live",
 | 
			
		||||
        "ratings_disabled": "Beoordelingen uitgeschakeld",
 | 
			
		||||
        "live": "{0} live",
 | 
			
		||||
        "shorts": "Shorts",
 | 
			
		||||
        "category": "Categorie",
 | 
			
		||||
        "all": "Alle"
 | 
			
		||||
        "all": "Alle",
 | 
			
		||||
        "chapters_horizontal": "Horizontaal",
 | 
			
		||||
        "chapters_vertical": "Verticaal",
 | 
			
		||||
        "license": "Licentie",
 | 
			
		||||
        "visibility": "Zichtbaarheid"
 | 
			
		||||
    },
 | 
			
		||||
    "preferences": {
 | 
			
		||||
        "has_cdn": "Heeft CDN?",
 | 
			
		||||
        "registered_users": "Geregistreerde Gebruikers",
 | 
			
		||||
        "instance_name": "Instantie Naam",
 | 
			
		||||
        "instance_locations": "Locaties van Instanties",
 | 
			
		||||
        "registered_users": "Geregistreerde gebruikers",
 | 
			
		||||
        "instance_name": "Instantienaam",
 | 
			
		||||
        "instance_locations": "Instantielocaties",
 | 
			
		||||
        "version": "Versie",
 | 
			
		||||
        "up_to_date": "Bijgewerkt?",
 | 
			
		||||
        "ssl_score": "SSL-score"
 | 
			
		||||
| 
						 | 
				
			
			@ -169,8 +194,8 @@
 | 
			
		|||
    "comment": {
 | 
			
		||||
        "pinned_by": "Vastgemaakt door {author}",
 | 
			
		||||
        "user_disabled": "Opmerkingen zijn uitgeschakeld in de instellingen.",
 | 
			
		||||
        "loading": "Opmerkingen laden...",
 | 
			
		||||
        "disabled": "Reacties zijn uitgeschakeld door de uploader."
 | 
			
		||||
        "loading": "Opmerkingen laden…",
 | 
			
		||||
        "disabled": "Opmerkingen zijn uitgeschakeld door de uploader."
 | 
			
		||||
    },
 | 
			
		||||
    "info": {
 | 
			
		||||
        "preferences_note": "Let op: voorkeuren worden opgeslagen in de lokale opslag van uw browser. Als u uw browsergegevens verwijdert, worden ze opnieuw ingesteld.",
 | 
			
		||||
| 
						 | 
				
			
			@ -179,7 +204,11 @@
 | 
			
		|||
        "page_not_found": "Pagina niet gevonden",
 | 
			
		||||
        "local_storage": "Deze actie vereist lokale opslag, zijn cookies ingeschakeld?",
 | 
			
		||||
        "register_no_email_note": "Een e-mailadres als gebruikersnaam gebruiken wordt afgeraden. Toch doorgaan?",
 | 
			
		||||
        "next_video_countdown": "Volgende video afspelen in {0}s"
 | 
			
		||||
        "next_video_countdown": "Volgende video wordt afgespeeld over {0}s",
 | 
			
		||||
        "days": "{amount} dag(en)",
 | 
			
		||||
        "weeks": "{amount} week/weken",
 | 
			
		||||
        "months": "{amount} maand(en)",
 | 
			
		||||
        "hours": "{amount} uur"
 | 
			
		||||
    },
 | 
			
		||||
    "subscriptions": {
 | 
			
		||||
        "subscribed_channels_count": "Geabonneerd op: {0}"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,8 @@
 | 
			
		|||
        "subscriptions": "Abonaments",
 | 
			
		||||
        "playlists": "Listas de lecturas",
 | 
			
		||||
        "bookmarks": "Marcapaginas",
 | 
			
		||||
        "channel_groups": "Grops de cadenas"
 | 
			
		||||
        "channel_groups": "Grops de cadenas",
 | 
			
		||||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Agachar sus {0}"
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +54,7 @@
 | 
			
		|||
        "add_to_playlist": "Apondre a la listra de lectura",
 | 
			
		||||
        "minimize_comments": "Minimizar los comentaris",
 | 
			
		||||
        "theme": "Tèma",
 | 
			
		||||
        "language_selection": "Seleccion de la lenga",
 | 
			
		||||
        "language_selection": "Lenga",
 | 
			
		||||
        "loop_this_video": "Legir en bocla la vidèo",
 | 
			
		||||
        "reset_preferences": "Restablir las preferéncias",
 | 
			
		||||
        "auto": "Auto",
 | 
			
		||||
| 
						 | 
				
			
			@ -75,14 +76,14 @@
 | 
			
		|||
        "yes": "Òc",
 | 
			
		||||
        "no": "Non",
 | 
			
		||||
        "export_to_json": "Exportar en JSON",
 | 
			
		||||
        "import_from_json": "Importar d’un JSON/CSV",
 | 
			
		||||
        "import_from_json": "Importar d’un JSON",
 | 
			
		||||
        "auto_play_next_video": "Legir la vidèo seguenta automaticament",
 | 
			
		||||
        "create_playlist": "Crear una lista de lectura",
 | 
			
		||||
        "delete_playlist": "Levar de la lista de lectura",
 | 
			
		||||
        "select_playlist": "Seleccionatz una lista de lectura",
 | 
			
		||||
        "delete_playlist_confirm": "Suprimir aquesta lista de lectura ?",
 | 
			
		||||
        "clone_playlist": "Clonar la lista de lectura",
 | 
			
		||||
        "instance_auth_selection": "Seleccion de l’instància d’autentificacion",
 | 
			
		||||
        "instance_auth_selection": "Instància d’autentificacion",
 | 
			
		||||
        "clone_playlist_success": "Clonatge capitat !",
 | 
			
		||||
        "follow_link": "Dobrir lo ligam",
 | 
			
		||||
        "skip_self_promo": "Sautar la promocion gratuita / autopromocion",
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +93,7 @@
 | 
			
		|||
        "autoplay_video": "Legir automaticament la vidèo",
 | 
			
		||||
        "audio_only": "Sonque àudio",
 | 
			
		||||
        "minimize_comments_default": "Minimizar los comentaris per defaut",
 | 
			
		||||
        "instance_selection": "Seleccion d’instàncias",
 | 
			
		||||
        "instance_selection": "Instància",
 | 
			
		||||
        "please_select_playlist": "Seleccionatz una lista de lectura",
 | 
			
		||||
        "show_watch_on_youtube": "Mostrar lo boton « Veire sus YouTube »",
 | 
			
		||||
        "invalidate_session": "Se desconnectar de totes los aparelhs",
 | 
			
		||||
| 
						 | 
				
			
			@ -101,7 +102,7 @@
 | 
			
		|||
        "with_timecode": "Partejar amb còdi orari",
 | 
			
		||||
        "piped_link": "Ligam cap a Piped",
 | 
			
		||||
        "show_chapters": "Capítols",
 | 
			
		||||
        "country_selection": "Seleccion del país",
 | 
			
		||||
        "country_selection": "País",
 | 
			
		||||
        "default_homepage": "Pagina d’acuèlh per defaut",
 | 
			
		||||
        "minimize_recommendations_default": "Minimizar las recomandacions per defaut",
 | 
			
		||||
        "store_watch_history": "Servar l’istoric de visualizacion",
 | 
			
		||||
| 
						 | 
				
			
			@ -139,7 +140,9 @@
 | 
			
		|||
        "playlist_description": "Descripcion de la lista de lectura",
 | 
			
		||||
        "auto_display_captions": "Afichatge auto dels sostítols",
 | 
			
		||||
        "show_search_suggestions": "Mostrar las suggestions de recèrcas",
 | 
			
		||||
        "chapters_layout_mobile": "Disposicion capítols sus mobil"
 | 
			
		||||
        "chapters_layout_mobile": "Disposicion capítols sus mobil",
 | 
			
		||||
        "enable_dearrow": "Activar DeArrow",
 | 
			
		||||
        "import_from_json_csv": "Importar d’un JSON/CSV"
 | 
			
		||||
    },
 | 
			
		||||
    "preferences": {
 | 
			
		||||
        "instance_locations": "Localizacion de l’instància",
 | 
			
		||||
| 
						 | 
				
			
			@ -166,7 +169,9 @@
 | 
			
		|||
        "all": "Totas",
 | 
			
		||||
        "category": "Categoria",
 | 
			
		||||
        "chapters_horizontal": "Orizontal",
 | 
			
		||||
        "chapters_vertical": "Vertical"
 | 
			
		||||
        "chapters_vertical": "Vertical",
 | 
			
		||||
        "license": "Licéncia",
 | 
			
		||||
        "visibility": "Visibilitat"
 | 
			
		||||
    },
 | 
			
		||||
    "info": {
 | 
			
		||||
        "preferences_note": "Nòta : las preferéncias son gardadas dins l’espaci d’emmagazinatge del navegador. La supression de las donadas del navegador las restablirà.",
 | 
			
		||||
| 
						 | 
				
			
			@ -175,7 +180,11 @@
 | 
			
		|||
        "cannot_copy": "Còpia impossibla !",
 | 
			
		||||
        "local_storage": "Aquesta accion requerís lo localStorage, son activats los cookies ?",
 | 
			
		||||
        "register_no_email_note": "Es pas recomandat d’utilizar una adreça electronica coma nom d’utilizaire. Contunhar çaquelà ?",
 | 
			
		||||
        "next_video_countdown": "La vidèo seguenta començarà d’aquí {0}s"
 | 
			
		||||
        "next_video_countdown": "La vidèo seguenta començarà d’aquí {0}s",
 | 
			
		||||
        "hours": "{amount} ora(s)",
 | 
			
		||||
        "months": "{amount} mes(es)",
 | 
			
		||||
        "days": "{amount} jorn(s)",
 | 
			
		||||
        "weeks": "{amount} setmana(s)"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "disabled": "L’autor a desactivat los comentaris.",
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +201,8 @@
 | 
			
		|||
        "music_songs": "YT Music : Cançons",
 | 
			
		||||
        "music_videos": "YT Music : Vidèos",
 | 
			
		||||
        "music_albums": "YT Music : Albums",
 | 
			
		||||
        "music_playlists": "YT Music : Listas de lectura"
 | 
			
		||||
        "music_playlists": "YT Music : Listas de lectura",
 | 
			
		||||
        "music_artists": "YT Music : Artistas"
 | 
			
		||||
    },
 | 
			
		||||
    "subscriptions": {
 | 
			
		||||
        "subscribed_channels_count": "Abonat a : {0}"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,8 @@
 | 
			
		|||
        "livestreams": "ସିଧାପ୍ରସାରଣ ଗୁଡ଼ିକ",
 | 
			
		||||
        "channels": "ସ୍ରୋତ ଗୁଡ଼ିକ",
 | 
			
		||||
        "bookmarks": "ବୁକମାର୍କଗୁଡିକ",
 | 
			
		||||
        "channel_groups": "ଚ୍ୟାନେଲ୍ ଗୋଷ୍ଠୀଗୁଡିକ"
 | 
			
		||||
        "channel_groups": "ଚ୍ୟାନେଲ୍ ଗୋଷ୍ଠୀଗୁଡିକ",
 | 
			
		||||
        "dearrow": "ଡି ତୀର"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "{0} ରେ ଦେଖନ୍ତୁ"
 | 
			
		||||
| 
						 | 
				
			
			@ -57,14 +58,14 @@
 | 
			
		|||
        "autoplay_video": "ଅଟୋପ୍ଲେ ଭିଡିଓ",
 | 
			
		||||
        "enabled_codecs": "ସକ୍ଷମ କୋଡେକସ୍ (ଏକାଧିକ)",
 | 
			
		||||
        "audio_only": "କେବଳ ସ୍ୱର",
 | 
			
		||||
        "language_selection": "ଭାଷା ଚୟନ",
 | 
			
		||||
        "language_selection": "ଭାଷା",
 | 
			
		||||
        "show_more": "ଅଧିକ ଦେଖାନ୍ତୁ",
 | 
			
		||||
        "buffering_goal": "ବଫରିଂ ଲକ୍ଷ୍ୟ (ସେକେଣ୍ଡରେ)",
 | 
			
		||||
        "country_selection": "ଦେଶ ଚୟନ",
 | 
			
		||||
        "country_selection": "ଦେଶ",
 | 
			
		||||
        "minimize_description_default": "ଡିଫଲ୍ଟ ଭାବରେ ବର୍ଣ୍ଣନାକୁ କମ୍ କରନ୍ତୁ",
 | 
			
		||||
        "store_watch_history": "ଦେଖିଥିବା ଭିଡିଓ ଗୁଡ଼ିକର ଇତିହାସ ରଖନ୍ତୁ",
 | 
			
		||||
        "instances_list": "ଉଦାହରଣ ତାଲିକା",
 | 
			
		||||
        "instance_selection": "ଇନଷ୍ଟାନ୍ସ ଚୟନ",
 | 
			
		||||
        "instance_selection": "ଇନଷ୍ଟାନ୍ସ",
 | 
			
		||||
        "yes": "ହଁ",
 | 
			
		||||
        "import_from_json": "JSON / CSV ରୁ ଆମଦାନୀ କରନ୍ତୁ",
 | 
			
		||||
        "no": "ନାହିଁ",
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +99,7 @@
 | 
			
		|||
        "minimize_recommendations_default": "ଡିଫଲ୍ଟ ଭାବରେ ସୁପାରିଶକୁ କମ୍ କରନ୍ତୁ",
 | 
			
		||||
        "invalidate_session": "ସମସ୍ତ ଡିଭାଇସ୍ ରୁ ଲଗଆଉଟ୍ କରନ୍ତୁ",
 | 
			
		||||
        "download_as_txt": ".Txt ଭାବରେ ଡାଉନଲୋଡ୍ କରନ୍ତୁ",
 | 
			
		||||
        "instance_auth_selection": "ପ୍ରାମାଣିକିକରଣ ଇନଷ୍ଟାନ୍ସ ଚୟନ",
 | 
			
		||||
        "instance_auth_selection": "ପ୍ରାମାଣିକିକରଣ ଇନଷ୍ଟାନ୍ସ",
 | 
			
		||||
        "confirm_reset_preferences": "ଆପଣ ନିଶ୍ଚିତ କି ଆପଣ ଆପଣଙ୍କର ପସନ୍ଦଗୁଡିକ ପୁନଃ ସେଟ୍ କରିବାକୁ ଚାହୁଁଛନ୍ତି?",
 | 
			
		||||
        "status_page": "ସ୍ଥିତି",
 | 
			
		||||
        "different_auth_instance": "ପ୍ରାମାଣିକିକରଣ ପାଇଁ ଏକ ଭିନ୍ନ ଉଦାହରଣ ବ୍ୟବହାର କରନ୍ତୁ",
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +132,18 @@
 | 
			
		|||
        "autoplay_next_countdown": "ପରବର୍ତ୍ତୀ ଭିଡିଓ ପର୍ଯ୍ୟନ୍ତ ଡିଫଲ୍ଟ କାଉଣ୍ଟଡାଉନ୍ (ସେକେଣ୍ଡରେ)",
 | 
			
		||||
        "dismiss": "ବରଖାସ୍ତ",
 | 
			
		||||
        "create_group": "ଗୋଷ୍ଠୀ ସୃଷ୍ଟି କରନ୍ତୁ",
 | 
			
		||||
        "group_name": "ଗୋଷ୍ଠୀ ନାମ"
 | 
			
		||||
        "group_name": "ଗୋଷ୍ଠୀ ନାମ",
 | 
			
		||||
        "enable_dearrow": "DeArrow କୁ ସକ୍ରିୟ କରନ୍ତୁ",
 | 
			
		||||
        "show_search_suggestions": "ସନ୍ଧାନ ପ୍ରସ୍ତାବଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ",
 | 
			
		||||
        "delete_automatically": "ଏହା ପରେ ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଅପସାରଣ କରନ୍ତୁ",
 | 
			
		||||
        "okay": "ଠିକ୍ ଅଛି",
 | 
			
		||||
        "edit_playlist": "ପ୍ଲେଲିଷ୍ଟକୁ ସମ୍ପାଦନ କରନ୍ତୁ",
 | 
			
		||||
        "playlist_name": "ପ୍ଲେ-ଲିଷ୍ଟ ନାମ",
 | 
			
		||||
        "generate_qrcode": "QR କୋଡ ସୃଷ୍ଟି କରନ୍ତୁ",
 | 
			
		||||
        "chapters_layout_mobile": "ମୋବାଇଲରେ ଅଧ୍ୟାୟ ବିନ୍ୟାସ",
 | 
			
		||||
        "auto_display_captions": "ଶୀର୍ଷକଗୁଡ଼ିକୁ ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଦର୍ଶାନ୍ତୁ",
 | 
			
		||||
        "playlist_description": "ପ୍ଲେଲିଷ୍ଟ ବର୍ଣ୍ଣନା",
 | 
			
		||||
        "cancel": "ବାତିଲ କରନ୍ତୁ"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "loading": "ମନ୍ତବ୍ୟ ଲୋଡ୍ ହେଉଛି ...",
 | 
			
		||||
| 
						 | 
				
			
			@ -149,7 +161,11 @@
 | 
			
		|||
        "chapters": "ଅଧ୍ୟାୟ ଗୁଡ଼ିକ",
 | 
			
		||||
        "live": "{0} ସିଧାପ୍ରସାରଣ",
 | 
			
		||||
        "all": "ସମସ୍ତ",
 | 
			
		||||
        "category": "ବର୍ଗ"
 | 
			
		||||
        "category": "ବର୍ଗ",
 | 
			
		||||
        "visibility": "ଦୃଶ୍ୟମାନତା",
 | 
			
		||||
        "license": "ଲାଇସେନ୍ସ",
 | 
			
		||||
        "chapters_horizontal": "ଭୂସମାନ୍ତର",
 | 
			
		||||
        "chapters_vertical": "ଭୂଲମ୍ବ"
 | 
			
		||||
    },
 | 
			
		||||
    "search": {
 | 
			
		||||
        "did_you_mean": "ଆପଣ କହିବାକୁ ଚାହୁଁଛନ୍ତି କି: {0}?",
 | 
			
		||||
| 
						 | 
				
			
			@ -160,7 +176,8 @@
 | 
			
		|||
        "videos": "ୟୁଟ୍ୟୁବ୍: ଭିଡିଓଗୁଡିକ",
 | 
			
		||||
        "channels": "ୟୁଟ୍ୟୁବ୍: ଚ୍ୟାନେଲଗୁଡିକ",
 | 
			
		||||
        "music_songs": "ୟୁଟିଉବ୍ ସଙ୍ଗୀତ: ଗୀତ ଗୁଡ଼ିକ",
 | 
			
		||||
        "playlists": "ୟୁଟ୍ୟୁବ୍: ପ୍ଲେଲିଷ୍ଟଗୁଡିକ"
 | 
			
		||||
        "playlists": "ୟୁଟ୍ୟୁବ୍: ପ୍ଲେଲିଷ୍ଟଗୁଡିକ",
 | 
			
		||||
        "music_artists": "ୱାଇଟି ମ୍ୟୁଜିକ: ଆର୍ଟିଷ୍ଟ"
 | 
			
		||||
    },
 | 
			
		||||
    "subscriptions": {
 | 
			
		||||
        "subscribed_channels_count": "ସଦସ୍ୟତା: {0}"
 | 
			
		||||
| 
						 | 
				
			
			@ -172,7 +189,11 @@
 | 
			
		|||
        "page_not_found": "ପୃଷ୍ଠାଟି ମିଳିଲା ନାହିଁ",
 | 
			
		||||
        "local_storage": "ଏହି କ୍ରିୟା ଲୋକାଲ୍ ଷ୍ଟୋରେଜ୍ ଆବଶ୍ୟକ କରେ, କୁକିଜ୍ ସକ୍ଷମ ଅଛି କି?",
 | 
			
		||||
        "register_no_email_note": "ଉପଯୋଗକର୍ତ୍ତା ନାମ ଭାବରେ ଏକ ଇ-ମେଲ୍ ବ୍ୟବହାର କରିବା ସୁପାରିଶ କରାଯାଏ ନାହିଁ । ଯେକୌଣସି ପ୍ରକାରେ ଅଗ୍ରଗତି କରନ୍ତୁ?",
 | 
			
		||||
        "next_video_countdown": "{0} ସେକେଣ୍ଡ ରେ ପରବର୍ତ୍ତୀ ଭିଡିଓ ଖେଳିବାକୁ ଆରମ୍ଭ ହେବ"
 | 
			
		||||
        "next_video_countdown": "{0} ସେକେଣ୍ଡ ରେ ପରବର୍ତ୍ତୀ ଭିଡିଓ ଖେଳିବାକୁ ଆରମ୍ଭ ହେବ",
 | 
			
		||||
        "hours": "{amount} ଘଣ୍ଟା",
 | 
			
		||||
        "days": "{amount} ଦିନ",
 | 
			
		||||
        "weeks": "{amount} ସପ୍ତାହ",
 | 
			
		||||
        "months": "{amount} ମାସ"
 | 
			
		||||
    },
 | 
			
		||||
    "preferences": {
 | 
			
		||||
        "instance_name": "ଇନଷ୍ଟାନ୍ସ ନାମ",
 | 
			
		||||
| 
						 | 
				
			
			@ -185,6 +206,8 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "password": "ପାସୱାର୍ଡ",
 | 
			
		||||
        "username": "ଉପଯୋଗକର୍ତ୍ତା ନାମ"
 | 
			
		||||
        "username": "ଉପଯୋଗକର୍ତ୍ତା ନାମ",
 | 
			
		||||
        "passwords_incorrect": "ପ୍ରବେଶ ସଂକେତ ମେଳ ଖାଉନାହିଁ!",
 | 
			
		||||
        "password_confirm": "ପ୍ରବେଶ ସଂକେତ ନିଶ୍ଚିତ କରନ୍ତୁ"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -18,7 +18,8 @@
 | 
			
		|||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Obejrzyj na {0}"
 | 
			
		||||
        "watch_on": "Obejrzyj na {0}",
 | 
			
		||||
        "failed": "Niepowodzenie z powodu kodu błędu {0}, przejrzyj logi, aby uzyskać więcej informacji"
 | 
			
		||||
    },
 | 
			
		||||
    "actions": {
 | 
			
		||||
        "subscribe": "Subskrybuj - {count}",
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +63,7 @@
 | 
			
		|||
        "yes": "Tak",
 | 
			
		||||
        "no": "Nie",
 | 
			
		||||
        "export_to_json": "Eksport do pliku JSON",
 | 
			
		||||
        "import_from_json": "Import z pliku JSON/CSV",
 | 
			
		||||
        "import_from_json": "Import z pliku JSON",
 | 
			
		||||
        "loop_this_video": "Zapętlaj ten film",
 | 
			
		||||
        "auto_play_next_video": "Autoodtwarzanie następnego filmu",
 | 
			
		||||
        "donations": "Wsparcie",
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +144,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "Układ rozdziałów na urządzeniach mobilnych",
 | 
			
		||||
        "delete_automatically": "Usuń automatycznie po",
 | 
			
		||||
        "enable_dearrow": "Włącz DeArrow",
 | 
			
		||||
        "generate_qrcode": "Wygeneruj kod QR"
 | 
			
		||||
        "generate_qrcode": "Wygeneruj kod QR",
 | 
			
		||||
        "import_from_json_csv": "Import z pliku JSON/CSV",
 | 
			
		||||
        "download_frame": "Pobierz klatkę"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "Przypięty przez {author}",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,7 +42,7 @@
 | 
			
		|||
        "enabled_codecs": "Codificadores ativados (vários)",
 | 
			
		||||
        "instance_selection": "Instância",
 | 
			
		||||
        "show_more": "Mostrar mais",
 | 
			
		||||
        "import_from_json": "Importar de JSON/CSV",
 | 
			
		||||
        "import_from_json": "Importar de JSON",
 | 
			
		||||
        "export_to_json": "Exportar para JSON",
 | 
			
		||||
        "loop_this_video": "Repetir este vídeo",
 | 
			
		||||
        "auto_play_next_video": "Reproduzir vídeo seguinte automaticamente",
 | 
			
		||||
| 
						 | 
				
			
			@ -140,7 +140,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "Aplicações recentemente adicionadas",
 | 
			
		||||
        "enable_dearrow": "Ativar o DeArrow",
 | 
			
		||||
        "delete_automatically": "Eliminar automaticamente após",
 | 
			
		||||
        "generate_qrcode": "Gerar código QR"
 | 
			
		||||
        "generate_qrcode": "Gerar código QR",
 | 
			
		||||
        "import_from_json_csv": "Importar de JSON/CSV",
 | 
			
		||||
        "download_frame": "Quadro de transferência"
 | 
			
		||||
    },
 | 
			
		||||
    "preferences": {
 | 
			
		||||
        "instance_name": "Nome da instância",
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +155,9 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "password": "Palavra-passe",
 | 
			
		||||
        "username": "Nome de utilizador"
 | 
			
		||||
        "username": "Nome de utilizador",
 | 
			
		||||
        "passwords_incorrect": "As palavras-passe não coincidem!",
 | 
			
		||||
        "password_confirm": "Confirmar a palavra-passe"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "Vídeos",
 | 
			
		||||
| 
						 | 
				
			
			@ -184,7 +188,8 @@
 | 
			
		|||
        "music_artists": "YT Music: Artistas"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Ver em {0}"
 | 
			
		||||
        "watch_on": "Ver em {0}",
 | 
			
		||||
        "failed": "Falha com o código de erro {0}, ver registos para mais informações"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "Afixado por {author}",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,7 +55,7 @@
 | 
			
		|||
        "view_ssl_score": "Ver Pontuação SSL",
 | 
			
		||||
        "disable_lbry": "Desativar LBRY para Streaming",
 | 
			
		||||
        "enable_lbry_proxy": "Ativar Proxy para LBRY",
 | 
			
		||||
        "import_from_json": "Importar de JSON/CSV",
 | 
			
		||||
        "import_from_json": "Importar de JSON",
 | 
			
		||||
        "loop_this_video": "Repetir este Vídeo",
 | 
			
		||||
        "instances_list": "Lista de Instâncias",
 | 
			
		||||
        "clear_history": "Limpar Histórico",
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "Layout dos Capítulos no Celular",
 | 
			
		||||
        "delete_automatically": "Deletar automaticamente após",
 | 
			
		||||
        "generate_qrcode": "Gerar código QR",
 | 
			
		||||
        "enable_dearrow": "Ativar DeArrow"
 | 
			
		||||
        "enable_dearrow": "Ativar DeArrow",
 | 
			
		||||
        "import_from_json_csv": "Importar de JSON/CSV",
 | 
			
		||||
        "download_frame": "Baixar quadro"
 | 
			
		||||
    },
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "history": "Histórico",
 | 
			
		||||
| 
						 | 
				
			
			@ -143,7 +145,8 @@
 | 
			
		|||
        "dearrow": "DeArrow"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Assistir no {0}"
 | 
			
		||||
        "watch_on": "Assistir no {0}",
 | 
			
		||||
        "failed": "Falhou com código de erro {0}, veja os logs para mais informações"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "Fixado por {author}",
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +165,9 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "Nome de usuário",
 | 
			
		||||
        "password": "Senha"
 | 
			
		||||
        "password": "Senha",
 | 
			
		||||
        "password_confirm": "Confirme senha",
 | 
			
		||||
        "passwords_incorrect": "As senhas não correspondem!"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "Vídeos",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,7 +60,7 @@
 | 
			
		|||
        "yes": "Да",
 | 
			
		||||
        "no": "Нет",
 | 
			
		||||
        "export_to_json": "Экспорт в JSON",
 | 
			
		||||
        "import_from_json": "Импорт из JSON/CSV",
 | 
			
		||||
        "import_from_json": "Импорт из JSON",
 | 
			
		||||
        "loop_this_video": "Повтор текущего видео",
 | 
			
		||||
        "auto_play_next_video": "Сразу проигрывать следующее рекомендованное видео",
 | 
			
		||||
        "donations": "Пожертвования на разработку",
 | 
			
		||||
| 
						 | 
				
			
			@ -142,7 +142,9 @@
 | 
			
		|||
        "show_search_suggestions": "Показать поисковые предложения",
 | 
			
		||||
        "chapters_layout_mobile": "Расположение глав в мобильном виде",
 | 
			
		||||
        "delete_automatically": "Автоматическое удаление после",
 | 
			
		||||
        "enable_dearrow": "Включить DeArrow"
 | 
			
		||||
        "enable_dearrow": "Включить DeArrow",
 | 
			
		||||
        "generate_qrcode": "Сгенерировать QR Код",
 | 
			
		||||
        "import_from_json_csv": "Импорт из JSON/CSV"
 | 
			
		||||
    },
 | 
			
		||||
    "comment": {
 | 
			
		||||
        "pinned_by": "Закреплено пользователем {author}",
 | 
			
		||||
| 
						 | 
				
			
			@ -161,7 +163,9 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "Имя пользователя",
 | 
			
		||||
        "password": "Пароль"
 | 
			
		||||
        "password": "Пароль",
 | 
			
		||||
        "password_confirm": "Повторите пароль",
 | 
			
		||||
        "passwords_incorrect": "Пароль не совпадает!"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "Видео",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -51,7 +51,7 @@
 | 
			
		|||
        "store_watch_history": "Spara titthistorik",
 | 
			
		||||
        "instances_list": "Lista över instanser",
 | 
			
		||||
        "enabled_codecs": "Aktivera codecs (flera)",
 | 
			
		||||
        "import_from_json": "Importera från JSON/CSV",
 | 
			
		||||
        "import_from_json": "Importera från JSON",
 | 
			
		||||
        "donations": "Donationer till utveckling",
 | 
			
		||||
        "filter": "Filter",
 | 
			
		||||
        "hide_replies": "Dölj svar",
 | 
			
		||||
| 
						 | 
				
			
			@ -140,10 +140,13 @@
 | 
			
		|||
        "playlist_bookmarked": "Bokmärkt",
 | 
			
		||||
        "create_group": "Skapa grupp",
 | 
			
		||||
        "skip_button_only": "Visa hoppa över-knapp",
 | 
			
		||||
        "skip_automatically": "Automatiskt"
 | 
			
		||||
        "skip_automatically": "Automatiskt",
 | 
			
		||||
        "download_frame": "Ladda ner bildruta",
 | 
			
		||||
        "import_from_json_csv": "Importera från JSON/CSV"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Titta på {0}"
 | 
			
		||||
        "watch_on": "Titta på {0}",
 | 
			
		||||
        "failed": "Misslyckades med felkod {0}, se loggar för mer information"
 | 
			
		||||
    },
 | 
			
		||||
    "preferences": {
 | 
			
		||||
        "instance_name": "Instansnamn",
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +159,9 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "Användarnamn",
 | 
			
		||||
        "password": "Lösenord"
 | 
			
		||||
        "password": "Lösenord",
 | 
			
		||||
        "password_confirm": "Bekräfta lösenord",
 | 
			
		||||
        "passwords_incorrect": "Lösenorden stämmer inte överens!"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "Videor",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,7 @@
 | 
			
		|||
        "donations": "Geliştirme Bağışları",
 | 
			
		||||
        "auto_play_next_video": "Sonraki Videoyu Otomatik Oynat",
 | 
			
		||||
        "loop_this_video": "Bu Videoyu Döngüye Al",
 | 
			
		||||
        "import_from_json": "JSON/CSV Dosyasından İçe Aktar",
 | 
			
		||||
        "import_from_json": "JSON Dosyasından İçe Aktar",
 | 
			
		||||
        "export_to_json": "JSON Olarak Dışa Aktar",
 | 
			
		||||
        "no": "Hayır",
 | 
			
		||||
        "yes": "Evet",
 | 
			
		||||
| 
						 | 
				
			
			@ -122,10 +122,13 @@
 | 
			
		|||
        "chapters_layout_mobile": "Mobilde Bölüm Düzeni",
 | 
			
		||||
        "delete_automatically": "Şundan sonra otomatik olarak sil",
 | 
			
		||||
        "enable_dearrow": "DeArrow'u Etkinleştir",
 | 
			
		||||
        "generate_qrcode": "QR Kodu Oluştur"
 | 
			
		||||
        "generate_qrcode": "QR Kodu Oluştur",
 | 
			
		||||
        "import_from_json_csv": "JSON/CSV Dosyasından İçe Aktar",
 | 
			
		||||
        "download_frame": "Kareyi indir"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "{0} Üzerinde İzle"
 | 
			
		||||
        "watch_on": "{0} Üzerinde İzle",
 | 
			
		||||
        "failed": "{0} hata kodu ile başarısız oldu, daha fazla bilgi için günlüklere bakın"
 | 
			
		||||
    },
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "history": "Geçmiş",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
{
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "Дивитися на {0}"
 | 
			
		||||
        "watch_on": "Дивитися на {0}",
 | 
			
		||||
        "failed": "Помилка з кодом {0}, дивіться журнали для отримання додаткової інформації"
 | 
			
		||||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "Ім'я користувача",
 | 
			
		||||
| 
						 | 
				
			
			@ -55,7 +56,7 @@
 | 
			
		|||
        "country_selection": "Країна",
 | 
			
		||||
        "minimize_description_default": "Не розгортати опис за замовчуванням",
 | 
			
		||||
        "yes": "Так",
 | 
			
		||||
        "import_from_json": "Імпортувати з JSON/CSV",
 | 
			
		||||
        "import_from_json": "Імпортувати з JSON",
 | 
			
		||||
        "loop_this_video": "Зациклити це відео",
 | 
			
		||||
        "auto_play_next_video": "Автоматичне відтворення наступного відео",
 | 
			
		||||
        "donations": "Пожертвування на розробку",
 | 
			
		||||
| 
						 | 
				
			
			@ -131,7 +132,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "Макет розділів на телефоні",
 | 
			
		||||
        "enable_dearrow": "Увімкнути DeArrow",
 | 
			
		||||
        "delete_automatically": "Видаляти автоматично після",
 | 
			
		||||
        "generate_qrcode": "Згенерувати QR-код"
 | 
			
		||||
        "generate_qrcode": "Згенерувати QR-код",
 | 
			
		||||
        "import_from_json_csv": "Імпортувати з JSON/CSV",
 | 
			
		||||
        "download_frame": "Завантажити кадр"
 | 
			
		||||
    },
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "register": "Реєстрація",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,7 @@
 | 
			
		|||
        "donations": "开发捐赠",
 | 
			
		||||
        "auto_play_next_video": "自动播放下一个视频",
 | 
			
		||||
        "loop_this_video": "循环播放此视频",
 | 
			
		||||
        "import_from_json": "从 JSON/CSV 导入",
 | 
			
		||||
        "import_from_json": "从 JSON 导入",
 | 
			
		||||
        "export_to_json": "导出为 JSON",
 | 
			
		||||
        "no": "否",
 | 
			
		||||
        "yes": "是",
 | 
			
		||||
| 
						 | 
				
			
			@ -122,7 +122,9 @@
 | 
			
		|||
        "chapters_layout_mobile": "移动设备上的章节布局",
 | 
			
		||||
        "delete_automatically": "多久后自动删除",
 | 
			
		||||
        "enable_dearrow": "启用 DeArrow",
 | 
			
		||||
        "generate_qrcode": "生成二维码"
 | 
			
		||||
        "generate_qrcode": "生成二维码",
 | 
			
		||||
        "import_from_json_csv": "从 JSON/CSV 文件导入",
 | 
			
		||||
        "download_frame": "下载视频帧"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "sponsor_segments": "赞助商部分",
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +158,8 @@
 | 
			
		|||
        "user_disabled": "评论在设置中被禁用。"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "在 {0} 观看"
 | 
			
		||||
        "watch_on": "在 {0} 观看",
 | 
			
		||||
        "failed": "播放器出错,错误代码 {0},查看日志了解更多信息"
 | 
			
		||||
    },
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "feed": "订阅流",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,14 +3,14 @@
 | 
			
		|||
        "skip_intro": "跳過中場休息/開場動畫",
 | 
			
		||||
        "skip_sponsors": "跳過贊助廣告",
 | 
			
		||||
        "enable_sponsorblock": "啟用 SponsorBlock",
 | 
			
		||||
        "country_selection": "選擇國家",
 | 
			
		||||
        "country_selection": "國家",
 | 
			
		||||
        "channel_name_desc": "頻道名 (Z-A)",
 | 
			
		||||
        "channel_name_asc": "頻道名 (A-Z)",
 | 
			
		||||
        "unsubscribe": "取消訂閱 - {count}",
 | 
			
		||||
        "subscribe": "訂閱 - {count}",
 | 
			
		||||
        "sort_by": "排序依據:",
 | 
			
		||||
        "view_subscriptions": "檢視訂閱內容",
 | 
			
		||||
        "language_selection": "選擇語言",
 | 
			
		||||
        "language_selection": "語言",
 | 
			
		||||
        "skip_non_music": "跳過音樂中的非音樂片段",
 | 
			
		||||
        "theme": "主題",
 | 
			
		||||
        "show_description": "顯示說明",
 | 
			
		||||
| 
						 | 
				
			
			@ -119,7 +119,8 @@
 | 
			
		|||
        "reply_count": "{count} 個回覆",
 | 
			
		||||
        "minimize_recommendations_default": "預設收起推薦影片",
 | 
			
		||||
        "show_watch_on_youtube": "顯示「在Youtube 觀看」按鈕",
 | 
			
		||||
        "show_less": "顯示更少"
 | 
			
		||||
        "show_less": "顯示更少",
 | 
			
		||||
        "generate_qrcode": "產生 QR 碼"
 | 
			
		||||
    },
 | 
			
		||||
    "titles": {
 | 
			
		||||
        "history": "歷史記錄",
 | 
			
		||||
| 
						 | 
				
			
			@ -149,7 +150,8 @@
 | 
			
		|||
    },
 | 
			
		||||
    "login": {
 | 
			
		||||
        "username": "使用者名",
 | 
			
		||||
        "password": "密碼"
 | 
			
		||||
        "password": "密碼",
 | 
			
		||||
        "password_confirm": "確認密碼"
 | 
			
		||||
    },
 | 
			
		||||
    "video": {
 | 
			
		||||
        "videos": "影片",
 | 
			
		||||
| 
						 | 
				
			
			@ -190,7 +192,11 @@
 | 
			
		|||
        "preferences_note": "註:偏好設定儲存在本機的瀏覽器的儲存空間內。如果清除瀏覽器的資料,偏好設定就會重設。",
 | 
			
		||||
        "register_no_email_note": "不建議使用電子郵件地址作為用戶名稱。仍要繼續嗎?",
 | 
			
		||||
        "local_storage": "此動作需要儲存資料在本機,請確認是否啟用了Cookies?",
 | 
			
		||||
        "next_video_countdown": "在{0}秒後播放下一段影片"
 | 
			
		||||
        "next_video_countdown": "在{0}秒後播放下一段影片",
 | 
			
		||||
        "days": "{amount} 天",
 | 
			
		||||
        "weeks": "{amount} 個星期",
 | 
			
		||||
        "months": "{amount} 個月",
 | 
			
		||||
        "hours": "{amount} 小時"
 | 
			
		||||
    },
 | 
			
		||||
    "player": {
 | 
			
		||||
        "watch_on": "在 {0} 觀看"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue