コミットを比較

...

51 コミット

作成者 SHA1 メッセージ 日付
守矢諏訪子 a7d4d57f16 Merge branch 'master' of https://github.com/iv-org/invidious 2024-02-24 11:17:04 +09:00
Samantaz Fox e8a36985af
API: Add APIHandler back (#4431)
This handler should no have been removed in 4276, as it adds the required CORS
header (Access-Control-Allow-Origin) for public acces to the API.

Thanks to iBicha for noticing this!
2024-02-19 00:16:17 +01:00
Samantaz Fox 962ce23cc2
WebVTT::Builder: Add logic to escape special chars (#4414)
Note: WebVTT does allow some tags in the cue payload in some circumstances
while this PR just blindly escapes everything:
https://developer.mozilla.org/en-US/docs/Web/API/WebVTT_API#cue_payload_text_tags
2024-02-19 00:16:17 +01:00
Samantaz Fox e0ce59d3e8
Channels: Add support for multi-image community posts (#4412)
This PR adds a CSS-only image carousel for community posts with more than
one image attached.

Closes issue 3522
2024-02-19 00:16:17 +01:00
Samantaz Fox c5a3112e49
CSS: expand #contents width on small screens (#4405)
The #contents div now takes the full width on small screens (< 1280px).
All page elements have a little more room, especially the video titles.
2024-02-19 00:16:17 +01:00
Samantaz Fox d3703baba9
I18n: Add missing translation strings (#4424)
Closes issue 3120
2024-02-19 00:15:44 +01:00
Samantaz Fox 20203f4ec0
I18n: Fix a typo in Finnish localization (#4375) 2024-02-18 23:53:16 +01:00
Samantaz Fox 732553519e
Translations update from Hosted Weblate (#4164) 2024-02-18 23:51:53 +01:00
ChunkyProgrammer a957b0fb7c remove trailing white spaces 2024-02-16 16:22:43 -05:00
ChunkyProgrammer 26429bee3f make it so interpolation text can be a hash
Co-Authored-By: Samantaz Fox <coding@samantaz.fr>
2024-02-15 21:45:22 -05:00
ChunkyProgrammer ef6b766b29 Add support for multi image community posts 2024-02-15 21:45:21 -05:00
Émilien (perso) 1e6ec605e8
Remove usage of depends_on (#4383) 2024-02-15 22:59:00 +01:00
Samantaz Fox 60f6a345d9
Locales: Fix broken i18Next v3/v4 plurals
Languages impacted: es, fa, pt
2024-02-15 22:12:04 +01:00
Samantaz Fox d1dddc1adc
Locales: Remove Cyrillic text from Serbian (Latin) 2024-02-15 21:37:17 +01:00
Hosted Weblate 00ef004029
Update Norwegian Bokmål translation
Co-authored-by: Deleted User <noreply+73135@weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
2024-02-15 18:02:15 +01:00
Hosted Weblate 7ff11e4c44
Update Serbian (cyrillic) translation
Update Serbian (cyrillic) translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: NEXI <nexiphotographer@gmail.com>
2024-02-15 18:02:15 +01:00
Hosted Weblate 8db2e060d9
Update Chinese (Simplified) translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
2024-02-15 18:02:15 +01:00
Hosted Weblate 8b0cbd2a29
Update Chinese (Traditional) translation
Co-authored-by: Jeff Huang <s8321414@gmail.com>
2024-02-15 18:02:15 +01:00
Hosted Weblate d2ce519559
Update Slovenian translation
Co-authored-by: Damjan Gerl <damjan@damjan.net>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
2024-02-15 18:02:15 +01:00
Hosted Weblate 219b587945
Update Korean translation
Update Korean translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: simmon <simmon@nplob.com>
Co-authored-by: xrfmkrh <rF3nMd7sRKezjF2vcEQo@protonmail.com>
2024-02-15 18:02:15 +01:00
Hosted Weblate e8810509c1
Update Albanian translation
Update Albanian translation

Co-authored-by: Besnik Bleta <besnik@programeshqip.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
2024-02-15 18:02:15 +01:00
Hosted Weblate 9688200caf
Update Serbian translation
Update Serbian translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: NEXI <nexiphotographer@gmail.com>
2024-02-15 18:02:15 +01:00
Hosted Weblate 26a50eb4e8
Update Persian translation
Update Persian translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kaambiz <kambizx@gmail.com>
2024-02-15 18:02:15 +01:00
Hosted Weblate 0ce945bfa8
Update Swedish translation
Update Swedish translation

Update Swedish translation

Co-authored-by: Deleted User <noreply+73135@weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Max Bengtzén <aura.kettles.0h@icloud.com>
Co-authored-by: bittin1ddc447d824349b2 <bittin@reimu.nl>
2024-02-15 18:02:15 +01:00
Hosted Weblate aadf848ee6
Update French translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jean Mareilles <waged1266@tutanota.com>
2024-02-15 18:02:15 +01:00
Hosted Weblate 53ce2a1a9a
Update Spanish translation
Update Spanish translation

Update Spanish translation

Update Spanish translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jorge Maldonado Ventura <jorgesumle@freakspot.net>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
2024-02-15 18:02:15 +01:00
Hosted Weblate 1d5100462b
Update Dutch translation
Update Dutch translation

Co-authored-by: Deleted User <noreply+73135@weblate.org>
Co-authored-by: Gert-dev <Gert-dev@users.noreply.hosted.weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
2024-02-15 18:02:15 +01:00
Hosted Weblate 986515dc5b
Update Indonesian translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Reza Almanda <rezaalmanda27@gmail.com>
2024-02-15 18:02:15 +01:00
Hosted Weblate 1d906aeecc
Update Interlingua translation
Add Interlingua translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Software In Interlingua <softinterlingua@gmail.com>
2024-02-15 18:02:15 +01:00
Hosted Weblate 426b472a15
Update Arabic translation
Update Arabic translation

Update Arabic translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Rex_sa <rex.sa@pm.me>
2024-02-15 18:02:15 +01:00
Hosted Weblate 1493e6a086
Update Italian translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
2024-02-15 18:02:14 +01:00
Hosted Weblate 3767ab2eeb
Update Polish translation
Update Polish translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Matthaiks <kitynska@gmail.com>
2024-02-15 18:02:14 +01:00
Hosted Weblate fea36fc639
Update Hindi translation
Update Hindi translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Saurmandal <saurmandal@protonmail.com>
Co-authored-by: Snwglb <wishitwasarchived@gmail.com>
2024-02-15 18:02:14 +01:00
Hosted Weblate a16235d3b9
Update Croatian translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Milo Ivir <mail@milotype.de>
2024-02-15 18:02:14 +01:00
Hosted Weblate 99a3bd4fff
Update Vietnamese translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tran Viet Duc <deli50@protonmail.com>
2024-02-15 18:02:14 +01:00
Hosted Weblate 4aed0e1102
Update Portuguese translation
Update Portuguese translation

Update Portuguese translation

Update Portuguese translation

Co-authored-by: Filipe Martins <mvrtinsbeats@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jener Gomes <jenerg1@gmail.com>
Co-authored-by: SC <lalocas@protonmail.com>
Co-authored-by: jamerLamer <akHarINlMYExpSmVPDRT@proton.me>
2024-02-15 18:02:14 +01:00
Hosted Weblate 833c711cba
Update Czech translation
Update Czech translation

Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
2024-02-15 18:02:14 +01:00
Hosted Weblate 7e1deea15e
Update Catalan translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: victor dargallo <victordargallo@disroot.org>
2024-02-15 18:02:14 +01:00
Hosted Weblate b9ae1a61da
Update Japanese translation
Update Japanese translation

Update Japanese translation

Update Japanese translation

Update Japanese translation

Update Japanese translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: maboroshin <maboroshin@users.noreply.hosted.weblate.org>
2024-02-15 18:02:14 +01:00
Hosted Weblate f062c18b82
Update Ukrainian translation
Update Ukrainian translation

Update Ukrainian translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ihor Hordiichuk <igor_ck@outlook.com>
Co-authored-by: Сергій <sergiy.goncharuk.1@gmail.com>
2024-02-15 18:02:14 +01:00
Hosted Weblate f21a532c0d
Update Bulgarian translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Radoslav Lelchev <rlelchev@abv.bg>
2024-02-15 18:02:14 +01:00
Hosted Weblate 8cec7ba004
Update Russian translation
Update Russian translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Noise Maker <vh0d@disroot.org>
Co-authored-by: hikiko4ern <25303622+hikiko4ern@users.noreply.github.com>
2024-02-15 18:02:14 +01:00
Hosted Weblate 8169cd8977
Update Danish translation
Co-authored-by: Grooty12 <weblate@grooty.site>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
2024-02-15 18:02:14 +01:00
Hosted Weblate 8ffc569ebd
Update German translation
Update German translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lenny Angst <lenny@familie-angst.ch>
Co-authored-by: Radoslav Lelchev <rlelchev@abv.bg>
2024-02-15 18:02:14 +01:00
Hosted Weblate 736f35332a
Update Portuguese (Brazil) translation
Update Portuguese (Brazil) translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: joaooliva <joaooliva@protonmail.com>
2024-02-15 18:02:14 +01:00
Hosted Weblate c52c6d3c9a
Update Turkish translation
Update Turkish translation

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
2024-02-15 18:02:14 +01:00
Samantaz Fox 7b84bdb29b
API: Add APIHandler back
This handler should no have been removed in 4276, as it adds the required CORS
header (Access-Control-Allow-Origin) for public acces to the API.

Thanks to iBicha for noticing this!
2024-02-13 21:05:26 +01:00
shironeko 6b33820f1f Add missing translation strings
closes #3120
2024-02-08 19:01:19 -05:00
syeopite 0ad2eff2a4
WebVTT::Builder: Add logic to escape special chars 2024-01-30 15:25:45 -08:00
toabr 4a339df5c4 CSS: expand #contents width on small screens 2024-01-27 00:38:47 +01:00
pitkajuh c059829035 Fix typo 2024-01-05 20:39:29 +01:00
47個のファイルの変更1011行の追加358行の削除

119
assets/css/carousel.css ノーマルファイル
ファイルの表示

@ -0,0 +1,119 @@
/*
Copyright (c) 2024 by Jennifer (https://codepen.io/jwjertzoch/pen/JjyGeRy)
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall
be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
.carousel {
margin: 0 auto;
overflow: hidden;
text-align: center;
}
.slides {
width: 100%;
display: flex;
overflow-x: scroll;
scrollbar-width: none;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
}
.slides::-webkit-scrollbar {
display: none;
}
.slides-item {
align-items: center;
border-radius: 10px;
display: flex;
flex-shrink: 0;
font-size: 100px;
height: 600px;
justify-content: center;
margin: 0 1rem;
position: relative;
scroll-snap-align: start;
transform: scale(1);
transform-origin: center center;
transition: transform .5s;
width: 100%;
}
.carousel__nav {
padding: 1.25rem .5rem;
}
.slider-nav {
align-items: center;
background-color: #ddd;
border-radius: 50%;
color: #000;
display: inline-flex;
height: 1.5rem;
justify-content: center;
padding: .5rem;
position: relative;
text-decoration: none;
width: 1.5rem;
}
.skip-link {
height: 1px;
overflow: hidden;
position: absolute;
top: auto;
width: 1px;
}
.skip-link:focus {
align-items: center;
background-color: #000;
color: #fff;
display: flex;
font-size: 30px;
height: 30px;
justify-content: center;
opacity: .8;
text-decoration: none;
width: 50%;
z-index: 1;
}
.light-theme .slider-nav {
background-color: #ddd;
}
.dark-theme .slider-nav {
background-color: #0005;
}
@media (prefers-color-scheme: light) {
.no-theme .slider-nav {
background-color: #ddd;
}
}
@media (prefers-color-scheme: dark) {
.no-theme .slider-nav {
background-color: #0005;
}
}

ファイルの表示

@ -13,6 +13,7 @@ body {
display: flex;
flex-direction: column;
min-height: 100vh;
margin: auto;
}
.h-box {

ファイルの表示

@ -36,9 +36,6 @@ services:
interval: 30s
timeout: 5s
retries: 2
depends_on:
invidious-db:
condition: service_healthy
invidious-db:
image: docker.io/library/postgres:14

ファイルの表示

@ -41,7 +41,7 @@
"Time (h:mm:ss):": "الوقت (h:mm:ss):",
"Text CAPTCHA": "نص الكابتشا",
"Image CAPTCHA": "صورة الكابتشا",
"Sign In": "تسجيل الدخول",
"Sign In": "إنشاء حساب",
"Register": "التسجيل",
"E-mail": "البريد الإلكتروني",
"Preferences": "الإعدادات",
@ -554,5 +554,7 @@
"generic_channels_count_2": "{{count}} قناتان",
"generic_channels_count_3": "{{count}} قنوات",
"generic_channels_count_4": "{{count}} قنوات",
"generic_channels_count_5": "{{count}} قناة"
"generic_channels_count_5": "{{count}} قناة",
"Import YouTube watch history (.json)": "استيراد سجل مشاهدة YouTube بصيغة (.json)",
"toggle_theme": "تبديل الموضوع"
}

ファイルの表示

@ -486,5 +486,6 @@
"preferences_annotations_label": "Покажи анотаций по подразбиране: ",
"generic_views_count": "{{count}} гледане",
"generic_views_count_plural": "{{count}} гледания",
"Next page": "Следваща страница"
"Next page": "Следваща страница",
"Import YouTube watch history (.json)": "Импортиране на историята на гледане от YouTube (.json)"
}

ファイルの表示

@ -486,5 +486,6 @@
"generic_channels_count_plural": "{{count}} canals",
"generic_button_edit": "Edita",
"generic_button_rss": "RSS",
"generic_button_delete": "Suprimeix"
"generic_button_delete": "Suprimeix",
"Import YouTube watch history (.json)": "Importa l'historial de visualitzacions de YouTube (.json)"
}

ファイルの表示

@ -503,5 +503,7 @@
"playlist_button_add_items": "Přidat videa",
"generic_channels_count_0": "{{count}} kanál",
"generic_channels_count_1": "{{count}} kanály",
"generic_channels_count_2": "{{count}} kanálů"
"generic_channels_count_2": "{{count}} kanálů",
"Import YouTube watch history (.json)": "Importovat historii sledování z YouTube (.json)",
"toggle_theme": "Přepnout motiv"
}

ファイルの表示

@ -452,5 +452,40 @@
"crash_page_you_found_a_bug": "Det ser ud til, at du har fundet en fejl i Invidious!",
"crash_page_read_the_faq": "læs <a href=\"`x`\">Ofte stillede spørgsmål (FAQ)</a>",
"crash_page_search_issue": "søgte efter <a href=\"`x`\">eksisterende problemer på GitHub</a>",
"search_filters_title": "Filter"
"search_filters_title": "Filter",
"playlist_button_add_items": "Tilføj videoer",
"search_message_no_results": "Ingen resultater fundet.",
"Import YouTube watch history (.json)": "Importer YouTube afspilningshistorik (.json)",
"search_message_change_filters_or_query": "Prøv at udvide din søgeforspørgsel og/eller ændre filtrene.",
"search_message_use_another_instance": " Du kan også <a href=\"`x`\">søge på en anden instans</a>.",
"Music in this video": "Musik i denne video",
"search_filters_date_option_none": "Enhver dato",
"search_filters_type_option_all": "Enhver type",
"search_filters_duration_option_none": "Enhver varighed",
"search_filters_duration_option_medium": "Medium (4 - 20 minutter)",
"search_filters_features_option_vr180": "VR180",
"generic_channels_count": "{{count}} kanal",
"generic_channels_count_plural": "{{count}} kanaler",
"Import YouTube playlist (.csv)": "Importer YouTube playliste (.csv)",
"Standard YouTube license": "Standard Youtube-licens",
"Album: ": "Album: ",
"Channel Sponsor": "Kanal-sponsor",
"Song: ": "Sang: ",
"channel_tab_playlists_label": "Playlister",
"channel_tab_channels_label": "Kanaler",
"Artist: ": "Kunstner: ",
"search_filters_date_label": "Uploaddato",
"generic_button_delete": "Slet",
"generic_button_edit": "Rediger",
"generic_button_save": "Gem",
"generic_button_cancel": "Afbryd",
"generic_button_rss": "RSS",
"Popular enabled: ": "Populær aktiveret: ",
"search_filters_apply_button": "Anvend udvalgte filtre",
"channel_tab_shorts_label": "Shorts",
"channel_tab_streams_label": "Livestreams",
"channel_tab_podcasts_label": "Podcasts",
"channel_tab_releases_label": "Udgivelser",
"Download is disabled": "Download er slået fra",
"error_video_not_in_playlist": "Den ønskede video findes ikke i denne playliste. <a href=\"`x`\">Klik her for playlistens startside.</a>"
}

ファイルの表示

@ -148,7 +148,7 @@
"Whitelisted regions: ": "Erlaubte Regionen: ",
"Blacklisted regions: ": "Unerlaubte Regionen: ",
"Shared `x`": "Geteilt `x`",
"Premieres in `x`": "Zuerst gesehen in `x`",
"Premieres in `x`": "Premiere in `x`",
"Premieres `x`": "Erster Start `x`",
"Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Hallo! Anscheinend haben Sie JavaScript deaktiviert. Klicken Sie hier um Kommentare anzuzeigen, beachten sie dass es etwas länger dauern kann um sie zu laden.",
"View YouTube comments": "YouTube Kommentare anzeigen",
@ -486,5 +486,6 @@
"channel_tab_podcasts_label": "Podcasts",
"channel_tab_releases_label": "Veröffentlichungen",
"generic_channels_count": "{{count}} Kanal",
"generic_channels_count_plural": "{{count}} Kanäle"
"generic_channels_count_plural": "{{count}} Kanäle",
"Import YouTube watch history (.json)": "YouTube Wiedergabeverlauf importieren (.json)"
}

ファイルの表示

@ -1,4 +1,9 @@
{
"Add to playlist": "Add to playlist",
"Add to playlist: ": "Add to playlist: ",
"Answer": "Answer",
"Search for videos": "Search for videos",
"The Popular feed has been disabled by the administrator.": "The Popular feed has been disabled by the administrator.",
"generic_channels_count": "{{count}} channel",
"generic_channels_count_plural": "{{count}} channels",
"generic_views_count": "{{count}} view",
@ -488,5 +493,8 @@
"channel_tab_playlists_label": "Playlists",
"channel_tab_community_label": "Community",
"channel_tab_channels_label": "Channels",
"toggle_theme": "Toggle Theme"
"toggle_theme": "Toggle Theme",
"carousel_slide": "Slide {{current}} of {{total}}",
"carousel_skip": "Skip the Carousel",
"carousel_go_to": "Go to slide `x`"
}

ファイルの表示

@ -90,7 +90,7 @@
"preferences_notifications_only_label": "Mostrar solo notificaciones (si hay alguna): ",
"Enable web notifications": "Habilitar notificaciones web",
"`x` uploaded a video": "`x` subió un video",
"`x` is live": "`x` esta en vivo",
"`x` is live": "`x` está en directo",
"preferences_category_data": "Preferencias de los datos",
"Clear watch history": "Borrar el historial de reproducción",
"Import/export data": "Importar/Exportar datos",
@ -102,7 +102,7 @@
"preferences_category_admin": "Preferencias de administrador",
"preferences_default_home_label": "Página de inicio por defecto: ",
"preferences_feed_menu_label": "Menú de fuentes: ",
"preferences_show_nick_label": "Mostrar nombre de usuario arriba: ",
"preferences_show_nick_label": "Mostrar nombre de usuario encima: ",
"Top enabled: ": "¿Habilitar los destacados? ",
"CAPTCHA enabled: ": "¿Habilitar los CAPTCHA? ",
"Login enabled: ": "¿Habilitar el inicio de sesión? ",
@ -144,13 +144,13 @@
"License: ": "Licencia: ",
"Family friendly? ": "¿Filtrar contenidos? ",
"Wilson score: ": "Puntuación Wilson: ",
"Engagement: ": "Compromiso: ",
"Engagement: ": "Retención: ",
"Whitelisted regions: ": "Regiones permitidas: ",
"Blacklisted regions: ": "Regiones bloqueadas: ",
"Shared `x`": "Compartido `x`",
"Premieres in `x`": "Se estrena en `x`",
"Premieres `x`": "Estrenos `x`",
"Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "¡Hola! Parece que tienes JavaScript desactivado. Haz clic aquí para ver los comentarios, pero tengas en cuenta que pueden tardar un poco más en cargarse.",
"Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "¡Hola! Parece que tienes JavaScript desactivado. Haz clic aquí para ver los comentarios, ten en cuenta que pueden tardar un poco más en cargar.",
"View YouTube comments": "Ver los comentarios de YouTube",
"View more comments on Reddit": "Ver más comentarios en Reddit",
"View `x` comments": {
@ -312,7 +312,7 @@
"Download as: ": "Descargar como: ",
"%A %B %-d, %Y": "%A %B %-d, %Y",
"(edited)": "(editado)",
"YouTube comment permalink": "Enlace permanente de YouTube del comentario",
"YouTube comment permalink": "Enlace permanente de comentario de YouTube",
"permalink": "enlace permanente",
"`x` marked it with a ❤": "`x` lo ha marcado con un ❤",
"Audio mode": "Modo de audio",
@ -324,10 +324,10 @@
"search_filters_sort_option_rating": "Valoración",
"search_filters_sort_option_date": "Fecha de subida",
"search_filters_sort_option_views": "Visualizaciones",
"search_filters_type_label": "tipo de contenido",
"search_filters_duration_label": "duración",
"search_filters_features_label": "funcionalidades",
"search_filters_sort_label": "ordenar",
"search_filters_type_label": "Tipo de contenido",
"search_filters_duration_label": "Duración",
"search_filters_features_label": "Funcionalidades",
"search_filters_sort_label": "Ordenar",
"search_filters_date_option_hour": "Última hora",
"search_filters_date_option_today": "Hoy",
"search_filters_date_option_week": "Esta semana",
@ -390,43 +390,58 @@
"search_filters_features_option_three_sixty": "360°",
"videoinfo_watch_on_youTube": "Ver en YouTube",
"preferences_save_player_pos_label": "Guardar posición de reproducción: ",
"generic_views_count": "{{count}} visualización",
"generic_views_count_plural": "{{count}} visualizaciones",
"generic_subscribers_count": "{{count}} suscriptor",
"generic_subscribers_count_plural": "{{count}} suscriptores",
"generic_subscriptions_count": "{{count}} suscripción",
"generic_subscriptions_count_plural": "{{count}} suscripciones",
"subscriptions_unseen_notifs_count": "{{count}} notificación no vista",
"subscriptions_unseen_notifs_count_plural": "{{count}} notificaciones no vistas",
"generic_count_days": "{{count}} día",
"generic_count_days_plural": "{{count}} días",
"comments_view_x_replies": "Ver {{count}} respuesta",
"comments_view_x_replies_plural": "Ver {{count}} respuestas",
"generic_count_weeks": "{{count}} semana",
"generic_count_weeks_plural": "{{count}} semanas",
"generic_playlists_count": "{{count}} lista de reproducción",
"generic_playlists_count_plural": "{{count}} listas de reproducciones",
"generic_videos_count": "{{count}} video",
"generic_videos_count_plural": "{{count}} video",
"generic_count_months": "{{count}} mes",
"generic_count_months_plural": "{{count}} meses",
"comments_points_count": "{{count}} punto",
"comments_points_count_plural": "{{count}} puntos",
"generic_count_years": "{{count}} año",
"generic_count_years_plural": "{{count}} años",
"generic_count_hours": "{{count}} hora",
"generic_count_hours_plural": "{{count}} horas",
"generic_count_minutes": "{{count}} minuto",
"generic_count_minutes_plural": "{{count}} minutos",
"generic_count_seconds": "{{count}} segundo",
"generic_count_seconds_plural": "{{count}} segundos",
"generic_views_count_0": "{{count}} visualización",
"generic_views_count_1": "{{count}} visualizaciones",
"generic_views_count_2": "{{count}} visualizaciones",
"generic_subscribers_count_0": "{{count}} suscriptor",
"generic_subscribers_count_1": "{{count}} suscriptores",
"generic_subscribers_count_2": "{{count}} suscriptores",
"generic_subscriptions_count_0": "{{count}} suscripción",
"generic_subscriptions_count_1": "{{count}} suscripciones",
"generic_subscriptions_count_2": "{{count}} suscripciones",
"subscriptions_unseen_notifs_count_0": "{{count}} notificación sin ver",
"subscriptions_unseen_notifs_count_1": "{{count}} notificaciones sin ver",
"subscriptions_unseen_notifs_count_2": "{{count}} notificaciones sin ver",
"generic_count_days_0": "{{count}} día",
"generic_count_days_1": "{{count}} días",
"generic_count_days_2": "{{count}} días",
"comments_view_x_replies_0": "Ver {{count}} respuesta",
"comments_view_x_replies_1": "Ver {{count}} respuestas",
"comments_view_x_replies_2": "Ver {{count}} respuestas",
"generic_count_weeks_0": "{{count}} semana",
"generic_count_weeks_1": "{{count}} semanas",
"generic_count_weeks_2": "{{count}} semanas",
"generic_playlists_count_0": "{{count}} lista de reproducción",
"generic_playlists_count_1": "{{count}} listas de reproducciones",
"generic_playlists_count_2": "{{count}} listas de reproducciones",
"generic_videos_count_0": "{{count}} video",
"generic_videos_count_1": "{{count}} videos",
"generic_videos_count_2": "{{count}} videos",
"generic_count_months_0": "{{count}} mes",
"generic_count_months_1": "{{count}} meses",
"generic_count_months_2": "{{count}} meses",
"comments_points_count_0": "{{count}} punto",
"comments_points_count_1": "{{count}} puntos",
"comments_points_count_2": "{{count}} puntos",
"generic_count_years_0": "{{count}} año",
"generic_count_years_1": "{{count}} años",
"generic_count_years_2": "{{count}} años",
"generic_count_hours_0": "{{count}} hora",
"generic_count_hours_1": "{{count}} horas",
"generic_count_hours_2": "{{count}} horas",
"generic_count_minutes_0": "{{count}} minuto",
"generic_count_minutes_1": "{{count}} minutos",
"generic_count_minutes_2": "{{count}} minutos",
"generic_count_seconds_0": "{{count}} segundo",
"generic_count_seconds_1": "{{count}} segundos",
"generic_count_seconds_2": "{{count}} segundos",
"crash_page_before_reporting": "Antes de notificar un error asegúrate de que has:",
"crash_page_switch_instance": "probado a <a href=\"`x`\">usar otra instancia</a>",
"crash_page_read_the_faq": "leído las <a href=\"`x`\">Preguntas Frecuentes</a>",
"crash_page_search_issue": "buscado <a href=\"`x`\">problemas existentes en GitHub</a>",
"crash_page_you_found_a_bug": "¡Parece que has encontrado un error en Invidious!",
"crash_page_refresh": "probado a <a href=\"`x`\">recargar la página</a>",
"crash_page_report_issue": "Si nada de lo anterior ha sido de ayuda, por favor, <a href=\"`x`\">abre una nueva incidencia en GitHub</a> (preferiblemente en inglés) e incluye verbatim el siguiente texto en tu mensaje:",
"crash_page_report_issue": "Si nada de lo anterior ha sido de ayuda, por favor, <a href=\"`x`\">abre una nueva incidencia en GitHub</a> (preferiblemente en inglés) e incluye el siguiente texto en tu mensaje (NO traduzcas este texto):",
"English (United States)": "Inglés (Estados Unidos)",
"Cantonese (Hong Kong)": "Cantonés (Hong Kong)",
"Dutch (auto-generated)": "Neerlandés (generados automáticamente)",
@ -454,14 +469,15 @@
"search_message_no_results": "No se han encontrado resultados.",
"search_message_change_filters_or_query": "Pruebe ampliar la consulta de búsqueda y/o a cambiar los filtros.",
"search_filters_title": "Filtros",
"search_filters_date_label": "fecha de subida",
"search_filters_date_label": "Fecha de subida",
"search_filters_date_option_none": "Cualquier fecha",
"search_filters_type_option_all": "Cualquier tipo",
"search_filters_duration_option_none": "Cualquier duración",
"search_filters_features_option_vr180": "VR180",
"search_filters_apply_button": "Aplicar filtros",
"tokens_count": "{{count}} token",
"tokens_count_plural": "{{count}} tokens",
"tokens_count_0": "{{count}} token",
"tokens_count_1": "{{count}} tokens",
"tokens_count_2": "{{count}} tokens",
"search_message_use_another_instance": " También puede <a href=\"`x`\">buscar en otra instancia</a>.",
"Popular enabled: ": "¿Habilitar la sección popular? ",
"error_video_not_in_playlist": "El video que solicitaste no existe en esta lista de reproducción. <a href=\"`x`\">Haz clic aquí para acceder a la página de inicio de la lista de reproducción.</a>",
@ -485,6 +501,9 @@
"generic_button_rss": "RSS",
"channel_tab_podcasts_label": "Podcasts",
"channel_tab_releases_label": "Publicaciones",
"generic_channels_count": "{{count}} canal",
"generic_channels_count_plural": "{{count}} canales"
"generic_channels_count_0": "{{count}} canal",
"generic_channels_count_1": "{{count}} canales",
"generic_channels_count_2": "{{count}} canales",
"Import YouTube watch history (.json)": "Importar el historial de las visualizaciones de YouTube (.json)",
"toggle_theme": "Alternar tema"
}

ファイルの表示

@ -1,9 +1,14 @@
{
"generic_views_count_0": "{{count}} بازدید",
"generic_videos_count_0": "{{count}} ویدئو",
"generic_playlists_count_0": "{{count}} فهرست پخش",
"generic_subscribers_count_0": "{{count}} دنبال کننده",
"generic_subscriptions_count_0": "{{count}} اشتراک ها",
"generic_views_count": "{{count}} بازدید",
"generic_views_count_plural": "{{count}} بازدید",
"generic_videos_count": "{{count}} ویدئو",
"generic_videos_count_plural": "{{count}} ویدئو",
"generic_playlists_count": "{{count}} فهرست پخش",
"generic_playlists_count_plural": "{{count}} فهرست پخش",
"generic_subscribers_count": "{{count}} دنبال کننده",
"generic_subscribers_count_plural": "{{count}} دنبال کننده",
"generic_subscriptions_count": "{{count}} اشتراک",
"generic_subscriptions_count_plural": "{{count}} اشتراک",
"LIVE": "زنده",
"Shared `x` ago": "`x` پیش به اشتراک گذاشته شده",
"Unsubscribe": "لغو اشتراک",
@ -117,13 +122,15 @@
"Subscription manager": "مدیریت اشتراک",
"Token manager": "مدیر توکن",
"Token": "توکن",
"tokens_count_0": "{{count}} توکن ها",
"tokens_count": "{{count}} توکن",
"tokens_count_plural": "{{count}} توکن",
"Import/export": "وارد کردن/خارج کردن",
"unsubscribe": "لغو اشتراک",
"revoke": "ابطال",
"Subscriptions": "اشتراک ها",
"subscriptions_unseen_notifs_count_0": "{{count}} اعلان نادیده",
"search": "جستجو",
"subscriptions_unseen_notifs_count": "{{count}} اعلان نادیده",
"subscriptions_unseen_notifs_count_plural": "{{count}} اعلان نادیده",
"search": "جست و جو",
"Log out": "خروج",
"Released under the AGPLv3 on Github.": "منتشر شده تحت پروانه AGPLv3 روی گیت‌هاب.",
"Source available here.": "منبع اینجا دردسترس است.",
@ -183,10 +190,12 @@
"This channel does not exist.": "این کانال وجود ندارد.",
"Could not get channel info.": "نمیتوان اطلاعات کانال را دریافت کرد.",
"Could not fetch comments": "نمیتوان نظرات را دریافت کرد",
"comments_view_x_replies_0": "نمایش {{count}} پاسخ ها",
"comments_view_x_replies": "نمایش {{count}} پاسخ",
"comments_view_x_replies_plural": "نمایش {{count}} پاسخ",
"`x` ago": "`x` پیش",
"Load more": "بارگذاری بیشتر",
"comments_points_count_0": "{{count}} نقطه ها",
"comments_points_count": "{{count}} نقطه",
"comments_points_count_plural": "{{count}} نقطه",
"Could not create mix.": "نمیتوان میکس ساخت.",
"Empty playlist": "سیاههٔ پخش خالی",
"Not a playlist.": "یک سیاههٔ پخش نیست.",
@ -304,16 +313,23 @@
"Yiddish": "ییدیش",
"Yoruba": "یوروبایی",
"Zulu": "زولو",
"generic_count_years_0": "{{count}} سال",
"generic_count_months_0": "{{count}} ماه",
"generic_count_weeks_0": "{{count}} هفته",
"generic_count_days_0": "{{count}} روز",
"generic_count_hours_0": "{{count}} ساعت",
"generic_count_minutes_0": "{{count}} دقیقه",
"generic_count_seconds_0": "{{count}} ثانیه",
"generic_count_years": "{{count}} سال",
"generic_count_years_plural": "{{count}} سال",
"generic_count_months": "{{count}} ماه",
"generic_count_months_plural": "{{count}} ماه",
"generic_count_weeks": "{{count}} هفته",
"generic_count_weeks_plural": "{{count}} هفته",
"generic_count_days": "{{count}} روز",
"generic_count_days_plural": "{{count}} روز",
"generic_count_hours": "{{count}} ساعت",
"generic_count_hours_plural": "{{count}} ساعت",
"generic_count_minutes": "{{count}} دقیقه",
"generic_count_minutes_plural": "{{count}} دقیقه",
"generic_count_seconds": "{{count}} ثانیه",
"generic_count_seconds_plural": "{{count}} ثانیه",
"Fallback comments: ": "نظرات عقب گرد: ",
"Popular": "محبوب",
"Search": "جستجو",
"Search": "جست و جو",
"Top": "بالا",
"About": "درباره",
"Rating: ": "رتبه دهی: ",
@ -445,5 +461,28 @@
"Song: ": "آهنگ: ",
"Channel Sponsor": "اسپانسر کانال",
"Standard YouTube license": "پروانه استاندارد YouTube",
"search_message_use_another_instance": " شما همچنین می‌توانید <a href=\"`x`\">در نمونه دیگر هم جستجو کنید</a>."
"search_message_use_another_instance": " شما همچنین می‌توانید <a href=\"`x`\">در نمونه دیگر هم جستجو کنید</a>.",
"Download is disabled": "دریافت غیرفعال است",
"crash_page_before_reporting": "پیش از گزارش ایراد، مطمئنید شوید که:",
"playlist_button_add_items": "افزودن ویدیو",
"user_saved_playlists": "فهرست‌های پخش ذخیره شده",
"crash_page_refresh": "که صفحه را <a href=\"`x`\">بازنشانی</a> کرده‌اید",
"generic_button_save": "ذخیره",
"generic_button_cancel": "لغو",
"generic_channels_count": "{{count}} کانال",
"generic_channels_count_plural": "{{count}} کانال",
"generic_button_edit": "ویرایش",
"crash_page_switch_instance": "که تلاش کرده‌اید <a href=\"`x`\">از یک نمونهٔ دیگر</a> استفاده کنید",
"generic_button_rss": "خوراک RSS",
"crash_page_read_the_faq": "که <a href=\"`x`\">سوالات بیشتر پرسیده شده (FAQ)</a> را خوانده‌اید",
"generic_button_delete": "حذف",
"Import YouTube playlist (.csv)": "واردکردن فهرست‌پخش YouTube (.csv)",
"Import YouTube watch history (.json)": "وارد کردن فهرست پخش YouTube (.json)",
"crash_page_you_found_a_bug": "به نظر می‌رسد که ایرادی در Invidious پیدا کرده‌اید!",
"channel_tab_podcasts_label": "پادکست‌ها",
"channel_tab_streams_label": "پخش زنده‌ها",
"channel_tab_shorts_label": "Shortها",
"channel_tab_playlists_label": "فهرست‌های پخش",
"channel_tab_channels_label": "کانال‌ها",
"error_video_not_in_playlist": "ویدیوی درخواستی معلق به این فهرست پخش نیست. <a href=\"`x`\">کلیک کنید تا به صفحهٔ اصلی فهرست پخش بروید.</a>"
}

ファイルの表示

@ -14,7 +14,7 @@
"Clear watch history?": "Tyhjennä katseluhistoria?",
"New password": "Uusi salasana",
"New passwords must match": "Uusien salasanojen täytyy täsmätä",
"Authorize token?": "Valuutetaanko tunnus?",
"Authorize token?": "Valtuutetaanko tunnus?",
"Authorize token for `x`?": "Valtuutetaanko tunnus `x`:lle?",
"Yes": "Kyllä",
"No": "Ei",

ファイルの表示

@ -503,5 +503,6 @@
"Download is disabled": "Le téléchargement est désactivé",
"Import YouTube playlist (.csv)": "Importer des listes de lecture de Youtube (.csv)",
"channel_tab_releases_label": "Parutions",
"channel_tab_podcasts_label": "Émissions audio"
"channel_tab_podcasts_label": "Émissions audio",
"Import YouTube watch history (.json)": "Importer l'historique de visionnement YouTube (.json)"
}

ファイルの表示

@ -476,7 +476,7 @@
"generic_button_cancel": "रद्द करें",
"generic_button_rss": "आरएसएस",
"generic_button_edit": "संपादित करें",
"generic_button_delete": "मिटाएं",
"generic_button_delete": "टाएं",
"playlist_button_add_items": "वीडियो जोड़ें",
"Song: ": "गाना: ",
"channel_tab_podcasts_label": "पाॅडकास्ट",
@ -484,5 +484,8 @@
"Import YouTube playlist (.csv)": "YouTube प्लेलिस्ट (.csv) आयात करें",
"Standard YouTube license": "मानक यूट्यूब लाइसेंस",
"Channel Sponsor": "चैनल प्रायोजक",
"Download is disabled": "डाउनलोड करना अक्षम है"
"Download is disabled": "डाउनलोड करना अक्षम है",
"generic_channels_count": "{{count}} चैनल",
"generic_channels_count_plural": "{{count}} चैनल",
"Import YouTube watch history (.json)": "YouTube पर देखने का इतिहास आयात करें (.json)"
}

ファイルの表示

@ -503,5 +503,6 @@
"channel_tab_releases_label": "Izdanja",
"generic_channels_count_0": "{{count}} kanal",
"generic_channels_count_1": "{{count}} kanala",
"generic_channels_count_2": "{{count}} kanala"
"generic_channels_count_2": "{{count}} kanala",
"Import YouTube watch history (.json)": "Uvezi YouTube povijest gledanja (.json)"
}

41
locales/ia.json ノーマルファイル
ファイルの表示

@ -0,0 +1,41 @@
{
"New password": "Nove contrasigno",
"preferences_player_style_label": "Stylo de reproductor: ",
"preferences_region_label": "Pais de contento: ",
"oldest": "plus ancian",
"published": "data de publication",
"invidious": "Invidious",
"Image CAPTCHA": "Imagine CAPTCHA",
"newest": "plus nove",
"generic_button_save": "Salvar",
"Dark mode: ": "Modo obscur: ",
"preferences_dark_mode_label": "Thema: ",
"preferences_category_subscription": "Preferentias de subscription",
"last": "ultime",
"generic_button_cancel": "Cancellar",
"popular": "popular",
"Time (h:mm:ss):": "Tempore (h:mm:ss):",
"preferences_autoplay_label": "Reproduction automatic: ",
"Sign In": "Aperir le session",
"Log in": "Initiar le session",
"preferences_speed_label": "Velocitate per predefinition: ",
"preferences_comments_label": "Commentos predefinite: ",
"light": "clar",
"No": "Non",
"youtube": "YouTube",
"LIVE": "IN DIRECTE",
"reddit": "Reddit",
"preferences_category_player": "Preferentias de reproductor",
"Preferences": "Preferentias",
"preferences_quality_dash_option_auto": "Automatic",
"dark": "obscur",
"generic_button_rss": "RSS",
"Export": "Exportar",
"History": "Chronologia",
"Password": "Contrasigno",
"User ID": "ID de usator",
"E-mail": "E-mail",
"Delete account?": "Deler conto?",
"preferences_volume_label": "Volumine del reproductor: ",
"preferences_sort_label": "Ordinar le videos per: "
}

ファイルの表示

@ -469,5 +469,6 @@
"error_video_not_in_playlist": "Video yang diminta tidak ada dalam daftar putar ini. <a href=\"`x`\">Klik di sini untuk halaman beranda daftar putar.</a>",
"generic_button_delete": "Hapus",
"Import YouTube playlist (.csv)": "Impor daftar putar YouTube (.csv)",
"Standard YouTube license": "Lisensi YouTube standar"
"Standard YouTube license": "Lisensi YouTube standar",
"Import YouTube watch history (.json)": "Impor riwayat tontonan YouTube (.json)"
}

ファイルの表示

@ -503,5 +503,6 @@
"channel_tab_podcasts_label": "Podcast",
"generic_channels_count_0": "{{count}} canale",
"generic_channels_count_1": "{{count}} canali",
"generic_channels_count_2": "{{count}} canali"
"generic_channels_count_2": "{{count}} canali",
"Import YouTube watch history (.json)": "Importa la cronologia delle visualizzazioni di YouTube (.json)"
}

ファイルの表示

@ -53,7 +53,7 @@
"preferences_category_player": "プレイヤーの設定",
"preferences_video_loop_label": "常にループ: ",
"preferences_autoplay_label": "自動再生: ",
"preferences_continue_label": "次の動画を自動再生: ",
"preferences_continue_label": "次の動画に移動: ",
"preferences_continue_autoplay_label": "次の動画を自動再生: ",
"preferences_listen_label": "音声モードを使用: ",
"preferences_local_label": "動画視聴にプロキシを経由: ",
@ -68,7 +68,7 @@
"preferences_related_videos_label": "関連動画を表示: ",
"preferences_annotations_label": "最初からアノテーションを表示: ",
"preferences_extend_desc_label": "動画の説明文を自動的に拡張: ",
"preferences_vr_mode_label": "対話的な360°動画 (WebGL が必要): ",
"preferences_vr_mode_label": "対話的な360°動画 (WebGLが必要): ",
"preferences_category_visual": "外観設定",
"preferences_player_style_label": "プレイヤーのスタイル: ",
"Dark mode: ": "ダークモード: ",
@ -125,9 +125,9 @@
"subscriptions_unseen_notifs_count_0": "{{count}}件の未読通知",
"search": "検索",
"Log out": "ログアウト",
"Released under the AGPLv3 on Github.": "GitHub 上で AGPLv3 の元で公開",
"Released under the AGPLv3 on Github.": "GitHub上でAGPLv3の元で公開",
"Source available here.": "ソースはここで閲覧可能です。",
"View JavaScript license information.": "JavaScript ライセンス情報",
"View JavaScript license information.": "JavaScriptライセンス情報",
"View privacy policy.": "個人情報保護方針",
"Trending": "急上昇",
"Public": "公開",
@ -144,7 +144,7 @@
"Show more": "もっと見る",
"Show less": "表示を少なく",
"Watch on YouTube": "YouTubeで視聴",
"Switch Invidious Instance": "Invidious インスタンスの変更",
"Switch Invidious Instance": "Invidiousインスタンスの変更",
"Hide annotations": "アノテーションを隠す",
"Show annotations": "アノテーションを表示",
"Genre: ": "ジャンル: ",
@ -363,9 +363,9 @@
"search_filters_features_option_location": "場所",
"search_filters_features_option_hdr": "HDR",
"Current version: ": "現在のバージョン: ",
"next_steps_error_message": "下記のものを試して下さい: ",
"next_steps_error_message_refresh": "再読込",
"next_steps_error_message_go_to_youtube": "YouTube",
"next_steps_error_message": "以下をお試してください: ",
"next_steps_error_message_refresh": "再読",
"next_steps_error_message_go_to_youtube": "YouTubeを開く",
"search_filters_duration_option_short": "4分未満",
"footer_documentation": "説明書",
"footer_source_code": "ソースコード",
@ -459,7 +459,7 @@
"Song: ": "曲: ",
"Channel Sponsor": "チャンネルのスポンサー",
"Standard YouTube license": "標準 Youtube ライセンス",
"Download is disabled": "ダウンロード: このインスタンスは未対応",
"Download is disabled": "ダウンロード: このインスタンスは未対応",
"Import YouTube playlist (.csv)": "YouTube 再生リストをインポート (.csv)",
"generic_button_delete": "削除",
"generic_button_cancel": "キャンセル",
@ -469,5 +469,6 @@
"generic_button_save": "保存",
"generic_button_rss": "RSS",
"playlist_button_add_items": "動画を追加",
"generic_channels_count_0": "{{count}}個のチャンネル"
"generic_channels_count_0": "{{count}}個のチャンネル",
"Import YouTube watch history (.json)": "YouTube 視聴履歴をインポート (.json)"
}

ファイルの表示

@ -46,7 +46,7 @@
"source": "출처",
"JavaScript license information": "자바스크립트 라이선스 정보",
"An alternative front-end to YouTube": "유튜브의 프론트엔드 대안",
"History": "역사",
"History": "시청 기록",
"Delete account?": "계정을 삭제 하시겠습니까?",
"Export data as JSON": "JSON으로 데이터 내보내기",
"Export subscriptions as OPML (for NewPipe & FreeTube)": "OPML로 구독 내보내기 (뉴파이프 및 프리튜브)",
@ -351,7 +351,7 @@
"News": "뉴스",
"Gaming": "게임",
"Music": "음악",
"Default": "디폴트",
"Default": "전체",
"Rating: ": "평점: ",
"About": "정보",
"Top": "최고",
@ -469,5 +469,6 @@
"generic_button_cancel": "취소",
"generic_button_rss": "RSS",
"channel_tab_releases_label": "출시",
"generic_channels_count_0": "{{count}} 채널"
"generic_channels_count_0": "{{count}} 채널",
"Import YouTube watch history (.json)": "유튜브 시청 기록 가져오기 (.json)"
}

ファイルの表示

@ -486,5 +486,6 @@
"generic_button_rss": "RSS",
"playlist_button_add_items": "Legg til videoer",
"generic_channels_count": "{{count}} kanal",
"generic_channels_count_plural": "{{count}} kanaler"
"generic_channels_count_plural": "{{count}} kanaler",
"Import YouTube watch history (.json)": "Importere YouTube visningshistorikk (.json)"
}

ファイルの表示

@ -107,10 +107,10 @@
"Report statistics: ": "Statistieken bijhouden? ",
"Save preferences": "Instellingen opslaan",
"Subscription manager": "Abonnementen beheren",
"Token manager": "Toegangssleutels beheren",
"Token manager": "Toegangssleutelbeheerder",
"Token": "Toegangssleutel",
"Import/export": "Importeren/Exporteren",
"unsubscribe": "Deabonneren",
"unsubscribe": "deabonneren",
"revoke": "Intrekken",
"Subscriptions": "Abonnementen",
"search": "zoeken",
@ -357,7 +357,7 @@
"footer_original_source_code": "Originele bron-code",
"footer_modfied_source_code": "Gewijzigde bron-code",
"adminprefs_modified_source_code_url_label": "URL naar gewijzigde bron-code-opslagplaats",
"next_steps_error_message": "Waarna u moet proberen om: ",
"next_steps_error_message": "Daarna moet u proberen om: ",
"footer_source_code": "Bron-code",
"search_filters_duration_option_long": "Lang (> 20 minuten)",
"preferences_quality_option_dash": "DASH (adaptieve kwaliteit)",
@ -462,5 +462,30 @@
"Spanish (auto-generated)": "Spaans (automatisch gegenereerd)",
"crash_page_you_found_a_bug": "Je lijkt een bug in Invidious tegengekomen te zijn!",
"search_filters_duration_option_medium": "Gemiddeld (4 - 20 minuten)",
"crash_page_report_issue": "Indien het bovenstaande niet hielp, gelieve dan <a href=\"`x`\">een nieuw ticket op GitHub</a> te openen (liefst in het Engels) en neem de volgende tekst op in je bericht (gelieve deze NIET te vertalen):"
"crash_page_report_issue": "Indien het bovenstaande niet hielp, gelieve dan <a href=\"`x`\">een nieuw ticket op GitHub</a> te openen (liefst in het Engels) en neem de volgende tekst op in je bericht (gelieve deze NIET te vertalen):",
"channel_tab_podcasts_label": "Podcasts",
"Download is disabled": "Downloaden is uitgeschakeld",
"Channel Sponsor": "Kanaalsponsor",
"channel_tab_streams_label": "Livestreams",
"playlist_button_add_items": "Video's toevoegen",
"Artist: ": "Artiest: ",
"generic_button_save": "Opslaan",
"generic_button_cancel": "Annuleren",
"Album: ": "Album: ",
"channel_tab_shorts_label": "Shorts",
"channel_tab_releases_label": "Uitgaves",
"Song: ": "Lied: ",
"generic_channels_count": "{{count}} kanaal",
"generic_channels_count_plural": "{{count}} kanalen",
"Popular enabled: ": "Populair geactiveerd: ",
"channel_tab_playlists_label": "Afspeellijsten",
"generic_button_edit": "Bewerken",
"Music in this video": "Muziek in deze video",
"generic_button_rss": "RSS",
"channel_tab_channels_label": "Kanalen",
"error_video_not_in_playlist": "De gevraagde video bestaat niet in deze afspeellijst. <a href=\"`x`\">Klik hier voor de startpagina van de afspeellijst.</a>",
"generic_button_delete": "Verwijderen",
"Import YouTube playlist (.csv)": "YouTube-afspeellijst importeren (.csv)",
"Standard YouTube license": "Standaard YouTube-licentie",
"Import YouTube watch history (.json)": "YouTube-kijkgeschiedenis importeren (.json)"
}

ファイルの表示

@ -492,7 +492,7 @@
"Song: ": "Piosenka: ",
"Channel Sponsor": "Sponsor kanału",
"Standard YouTube license": "Standardowa licencja YouTube",
"Import YouTube playlist (.csv)": "Importuj playlistę YouTube (.csv)",
"Import YouTube playlist (.csv)": "Importuj playlistę z YouTube (.csv)",
"generic_button_edit": "Edytuj",
"generic_button_cancel": "Anuluj",
"generic_button_rss": "RSS",
@ -503,5 +503,7 @@
"playlist_button_add_items": "Dodaj filmy",
"generic_channels_count_0": "{{count}} kanał",
"generic_channels_count_1": "{{count}} kanały",
"generic_channels_count_2": "{{count}} kanałów"
"generic_channels_count_2": "{{count}} kanałów",
"Import YouTube watch history (.json)": "Importuj historię oglądania z YouTube (.json)",
"toggle_theme": "Przełącz motyw"
}

ファイルの表示

@ -503,5 +503,7 @@
"generic_button_rss": "RSS",
"generic_channels_count_0": "{{count}} canal",
"generic_channels_count_1": "{{count}} canais",
"generic_channels_count_2": "{{count}} canais"
"generic_channels_count_2": "{{count}} canais",
"Import YouTube watch history (.json)": "Importar histórico de reprodução do YouTube (.json)",
"toggle_theme": "Alternar Tema"
}

ファイルの表示

@ -1,7 +1,7 @@
{
"search_filters_type_option_show": "Espetáculo",
"search_filters_type_option_show": "Série",
"search_filters_sort_option_views": "Visualizações",
"search_filters_sort_option_date": "Data de envio",
"search_filters_sort_option_date": "Data de carregamento",
"search_filters_sort_option_rating": "Avaliação",
"search_filters_sort_option_relevance": "Relevância",
"Switch Invidious Instance": "Mudar a instância do Invidious",
@ -13,7 +13,7 @@
"preferences_category_misc": "Preferências diversas",
"preferences_vr_mode_label": "Vídeos interativos de 360 graus (necessita de WebGL): ",
"preferences_extend_desc_label": "Estender automaticamente a descrição do vídeo: ",
"next_steps_error_message_go_to_youtube": "Ir ao YouTube",
"next_steps_error_message_go_to_youtube": "Ir para o YouTube",
"next_steps_error_message": "Pode tentar as seguintes opções: ",
"next_steps_error_message_refresh": "Atualizar",
"search_filters_features_option_hdr": "HDR",
@ -44,20 +44,27 @@
"Default": "Predefinido",
"Top": "Destaques",
"Search": "Pesquisar",
"generic_count_years": "{{count}} segundo",
"generic_count_years_plural": "{{count}} segundos",
"generic_count_months": "{{count}} minuto",
"generic_count_months_plural": "{{count}} minutos",
"generic_count_weeks": "{{count}} hora",
"generic_count_weeks_plural": "{{count}} horas",
"generic_count_days": "{{count}} dia",
"generic_count_days_plural": "{{count}} dias",
"generic_count_hours": "{{count}} seman",
"generic_count_hours_plural": "{{count}} semanas",
"generic_count_minutes": "{{count}} mês",
"generic_count_minutes_plural": "{{count}} meses",
"generic_count_seconds": "{{count}} ano",
"generic_count_seconds_plural": "{{count}} anos",
"generic_count_years_0": "{{count}} ano",
"generic_count_years_1": "{{count}} anos",
"generic_count_years_2": "{{count}} anos",
"generic_count_months_0": "{{count}} mês",
"generic_count_months_1": "{{count}} meses",
"generic_count_months_2": "{{count}} meses",
"generic_count_weeks_0": "{{count}} semana",
"generic_count_weeks_1": "{{count}} semanas",
"generic_count_weeks_2": "{{count}} semanas",
"generic_count_days_0": "{{count}} dia",
"generic_count_days_1": "{{count}} dias",
"generic_count_days_2": "{{count}} dias",
"generic_count_hours_0": "{{count}} hora",
"generic_count_hours_1": "{{count}} horas",
"generic_count_hours_2": "{{count}} horas",
"generic_count_minutes_0": "{{count}} minuto",
"generic_count_minutes_1": "{{count}} minutos",
"generic_count_minutes_2": "{{count}} minutos",
"generic_count_seconds_0": "{{count}} segundo",
"generic_count_seconds_1": "{{count}} segundos",
"generic_count_seconds_2": "{{count}} segundos",
"Chinese (Traditional)": "Chinês (tradicional)",
"Chinese (Simplified)": "Chinês (simplificado)",
"Could not pull trending pages.": "Não foi possível obter as páginas de tendências.",
@ -75,7 +82,7 @@
"Import/export data": "Importar / exportar dados",
"preferences_annotations_label": "Mostrar anotações sempre: ",
"preferences_continue_label": "Reproduzir sempre o próximo: ",
"Sign In": "Iniciar sessão",
"Sign In": "Entrar",
"Log in/register": "Iniciar sessão/registar",
"Delete account?": "Eliminar conta?",
"Import and Export Data": "Importar e exportar dados",
@ -167,8 +174,9 @@
"Log out": "Terminar sessão",
"Subscriptions": "Subscrições",
"revoke": "revogar",
"tokens_count": "{{count}} token",
"tokens_count_plural": "{{count}} tokens",
"tokens_count_0": "{{count}} Token",
"tokens_count_1": "{{count}} Tokens",
"tokens_count_2": "{{count}} Tokens",
"Token": "Token",
"Token manager": "Gerir tokens",
"Subscription manager": "Gerir subscrições",
@ -402,31 +410,39 @@
"videoinfo_youTube_embed_link": "Incorporar",
"preferences_save_player_pos_label": "Guardar a posição de reprodução atual do vídeo: ",
"download_subtitles": "Legendas - `x` (.vtt)",
"generic_views_count": "{{count}} visualização",
"generic_views_count_plural": "{{count}} visualizações",
"generic_views_count_0": "{{count}} visualização",
"generic_views_count_1": "{{count}} visualizações",
"generic_views_count_2": "{{count}} visualizações",
"videoinfo_started_streaming_x_ago": "Iniciou a transmissão há `x`",
"user_saved_playlists": "`x` listas de reprodução guardadas",
"generic_videos_count": "{{count}} vídeo",
"generic_videos_count_plural": "{{count}} vídeos",
"generic_playlists_count": "{{count}} lista de reprodução",
"generic_playlists_count_plural": "{{count}} listas de reprodução",
"subscriptions_unseen_notifs_count": "{{count}} notificação não vista",
"subscriptions_unseen_notifs_count_plural": "{{count}} notificações não vistas",
"comments_view_x_replies": "Ver {{count}} resposta",
"comments_view_x_replies_plural": "Ver {{count}} respostas",
"generic_subscribers_count": "{{count}} inscrito",
"generic_subscribers_count_plural": "{{count}} inscritos",
"generic_subscriptions_count": "{{count}} inscrição",
"generic_subscriptions_count_plural": "{{count}} inscrições",
"comments_points_count": "{{count}} ponto",
"comments_points_count_plural": "{{count}} pontos",
"generic_videos_count_0": "{{count}} vídeo",
"generic_videos_count_1": "{{count}} vídeos",
"generic_videos_count_2": "{{count}} vídeos",
"generic_playlists_count_0": "{{count}} lista de reprodução",
"generic_playlists_count_1": "{{count}} listas de reprodução",
"generic_playlists_count_2": "{{count}} listas de reprodução",
"subscriptions_unseen_notifs_count_0": "{{count}} notificação não vista",
"subscriptions_unseen_notifs_count_1": "{{count}} notificações não vistas",
"subscriptions_unseen_notifs_count_2": "{{count}} notificações não vistas",
"comments_view_x_replies_0": "Ver {{count}} resposta",
"comments_view_x_replies_1": "Ver {{count}} respostas",
"comments_view_x_replies_2": "Ver {{count}} respostas",
"generic_subscribers_count_0": "{{count}} inscrito",
"generic_subscribers_count_1": "{{count}} inscritos",
"generic_subscribers_count_2": "{{count}} inscritos",
"generic_subscriptions_count_0": "{{count}} inscrição",
"generic_subscriptions_count_1": "{{count}} inscrições",
"generic_subscriptions_count_2": "{{count}} inscrições",
"comments_points_count_0": "{{count}} ponto",
"comments_points_count_1": "{{count}} pontos",
"comments_points_count_2": "{{count}} pontos",
"crash_page_you_found_a_bug": "Parece que encontrou um erro no Invidious!",
"crash_page_before_reporting": "Antes de reportar um erro, verifique se:",
"crash_page_refresh": "tentou <a href=\"`x`\">recarregar a página</a>",
"crash_page_switch_instance": "tentou <a href=\"`x`\">usar outra instância</a>",
"crash_page_read_the_faq": "leia as <a href=\"`x`\">Perguntas frequentes (FAQ)</a>",
"crash_page_search_issue": "procurou se <a href=\"`x`\">o erro já foi reportado no GitHub</a>",
"crash_page_report_issue": "Se nenhuma opção acima ajudou, por favor <a href=\"`x`\">abra um novo problema no Github</a> (preferencialmente em inglês) e inclua o seguinte texto tal qual (NÃO o traduza):",
"crash_page_report_issue": "Se nenhuma opção acima ajudou, por favor <a href=\"`x`\">abra um novo problema no Github</a> (preferencialmente em inglês) e inclua o seguinte texto (NÃO o traduza):",
"user_created_playlists": "`x` listas de reprodução criadas",
"search_filters_title": "Filtro",
"Chinese (Taiwan)": "Chinês (Taiwan)",
@ -464,7 +480,7 @@
"search_filters_type_option_all": "Qualquer tipo",
"search_filters_duration_option_none": "Qualquer duração",
"Popular enabled: ": "Página \"popular\" ativada: ",
"error_video_not_in_playlist": "O vídeo pedido não existe nesta lista de reprodução. <a href=\"`x`\">Clique aqui para a página inicial da lista de reprodução.</a>",
"error_video_not_in_playlist": "O vídeo pedido não existe nesta lista de reprodução. <a href=\"`x`\">Clique aqui para voltar à página inicial da lista de reprodução.</a>",
"channel_tab_playlists_label": "Listas de reprodução",
"channel_tab_channels_label": "Canais",
"channel_tab_shorts_label": "Curtos",
@ -484,5 +500,10 @@
"channel_tab_releases_label": "Lançamentos",
"generic_button_save": "Salvar",
"generic_button_cancel": "Cancelar",
"playlist_button_add_items": "Adicionar vídeos"
"playlist_button_add_items": "Adicionar vídeos",
"generic_channels_count_0": "{{count}} canal",
"generic_channels_count_1": "{{count}} canais",
"generic_channels_count_2": "{{count}} canais",
"Import YouTube watch history (.json)": "Importar histórico de reprodução do YouTube (.json)",
"toggle_theme": "Trocar tema"
}

ファイルの表示

@ -8,14 +8,14 @@
"newest": "сначала новые",
"oldest": "сначала старые",
"popular": "популярные",
"last": "недавние",
"last": "последние",
"Next page": "Следующая страница",
"Previous page": "Предыдущая страница",
"Clear watch history?": "Очистить историю просмотров?",
"New password": "Новый пароль",
"New passwords must match": "Новые пароли не совпадают",
"Authorize token?": "Авторизовать токен?",
"Authorize token for `x`?": "Авторизовать токен для `x`?",
"Authorize token for `x`?": "Токен авторизации для `x`?",
"Yes": "Да",
"No": "Нет",
"Import and Export Data": "Импорт и экспорт данных",
@ -29,7 +29,7 @@
"Export subscriptions as OPML": "Экспортировать подписки в формате OPML",
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Экспортировать подписки в формате OPML (для NewPipe и FreeTube)",
"Export data as JSON": "Экспортировать данные Invidious в формате JSON",
"Delete account?": "Удалить учётку?",
"Delete account?": "Удалить учётную запись?",
"History": "История",
"An alternative front-end to YouTube": "Альтернативный фронтенд для YouTube",
"JavaScript license information": "Информация о лицензиях JavaScript",
@ -42,7 +42,7 @@
"Text CAPTCHA": "Текстовая капча (англ.)",
"Image CAPTCHA": "Капча-картинка",
"Sign In": "Войти",
"Register": "Зарегистрироваться",
"Register": "Регистрация",
"E-mail": "Эл. почта",
"Preferences": "Настройки",
"preferences_category_player": "Настройки проигрывателя",
@ -61,7 +61,7 @@
"preferences_captions_label": "Основной язык субтитров: ",
"Fallback captions: ": "Дополнительный язык субтитров: ",
"preferences_related_videos_label": "Показывать похожие видео? ",
"preferences_annotations_label": "Всегда показывать аннотации? ",
"preferences_annotations_label": "Показывать аннотации по умолчанию: ",
"preferences_extend_desc_label": "Автоматически раскрывать описание видео: ",
"preferences_vr_mode_label": "Интерактивные 360-градусные видео (необходим WebGL): ",
"preferences_category_visual": "Настройки сайта",
@ -77,13 +77,13 @@
"preferences_annotations_subscribed_label": "Всегда показывать аннотации на каналах из ваших подписок? ",
"Redirect homepage to feed: ": "Показывать подписки на главной странице: ",
"preferences_max_results_label": "Число видео в ленте: ",
"preferences_sort_label": "Сортировать видео: ",
"published": "по дате публикации",
"published - reverse": "по дате публикации в обратном порядке",
"alphabetically": "по алфавиту",
"alphabetically - reverse": "по алфавиту в обратном порядке",
"channel name": "по названию канала",
"channel name - reverse": "по названию канала в обратном порядке",
"preferences_sort_label": "Сортировать видео по: ",
"published": "дате публикации",
"published - reverse": "дате публикации в обратном порядке",
"alphabetically": "алфавиту",
"alphabetically - reverse": "алфавиту в обратном порядке",
"channel name": "названию канала",
"channel name - reverse": "названию канала в обратном порядке",
"Only show latest video from channel: ": "Показывать только последние видео с каналов: ",
"Only show latest unwatched video from channel: ": "Показывать только последние непросмотренные видео с канала: ",
"preferences_unseen_only_label": "Показывать только непросмотренные видео: ",
@ -134,8 +134,8 @@
"Title": "Заголовок",
"Playlist privacy": "Видимость плейлиста",
"Editing playlist `x`": "Редактирование плейлиста `x`",
"Show more": "Развернуть",
"Show less": "Свернуть",
"Show more": "Показать больше",
"Show less": "Показать меньше",
"Watch on YouTube": "Смотреть на YouTube",
"Switch Invidious Instance": "Сменить зеркало Invidious",
"Hide annotations": "Скрыть аннотации",
@ -414,7 +414,7 @@
"generic_count_days_0": "{{count}} день",
"generic_count_days_1": "{{count}} дня",
"generic_count_days_2": "{{count}} дней",
"preferences_quality_dash_option_auto": "Автоматическое",
"preferences_quality_dash_option_auto": "Авто",
"preferences_quality_dash_option_1080p": "1080p",
"preferences_quality_dash_option_720p": "720p",
"generic_subscriptions_count_0": "{{count}} подписка",
@ -466,7 +466,7 @@
"search_filters_features_option_three_sixty": "360°",
"Video unavailable": "Видео недоступно",
"preferences_save_player_pos_label": "Запоминать позицию: ",
"preferences_region_label": "Страна: ",
"preferences_region_label": "Страна источник ",
"preferences_watch_history_label": "Включить историю просмотров: ",
"search_filters_title": "Фильтр",
"search_filters_duration_option_none": "Любой длины",
@ -476,7 +476,7 @@
"search_message_no_results": "Ничего не найдено.",
"search_message_use_another_instance": " Дополнительно вы можете <a href=\"`x`\">поискать на других зеркалах</a>.",
"search_filters_features_option_vr180": "VR180",
"search_message_change_filters_or_query": "Попробуйте расширить поисковый запрос или изменить фильтры.",
"search_message_change_filters_or_query": "Попробуйте расширить поисковый запрос или изменить фильтры.",
"search_filters_duration_option_medium": "Средние (4 - 20 минут)",
"search_filters_apply_button": "Применить фильтры",
"Popular enabled: ": "Популярное включено: ",
@ -503,5 +503,6 @@
"channel_tab_podcasts_label": "Подкасты",
"generic_channels_count_0": "{{count}} канал",
"generic_channels_count_1": "{{count}} канала",
"generic_channels_count_2": "{{count}} каналов"
"generic_channels_count_2": "{{count}} каналов",
"Import YouTube watch history (.json)": "Импортировать историю просмотра из YouTube (.json)"
}

ファイルの表示

@ -520,5 +520,6 @@
"generic_channels_count_0": "{{count}} kanal",
"generic_channels_count_1": "{{count}} kanala",
"generic_channels_count_2": "{{count}} kanali",
"generic_channels_count_3": "{{count}} kanalov"
"generic_channels_count_3": "{{count}} kanalov",
"Import YouTube watch history (.json)": "Uvozi zgodovino gledanja YouTube (.json)"
}

ファイルの表示

@ -79,7 +79,7 @@
"invidious": "Invidious",
"preferences_captions_label": "Titra parazgjedhje: ",
"preferences_extend_desc_label": "Zgjero automatikisht përshkrimin e videos: ",
"preferences_player_style_label": "Silt lojtësi: ",
"preferences_player_style_label": "Stil lojtësi: ",
"Dark mode: ": "Mënyra e errët: ",
"preferences_dark_mode_label": "Temë: ",
"dark": "e errët",
@ -477,5 +477,12 @@
"channel_tab_releases_label": "Hedhje në qarkullim",
"Song: ": "Pjesë: ",
"Import YouTube playlist (.csv)": "Importoni luajlistë YouTube (.csv)",
"Standard YouTube license": "Licencë YouTube standarde"
"Standard YouTube license": "Licencë YouTube standarde",
"published - reverse": "publikuar më - së prapthi",
"channel_tab_podcasts_label": "Podcast-e",
"channel name - reverse": "emër kanali - së prapthi",
"Import YouTube watch history (.json)": "Importo historik parjesh YouTube (.json)",
"preferences_local_label": "Video përmes ndërmjetësi: ",
"Fallback captions: ": "Titra nga halli: ",
"Erroneous challenge": "Zgjidhje e gabuar"
}

ファイルの表示

@ -503,5 +503,6 @@
"crash_page_you_found_a_bug": "Izgleda da ste pronašli grešku u Invidious-u!",
"generic_views_count_0": "{{count}} pregled",
"generic_views_count_1": "{{count}} pregleda",
"generic_views_count_2": "{{count}} pregleda"
"generic_views_count_2": "{{count}} pregleda",
"Import YouTube watch history (.json)": "Uvezi YouTube istoriju gledanja (.json)"
}

ファイルの表示

@ -503,5 +503,7 @@
"crash_page_you_found_a_bug": "Изгледа да сте пронашли грешку у Invidious-у!",
"generic_views_count_0": "{{count}} преглед",
"generic_views_count_1": "{{count}} прегледа",
"generic_views_count_2": "{{count}} прегледа"
"generic_views_count_2": "{{count}} прегледа",
"Import YouTube watch history (.json)": "Увези YouTube историју гледањa (.json)",
"toggle_theme": "Укључи тему"
}

ファイルの表示

@ -20,15 +20,15 @@
"No": "Nej",
"Import and Export Data": "Importera och exportera data",
"Import": "Importera",
"Import Invidious data": "Importera Invidious-data",
"Import YouTube subscriptions": "Importera YouTube-prenumerationer",
"Import Invidious data": "Importera Invidious JSON data",
"Import YouTube subscriptions": "Importera YouTube/OPML prenumerationer",
"Import FreeTube subscriptions (.db)": "Importera FreeTube-prenumerationer (.db)",
"Import NewPipe subscriptions (.json)": "Importera NewPipe-prenumerationer (.json)",
"Import NewPipe data (.zip)": "Importera NewPipe-data (.zip)",
"Export": "Exportera",
"Export subscriptions as OPML": "Exportera prenumerationer som OPML",
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Exportera prenumerationer som OPML (för NewPipe och FreeTube)",
"Export data as JSON": "Exportera data som JSON",
"Export data as JSON": "Exportera Invidious data som JSON",
"Delete account?": "Radera konto?",
"History": "Historik",
"An alternative front-end to YouTube": "Ett alternativt gränssnitt till YouTube",
@ -63,7 +63,7 @@
"preferences_related_videos_label": "Visa relaterade videor? ",
"preferences_annotations_label": "Visa länkar-i-videon som förval? ",
"preferences_extend_desc_label": "Förläng videobeskrivning automatiskt: ",
"preferences_vr_mode_label": "Interaktiva 360-gradervideos: ",
"preferences_vr_mode_label": "Interaktiva 360-gradervideos (kräver WebGL): ",
"preferences_category_visual": "Visuella inställningar",
"preferences_player_style_label": "Spelarstil: ",
"Dark mode: ": "Mörkt läge: ",
@ -152,7 +152,7 @@
"View YouTube comments": "Visa YouTube-kommentarer",
"View more comments on Reddit": "Visa flera kommentarer på Reddit",
"View `x` comments": {
"([^.,0-9]|^)1([^.,0-9]|$)": "Visa `x` kommentarer",
"([^.,0-9]|^)1([^.,0-9]|$)": "Visa `x` kommentar",
"": "Visa `x` kommentarer"
},
"View Reddit comments": "Visa Reddit-kommentarer",
@ -167,7 +167,7 @@
"Wrong username or password": "Ogiltigt användarnamn eller lösenord",
"Password cannot be empty": "Lösenordet kan inte vara tomt",
"Password cannot be longer than 55 characters": "Lösenordet kan inte vara längre än 55 tecken",
"Please log in": "Logga in",
"Please log in": "Snälla logga in",
"Invidious Private Feed for `x`": "Ogiltig privat flöde för `x`",
"channel:`x`": "kanal `x`",
"Deleted or invalid channel": "Raderad eller ogiltig kanal",
@ -311,8 +311,8 @@
"%A %B %-d, %Y": "%A %B %-d, %Y",
"(edited)": "(redigerad)",
"YouTube comment permalink": "Permanent YouTube-länk till innehållet",
"permalink": "permalänk",
"`x` marked it with a ❤": "`x` lämnade ett ❤",
"permalink": "permanent länk",
"`x` marked it with a ❤": "`x` markerade det med ett ❤",
"Audio mode": "Ljudläge",
"Video mode": "Videoläge",
"channel_tab_videos_label": "Videor",
@ -320,30 +320,30 @@
"channel_tab_community_label": "Gemenskap",
"search_filters_sort_option_relevance": "Relevans",
"search_filters_sort_option_rating": "Rankning",
"search_filters_sort_option_date": "Datum",
"search_filters_sort_option_date": "Uppladdnings Datum",
"search_filters_sort_option_views": "Visningar",
"search_filters_type_label": "Typ",
"search_filters_duration_label": "Varaktighet",
"search_filters_features_label": "Funktioner",
"search_filters_sort_label": "Sortera efter",
"search_filters_date_option_hour": "timme",
"search_filters_date_option_today": "idag",
"search_filters_date_option_week": "vecka",
"search_filters_date_option_month": "månad",
"search_filters_date_option_year": "år",
"search_filters_type_option_video": "video",
"search_filters_type_option_channel": "kanal",
"search_filters_type_option_playlist": "spellista",
"search_filters_type_option_movie": "film",
"search_filters_type_option_show": "tv-serie",
"search_filters_features_option_hd": "hd",
"search_filters_features_option_subtitles": "undertexter",
"search_filters_features_option_c_commons": "creative_commons",
"search_filters_features_option_three_d": "3d",
"search_filters_features_option_live": "live",
"search_filters_features_option_four_k": "4k",
"search_filters_features_option_location": "plats",
"search_filters_features_option_hdr": "hdr",
"search_filters_date_option_hour": "Senaste Timmen",
"search_filters_date_option_today": "Idag",
"search_filters_date_option_week": "Denna vecka",
"search_filters_date_option_month": "Denna månad",
"search_filters_date_option_year": "Detta år",
"search_filters_type_option_video": "Video",
"search_filters_type_option_channel": "Kanal",
"search_filters_type_option_playlist": "Spellista",
"search_filters_type_option_movie": "Film",
"search_filters_type_option_show": "Serie",
"search_filters_features_option_hd": "HD",
"search_filters_features_option_subtitles": "Undertexter/CC",
"search_filters_features_option_c_commons": "Creative Commons",
"search_filters_features_option_three_d": "3D",
"search_filters_features_option_live": "Live",
"search_filters_features_option_four_k": "4K",
"search_filters_features_option_location": "Plats",
"search_filters_features_option_hdr": "HDR",
"Current version: ": "Nuvarande version: ",
"next_steps_error_message_refresh": "Uppdatera",
"next_steps_error_message_go_to_youtube": "Gå till Youtube",
@ -352,5 +352,141 @@
"search_filters_duration_option_long": "Lång (> 20 minuter)",
"footer_documentation": "Dokumentation",
"search_filters_duration_option_short": "Kort (< 4 minuter)",
"search_filters_title": "Filter"
"search_filters_title": "Filter",
"Korean (auto-generated)": "Koreanska (auto-genererad)",
"search_filters_features_option_three_sixty": "360°",
"preferences_quality_dash_option_worst": "Sämst",
"channel_tab_podcasts_label": "Podcaster",
"preferences_save_player_pos_label": "Spara uppspelningsposition: ",
"Spanish (Mexico)": "Spanska (Mexiko)",
"preferences_region_label": "Innehållsland: ",
"generic_subscriptions_count": "{{count}} prenumeration",
"generic_subscriptions_count_plural": "{{count}} prenumerationer",
"search_filters_apply_button": "Använd valda filter",
"Download is disabled": "Nedladdning är inaktiverad",
"comments_points_count": "{{count}} poäng",
"comments_points_count_plural": "{{count}} poäng",
"preferences_quality_dash_option_2160p": "2160p",
"German (auto-generated)": "Tyska (auto-genererad)",
"Japanese (auto-generated)": "Japanska (auto-genererad)",
"preferences_quality_option_medium": "Medium",
"footer_donate_page": "Donera",
"search_message_change_filters_or_query": "Prova att bredda din sökfråga och/eller ändra filtren.",
"crash_page_before_reporting": "Innan du rapporterar en bugg, se till att du har:",
"preferences_quality_dash_option_best": "Bäst",
"Channel Sponsor": "Kanal Sponsor",
"generic_videos_count": "{{count}} video",
"generic_videos_count_plural": "{{count}} videor",
"videoinfo_started_streaming_x_ago": "Började sända `x` sedan",
"videoinfo_youTube_embed_link": "Bädda in",
"channel_tab_streams_label": "Livesändningar",
"playlist_button_add_items": "Lägg till videor",
"generic_count_minutes": "{{count}}minut",
"generic_count_minutes_plural": "{{count}}minuter",
"preferences_quality_dash_option_720p": "720p",
"preferences_watch_history_label": "Aktivera visningshistorik: ",
"user_saved_playlists": "`x` sparade spellistor",
"Spanish (Spain)": "Spanska (Spanien)",
"invidious": "Invidious",
"crash_page_refresh": "försökte <a href=\"`x`\">uppdatera sidan</a>",
"Chinese (Hong Kong)": "Kinesiska (Hong Kong)",
"Artist: ": "Artist: ",
"generic_count_months": "{{count}}månad",
"generic_count_months_plural": "{{count}}månader",
"search_message_use_another_instance": " Du kan också <a href=\"`x`\">söka på en annan instans</a>.",
"generic_subscribers_count": "{{count}} prenumerant",
"generic_subscribers_count_plural": "{{count}} prenumeranter",
"download_subtitles": "Undertexter - `x` (.vtt)",
"generic_button_save": "Spara",
"crash_page_search_issue": "sökte efter <a href=\"`x`\">befintliga problem på GitHub</a>",
"generic_button_cancel": "Avbryt",
"none": "ingen",
"English (United States)": "English (Förenta staterna)",
"subscriptions_unseen_notifs_count": "{{count}}osedd notifikation",
"subscriptions_unseen_notifs_count_plural": "{{count}}osedda notifikationer",
"Album: ": "Album: ",
"preferences_quality_option_dash": "DASH (adaptiv kvalitet)",
"preferences_quality_dash_option_1080p": "1080p",
"Video unavailable": "Video inte tillgänglig",
"tokens_count": "{{count}}nyckel",
"tokens_count_plural": "{{count}}nycklar",
"Chinese (China)": "Kinesiska (Kina)",
"Italian (auto-generated)": "Italienska (auto-genererad)",
"channel_tab_shorts_label": "Shorts",
"preferences_quality_dash_option_1440p": "1440p",
"preferences_quality_dash_option_360p": "360p",
"search_message_no_results": "Inga resultat hittades.",
"channel_tab_releases_label": "Releaser",
"preferences_quality_dash_option_144p": "144p",
"Interlingue": "Interlingue (auto-genererad)",
"Song: ": "Låt: ",
"generic_channels_count": "{{count}} kanal",
"generic_channels_count_plural": "{{count}} kanaler",
"Chinese (Taiwan)": "Kinesiska (Taiwan)",
"preferences_quality_dash_label": "Önskad DASH-videokvalitet: ",
"adminprefs_modified_source_code_url_label": "URL till modifierad källkodslager",
"Turkish (auto-generated)": "Turkiska (auto-genererad)",
"Indonesian (auto-generated)": "Indonesiska (auto-genererad)",
"Portuguese (auto-generated)": "Portugisiska (auto-genererad)",
"generic_count_years": "{{count}}år",
"generic_count_years_plural": "{{count}}år",
"videoinfo_invidious_embed_link": "Bädda in länk",
"Popular enabled: ": "Populär aktiverad: ",
"Spanish (auto-generated)": "Spanska (auto-genererad)",
"preferences_quality_option_small": "Liten",
"English (United Kingdom)": "Engelska (Storbritannien)",
"channel_tab_playlists_label": "Spellistor",
"generic_button_edit": "Redigera",
"generic_playlists_count": "{{count}} spellista",
"generic_playlists_count_plural": "{{count}} spellistor",
"preferences_quality_option_hd720": "HD720p",
"search_filters_features_option_purchased": "Köpt",
"search_filters_date_option_none": "Vilket datum som helst",
"preferences_quality_dash_option_auto": "Auto",
"Cantonese (Hong Kong)": "Katonesiska (Hong Kong)",
"crash_page_report_issue": "Om inget av ovanstående hjälpte, vänligen <a href=\"`x`\">öppna ett nytt nummer på GitHub</a> (helst på engelska) och inkludera följande text i ditt meddelande (översätt INTE den texten):",
"crash_page_switch_instance": "försökte <a href=\"`x`\">använda en annan instans</a>",
"generic_count_weeks": "{{count}}vecka",
"generic_count_weeks_plural": "{{count}}veckor",
"videoinfo_watch_on_youTube": "Titta på YouTube",
"Music in this video": "Musik i denna video",
"footer_modfied_source_code": "Modifierad källkod",
"generic_button_rss": "RSS",
"preferences_quality_dash_option_4320p": "4320p",
"generic_count_hours": "{{count}}timme",
"generic_count_hours_plural": "{{count}}timmar",
"French (auto-generated)": "Franska (auto-genererad)",
"crash_page_read_the_faq": "läs <a href=\"`x`\">Vanliga frågor (FAQ)</a>",
"user_created_playlists": "`x` skapade spellistor",
"channel_tab_channels_label": "Kanaler",
"search_filters_type_option_all": "Vilken typ som helst",
"Russian (auto-generated)": "Ryska (auto-genererad)",
"preferences_quality_dash_option_480p": "480p",
"comments_view_x_replies": "Se {{count}} svar",
"comments_view_x_replies_plural": "Se {{count}} svar",
"footer_original_source_code": "Ursprunglig källkod",
"Portuguese (Brazil)": "Portugisiska (Brasilien)",
"search_filters_features_option_vr180": "VR180",
"error_video_not_in_playlist": "Den begärda videon finns inte i den här spellistan. <a href=\"`x`\">Klicka här för startsidan för spellistan.</a>",
"Dutch (auto-generated)": "Nederländska (auto-genererad)",
"generic_count_days": "{{count}}dag",
"generic_count_days_plural": "{{count}}dagar",
"Vietnamese (auto-generated)": "Vietnamesiska (auto-genererad)",
"search_filters_duration_option_none": "Vilken varaktighet som helst",
"preferences_quality_dash_option_240p": "240p",
"Chinese": "Kinesiska",
"preferences_automatic_instance_redirect_label": "Automatisk instansomdirigering (återgång till redirect.invidious.io): ",
"generic_button_delete": "Radera",
"Import YouTube playlist (.csv)": "Importera YouTube spellista (.csv)",
"next_steps_error_message": "Därefter bör du försöka: ",
"Standard YouTube license": "Standard YouTube licens",
"Import YouTube watch history (.json)": "Importera YouTube visningshistorik (.json)",
"search_filters_duration_option_medium": "Medium (4 - 20 minuter)",
"generic_count_seconds": "{{count}}sekund",
"generic_count_seconds_plural": "{{count}}sekunder",
"search_filters_date_label": "Uppladdningsdatum",
"crash_page_you_found_a_bug": "Det verkar som att du har hittat en bugg i Invidious!",
"generic_views_count": "{{count}} visning",
"generic_views_count_plural": "{{count}} visningar",
"toggle_theme": "Växla tema"
}

ファイルの表示

@ -486,5 +486,7 @@
"playlist_button_add_items": "Video ekle",
"channel_tab_podcasts_label": "Podcast'ler",
"generic_channels_count": "{{count}} kanal",
"generic_channels_count_plural": "{{count}} kanal"
"generic_channels_count_plural": "{{count}} kanal",
"Import YouTube watch history (.json)": "YouTube İzleme Geçmişini İçe Aktar (.json)",
"toggle_theme": "Temayı Değiştir"
}

ファイルの表示

@ -503,5 +503,7 @@
"generic_button_save": "Зберегти",
"generic_channels_count_0": "{{count}} канал",
"generic_channels_count_1": "{{count}} канали",
"generic_channels_count_2": "{{count}} каналів"
"generic_channels_count_2": "{{count}} каналів",
"Import YouTube watch history (.json)": "Імпортувати історію переглядів YouTube (.json)",
"toggle_theme": "Перемкнути тему"
}

ファイルの表示

@ -1,62 +1,62 @@
{
"generic_videos_count_0": "{{count}} video",
"generic_subscribers_count_0": "{{count}} người theo dõi",
"generic_subscribers_count_0": "{{count}} người đăng ký",
"LIVE": "TRỰC TIẾP",
"Shared `x` ago": "Đã chia sẻ `x` trước",
"Unsubscribe": "Hủy theo dõi",
"Subscribe": "Theo dõi",
"Unsubscribe": "Hủy đăng ký",
"Subscribe": "Đăng ký",
"View channel on YouTube": "Xem kênh trên YouTube",
"View playlist on YouTube": "Xem danh sách phát trên YouTube",
"newest": "mới nhất",
"oldest": "lâu đời nhất",
"popular": "phổ biến",
"last": "Cuối cùng",
"newest": "Mới nhất",
"oldest": " nhất",
"popular": "Phổ biến",
"last": "cuối cùng",
"Next page": "Trang tiếp theo",
"Previous page": "Trang trước",
"Clear watch history?": "Xóa lịch sử xem?",
"New password": "Mật khẩu mới",
"New passwords must match": "Mật khẩu mới phải khớp",
"Authorize token?": "Cấp phép mã thông báo?",
"Authorize token for `x`?": "Cấp phép mã thông báo cho` x`?",
"Yes": "Đúng",
"Authorize token for `x`?": "Cấp phép mã thông báo cho `x`?",
"Yes": "",
"No": "Không",
"Import and Export Data": "Nhập và xuất dữ liệu",
"Import": "Nhập",
"Import Invidious data": "Nhập dữ liệu Invidious JSON",
"Import YouTube subscriptions": "Nhập dữ liệu thuê bao YouTube/OPML",
"Import FreeTube subscriptions (.db)": "Nhập đăng ký FreeTube (.db)",
"Import NewPipe subscriptions (.json)": "Nhập đăng ký NewPipe (.json)",
"Import NewPipe data (.zip)": "Nhập dữ liệu NewPipe (.zip)",
"Import Invidious data": "Nhập dữ liệu Invidious dưới dạng JSON",
"Import YouTube subscriptions": "Nhập các kênh đã đăng ký từ YouTube/OPML",
"Import FreeTube subscriptions (.db)": "Nhập các kênh đã đăng ký từ FreeTube (.db)",
"Import NewPipe subscriptions (.json)": "Nhập các kênh đã đăng ký từ NewPipe (.json)",
"Import NewPipe data (.zip)": "Nhập dữ liệu từ NewPipe (.zip)",
"Export": "Xuất",
"Export subscriptions as OPML": "Xuất đăng ký dưới dạng OPML",
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Xuất đăng ký dưới dạng OPML (cho NewPipe & FreeTube)",
"Export subscriptions as OPML": "Xuất các kênh đã đăng ký dưới dạng OPML",
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Xuất các kênh đã đăng ký dưới dạng OPML (cho NewPipe & FreeTube)",
"Export data as JSON": "Xuất dữ liệu Invidious dưới dạng JSON",
"Delete account?": "Xóa tài khoản?",
"History": "Lịch sử",
"An alternative front-end to YouTube": "Giao diện người dùng thay thế cho YouTube",
"An alternative front-end to YouTube": "Một front-end thay thế cho YouTube",
"JavaScript license information": "Thông tin giấy phép JavaScript",
"source": "nguồn",
"Log in": "Đăng nhập",
"Log in/register": "Đăng nhập / đăng ký",
"User ID": "Tên người dùng",
"User ID": "ID người dùng",
"Password": "Mật khẩu",
"Time (h:mm:ss):": "Thời gian (h: mm: ss):",
"Text CAPTCHA": "Nhắn tin tới CAPTCHA",
"Image CAPTCHA": "Hình ảnh CAPTCHA",
"Time (h:mm:ss):": "Thời gian (h:mm:ss):",
"Text CAPTCHA": "CAPTCHA dạng chữ",
"Image CAPTCHA": "CAPTCHA dạng ảnh",
"Sign In": "Đăng nhập",
"Register": "Đăng ký",
"E-mail": "E-mail",
"Preferences": "Sở thích",
"preferences_category_player": "Tùy chọn trình phát video",
"preferences_video_loop_label": "Luôn lặp lại: ",
"preferences_autoplay_label": "Tự chạy: ",
"preferences_autoplay_label": "Tự động phát: ",
"preferences_continue_label": "Phát kế tiếp theo mặc định: ",
"preferences_continue_autoplay_label": "Tự động phát video tiếp theo: ",
"preferences_listen_label": "Nghe theo mặc định: ",
"preferences_local_label": "Video proxy: ",
"preferences_speed_label": "Tốc độ mặc định: ",
"preferences_quality_label": "Chất lượng video ưa thích: ",
"preferences_volume_label": "Âm lượng trình phát video: ",
"preferences_volume_label": "Âm lượng video: ",
"preferences_comments_label": "Nhận xét mặc định: ",
"youtube": "YouTube",
"reddit": "Reddit",
@ -64,7 +64,7 @@
"Fallback captions: ": "Phụ đề dự phòng: ",
"preferences_related_videos_label": "Hiển thị các video có liên quan: ",
"preferences_annotations_label": "Hiển thị chú thích theo mặc định: ",
"preferences_extend_desc_label": "Tự động mở rộng mô tả video: ",
"preferences_extend_desc_label": "Tự động mở rộng phần mô tả của video: ",
"preferences_vr_mode_label": "Video 360 độ tương tác (yêu cầu WebGL): ",
"preferences_category_visual": "Tùy chọn hình ảnh",
"preferences_player_style_label": "Phong cách trình phát: ",
@ -82,24 +82,24 @@
"preferences_sort_label": "Sắp xếp video theo: ",
"published": "được phát hành",
"published - reverse": "đã xuất bản - đảo ngược",
"alphabetically": "theo thứ tự bảng chữ cái",
"alphabetically - reverse": "theo thứ tự bảng chữ cái - đảo ngược",
"channel name": "Tên kênh",
"channel name - reverse": "tên kênh - đảo ngược",
"alphabetically": "Thứ tự (A - Z)",
"alphabetically - reverse": "Thứ tự (Z - A)",
"channel name": "Tên kênh (A - Z)",
"channel name - reverse": "Tên kênh (Z - A)",
"Only show latest video from channel: ": "Chỉ hiển thị video mới nhất từ kênh: ",
"Only show latest unwatched video from channel: ": "Chỉ hiển thị video chưa xem mới nhất từ kênh: ",
"preferences_unseen_only_label": "Chỉ hiển thị chưa xem: ",
"preferences_unseen_only_label": "Chỉ hiển thị các video chưa từng xem: ",
"preferences_notifications_only_label": "Chỉ hiển thị thông báo (nếu có): ",
"Enable web notifications": "Bật thông báo web",
"`x` uploaded a video": "` x` đã tải lên một video",
"`x` is live": "` x` đang phát trực tiếp",
"`x` uploaded a video": "`x` đã tải lên một video",
"`x` is live": "`x` đang phát trực tiếp",
"preferences_category_data": "Tùy chọn dữ liệu",
"Clear watch history": "Xóa lịch sử xem",
"Import/export data": "Nhập / xuất dữ liệu",
"Change password": "Đổi mật khẩu",
"Manage subscriptions": "Quản lý các mục đăng kí",
"Manage tokens": "Quản lý mã thông báo",
"Watch history": "Lịch sử xem",
"Watch history": "Xem lịch sử",
"Delete account": "Xóa tài khoản",
"preferences_category_admin": "Tùy chọn quản trị viên",
"preferences_default_home_label": "Trang chủ mặc định: ",
@ -121,7 +121,7 @@
"View privacy policy.": "Xem chính sách bảo mật.",
"Trending": "Xu hướng",
"Public": "Công khai",
"Unlisted": "Không hiển thị",
"Unlisted": "Không công khai",
"Private": "Riêng tư",
"View all playlists": "Xem tất cả danh sách phát",
"Updated `x` ago": "Đã cập nhật` x` trước",
@ -131,24 +131,24 @@
"Title": "Tiêu đề",
"Playlist privacy": "Bảo mật danh sách phát",
"Editing playlist `x`": "Chỉnh sửa danh sách phát` x`",
"Show more": "Cho xem nhiều hơn",
"Show less": "Hiện ít hơn",
"Show more": "Hiển thị thêm",
"Show less": "Hiển thị ít hơn",
"Watch on YouTube": "Xem trên YouTube",
"Switch Invidious Instance": "Chuyển phiên bản Invidious",
"Hide annotations": "Ẩn chú thích",
"Show annotations": "Hiển thị chú thích",
"Genre: ": "Thể loại: ",
"License: ": "Giấy phép: ",
"Family friendly? ": "Gia đình thân thiện? ",
"Family friendly? ": "Thân thiện với gia đình? ",
"Wilson score: ": "Điểm số Wilson: ",
"Engagement: ": "Hôn ước: ",
"Whitelisted regions: ": "Các vùng nằm trong danh sách trắng: ",
"Blacklisted regions: ": "Khu vực nằm trong danh sách đen: ",
"Blacklisted regions: ": "Các vùng nằm trong danh sách đen: ",
"Shared `x`": "Chia sẻ` x`",
"View Reddit comments": "Xem nhận xét trên Reddit",
"Hide replies": "Ẩn câu trả lời",
"Show replies": "Hiển thị câu trả lời",
"Incorrect password": "Mật khẩu không đúng",
"View Reddit comments": "Xem nh luận trên Reddit",
"Hide replies": "Ẩn phản hồi",
"Show replies": "Hiển thị phản hồi",
"Incorrect password": "Mật khẩu không chính xác",
"Wrong answer": "Câu trả lời sai",
"Erroneous CAPTCHA": "CAPTCHA bị lỗi",
"CAPTCHA is a required field": "CAPTCHA là trường bắt buộc",
@ -190,35 +190,35 @@
"Bulgarian": "Tiếng Bungari",
"Burmese": "Tiếng Miến Điện",
"Catalan": "Tiếng Catalan",
"Cebuano": "Cebuano",
"Cebuano": "Tiếng Cebu",
"Chinese (Simplified)": "Tiếng Trung (Giản thể)",
"Chinese (Traditional)": "Tiếng Trung (Phồn thể)",
"Corsican": "Corsican",
"Corsican": "Tiếng Corse",
"Croatian": "Tiếng Croatia",
"Czech": "Tiếng Séc",
"Danish": "Người Đan Mạch",
"Danish": "Tiếng Đan Mạch",
"Dutch": "Tiếng Hà Lan",
"Esperanto": "Quốc tế ngữ",
"Estonian": "Tiếng Estonia",
"Filipino": "Filipino",
"Filipino": "Tiếng Philippines",
"Finnish": "Tiếng Phần Lan",
"French": "Người Pháp",
"French": "Tiếng Pháp",
"Galician": "Tiếng Galicia",
"Georgian": "Tiếng Georgia",
"German": "Tiếng Đức",
"Greek": "Người Hy Lạp",
"Gujarati": "Gujarati",
"Haitian Creole": "Tiếng Creole của Haiti",
"Hausa": "Hausa",
"Greek": "Tiếng Hy Lạp",
"Gujarati": "Tiếng Gujarat",
"Haitian Creole": "Tiếng Creole (Haiti)",
"Hausa": "Tiếng Hausa",
"Hawaiian": "Tiếng Hawaii",
"Hebrew": "Tiếng Do Thái",
"Hindi": "Tiếng Hindi",
"Hmong": "Hmong",
"Hungarian": "Người Hungary",
"Hmong": "Tiếng Hmong",
"Hungarian": "Tiếng Hungary",
"Icelandic": "Tiếng Iceland",
"Igbo": "Igbo",
"Igbo": "Tiếng Igbo",
"Indonesian": "Tiếng Indonesia",
"Irish": "Tiếng Ailen",
"Irish": "Tiếng Ireland",
"Italian": "Tiếng Ý",
"Japanese": "Tiếng Nhật",
"Javanese": "Tiếng Java",
@ -237,37 +237,37 @@
"Malagasy": "Tiếng Malagasy",
"Malay": "Tiếng Mã Lai",
"Malayalam": "Tiếng Malayalam",
"Maltese": "Cây nho",
"Maltese": "Tiếng Malta",
"Maori": "Tiếng Maori",
"Marathi": "Marathi",
"Marathi": "Tiếng Marathi",
"Mongolian": "Tiếng Mông Cổ",
"Nepali": "Tiếng Nepal",
"Norwegian Bokmål": "Tiếng Na Uy Bokmål",
"Nyanja": "Nyanja",
"Pashto": "Pashto",
"Norwegian Bokmål": "Tiếng Na Uy (Bokmål)",
"Nyanja": "Tiếng Chewa / Nyanja",
"Pashto": "Tiếng Pashtun",
"Persian": "Tiếng Ba Tư",
"Polish": "Đánh bóng",
"Polish": "Tiếng Ba Lan",
"Portuguese": "Tiếng Bồ Đào Nha",
"Punjabi": "Punjabi",
"Punjabi": "Tiếng Punjab",
"Romanian": "Tiếng Rumani",
"Russian": "Tiếng Nga",
"Samoan": "Samoan",
"Scottish Gaelic": "Tiếng Gaelic Scotland",
"Samoan": "Tiếng Samoa",
"Scottish Gaelic": "Tiếng Gaelic (Scotland)",
"Serbian": "Tiếng Serbia",
"Shona": "Shona",
"Sindhi": "Sindhi",
"Sinhala": "Sinhala",
"Shona": "Tiếng Shona",
"Sindhi": "Tiếng Sindh",
"Sinhala": "Tiếng Sinhala",
"Slovak": "Tiếng Slovak",
"Slovenian": "Tiếng Slovenia",
"Somali": "Tiếng Somali",
"Southern Sotho": "Southern Sotho",
"Spanish": "Người Tây Ban Nha",
"Spanish": "Tiếng Tây Ban Nha",
"Spanish (Latin America)": "Tiếng Tây Ban Nha (Mỹ Latinh)",
"Sundanese": "Tiếng Sundan",
"Swahili": "Tiếng Swahili",
"Swedish": "Tiếng Thụy Điển",
"Tajik": "Tajik",
"Tamil": "Tamil",
"Tajik": "Tiếng Tajik",
"Tamil": "Tiếng Tamil",
"Telugu": "Tiếng Telugu",
"Thai": "Tiếng Thái",
"Turkish": "Tiếng Thổ Nhĩ Kỳ",
@ -275,17 +275,17 @@
"Urdu": "Tiếng Urdu",
"Uzbek": "Tiếng Uzbek",
"Vietnamese": "Tiếng Việt",
"Welsh": "Người xứ Wales",
"Western Frisian": "Western Frisian",
"Xhosa": "Xhosa",
"Yiddish": "Yiddish",
"Yoruba": "Yoruba",
"Welsh": "Tiếng Wales",
"Western Frisian": "Tiếng Tây Frisia",
"Xhosa": "Tiếng Nam Phi",
"Yiddish": "Tiếng Yiddish",
"Yoruba": "Tiếng Yoruba",
"Zulu": "Tiếng Zulu",
"Fallback comments: ": "Nhận xét dự phòng: ",
"Popular": "Phổ biến",
"Search": "Tìm kiếm",
"Top": "Hàng đầu",
"About": "Trong khoảng",
"About": "Giới thiệu",
"Rating: ": "Xếp hạng: ",
"preferences_locale_label": "Ngôn ngữ: ",
"View as playlist": "Xem dưới dạng danh sách phát",
@ -295,45 +295,45 @@
"News": "Tin tức",
"Movies": "Phim",
"Download": "Tải xuống",
"Download as: ": "Tải tệp dưới dạng: ",
"Download as: ": "Tải xuống dưới dạng: ",
"%A %B %-d, %Y": "% A% B% -d,% Y",
"(edited)": "(đã chỉnh sửa)",
"YouTube comment permalink": "Liên kết cố định nhận xét trên YouTube",
"permalink": "liên kết cố định",
"`x` marked it with a ❤": "` x` đã đánh dấu nó bằng một ❤",
"Audio mode": "Chế độ âm thanh",
"Video mode": "Chế độ quay",
"Audio mode": "Chế độ audio",
"Video mode": "Chế độ video",
"channel_tab_videos_label": "Video",
"Playlists": "Danh sách phát",
"channel_tab_community_label": "Cộng đồng",
"search_filters_sort_option_relevance": "liên quan",
"search_filters_sort_option_relevance": "Liên quan",
"search_filters_sort_option_rating": "Xếp hạng",
"search_filters_sort_option_date": "ngày",
"search_filters_sort_option_views": "lượt xem",
"search_filters_type_label": "content_type",
"search_filters_duration_label": "thời lượng",
"search_filters_features_label": "đặc trưng",
"search_filters_sort_label": "sắp xếp",
"search_filters_date_option_hour": "giờ",
"search_filters_date_option_today": "hôm nay",
"search_filters_date_option_week": "tuần",
"search_filters_date_option_month": "tháng",
"search_filters_date_option_year": "năm",
"search_filters_sort_option_date": "Ngày tải lên",
"search_filters_sort_option_views": "Lượt xem",
"search_filters_type_label": "Thể loại",
"search_filters_duration_label": "Thời lượng",
"search_filters_features_label": "Đặc điểm",
"search_filters_sort_label": "Sắp xếp theo",
"search_filters_date_option_hour": "Một giờ qua",
"search_filters_date_option_today": "Hôm nay",
"search_filters_date_option_week": "Tuần này",
"search_filters_date_option_month": "Tháng này",
"search_filters_date_option_year": "Năm này",
"search_filters_type_option_video": "video",
"search_filters_type_option_channel": "kênh",
"search_filters_type_option_playlist": "danh sách phát",
"search_filters_type_option_movie": "bộ phim",
"search_filters_type_option_show": "chỉ",
"search_filters_features_option_hd": "hd",
"search_filters_features_option_subtitles": "phụ đề",
"search_filters_features_option_c_commons": "Commons sáng tạo",
"search_filters_features_option_three_d": "3d",
"search_filters_features_option_live": "trực tiếp",
"search_filters_features_option_four_k": "4k",
"search_filters_features_option_location": "vị trí",
"search_filters_features_option_hdr": "hdr",
"search_filters_type_option_channel": "Kênh",
"search_filters_type_option_playlist": "Danh sách phát",
"search_filters_type_option_movie": "Phim",
"search_filters_type_option_show": "Hiện",
"search_filters_features_option_hd": "HD",
"search_filters_features_option_subtitles": "Phụ đề",
"search_filters_features_option_c_commons": "Giấy phép Creative Commons",
"search_filters_features_option_three_d": "3D",
"search_filters_features_option_live": "Trực tiếp",
"search_filters_features_option_four_k": "4K",
"search_filters_features_option_location": "Vị trí",
"search_filters_features_option_hdr": "HDR",
"Current version: ": "Phiên bản hiện tại: ",
"search_filters_title": "bộ lọc",
"search_filters_title": "Bộ lọc",
"generic_playlists_count": "{{count}} danh sách phát",
"generic_views_count": "{{count}} lượt xem",
"View `x` comments": {
@ -350,31 +350,31 @@
"preferences_quality_dash_label": "Chất lượng video DASH ưa thích ",
"preferences_quality_dash_option_auto": "Tự động",
"Subscriptions": "Thuê bao",
"View YouTube comments": "Hiển thị bình luận trên YouTube",
"View YouTube comments": "Hiển thị bình luận t YouTube",
"View more comments on Reddit": "Hiển thị thêm bình luận từ Reddit",
"Music in this video": "Nhạc trong video này",
"Artist: ": "Nghệ sĩ: ",
"Premieres `x`": "Phát lần đầu `x`",
"preferences_region_label": "Nội dung theo quốc gia ",
"search_message_change_filters_or_query": "Thử mở rộng nội dung tìm kiếm hoặc thay đổi bộ lọc.",
"preferences_quality_option_small": "Nhỏ",
"preferences_quality_option_small": "Thấp",
"preferences_quality_dash_option_144p": "144p",
"invidious": "Invidious",
"preferences_quality_dash_option_240p": "240p",
"Import/export": "Xuất/nhập dữ liệu",
"preferences_quality_dash_option_4320p": "4320p",
"Import/export": "Nhập/Xuất",
"preferences_quality_dash_option_4320p": "4320p (8K)",
"preferences_quality_option_dash": "DASH (tự tối ưu chất lượng)",
"generic_subscriptions_count_0": "{{count}} người đăng kí",
"preferences_quality_dash_option_1440p": "1440p",
"preferences_quality_dash_option_1440p": "1440p (2K)",
"preferences_quality_dash_option_480p": "480p",
"preferences_quality_dash_option_2160p": "2160p",
"preferences_quality_dash_option_2160p": "2160p (4K)",
"search_message_no_results": "Tìm kiếm không có kết quả.",
"preferences_quality_dash_option_1080p": "1080p",
"preferences_quality_dash_option_720p": "720p",
"preferences_quality_option_medium": "Trung bình",
"Load more": "Hiển thị thêm",
"Load more": "Tải thêm",
"comments_points_count_0": "{{count}} điểm",
"Import YouTube playlist (.csv)": "Nhập danh sách phát YouTube (.csv)",
"Import YouTube playlist (.csv)": "Nhập các danh sách phát từ YouTube (.csv)",
"preferences_quality_dash_option_best": "Tốt nhất",
"preferences_quality_dash_option_360p": "360p",
"subscriptions_unseen_notifs_count_0": "{{count}} thông báo chưa đọc",
@ -382,10 +382,93 @@
"search_message_use_another_instance": " Bạn cũng có thể tìm kiếm <a href=\"`x`\"> ở một phiên bản khác</a>.",
"Standard YouTube license": "Giấy phép YouTube thông thường",
"Album: ": "Album: ",
"preferences_save_player_pos_label": "Lưu vị trí xem cuối cùng ",
"preferences_save_player_pos_label": "Lưu vị trí xem: ",
"Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Xin chào! Có vẻ như bạn đã tắt JavaScript. Bấm vào đây để xem bình luận, lưu ý rằng thời gian tải có thể lâu hơn.",
"Chinese (China)": "Tiếng Trung (Trung Quốc)",
"generic_button_cancel": "Hủy",
"Chinese": "Tiếng Trung",
"generic_button_delete": "Xóa"
"generic_button_delete": "Xóa",
"Korean (auto-generated)": "Tiếng Hàn (được tạo tự động)",
"search_filters_features_option_three_sixty": "360°",
"channel_tab_podcasts_label": "Podcast",
"Spanish (Mexico)": "Tiếng Tây Ban Nha (Mexico)",
"search_filters_apply_button": "Áp dụng các mục đã chọn",
"Download is disabled": "Tải xuống đã bị vô hiệu hóa.",
"next_steps_error_message_go_to_youtube": "Đi đến YouTube",
"German (auto-generated)": "Tiếng Đức (được tạo tự động)",
"Japanese (auto-generated)": "Tiếng Nhật (được tạo tự động)",
"footer_donate_page": "Ủng hộ",
"crash_page_before_reporting": "Trước khi báo cáo lỗi, hãy chắc chắn rằng bạn đã:",
"Channel Sponsor": "Nhà tài trợ của kênh",
"videoinfo_started_streaming_x_ago": "Đã bắt đầu phát sóng `x` trước",
"videoinfo_youTube_embed_link": "Nhúng",
"channel_tab_streams_label": "Phát trực tiếp",
"playlist_button_add_items": "Thêm video",
"generic_count_minutes_0": "{{count}} phút",
"user_saved_playlists": "`x` danh sách phát đã lưu",
"Spanish (Spain)": "Tiếng Tây Ban Nha (Tây Ban Nha)",
"crash_page_refresh": "Đã thử <a href=\"`x`\">tải lại trang</a>",
"Chinese (Hong Kong)": "Tiếng Trung (Hồng Kông)",
"generic_count_months_0": "{{count}} tháng",
"download_subtitles": "Phụ đề - `x` (.vtt)",
"generic_button_save": "Lưu",
"crash_page_search_issue": "Tìm <a href=\"`x`\">lỗi có sẵn trên GitHub</a>",
"none": "không",
"English (United States)": "Tiếng Anh (Mỹ)",
"next_steps_error_message_refresh": "Tải lại",
"Video unavailable": "Video không có sẵn",
"footer_source_code": "Mã nguồn",
"search_filters_duration_option_short": "Ngắn (< 4 phút)",
"search_filters_duration_option_long": "Dài (> 20 phút)",
"tokens_count_0": "{{count}} mã thông báo",
"Italian (auto-generated)": "Tiếng Ý (được tạo tự động)",
"channel_tab_shorts_label": "Shorts",
"channel_tab_releases_label": "Mới tải lên",
"`x` ago": "`x` trước",
"Interlingue": "Tiếng Khoa học Quốc tế",
"generic_channels_count_0": "{{count}} kênh",
"Chinese (Taiwan)": "Tiếng Trung (Đài Loan)",
"adminprefs_modified_source_code_url_label": "URL tới kho lưu trữ mã nguồn đã sửa đổi",
"Turkish (auto-generated)": "Tiếng Thổ Nhĩ Kỳ (được tạo tự động)",
"Indonesian (auto-generated)": "Tiếng Indonesia (được tạo tự động)",
"Portuguese (auto-generated)": "Tiếng Bồ Đào Nha (được tạo tự động)",
"generic_count_years_0": "{{count}} năm",
"videoinfo_invidious_embed_link": "Liên kết nhúng",
"Popular enabled: ": "Đã bật phổ biến: ",
"Spanish (auto-generated)": "Tiếng Tây Ban Nha (được tạo tự động)",
"English (United Kingdom)": "Tiếng Anh Anh",
"channel_tab_playlists_label": "Danh sách phát",
"generic_button_edit": "Sửa",
"search_filters_features_option_purchased": "Đã mua",
"search_filters_date_option_none": "Mọi thời điểm",
"Cantonese (Hong Kong)": "Tiếng Quảng Châu (Hồng Kông)",
"crash_page_report_issue": "Nếu các điều trên không giúp được, xin hãy <a href=\"`x`\">tạo vấn đề mới trên GitHub</a> (ưu tiên tiếng Anh) và đính kèm đoạn chữ sau trong nội dung (giữ nguyên KHÔNG dịch):",
"crash_page_switch_instance": "Đã thử <a href=\"`x`\">dùng một phiên bản khác</a>",
"generic_count_weeks_0": "{{count}} tuần",
"videoinfo_watch_on_youTube": "Xem trên YouTube",
"footer_modfied_source_code": "Mã nguồn đã chỉnh sửa",
"generic_button_rss": "RSS",
"generic_count_hours_0": "{{count}} giờ",
"French (auto-generated)": "Tiếng Pháp (được tạo tự động)",
"crash_page_read_the_faq": "Đọc <a href=\"`x`\">Hỏi đáp thường gặp (FAQ)</a>",
"user_created_playlists": "`x` danh sách phát đã tạo",
"channel_tab_channels_label": "Kênh",
"search_filters_type_option_all": "Mọi thể loại",
"Russian (auto-generated)": "Tiếng Nga (được tạo tự động)",
"comments_view_x_replies_0": "Xem {{count}} lượt trả lời",
"footer_original_source_code": "Mã nguồn gốc",
"Portuguese (Brazil)": "Tiếng Bồ Đào Nha (Brazil)",
"search_filters_features_option_vr180": "VR180",
"error_video_not_in_playlist": "Video không tồn tại trong danh sách phát. <a href=\"`x`\">Bấm để trở về trang chủ của danh sách phát.</a>",
"Dutch (auto-generated)": "Tiếng Hà Lan (được tạo tự động)",
"generic_count_days_0": "{{count}} ngày",
"Vietnamese (auto-generated)": "Tiếng Việt (được tạo tự động)",
"search_filters_duration_option_none": "Mọi thời lượng",
"footer_documentation": "Tài liệu",
"next_steps_error_message": "Bạn có thể thử: ",
"Import YouTube watch history (.json)": "Nhập lịch sử xem từ YouTube (.json)",
"search_filters_duration_option_medium": "Trung bình (4 - 20 phút)",
"generic_count_seconds_0": "{{count}} giây",
"search_filters_date_label": "Ngày tải lên",
"crash_page_you_found_a_bug": "Có vẻ như bạn đã tìm ra lỗi trong Indivious!"
}

ファイルの表示

@ -470,5 +470,6 @@
"generic_button_save": "保存",
"generic_button_rss": "RSS",
"channel_tab_releases_label": "公告",
"generic_channels_count_0": "{{count}} 个频道"
"generic_channels_count_0": "{{count}} 个频道",
"toggle_theme": "切换主题"
}

ファイルの表示

@ -470,5 +470,6 @@
"playlist_button_add_items": "新增影片",
"channel_tab_podcasts_label": "Podcast",
"channel_tab_releases_label": "發布",
"generic_channels_count_0": "{{count}} 個頻道"
"generic_channels_count_0": "{{count}} 個頻道",
"toggle_theme": "切換佈景主題"
}

ファイルの表示

@ -1,34 +1,27 @@
require "../../spec_helper.cr"
MockLines = [
{
"start_time": Time::Span.new(seconds: 1),
"end_time": Time::Span.new(seconds: 2),
"text": "Line 1",
},
{
"start_time": Time::Span.new(seconds: 2),
"end_time": Time::Span.new(seconds: 3),
"text": "Line 2",
},
]
MockLines = ["Line 1", "Line 2"]
MockLinesWithEscapableCharacter = ["<Line 1>", "&Line 2>", '\u200E' + "Line\u200F 3", "\u00A0Line 4"]
Spectator.describe "WebVTT::Builder" do
it "correctly builds a vtt file" do
result = WebVTT.build do |vtt|
MockLines.each do |line|
vtt.cue(line["start_time"], line["end_time"], line["text"])
2.times do |i|
vtt.cue(
Time::Span.new(seconds: i),
Time::Span.new(seconds: i + 1),
MockLines[i]
)
end
end
expect(result).to eq([
"WEBVTT",
"",
"00:00:01.000 --> 00:00:02.000",
"00:00:00.000 --> 00:00:01.000",
"Line 1",
"",
"00:00:02.000 --> 00:00:03.000",
"00:00:01.000 --> 00:00:02.000",
"Line 2",
"",
"",
@ -42,8 +35,12 @@ Spectator.describe "WebVTT::Builder" do
}
result = WebVTT.build(setting_fields) do |vtt|
MockLines.each do |line|
vtt.cue(line["start_time"], line["end_time"], line["text"])
2.times do |i|
vtt.cue(
Time::Span.new(seconds: i),
Time::Span.new(seconds: i + 1),
MockLines[i]
)
end
end
@ -52,13 +49,39 @@ Spectator.describe "WebVTT::Builder" do
"Kind: captions",
"Language: en",
"",
"00:00:01.000 --> 00:00:02.000",
"00:00:00.000 --> 00:00:01.000",
"Line 1",
"",
"00:00:02.000 --> 00:00:03.000",
"00:00:01.000 --> 00:00:02.000",
"Line 2",
"",
"",
].join('\n'))
end
it "properly escapes characters" do
result = WebVTT.build do |vtt|
4.times do |i|
vtt.cue(Time::Span.new(seconds: i), Time::Span.new(seconds: i + 1), MockLinesWithEscapableCharacter[i])
end
end
expect(result).to eq([
"WEBVTT",
"",
"00:00:00.000 --> 00:00:01.000",
"&lt;Line 1&gt;",
"",
"00:00:01.000 --> 00:00:02.000",
"&amp;Line 2&gt;",
"",
"00:00:02.000 --> 00:00:03.000",
"&lrm;Line&rlm; 3",
"",
"00:00:03.000 --> 00:00:04.000",
"&nbsp;Line 4",
"",
"",
].join('\n'))
end
end

ファイルの表示

@ -17,7 +17,7 @@ FORM_TESTS = {
"cy" => I18next::Plurals::PluralForms::Special_Welsh,
"fr" => I18next::Plurals::PluralForms::Special_French_Portuguese,
"en" => I18next::Plurals::PluralForms::Single_not_one,
"es" => I18next::Plurals::PluralForms::Single_not_one,
"es" => I18next::Plurals::PluralForms::Special_Spanish_Italian,
"ga" => I18next::Plurals::PluralForms::Special_Irish,
"gd" => I18next::Plurals::PluralForms::Special_Scottish_Gaelic,
"he" => I18next::Plurals::PluralForms::Special_Hebrew,
@ -33,7 +33,8 @@ FORM_TESTS = {
"mt" => I18next::Plurals::PluralForms::Special_Maltese,
"or" => I18next::Plurals::PluralForms::Special_Odia,
"pl" => I18next::Plurals::PluralForms::Special_Polish_Kashubian,
"pt" => I18next::Plurals::PluralForms::Single_gt_one,
"pt" => I18next::Plurals::PluralForms::Special_French_Portuguese,
"pt-PT" => I18next::Plurals::PluralForms::Single_gt_one,
"pt-BR" => I18next::Plurals::PluralForms::Special_French_Portuguese,
"ro" => I18next::Plurals::PluralForms::Special_Romanian,
"sk" => I18next::Plurals::PluralForms::Special_Czech_Slovak,
@ -77,10 +78,10 @@ SUFFIX_TESTS = {
{num: 10, suffix: "_plural"},
],
"es" => [
{num: 0, suffix: "_plural"},
{num: 1, suffix: ""},
{num: 10, suffix: "_plural"},
{num: 6_000_000, suffix: "_plural"},
{num: 0, suffix: "_2"},
{num: 1, suffix: "_0"},
{num: 10, suffix: "_2"},
{num: 6_000_000, suffix: "_1"},
],
"fr" => [
{num: 0, suffix: "_0"},

ファイルの表示

@ -217,6 +217,7 @@ public_folder "assets"
Kemal.config.powered_by_header = false
add_handler FilteredCompressHandler.new
add_handler APIHandler.new
add_handler AuthHandler.new
add_handler DenyFrame.new
add_context_storage_type(Array(String))

ファイルの表示

@ -33,7 +33,7 @@ module Invidious::Frontend::Comments
<a href="javascript:void(0)" data-onclick="toggle_parent">[ ]</a>
<b><a href="https://www.reddit.com/user/#{child.author}">#{child.author}</a></b>
#{translate_count(locale, "comments_points_count", child.score, NumberFormatting::Separator)}
<span title="#{child.created_utc.to_s(translate(locale, "%a %B %-d %T %Y UTC"))}">#{translate(locale, "`x` ago", recode_date(child.created_utc, locale))}</span>
<span title="#{child.created_utc.to_s("%a %B %-d %T %Y UTC")}">#{translate(locale, "`x` ago", recode_date(child.created_utc, locale))}</span>
<a href="https://www.reddit.com#{child.permalink}" title="#{translate(locale, "permalink")}">#{translate(locale, "permalink")}</a>
</p>
<div>

ファイルの表示

@ -107,6 +107,36 @@ module Invidious::Frontend::Comments
</div>
END_HTML
end
when "multiImage"
html << <<-END_HTML
<section class="carousel">
<a class="skip-link" href="#skip-#{child["commentId"]}">#{translate(locale, "carousel_skip")}</a>
<div class="slides">
END_HTML
image_array = attachment["images"].as_a
image_array.each_index do |i|
html << <<-END_HTML
<div class="slides-item slide-#{i + 1}" id="#{child["commentId"]}-slide-#{i + 1}" aria-label="#{translate(locale, "carousel_slide", {"current" => (i + 1).to_s, "total" => image_array.size.to_s})}" tabindex="0">
<img loading="lazy" src="/ggpht#{URI.parse(image_array[i][1]["url"].as_s).request_target}" alt="" />
</div>
END_HTML
end
html << <<-END_HTML
</div>
<div class="carousel__nav">
END_HTML
attachment["images"].as_a.each_index do |i|
html << <<-END_HTML
<a class="slider-nav" href="##{child["commentId"]}-slide-#{i + 1}" aria-label="#{translate(locale, "carousel_go_to", (i + 1).to_s)}" tabindex="-1" aria-hidden="true">#{i + 1}</a>
END_HTML
end
html << <<-END_HTML
</div>
<div id="skip-#{child["commentId"]}"></div>
</section>
END_HTML
else nil # Ignore
end
end

ファイルの表示

@ -134,6 +134,19 @@ class AuthHandler < Kemal::Handler
end
end
class APIHandler < Kemal::Handler
{% for method in %w(GET POST PUT HEAD DELETE PATCH OPTIONS) %}
only ["/api/v1/*"], {{method}}
{% end %}
exclude ["/api/v1/auth/notifications"], "GET"
exclude ["/api/v1/auth/notifications"], "POST"
def call(env)
env.response.headers["Access-Control-Allow-Origin"] = "*" if only_match?(env)
call_next env
end
end
class DenyFrame < Kemal::Handler
exclude ["/embed/*"]

ファイルの表示

@ -78,7 +78,7 @@ def load_all_locales
return locales
end
def translate(locale : String?, key : String, text : String | Nil = nil) : String
def translate(locale : String?, key : String, text : String | Hash(String, String) | Nil = nil) : String
# Log a warning if "key" doesn't exist in en-US locale and return
# that key as the text, so this is more or less transparent to the user.
if !LOCALES["en-US"].has_key?(key)
@ -101,10 +101,12 @@ def translate(locale : String?, key : String, text : String | Nil = nil) : Strin
match_length = 0
raw_data.as_h.each do |hash_key, value|
if md = text.try &.match(/#{hash_key}/)
if md[0].size >= match_length
translation = value.as_s
match_length = md[0].size
if text.is_a?(String)
if md = text.try &.match(/#{hash_key}/)
if md[0].size >= match_length
translation = value.as_s
match_length = md[0].size
end
end
end
end
@ -114,8 +116,13 @@ def translate(locale : String?, key : String, text : String | Nil = nil) : Strin
raise "Invalid translation \"#{raw_data}\""
end
if text
if text.is_a?(String)
translation = translation.gsub("`x`", text)
elsif text.is_a?(Hash(String, String))
# adds support for multi string interpolation. Based on i18next https://www.i18next.com/translation-function/interpolation#basic
text.each_key do |hash_key|
translation = translation.gsub("{{#{hash_key}}}", text[hash_key])
end
end
return translation

ファイルの表示

@ -47,19 +47,19 @@ module I18next::Plurals
private PLURAL_SETS = {
PluralForms::Single_gt_one => [
"ach", "ak", "am", "arn", "br", "fil", "gun", "ln", "mfe", "mg",
"mi", "oc", "pt", "tg", "tl", "ti", "tr", "uz", "wa",
"ach", "ak", "am", "arn", "br", "fa", "fil", "gun", "ln", "mfe", "mg",
"mi", "oc", "pt-PT", "tg", "tl", "ti", "tr", "uz", "wa",
],
PluralForms::Single_not_one => [
"af", "an", "ast", "az", "bg", "bn", "ca", "da", "de", "dev", "el", "en",
"eo", "es", "et", "eu", "fi", "fo", "fur", "fy", "gl", "gu", "ha", "hi",
"eo", "et", "eu", "fi", "fo", "fur", "fy", "gl", "gu", "ha", "hi",
"hu", "hy", "ia", "kk", "kn", "ku", "lb", "mai", "ml", "mn", "mr",
"nah", "nap", "nb", "ne", "nl", "nn", "no", "nso", "pa", "pap", "pms",
"ps", "rm", "sco", "se", "si", "so", "son", "sq", "sv", "sw",
"ta", "te", "tk", "ur", "yo",
],
PluralForms::None => [
"ay", "bo", "cgg", "fa", "ht", "id", "ja", "jbo", "ka", "km", "ko", "ky",
"ay", "bo", "cgg", "ht", "id", "ja", "jbo", "ka", "km", "ko", "ky",
"lo", "ms", "sah", "su", "th", "tt", "ug", "vi", "wo", "zh",
],
PluralForms::Dual_Slavic => [
@ -90,11 +90,13 @@ module I18next::Plurals
"sk" => PluralForms::Special_Czech_Slovak,
"sl" => PluralForms::Special_Slovenian,
# Mixed v3/v4 rules
"fr" => PluralForms::Special_French_Portuguese,
"hr" => PluralForms::Special_Hungarian_Serbian,
"it" => PluralForms::Special_Spanish_Italian,
"pt-BR" => PluralForms::Special_French_Portuguese,
"sr" => PluralForms::Special_Hungarian_Serbian,
"es" => PluralForms::Special_Spanish_Italian,
"fr" => PluralForms::Special_French_Portuguese,
"hr" => PluralForms::Special_Hungarian_Serbian,
"it" => PluralForms::Special_Spanish_Italian,
"pt" => PluralForms::Special_French_Portuguese,
"pt" => PluralForms::Special_French_Portuguese,
"sr" => PluralForms::Special_Hungarian_Serbian,
}
# These are the v1 and v2 compatible suffixes.
@ -165,7 +167,7 @@ module I18next::Plurals
def get_plural_form(locale : String) : PluralForms
# Extract the ISO 639-1 or 639-2 code from an RFC 5646 language code
if !locale.matches?(/^pt-BR$/)
if !locale.matches?(/^pt-PT$/)
locale = locale.split('-')[0]
end

ファイルの表示

@ -4,13 +4,23 @@
module WebVTT
# A WebVTT builder generates WebVTT files
private class Builder
# See https://developer.mozilla.org/en-US/docs/Web/API/WebVTT_API#cue_payload
private ESCAPE_SUBSTITUTIONS = {
'&' => "&amp;",
'<' => "&lt;",
'>' => "&gt;",
'\u200E' => "&lrm;",
'\u200F' => "&rlm;",
'\u00A0' => "&nbsp;",
}
def initialize(@io : IO)
end
# Writes an vtt cue with the specified time stamp and contents
def cue(start_time : Time::Span, end_time : Time::Span, text : String)
timestamp(start_time, end_time)
@io << text
@io << self.escape(text)
@io << "\n\n"
end
@ -29,6 +39,10 @@ module WebVTT
@io << '.' << timestamp.milliseconds.to_s.rjust(3, '0')
end
private def escape(text : String) : String
return text.gsub(ESCAPE_SUBSTITUTIONS)
end
def document(setting_fields : Hash(String, String)? = nil, &)
@io << "WEBVTT\n"

ファイルの表示

@ -22,6 +22,7 @@
<link rel="stylesheet" href="/css/ionicons.min.css?v=<%= ASSET_COMMIT %>">
<link rel="stylesheet" href="/css/default.css?v=<%= ASSET_COMMIT %>">
<link rel="stylesheet" href="/css/keromod.css?v=<%= ASSET_COMMIT %>">
<link rel="stylesheet" href="/css/carousel.css?v=<%= ASSET_COMMIT %>">
<script src="/js/_helpers.js?v=<%= ASSET_COMMIT %>"></script>
</head>
@ -32,7 +33,6 @@
<body class="dark-theme">
<span style="display:none" id="dark_mode_pref">dark</span>
<div class="pure-g">
<div class="pure-u-1 pure-u-md-2-24"></div>
<div class="pure-u-1 pure-u-md-20-24 bgcon" id="contents">
<div class="pure-g navbar h-box bgippan bgnav">
<% if navbar_search %>
@ -146,7 +146,6 @@
</footer>
</div>
<div class="pure-u-1 pure-u-md-2-24"></div>
</div>
<script src="/js/handlers.js?v=<%= ASSET_COMMIT %>"></script>
<script src="/js/themes.js?v=<%= ASSET_COMMIT %>"></script>