Update efy branch from master

This commit is contained in:
dragos-efy 2023-09-06 00:59:52 +03:00
commit 240c419823
41 changed files with 1310 additions and 1026 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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:

View file

@ -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:

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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",

File diff suppressed because it is too large Load diff

View file

@ -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" />

View file

@ -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>

View file

@ -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>

View file

@ -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())

View file

@ -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>

View file

@ -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": "المقاطع الإعلانية",

View file

@ -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ə"
}
}

View file

@ -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}",

View file

@ -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",

View file

@ -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}",

View file

@ -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",

View file

@ -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
View 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"
}
}

View file

@ -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": "סרטונים",

View file

@ -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}?",

View file

@ -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}",

View file

@ -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",

View file

@ -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": "動画",

View file

@ -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} ആണൊ ഉദേശിച്ചെ?"
}
}

View file

@ -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": "Afspeellijst­omschrijving",
"cancel": "Annuleren",
"show_search_suggestions": "Zoeksuggesties tonen",
"delete_automatically": "Automatisch verwijderen na",
"okay": "Oké",
"playlist_name": "Afspeellijst­naam",
"edit_playlist": "Afspeellijst bewerken",
"create_group": "Groep aanmaken",
"group_name": "Groep­naam",
"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": "Kanaal­groepen"
},
"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}"

View file

@ -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 dun JSON/CSV",
"import_from_json": "Importar dun 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 linstància dautentificacion",
"instance_auth_selection": "Instància dautentificacion",
"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 dinstà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 dacuèlh per defaut",
"minimize_recommendations_default": "Minimizar las recomandacions per defaut",
"store_watch_history": "Servar listoric 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 dun JSON/CSV"
},
"preferences": {
"instance_locations": "Localizacion de linstà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 lespaci demmagazinatge 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 dutilizar una adreça electronica coma nom dutilizaire. Contunhar çaquelà ?",
"next_video_countdown": "La vidèo seguenta començarà daquí {0}s"
"next_video_countdown": "La vidèo seguenta començarà daquí {0}s",
"hours": "{amount} ora(s)",
"months": "{amount} mes(es)",
"days": "{amount} jorn(s)",
"weeks": "{amount} setmana(s)"
},
"comment": {
"disabled": "Lautor 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}"

View file

@ -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": "ପ୍ରବେଶ ସଂକେତ ନିଶ୍ଚିତ କରନ୍ତୁ"
}
}

View file

@ -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}",

View file

@ -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}",

View file

@ -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",

View file

@ -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": "Видео",

View file

@ -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",

View file

@ -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ş",

View file

@ -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": "Реєстрація",

View file

@ -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": "订阅流",

View file

@ -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} 觀看"