summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--assets/css/default.css62
-rw-r--r--assets/css/empty.css16
-rw-r--r--docker/Dockerfile1
-rw-r--r--locales/ar.json118
-rw-r--r--locales/bn_BD.json6
-rw-r--r--locales/cs.json6
-rw-r--r--locales/da.json253
-rw-r--r--locales/de.json118
-rw-r--r--locales/el.json133
-rw-r--r--locales/en-US.json6
-rw-r--r--locales/eo.json118
-rw-r--r--locales/es.json118
-rw-r--r--locales/eu.json4
-rw-r--r--locales/fa.json135
-rw-r--r--locales/fi.json135
-rw-r--r--locales/fr.json120
-rw-r--r--locales/he.json72
-rw-r--r--locales/hr.json33
-rw-r--r--locales/hu-HU.json6
-rw-r--r--locales/id.json113
-rw-r--r--locales/is.json137
-rw-r--r--locales/it.json133
-rw-r--r--locales/ja.json33
-rw-r--r--locales/nb-NO.json118
-rw-r--r--locales/nl.json119
-rw-r--r--locales/pl.json118
-rw-r--r--locales/pt-BR.json118
-rw-r--r--locales/pt-PT.json135
-rw-r--r--locales/ro.json118
-rw-r--r--locales/ru.json118
-rw-r--r--locales/si.json6
-rw-r--r--locales/sk.json6
-rw-r--r--locales/sr.json6
-rw-r--r--locales/sr_Cyrl.json6
-rw-r--r--locales/sv-SE.json118
-rw-r--r--locales/tr.json170
-rw-r--r--locales/uk.json118
-rw-r--r--locales/zh-CN.json118
-rw-r--r--locales/zh-TW.json133
-rw-r--r--spec/locales_spec.cr29
-rw-r--r--src/invidious.cr45
-rw-r--r--src/invidious/helpers/helpers.cr4
-rw-r--r--src/invidious/helpers/i18n.cr30
-rw-r--r--src/invidious/helpers/macros.cr3
-rw-r--r--src/invidious/helpers/utils.cr18
-rw-r--r--src/invidious/jobs/statistics_refresh_job.cr2
-rw-r--r--src/invidious/playlists.cr3
-rw-r--r--src/invidious/routes/misc.cr2
-rw-r--r--src/invidious/routes/watch.cr9
-rw-r--r--src/invidious/users.cr1
-rw-r--r--src/invidious/videos.cr26
-rw-r--r--src/invidious/views/empty.ecr8
-rw-r--r--src/invidious/views/preferences.ecr10
-rw-r--r--src/invidious/views/search_homepage.ecr24
-rw-r--r--src/invidious/views/template.ecr29
-rw-r--r--src/invidious/views/watch.ecr27
56 files changed, 2844 insertions, 827 deletions
diff --git a/assets/css/default.css b/assets/css/default.css
index 2552263d..b6f2d9cc 100644
--- a/assets/css/default.css
+++ b/assets/css/default.css
@@ -5,6 +5,12 @@ body {
Arial, sans-serif;
}
+#contents {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+}
+
.deleted {
background-color: rgb(255, 0, 0, 0.5);
}
@@ -172,7 +178,7 @@ img.thumbnail {
flex: 1;
}
-.navbar > .searchbar {
+.searchbar {
flex-grow: 2; /* take double the space of the other items */
}
@@ -185,7 +191,7 @@ img.thumbnail {
display: inline;
}
-.navbar > .searchbar .pure-form input[type="search"] {
+.searchbar .pure-form input[type="search"] {
margin-bottom: 1px;
border-top: 0;
@@ -210,12 +216,12 @@ input[type="search"]::-webkit-search-cancel-button {
background-size: 14px;
}
-.navbar > .searchbar .pure-form fieldset {
+.searchbar .pure-form fieldset {
padding: 0;
}
/* attract focus to the searchbar by adding a subtle transition */
-.navbar > .searchbar .pure-form input[type="search"]:focus {
+.searchbar .pure-form input[type="search"]:focus {
margin-bottom: 0px;
border-bottom: 2px solid #aaa;
}
@@ -280,14 +286,16 @@ input[type="search"]::-webkit-search-cancel-button {
* Footer
*/
-.footer {
- color: #666666;
- margin: 2em 0;
+footer {
+ color: #919191;
+ margin-top: auto;
+ padding: 1.5em 0;
text-align: center;
+ max-height: 30vh;
}
-body .footer a {
- color: inherit;
+footer a {
+ color: #919191 !important;
text-decoration: underline;
}
@@ -586,7 +594,7 @@ body.dark-theme {
color: #f0f0f0;
}
-.dark-theme .navbar > .searchbar input {
+.dark-theme .searchbar input {
background-color: inherit;
color: inherit;
}
@@ -625,7 +633,7 @@ body.dark-theme {
color: #f0f0f0;
}
- .no-theme .navbar > .searchbar input {
+ .no-theme .searchbar input {
background-color: inherit;
color: inherit;
}
@@ -654,3 +662,35 @@ body.dark-theme {
content: "[ - ]";
font-size: 1.5em;
}
+
+/*With commit d9528f5 all contents of the page is now within a flexbox. However,
+the hr element is rendered improperly within one.
+See https://stackoverflow.com/a/34372979 for more info */
+hr {
+ margin: auto 0 auto 0;
+}
+
+/* Description Expansion Styling*/
+#description-box {
+ display: flex;
+ flex-direction: column;
+}
+
+#descexpansionbutton {
+ display: none
+}
+
+#descexpansionbutton ~ div {
+ overflow: hidden;
+ height: 8.3em;
+}
+
+#descexpansionbutton:checked ~ div {
+ overflow: unset;
+ height: 100%;
+}
+
+#descexpansionbutton + label {
+ order: 1;
+ margin-top: 20px;
+}
diff --git a/assets/css/empty.css b/assets/css/empty.css
new file mode 100644
index 00000000..6ad1515d
--- /dev/null
+++ b/assets/css/empty.css
@@ -0,0 +1,16 @@
+#search-widget {
+ text-align: center;
+ margin: 20vh 0 50px 0;
+}
+
+#logo > h1 {
+ font-size: 3.5em;
+ margin: 0;
+ padding: 0;
+}
+
+@media screen and (max-width: 1500px) and (max-height: 1000px) {
+ #logo > h1 {
+ font-size: 10vmin;
+ }
+}
diff --git a/docker/Dockerfile b/docker/Dockerfile
index f7d990d7..87884403 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -25,6 +25,7 @@ RUN sed -i 's/host: \(127.0.0.1\|localhost\)/host: postgres/' config/config.yml
COPY ./config/sql/ ./config/sql/
COPY ./locales/ ./locales/
COPY --from=builder /invidious/invidious .
+RUN chmod o+rX -R ./assets ./config ./locales
EXPOSE 3000
USER invidious
diff --git a/locales/ar.json b/locales/ar.json
index 12bcc199..af49f514 100644
--- a/locales/ar.json
+++ b/locales/ar.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` المشتركين",
- "`x` videos": "`x` الفيديوهات",
- "`x` playlists": "`x` قوائم التشغيل",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` المشتركين",
+ "": "`x` المشتركين"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` الفيديوهات",
+ "": "`x` الفيديوهات"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` قوائم التشغيل",
+ "": "`x` قوائم التشغيل"
+ },
"LIVE": "مباشر",
"Shared `x` ago": "تم رفع الفيديو منذ `x`",
"Unsubscribe": "إلغاء الإشتراك",
@@ -68,6 +77,7 @@
"Fallback captions: ": "الترجمات المصاحبة: ",
"Show related videos: ": "اعرض الفيديوهات ذات الصلة: ",
"Show annotations by default: ": "اعرض الملاحظات في الفيديو تلقائيا: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "التفضيلات المرئية",
"Player style: ": "شكل مشغل الفيديوهات: ",
"Dark mode: ": "الوضع الليلى: ",
@@ -113,13 +123,22 @@
"Subscription manager": "مدير الإشتراكات",
"Token manager": "إداره الرمز",
"Token": "الرمز",
- "`x` subscriptions": "`x` مشتركين",
- "`x` tokens": "`x` رموز",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` مشتركين",
+ "": "`x` مشتركين"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` رموز",
+ "": "`x` رموز"
+ },
"Import/export": "إضافة\\إستخراج",
"unsubscribe": "إلغاء الإشتراك",
"revoke": "مسح",
"Subscriptions": "الإشتراكات",
- "`x` unseen notifications": "`x` إشعارات لم تشاهدها بعد",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` إشعارات لم تشاهدها بعد",
+ "": "`x` إشعارات لم تشاهدها بعد"
+ },
"search": "بحث",
"Log out": "تسجيل الخروج",
"Released under the AGPLv3 by Omar Roth.": "تم الإنشاء تحت AGPLv3 بواسطة عمر روث.",
@@ -138,6 +157,8 @@
"Title": "العنوان",
"Playlist privacy": "إعدادات الخصوصيه",
"Editing playlist `x`": "تعديل قائمه التشفيل `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "مشاهدة الفيديو على اليوتيوب",
"Hide annotations": "إخفاء الملاحظات فى الفيديو",
"Show annotations": "عرض الملاحظات فى الفيديو",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "الدول المسموح فيها هذا الفيديو: ",
"Blacklisted regions: ": "الدول الحظور فيها هذا الفيديو: ",
"Shared `x`": "شارك منذ `x`",
- "`x` views": "`x` مشاهدات",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` مشاهدات",
+ "": "`x` مشاهدات"
+ },
"Premieres in `x`": "يعرض فى `x`",
"Premieres `x`": "يعرض `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.": "اهلا! يبدو ان الجافاسكريبت معطلة. اضغط هنا لعرض التعليقات, ضع فى إعتبارك انها ستأخذ وقت اطول للعرض.",
"View YouTube comments": "عرض تعليقات اليوتيوب",
"View more comments on Reddit": "عرض المزيد من التعليقات على\\من موقع Reddit",
- "View `x` comments": "عرض `x` تعليقات",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "عرض `x` تعليقات",
+ "": "عرض `x` تعليقات"
+ },
"View Reddit comments": "عرض تعليقات ريدإت Reddit",
"Hide replies": "إخفاء الردود",
"Show replies": "عرض الردود",
@@ -180,10 +207,16 @@
"This channel does not exist.": "القناة غير موجودة.",
"Could not get channel info.": "لم يستطع الحصول على معلومات القناة.",
"Could not fetch comments": "لم يتمكن من إحضار التعليقات",
- "View `x` replies": "عرض `x` ردود",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "عرض `x` ردود",
+ "": "عرض `x` ردود"
+ },
"`x` ago": "`x` منذ",
"Load more": "عرض المزيد",
- "`x` points": "`x` نقاط",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` نقاط",
+ "": "`x` نقاط"
+ },
"Could not create mix.": "لم يستطع عمل خلط.",
"Empty playlist": "قائمة التشغيل فارغة",
"Not a playlist.": "قائمة التشغيل غير صالحة.",
@@ -301,15 +334,37 @@
"Yiddish": "اليديشية",
"Yoruba": "اليوروبا",
"Zulu": "الزولو",
- "`x` years": "`x` سنوات",
- "`x` months": "`x` شهور",
- "`x` weeks": "`x` اسابيع",
- "`x` days": "`x` ايام",
- "`x` hours": "`x` ساعات",
- "`x` minutes": "`x` دقائق",
- "`x` seconds": "`x` ثوانى",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` سنوات",
+ "": "`x` سنوات"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` شهور",
+ "": "`x` شهور"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` اسابيع",
+ "": "`x` اسابيع"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ايام",
+ "": "`x` ايام"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ساعات",
+ "": "`x` ساعات"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` دقائق",
+ "": "`x` دقائق"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ثوانى",
+ "": "`x` ثوانى"
+ },
"Fallback comments: ": "التعليقات البديلة: ",
"Popular": "الأكثر شعبية",
+ "Search": "",
"Top": "الأفضل",
"About": "حول",
"Rating: ": "التقييم: ",
@@ -332,5 +387,32 @@
"Videos": "الفيديوهات",
"Playlists": "قوائم التشغيل",
"Community": "المجتمع",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "الإصدار الحالي: "
-} \ No newline at end of file
+}
diff --git a/locales/bn_BD.json b/locales/bn_BD.json
index 0662a87c..b6df0470 100644
--- a/locales/bn_BD.json
+++ b/locales/bn_BD.json
@@ -71,6 +71,7 @@
"Fallback captions: ": "",
"Show related videos: ": "",
"Show annotations by default: ": "",
+ "Automatically extend video description: ": "",
"Visual preferences": "",
"Player style: ": "",
"Dark mode: ": "",
@@ -144,6 +145,8 @@
"Title": "",
"Playlist privacy": "",
"Editing playlist `x`": "",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "",
"Hide annotations": "",
"Show annotations": "",
@@ -327,6 +330,7 @@
"`x` seconds.": "",
"Fallback comments: ": "",
"Popular": "",
+ "Search": "",
"Top": "",
"About": "",
"Rating: ": "",
@@ -350,4 +354,4 @@
"Playlists": "",
"Community": "",
"Current version: ": ""
-}
+} \ No newline at end of file
diff --git a/locales/cs.json b/locales/cs.json
index ba62298c..6c37444a 100644
--- a/locales/cs.json
+++ b/locales/cs.json
@@ -77,6 +77,7 @@
"Fallback captions: ": "",
"Show related videos: ": "Zobrazit podobné videa: ",
"Show annotations by default: ": "",
+ "Automatically extend video description: ": "",
"Visual preferences": "",
"Player style: ": "Styl přehrávače ",
"Dark mode: ": "Tmavý režim ",
@@ -156,6 +157,8 @@
"Title": "",
"Playlist privacy": "",
"Editing playlist `x`": "",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "",
"Hide annotations": "",
"Show annotations": "",
@@ -361,6 +364,7 @@
},
"Fallback comments: ": "",
"Popular": "",
+ "Search": "",
"Top": "",
"About": "Informace",
"Rating: ": "Hodnocení: ",
@@ -411,4 +415,4 @@
"hdr": "HDR",
"filter": "filtr",
"Current version: ": ""
-}
+} \ No newline at end of file
diff --git a/locales/da.json b/locales/da.json
index ac60862c..0962524b 100644
--- a/locales/da.json
+++ b/locales/da.json
@@ -13,7 +13,7 @@
},
"LIVE": "DIREKTE",
"Shared `x` ago": "Delt for `x` siden",
- "Unsubscribe": "",
+ "Unsubscribe": "Opsig abonnement",
"Subscribe": "Abonner",
"View channel on YouTube": "Vis kanal på YouTube",
"View playlist on YouTube": "Vis afspilningsliste på YouTube",
@@ -28,13 +28,13 @@
"New passwords must match": "Nye kodeord skal matche",
"Cannot change password for Google accounts": "Kan ikke skifte kodeord til Google-konti",
"Authorize token?": "Godkend token?",
- "Authorize token for `x`?": "Godkende token til `x`?",
+ "Authorize token for `x`?": "Godkend token til `x`?",
"Yes": "Ja",
"No": "Nej",
"Import and Export Data": "Importer og Eksporter Data",
"Import": "Importer",
"Import Invidious data": "Importer Invidious data",
- "Import YouTube subscriptions": "Importer Youtube abonnementer",
+ "Import YouTube subscriptions": "Importer YouTube abonnementer",
"Import FreeTube subscriptions (.db)": "Importer FreeTube abonnementer (.db)",
"Import NewPipe subscriptions (.json)": "Importer NewPipe abonnementer (.json)",
"Import NewPipe data (.zip)": "Importer NewPipe data (.zip)",
@@ -58,9 +58,9 @@
"Sign In": "Log ind",
"Register": "Registrer",
"E-mail": "E-mail",
- "Google verification code": "Google verifications kode",
+ "Google verification code": "Google-verifikationskode",
"Preferences": "Præferencer",
- "Player preferences": "",
+ "Player preferences": "Afspillerindstillinger",
"Always loop: ": "Altid gentag: ",
"Autoplay: ": "Auto afspil: ",
"Play next by default: ": "Afspil næste som standard: ",
@@ -74,129 +74,132 @@
"youtube": "youtube",
"reddit": "reddit",
"Default captions: ": "Standard undertekster: ",
- "Fallback captions: ": "",
- "Show related videos: ": "",
- "Show annotations by default: ": "",
- "Visual preferences": "",
- "Player style: ": "",
- "Dark mode: ": "",
- "Theme: ": "",
- "dark": "",
- "light": "",
- "Thin mode: ": "",
- "Subscription preferences": "",
- "Show annotations by default for subscribed channels: ": "",
- "Redirect homepage to feed: ": "",
- "Number of videos shown in feed: ": "",
- "Sort videos by: ": "",
- "published": "",
- "published - reverse": "",
- "alphabetically": "",
- "alphabetically - reverse": "",
- "channel name": "",
- "channel name - reverse": "",
- "Only show latest video from channel: ": "",
- "Only show latest unwatched video from channel: ": "",
- "Only show unwatched: ": "",
- "Only show notifications (if there are any): ": "",
- "Enable web notifications": "",
- "`x` uploaded a video": "",
- "`x` is live": "",
- "Data preferences": "",
- "Clear watch history": "",
- "Import/export data": "",
- "Change password": "",
- "Manage subscriptions": "",
- "Manage tokens": "",
- "Watch history": "",
- "Delete account": "",
- "Administrator preferences": "",
- "Default homepage: ": "",
- "Feed menu: ": "",
- "Top enabled: ": "",
- "CAPTCHA enabled: ": "",
- "Login enabled: ": "",
- "Registration enabled: ": "",
- "Report statistics: ": "",
- "Save preferences": "",
- "Subscription manager": "",
- "Token manager": "",
- "Token": "",
+ "Fallback captions: ": "Alternative undertekster: ",
+ "Show related videos: ": "Vis relaterede videoer: ",
+ "Show annotations by default: ": "Vis annotationer som standard: ",
+ "Automatically extend video description: ": "",
+ "Visual preferences": "Visuelle præferencer",
+ "Player style: ": "Afspiller stil: ",
+ "Dark mode: ": "Mørk tilstand: ",
+ "Theme: ": "Tema: ",
+ "dark": "mørk",
+ "light": "lys",
+ "Thin mode: ": "Tynd tilstand: ",
+ "Subscription preferences": "Abonnements præferencer",
+ "Show annotations by default for subscribed channels: ": "Vis annotationer som standard for abonnerede kanaler: ",
+ "Redirect homepage to feed: ": "Omdiriger startside til feed: ",
+ "Number of videos shown in feed: ": "Antal videoer vist i feed: ",
+ "Sort videos by: ": "Sorter videoer efter: ",
+ "published": "offentliggjort",
+ "published - reverse": "offentliggjort - omvendt",
+ "alphabetically": "alfabetisk",
+ "alphabetically - reverse": "alfabetisk - omvendt",
+ "channel name": "kanalnavn",
+ "channel name - reverse": "kanalnavn - omvendt",
+ "Only show latest video from channel: ": "Vis kun seneste video fra kanal: ",
+ "Only show latest unwatched video from channel: ": "Vis kun seneste usete video fra kanal: ",
+ "Only show unwatched: ": "Vis kun usete: ",
+ "Only show notifications (if there are any): ": "Vis kun notifikationer (hvis der er nogle): ",
+ "Enable web notifications": "Aktiver webnotifikationer",
+ "`x` uploaded a video": "`x` uploadede en video",
+ "`x` is live": "`x` er live",
+ "Data preferences": "Data præferencer",
+ "Clear watch history": "Ryd afspilningshistorik",
+ "Import/export data": "Importer/exporter data",
+ "Change password": "Skift adgangskode",
+ "Manage subscriptions": "Administrer abonnementer",
+ "Manage tokens": "Administrer tokens",
+ "Watch history": "Afspilningshistorik",
+ "Delete account": "Slet konto",
+ "Administrator preferences": "Administrator præferencer",
+ "Default homepage: ": "Standard startside: ",
+ "Feed menu: ": "Feed menu: ",
+ "Top enabled: ": "Top aktiveret: ",
+ "CAPTCHA enabled: ": "CAPTCHA aktiveret: ",
+ "Login enabled: ": "Login aktiveret: ",
+ "Registration enabled: ": "Registrering aktiveret: ",
+ "Report statistics: ": "Indsend statistik: ",
+ "Save preferences": "Gem præferencer",
+ "Subscription manager": "Abonnementsmanager",
+ "Token manager": "Tokenmanager",
+ "Token": "Token",
"`x` subscriptions": {
- "([^.,0-9]|^)1([^.,0-9]|$)": "",
- "": ""
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonnementer.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x`"
},
"`x` tokens": {
- "([^.,0-9]|^)1([^.,0-9]|$)": "",
- "": ""
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tokens.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` tokens."
},
- "Import/export": "",
- "unsubscribe": "",
- "revoke": "",
- "Subscriptions": "",
+ "Import/export": "Importer/eksporter",
+ "unsubscribe": "opsig abonnement",
+ "revoke": "tilbagekald",
+ "Subscriptions": "Abonnementer",
"`x` unseen notifications": {
- "([^.,0-9]|^)1([^.,0-9]|$)": "",
- "": ""
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` usete notifikationer.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` usete notifikationer."
},
- "search": "",
- "Log out": "",
- "Released under the AGPLv3 by Omar Roth.": "",
- "Source available here.": "",
- "View JavaScript license information.": "",
- "View privacy policy.": "",
- "Trending": "",
- "Public": "",
- "Unlisted": "",
- "Private": "",
- "View all playlists": "",
+ "search": "søg",
+ "Log out": "Log ud",
+ "Released under the AGPLv3 by Omar Roth.": "Offentliggjort under AGPLv3 af Omar Roth.",
+ "Source available here.": "Kilde tilgængelig her.",
+ "View JavaScript license information.": "Vis JavaScriptlicensinformation.",
+ "View privacy policy.": "Vis privatpolitik.",
+ "Trending": "Trending",
+ "Public": "Offentlig",
+ "Unlisted": "Skjult",
+ "Private": "Privat",
+ "View all playlists": "Vis alle afspilningslister",
"Updated `x` ago": "",
- "Delete playlist `x`?": "",
- "Delete playlist": "",
- "Create playlist": "",
- "Title": "",
- "Playlist privacy": "",
- "Editing playlist `x`": "",
- "Watch on YouTube": "",
- "Hide annotations": "",
- "Show annotations": "",
- "Genre: ": "",
- "License: ": "",
- "Family friendly? ": "",
- "Wilson score: ": "",
- "Engagement: ": "",
- "Whitelisted regions: ": "",
- "Blacklisted regions: ": "",
- "Shared `x`": "",
+ "Delete playlist `x`?": "Opdateret `x` siden",
+ "Delete playlist": "Slet afspilningsliste",
+ "Create playlist": "Opret afspilningsliste",
+ "Title": "Titel",
+ "Playlist privacy": "Privatlivsindstillinger for afspilningsliste",
+ "Editing playlist `x`": "Redigerer afspilningsliste `x`",
+ "Show more": "",
+ "Show less": "",
+ "Watch on YouTube": "Se på YouTube",
+ "Hide annotations": "Skjul annotationer",
+ "Show annotations": "Vis annotationer",
+ "Genre: ": "Genre: ",
+ "License: ": "Licens: ",
+ "Family friendly? ": "Familievenlig? ",
+ "Wilson score: ": "Wilson score: ",
+ "Engagement: ": "Engagement: ",
+ "Whitelisted regions: ": "Whitelistede regioner: ",
+ "Blacklisted regions: ": "Blacklistede regioner: ",
+ "Shared `x`": "Delt `x`",
"`x` views": {
- "([^.,0-9]|^)1([^.,0-9]|$)": "",
- "": ""
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` visninger.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` visninger"
},
- "Premieres in `x`": "",
- "Premieres `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.": "",
- "View YouTube comments": "",
- "View more comments on Reddit": "",
+ "Premieres in `x`": "Har premiere om `x`",
+ "Premieres `x`": "Har premiere om `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.": "Hej! Det ser ud til at du har JavaScript slået fra. Klik her for at se kommentarer, vær opmærksom på at de kan tage længere om at loade.",
+ "View YouTube comments": "Vis YouTube kommentarer",
+ "View more comments on Reddit": "Se flere kommentarer på Reddit",
"View `x` comments": {
- "([^.,0-9]|^)1([^.,0-9]|$)": "",
- "": ""
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Vis `x` kommentarer.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "Vis `x` kommentarer."
},
- "View Reddit comments": "",
- "Hide replies": "",
- "Show replies": "",
- "Incorrect password": "",
- "Quota exceeded, try again in a few hours": "",
- "Unable to log in, make sure two-factor authentication (Authenticator or SMS) is turned on.": "",
+ "View Reddit comments": "Vis Reddit kommentarer",
+ "Hide replies": "Skjul svar",
+ "Show replies": "Vis svar",
+ "Incorrect password": "Forkert adgangskode",
+ "Quota exceeded, try again in a few hours": "Kvota overskredet, prøv igen om et par timer",
+ "Unable to log in, make sure two-factor authentication (Authenticator or SMS) is turned on.": "Login fejlet, tjek at totrinsbekræftelse (Authenticator eller SMS) er slået til.",
"Invalid TFA code": "",
"Login failed. This may be because two-factor authentication is not turned on for your account.": "",
- "Wrong answer": "",
- "Erroneous CAPTCHA": "",
+ "Wrong answer": "Forkert svar",
+ "Erroneous CAPTCHA": "Fejlagtig CAPTCHA",
"CAPTCHA is a required field": "",
"User ID is a required field": "",
"Password is a required field": "",
- "Wrong username or password": "",
+ "Wrong username or password": "Forkert brugernavn eller adgangskode",
"Please sign in using 'Log in with Google'": "",
"Password cannot be empty": "",
- "Password cannot be longer than 55 characters": "",
+ "Password cannot be longer than 55 characters": "Adgangskoden må ikke være længere end 55 tegn",
"Please log in": "",
"Invidious Private Feed for `x`": "",
"channel:`x`": "",
@@ -361,6 +364,7 @@
},
"Fallback comments: ": "",
"Popular": "",
+ "Search": "",
"Top": "",
"About": "",
"Rating: ": "",
@@ -383,5 +387,32 @@
"Videos": "",
"Playlists": "",
"Community": "",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": ""
-}
+} \ No newline at end of file
diff --git a/locales/de.json b/locales/de.json
index b995baac..17350211 100644
--- a/locales/de.json
+++ b/locales/de.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` Abonnenten",
- "`x` videos": "`x` Videos",
- "`x` playlists": "`x` Wiedergabelisten",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Abonnenten",
+ "": "`x` Abonnenten"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Videos",
+ "": "`x` Videos"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Wiedergabelisten",
+ "": "`x` Wiedergabelisten"
+ },
"LIVE": "LIVE",
"Shared `x` ago": "Vor `x` geteilt",
"Unsubscribe": "Abbestellen",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Ersatzuntertitel: ",
"Show related videos: ": "Ähnliche Videos anzeigen? ",
"Show annotations by default: ": "Standardmäßig Anmerkungen anzeigen? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Anzeigeeinstellungen",
"Player style: ": "Abspielgeräterstil: ",
"Dark mode: ": "Nachtmodus: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Abonnementverwaltung",
"Token manager": "Tokenverwalter",
"Token": "Token",
- "`x` subscriptions": "`x` Abonnements",
- "`x` tokens": "`x` Tokens",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Abonnements",
+ "": "`x` Abonnements"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Tokens",
+ "": "`x` Tokens"
+ },
"Import/export": "Importieren/Exportieren",
"unsubscribe": "abbestellen",
"revoke": "widerrufen",
"Subscriptions": "Abonnements",
- "`x` unseen notifications": "`x` ungesehene Benachrichtigungen",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ungesehene Benachrichtigungen",
+ "": "`x` ungesehene Benachrichtigungen"
+ },
"search": "Suchen",
"Log out": "Abmelden",
"Released under the AGPLv3 by Omar Roth.": "Veröffentlicht unter AGPLv3 von Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Titel",
"Playlist privacy": "Vertrauliche Wiedergabeliste",
"Editing playlist `x`": "Wiedergabeliste bearbeiten `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Video auf YouTube ansehen",
"Hide annotations": "Anmerkungen ausblenden",
"Show annotations": "Anmerkungen anzeigen",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Erlaubte Regionen: ",
"Blacklisted regions: ": "Unerlaubte Regionen: ",
"Shared `x`": "Geteilt `x`",
- "`x` views": "`x` Aufrufe",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Aufrufe",
+ "": "`x` Aufrufe"
+ },
"Premieres in `x`": "Zuerst gesehen 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",
"View more comments on Reddit": "Mehr Kommentare auf Reddit anzeigen",
- "View `x` comments": "`x` Kommentare anzeigen",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Kommentare anzeigen",
+ "": "`x` Kommentare anzeigen"
+ },
"View Reddit comments": "Reddit Kommentare anzeigen",
"Hide replies": "Antworten verstecken",
"Show replies": "Antworten anzeigen",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Dieser Kanal existiert nicht.",
"Could not get channel info.": "Kanalinformationen konnten nicht geladen werden.",
"Could not fetch comments": "Kommentare konnten nicht geladen werden",
- "View `x` replies": "Zeige `x` Antworten",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Zeige `x` Antworten",
+ "": "Zeige `x` Antworten"
+ },
"`x` ago": "vor `x`",
"Load more": "Mehr laden",
- "`x` points": "`x` Punkte",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Punkte",
+ "": "`x` Punkte"
+ },
"Could not create mix.": "Mix konnte nicht erstellt werden.",
"Empty playlist": "Playlist ist leer",
"Not a playlist.": "Ungültige Playlist.",
@@ -301,15 +334,37 @@
"Yiddish": "Jiddisch",
"Yoruba": "Joruba",
"Zulu": "Zulu",
- "`x` years": "`x` Jahre",
- "`x` months": "`x` Monate",
- "`x` weeks": "`x` Wochen",
- "`x` days": "`x` Tage",
- "`x` hours": "`x` Stunden",
- "`x` minutes": "`x` Minuten",
- "`x` seconds": "`x` Sekunden",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Jahre",
+ "": "`x` Jahre"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Monate",
+ "": "`x` Monate"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Wochen",
+ "": "`x` Wochen"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Tage",
+ "": "`x` Tage"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Stunden",
+ "": "`x` Stunden"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Minuten",
+ "": "`x` Minuten"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` Sekunden",
+ "": "`x` Sekunden"
+ },
"Fallback comments: ": "Alternative Kommentare: ",
"Popular": "Populär",
+ "Search": "",
"Top": "Top",
"About": "Über",
"Rating: ": "Bewertung: ",
@@ -332,5 +387,32 @@
"Videos": "Videos",
"Playlists": "Wiedergabelisten",
"Community": "Gemeinschaft",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Aktuelle Version: "
-}
+} \ No newline at end of file
diff --git a/locales/el.json b/locales/el.json
index f74f2421..5eb4a304 100644
--- a/locales/el.json
+++ b/locales/el.json
@@ -1,9 +1,16 @@
{
- "`x` subscribers.([^.,0-9]|^)1([^.,0-9]|$)": "`x` συνδρομητές.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` subscribers.": "`x` συνδρομητές.",
- "`x` videos.([^.,0-9]|^)1([^.,0-9]|$)": "`x` βίντεο.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` videos.": "`x` βίντεο.",
- "`x` playlists": "`x` λίστες αναπαραγωγής",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` συνδρομητές",
+ "": "`x` συνδρομητές"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` βίντεο",
+ "": "`x` βίντεο"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` λίστες αναπαραγωγής",
+ "": "`x` λίστες αναπαραγωγής"
+ },
"LIVE": "ΖΩΝΤΑΝΑ",
"Shared `x` ago": "Μοιράστηκε πριν από `x`",
"Unsubscribe": "Απεγγραφή",
@@ -70,6 +77,7 @@
"Fallback captions: ": "Εναλλακτικοί υπότιτλοι: ",
"Show related videos: ": "Προβολή σχετικών βίντεο; ",
"Show annotations by default: ": "Αυτόματη προβολή σημειώσεων: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Προτιμήσεις εμφάνισης",
"Player style: ": "Τεχνοτροπία της συσκευής αναπαραγωγης: ",
"Dark mode: ": "Σκοτεινή λειτουργία: ",
@@ -115,16 +123,22 @@
"Subscription manager": "Διαχειριστής συνδρομών",
"Token manager": "Διαχειριστής διασυνδέσεων",
"Token": "Διασύνδεση",
- "`x` subscriptions.([^.,0-9]|^)1([^.,0-9]|$)": "`x` συνδρομή",
- "`x` subscriptions.": "`x` συνδρομές.",
- "`x` tokens.([^.,0-9]|^)1([^.,0-9]|$)": "`x` διασύνδεση",
- "`x` tokens.": "`x` διασυνδέσεις.",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` συνδρομή",
+ "": "`x` συνδρομές"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` διασύνδεση",
+ "": "`x` διασυνδέσεις"
+ },
"Import/export": "Εισαγωγή/εξαγωγή",
"unsubscribe": "κατάργηση συνδρομής",
"revoke": "ανάκληση",
"Subscriptions": "Συνδρομές",
- "`x` unseen notifications.([^.,0-9]|^)1([^.,0-9]|$)": "`x` καινούρια ειδοποίηση",
- "`x` unseen notifications.": "`x` καινούριες ειδοποιήσεις.",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` καινούρια ειδοποίηση",
+ "": "`x` καινούριες ειδοποιήσεις"
+ },
"search": "αναζήτηση",
"Log out": "Αποσύνδεση",
"Released under the AGPLv3 by Omar Roth.": "Κυκλοφορεί υπό την άδεια AGPLv3 από τον Omar Roth.",
@@ -143,6 +157,8 @@
"Title": "Τίτλος",
"Playlist privacy": "Ιδιωτικότητα καταλόγων αναπαραγωγής",
"Editing playlist `x`": "Επεξεργασία `x` καταλόγου αναπαραγωγής",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Προβολή στο YouTube",
"Hide annotations": "Απόκρυψη σημειώσεων",
"Show annotations": "Προβολή σημειώσεων",
@@ -154,14 +170,19 @@
"Whitelisted regions: ": "Επιτρεπτές περιοχές: ",
"Blacklisted regions: ": "Μη-επιτρεπτές περιοχές: ",
"Shared `x`": "Μοιράστηκε το `x`",
- "`x` views.([^.,0-9]|^)1([^.,0-9]|$)": "`x` προβολή",
- "`x` views.": "`x` προβολές.",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` προβολή",
+ "": "`x` προβολές"
+ },
"Premieres in `x`": "Πρώτη προβολή σε `x`",
"Premieres `x`": "Επίσημη πρώτη παράσταση του `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.": "Γεια! Φαίνεται πως έχετε απενεργοποιήσει το JavaScript. Πατήστε εδώ για προβολή σχολίων, αλλά έχετε υπ'όψιν σας πως ίσως φορτώσουν πιο αργά.",
"View YouTube comments": "Προβολή σχολίων από το YouTube",
"View more comments on Reddit": "Προβολή περισσότερων σχολίων στο Reddit",
- "View `x` comments": "Προβολή `x` σχολίων",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Προβολή `x` σχολίων",
+ "": "Προβολή `x` σχολίων"
+ },
"View Reddit comments": "Προβολή σχολίων από το Reddit",
"Hide replies": "Απόκρυψη απαντήσεων",
"Show replies": "Προβολή απαντήσεων",
@@ -186,12 +207,16 @@
"This channel does not exist.": "Αυτό το κανάλι δεν υπάρχει.",
"Could not get channel info.": "Αδύναμια εύρεσης πληροφοριών καναλιού.",
"Could not fetch comments": "Αδυναμία λήψης σχολίων",
- "View `x` replies.([^.,0-9]|^)1([^.,0-9]|$)": "Προβολή `x` απάντησης",
- "View `x` replies.": "Προβολή `x` απαντήσεων.",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Προβολή `x` απάντησης",
+ "": "Προβολή `x` απαντήσεων"
+ },
"`x` ago": "Πριν `x`",
"Load more": "Φόρτωση περισσότερων",
- "`x` points.([^.,0-9]|^)1([^.,0-9]|$)": "`x` βαθμός",
- "`x` points.": "`x` βαθμοί.",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` βαθμός",
+ "": "`x` βαθμοί"
+ },
"Could not create mix.": "Αδυναμία δημιουργίας μίξης.",
"Empty playlist": "Κενή λίστα αναπαραγωγής",
"Not a playlist.": "Μη έγκυρη λίστα αναπαραγωγής.",
@@ -309,22 +334,37 @@
"Yiddish": "Γίντις",
"Yoruba": "Γιορούμπα",
"Zulu": "Ζουλού",
- "`x` years.([^.,0-9]|^)1([^.,0-9]|$)": "`x` χρόνο",
- "`x` years.": "`x` χρόνια.",
- "`x` months.([^.,0-9]|^)1([^.,0-9]|$)": "`x` μήνα",
- "`x` months.": "`x` μήνες.",
- "`x` weeks.([^.,0-9]|^)1([^.,0-9]|$)": "`x` εβδομάδα",
- "`x` weeks.": "`x` εβδομάδες.",
- "`x` days.([^.,0-9]|^)1([^.,0-9]|$)": "`x` ημέρα",
- "`x` days.": "`x` ημέρες.",
- "`x` hours.([^.,0-9]|^)1([^.,0-9]|$)": "`x` ώρα",
- "`x` hours.": "`x` ώρες.",
- "`x` minutes.([^.,0-9]|^)1([^.,0-9]|$)": "`x` λεπτό",
- "`x` minutes.": "`x` λεπτά.",
- "`x` seconds.([^.,0-9]|^)1([^.,0-9]|$)": "`x` δευτερόλεπτο",
- "`x` seconds.": "`x` δευτερόλεπτα.",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` χρόνο",
+ "": "`x` χρόνια"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` μήνα",
+ "": "`x` μήνες"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` εβδομάδα",
+ "": "`x` εβδομάδες"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ημέρα",
+ "": "`x` ημέρες"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ώρα",
+ "": "`x` ώρες"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` λεπτό",
+ "": "`x` λεπτά"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` δευτερόλεπτο",
+ "": "`x` δευτερόλεπτα"
+ },
"Fallback comments: ": "Εναλλακτικά σχόλια: ",
"Popular": "Δημοφιλή",
+ "Search": "",
"Top": "Κορυφαία",
"About": "Σχετικά",
"Rating: ": "Aξιολόγηση: ",
@@ -347,5 +387,32 @@
"Videos": "Βίντεο",
"Playlists": "Λίστες Αναπαραγωγής",
"Community": "Κοινότητα",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Τρέχουσα έκδοση: "
-}
+} \ No newline at end of file
diff --git a/locales/en-US.json b/locales/en-US.json
index 66e71bb6..71485826 100644
--- a/locales/en-US.json
+++ b/locales/en-US.json
@@ -77,6 +77,7 @@
"Fallback captions: ": "Fallback captions: ",
"Show related videos: ": "Show related videos: ",
"Show annotations by default: ": "Show annotations by default: ",
+ "Automatically extend video description: ": "Automatically extend video description: ",
"Visual preferences": "Visual preferences",
"Player style: ": "Player style: ",
"Dark mode: ": "Dark mode: ",
@@ -156,6 +157,8 @@
"Title": "Title",
"Playlist privacy": "Playlist privacy",
"Editing playlist `x`": "Editing playlist `x`",
+ "Show more": "Show more",
+ "Show less": "Show less",
"Watch on YouTube": "Watch on YouTube",
"Hide annotations": "Hide annotations",
"Show annotations": "Show annotations",
@@ -361,6 +364,7 @@
},
"Fallback comments: ": "Fallback comments: ",
"Popular": "Popular",
+ "Search": "Search",
"Top": "Top",
"About": "About",
"Rating: ": "Rating: ",
@@ -411,4 +415,4 @@
"hdr": "HDR",
"filter": "Filter",
"Current version: ": "Current version: "
-} \ No newline at end of file
+}
diff --git a/locales/eo.json b/locales/eo.json
index 3052ac35..e98ebb59 100644
--- a/locales/eo.json
+++ b/locales/eo.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` abonantoj",
- "`x` videos": "`x` filmetoj",
- "`x` playlists": "`x` ludlistoj",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonantoj.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` abonantoj."
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` filmetoj.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` filmetoj."
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ludlistoj.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` ludlistoj."
+ },
"LIVE": "NUNA",
"Shared `x` ago": "Konigita antaŭ `x`",
"Unsubscribe": "Malabonu",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Retrodefaŭltaj subtekstoj: ",
"Show related videos: ": "Ĉu montri rilatajn filmetojn? ",
"Show annotations by default: ": "Ĉu montri prinotojn defaŭlte? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Vidaj preferoj",
"Player style: ": "Ludila stilo: ",
"Dark mode: ": "Malhela reĝimo: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Administrilo de abonoj",
"Token manager": "Ĵetona administrilo",
"Token": "Ĵetono",
- "`x` subscriptions": "`x` abonoj",
- "`x` tokens": "`x` ĵetonoj",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonoj",
+ "": "`x` abonoj."
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ĵetonoj",
+ "": "`x` ĵetonoj."
+ },
"Import/export": "Importi/Eksporti",
"unsubscribe": "malabonu",
"revoke": "senvalidigi",
"Subscriptions": "Abonoj",
- "`x` unseen notifications": "`x` neviditaj sciigoj",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` neviditaj sciigoj",
+ "": "`x` neviditaj sciigoj."
+ },
"search": "serĉi",
"Log out": "Elsaluti",
"Released under the AGPLv3 by Omar Roth.": "Eldonita sub la AGPLv3 de Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Titolo",
"Playlist privacy": "Privateco de ludlisto",
"Editing playlist `x`": "Redaktante ludlisto `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Vidi filmeton en JuTubo",
"Hide annotations": "Kaŝi prinotojn",
"Show annotations": "Montri prinotojn",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Regionoj listigitaj en blanka listo: ",
"Blacklisted regions: ": "Regionoj listigitaj en nigra listo: ",
"Shared `x`": "Konigita `x`",
- "`x` views": "`x` spektaĵoj",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` spektaĵoj",
+ "": "`x` spektaĵoj."
+ },
"Premieres in `x`": "Premieras en `x`",
"Premieres `x`": "Premieras `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.": "Saluton! Ŝajnas, ke vi havas Ĝavoskripton malebligitan. Klaku ĉi tie por vidi komentojn, memoru, ke la ŝargado povus daŭri iom pli.",
"View YouTube comments": "Vidi komentojn de JuTubo",
"View more comments on Reddit": "Vidi pli komentoj en Reddit",
- "View `x` comments": "Vidi `x` komentojn",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Vidi `x` komentojn",
+ "": "Vidi `x` komentojn."
+ },
"View Reddit comments": "Vidi komentojn de Reddit",
"Hide replies": "Kaŝi respondojn",
"Show replies": "Montri respondojn",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Ĉi tiu kanalo ne ekzistas.",
"Could not get channel info.": "Ne povis havigi kanalan informon.",
"Could not fetch comments": "Ne povis venigi komentojn",
- "View `x` replies": "Vidi `x` respondojn",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Vidi `x` respondojn",
+ "": "Vidi `x` respondojn."
+ },
"`x` ago": "antaŭ `x`",
"Load more": "Ŝarĝi pli",
- "`x` points": "`x` poentoj",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` poentoj",
+ "": "`x` poentoj."
+ },
"Could not create mix.": "Ne povis krei mikson.",
"Empty playlist": "Ludlisto estas malplena",
"Not a playlist.": "Nevalida ludlisto.",
@@ -301,15 +334,37 @@
"Yiddish": "Jida",
"Yoruba": "Joruba",
"Zulu": "Zulua",
- "`x` years": "`x` jaroj",
- "`x` months": "`x` monatoj",
- "`x` weeks": "`x` semajnoj",
- "`x` days": "`x` tagoj",
- "`x` hours": "`x` horoj",
- "`x` minutes": "`x` minutoj",
- "`x` seconds": "`x` sekundoj",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` jaroj",
+ "": "`x` jaroj."
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` monatoj",
+ "": "`x` monatoj."
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` semajnoj",
+ "": "`x` semajnoj."
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tagoj",
+ "": "`x` tagoj."
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` horoj",
+ "": "`x` horoj."
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minutoj",
+ "": "`x` minutoj."
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekundoj",
+ "": "`x` sekundoj."
+ },
"Fallback comments: ": "Retrodefaŭltaj komentoj: ",
"Popular": "Popularaj",
+ "Search": "Serĉi",
"Top": "Supraj",
"About": "Pri",
"Rating: ": "Takso: ",
@@ -332,5 +387,32 @@
"Videos": "Filmetoj",
"Playlists": "Ludlistoj",
"Community": "Komunumo",
+ "relevance": "rilateco",
+ "rating": "takso",
+ "date": "dato",
+ "views": "vidoj",
+ "content_type": "enhavtipo",
+ "duration": "daŭro",
+ "features": "trajtoj",
+ "sort": "ordigi",
+ "hour": "horo",
+ "today": "hodiaŭ",
+ "week": "semajno",
+ "month": "monato",
+ "year": "jaro",
+ "video": "filmeto",
+ "channel": "kanalo",
+ "playlist": "ludlisto",
+ "movie": "filmo",
+ "show": "spektaĵo",
+ "hd": "altdistingiva",
+ "subtitles": "subtekstoj",
+ "creative_commons": "Krea Komunaĵo",
+ "3d": "3D",
+ "live": "nuna",
+ "4k": "4k",
+ "location": "loko",
+ "hdr": "granddinamikgama",
+ "filter": "filtri",
"Current version: ": "Nuna versio: "
-}
+} \ No newline at end of file
diff --git a/locales/es.json b/locales/es.json
index 91faef1b..1b50aea1 100644
--- a/locales/es.json
+++ b/locales/es.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` suscriptores",
- "`x` videos": "`x` vídeos",
- "`x` playlists": "`x` listas de reproducción",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` suscriptores",
+ "": "`x` suscriptores."
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` vídeos",
+ "": "`x` vídeos."
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` listas de reproducción",
+ "": "`x` listas de reproducción."
+ },
"LIVE": "DIRECTO",
"Shared `x` ago": "Compartido hace `x`",
"Unsubscribe": "Desuscribirse",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Subtítulos alternativos: ",
"Show related videos: ": "¿Mostrar vídeos relacionados? ",
"Show annotations by default: ": "¿Mostrar anotaciones por defecto? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Preferencias visuales",
"Player style: ": "Estilo de reproductor: ",
"Dark mode: ": "Modo oscuro: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Gestor de suscripciones",
"Token manager": "Gestor de tokens",
"Token": "Token",
- "`x` subscriptions": "`x` suscripciones",
- "`x` tokens": "`x` tokens",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` suscripciones",
+ "": "`x` suscripciones."
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tokens",
+ "": "`x` tokens."
+ },
"Import/export": "Importar/Exportar",
"unsubscribe": "Desuscribirse",
"revoke": "revocar",
"Subscriptions": "Suscripciones",
- "`x` unseen notifications": "`x` notificaciones sin ver",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` notificaciones sin ver",
+ "": "`x` notificaciones sin ver."
+ },
"search": "buscar",
"Log out": "Cerrar la sesión",
"Released under the AGPLv3 by Omar Roth.": "Publicado bajo licencia AGPLv3 por Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Título",
"Playlist privacy": "Privacidad de la lista de reproducción",
"Editing playlist `x`": "Editando la lista de reproducción 'x'",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Ver el vídeo en Youtube",
"Hide annotations": "Ocultar anotaciones",
"Show annotations": "Mostrar anotaciones",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Regiones permitidas: ",
"Blacklisted regions: ": "Regiones bloqueadas: ",
"Shared `x`": "Compartido `x`",
- "`x` views": "`x` visualizaciones",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` visualizaciones",
+ "": "`x` visualizaciones."
+ },
"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 tiene JavaScript desactivado. Haga clic aquí para ver los comentarios, pero tenga en cuenta que pueden tardar un poco más en cargarse.",
"View YouTube comments": "Ver los comentarios de YouTube",
"View more comments on Reddit": "Ver más comentarios en Reddit",
- "View `x` comments": "Ver `x` comentarios",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` comentarios",
+ "": "Ver `x` comentarios."
+ },
"View Reddit comments": "Ver los comentarios de Reddit",
"Hide replies": "Ocultar las respuestas",
"Show replies": "Mostrar las respuestas",
@@ -180,10 +207,16 @@
"This channel does not exist.": "El canal no existe.",
"Could not get channel info.": "No se ha podido obtener información del canal.",
"Could not fetch comments": "No se han podido recuperar los comentarios",
- "View `x` replies": "Ver `x` respuestas",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` respuestas",
+ "": "Ver `x` respuestas."
+ },
"`x` ago": "hace `x`",
"Load more": "Cargar más",
- "`x` points": "`x` puntos",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` puntos",
+ "": "`x` puntos."
+ },
"Could not create mix.": "No se ha podido crear la mezcla.",
"Empty playlist": "La lista de reproducción está vacía",
"Not a playlist.": "Lista de reproducción no válida.",
@@ -301,15 +334,37 @@
"Yiddish": "Yidis",
"Yoruba": "Yoruba",
"Zulu": "Zulú",
- "`x` years": "`x` años",
- "`x` months": "`x` meses",
- "`x` weeks": "`x` semanas",
- "`x` days": "`x` días",
- "`x` hours": "`x` horas",
- "`x` minutes": "`x` minutos",
- "`x` seconds": "`x` segundos",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` años",
+ "": "`x` años."
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` meses",
+ "": "`x` meses."
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` semanas",
+ "": "`x` semanas."
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` días",
+ "": "`x` días."
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` horas",
+ "": "`x` horas."
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minutos",
+ "": "`x` minutos."
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` segundos",
+ "": "`x` segundos."
+ },
"Fallback comments: ": "Comentarios alternativos: ",
"Popular": "Populares",
+ "Search": "Buscar",
"Top": "Destacados",
"About": "Acerca de",
"Rating: ": "Valoración: ",
@@ -332,5 +387,32 @@
"Videos": "Vídeos",
"Playlists": "Listas de reproducción",
"Community": "Comunidad",
+ "relevance": "relevancia",
+ "rating": "valoración",
+ "date": "fecha",
+ "views": "visualizaciones",
+ "content_type": "content_type",
+ "duration": "duración",
+ "features": "funcionalidades",
+ "sort": "ordenar",
+ "hour": "hora",
+ "today": "hoy",
+ "week": "semana",
+ "month": "mes",
+ "year": "año",
+ "video": "vídeo",
+ "channel": "canal",
+ "playlist": "lista de reproducción",
+ "movie": "película",
+ "show": "programa",
+ "hd": "hd",
+ "subtitles": "subtítulos",
+ "creative_commons": "creative_commons",
+ "3d": "3d",
+ "live": "directo",
+ "4k": "4k",
+ "location": "ubicación",
+ "hdr": "hdr",
+ "filter": "filtro",
"Current version: ": "Versión actual: "
-}
+} \ No newline at end of file
diff --git a/locales/eu.json b/locales/eu.json
index 61299c72..d5021c25 100644
--- a/locales/eu.json
+++ b/locales/eu.json
@@ -68,6 +68,7 @@
"Fallback captions: ": "",
"Show related videos: ": "Erakutsi erlazionatutako bideoak: ",
"Show annotations by default: ": "Erakutsi oharrak modu lehenetsian: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Hobespen bisualak",
"Player style: ": "Erreproduzigailu mota: ",
"Dark mode: ": "Gai iluna: ",
@@ -138,6 +139,8 @@
"Title": "",
"Playlist privacy": "",
"Editing playlist `x`": "",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "",
"Hide annotations": "",
"Show annotations": "",
@@ -310,6 +313,7 @@
"`x` seconds": "",
"Fallback comments: ": "",
"Popular": "",
+ "Search": "",
"Top": "",
"About": "",
"Rating: ": "",
diff --git a/locales/fa.json b/locales/fa.json
index 0f0900a9..b6114292 100644
--- a/locales/fa.json
+++ b/locales/fa.json
@@ -1,10 +1,16 @@
{
- "`x` subscribers.([^.,0-9]|^)1([^.,0-9]|$)": "`x` مشترکان.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` subscribers.": "`x` مشترکان.",
- "`x` videos.([^.,0-9]|^)1([^.,0-9]|$)": "`x` ویدیو ها.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` videos.": "`x` ویدیو ها.",
- "`x` playlists.([^.,0-9]|^)1([^.,0-9]|$)": "`x` لیست های پخش.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` playlists.": "`x` لیست های پخش.",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` مشترکان",
+ "": "`x` مشترکان"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ویدیو ها",
+ "": "`x` ویدیو ها"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` لیست های پخش",
+ "": "`x` لیست های پخش"
+ },
"LIVE": "زنده",
"Shared `x` ago": "به اشتراک گذاشته شده `x` پیش",
"Unsubscribe": "لغو اشتراک",
@@ -71,6 +77,7 @@
"Fallback captions: ": "عقب گرد زیرنویس ها: ",
"Show related videos: ": "نمایش ویدیو های مرتبط: ",
"Show annotations by default: ": "نمایش حاشیه نویسی ها به طور پیشفرض: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "ترجیحات بصری",
"Player style: ": "حالت پخش کننده: ",
"Dark mode: ": "حالت تاریک: ",
@@ -116,16 +123,22 @@
"Subscription manager": "مدیریت اشتراک",
"Token manager": "مدیر توکن",
"Token": "توکن",
- "`x` subscriptions.([^.,0-9]|^)1([^.,0-9]|$)": "`x` اشتراک ها.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` subscriptions.": "`x` اشتراک ها.",
- "`x` tokens.([^.,0-9]|^)1([^.,0-9]|$)": "`x` توکن ها.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` tokens.": "`x` توکن ها.",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` اشتراک ها",
+ "": "`x` اشتراک ها"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` توکن ها",
+ "": "`x` توکن ها"
+ },
"Import/export": "وارد کردن/خارج کردن",
"unsubscribe": "لغو اشتراک",
"revoke": "ابطال",
"Subscriptions": "اشتراک ها",
- "`x` unseen notifications.([^.,0-9]|^)1([^.,0-9]|$)": "`x` اعلان نادیده.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` unseen notifications.": "`x` اعلان نادیده.",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` اعلان نادیده",
+ "": "`x` اعلان نادیده"
+ },
"search": "جستجو",
"Log out": "خروج",
"Released under the AGPLv3 by Omar Roth.": "منتشر شده تحت مجوز AGPLv3 توسط Omar Roth.",
@@ -144,6 +157,8 @@
"Title": "عنوان",
"Playlist privacy": "حریم خصوصی لیست پخش",
"Editing playlist `x`": "تغییر لیست پخش `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "تماشا در یوتیوب",
"Hide annotations": "مخفی کردن حاشیه نویسی ها",
"Show annotations": "نمایش حاشیه نویسی ها",
@@ -155,15 +170,19 @@
"Whitelisted regions: ": "مناطق لیست سفید: ",
"Blacklisted regions: ": "مناطق لیست سیاه: ",
"Shared `x`": "به اشتراک گذاشته شده `x`",
- "`x` views.([^.,0-9]|^)1([^.,0-9]|$)": "`x` بازدید.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` views.": "`x` بازدید.",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` بازدید",
+ "": "`x` بازدید"
+ },
"Premieres in `x`": "برای اولین بار در `x`",
"Premieres `x`": "برای اولین بار `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.": "سلام! مثل اینکه تو جاوا اسکریپت رو خاموش کرده ای. اینجا کلیک کن تا نظرات را ببینی، این رو یادت باشه که ممکنه بارگذاری اونها کمی طول بکشه.",
"View YouTube comments": "نمایش نظرات یوتیوب",
"View more comments on Reddit": "نمایش نظرات بیشتر در ردیت",
- "View `x` comments.([^.,0-9]|^)1([^.,0-9]|$)": "نمایش `x` نظرات.([^.,0-9]|^)1([^.,0-9]|$)",
- "View `x` comments.": "نمایش `x` نظرات.",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "نمایش `x` نظرات",
+ "": "نمایش `x` نظرات"
+ },
"View Reddit comments": "نمایش نظرات ردیت",
"Hide replies": "مخفی کردن پاسخ ها",
"Show replies": "نمایش پاسخ ها",
@@ -188,12 +207,16 @@
"This channel does not exist.": "این کانال وجود ندارد.",
"Could not get channel info.": "نمیتوان اطلاعات کانال را دریافت کرد.",
"Could not fetch comments": "نمیتوان نظرات را دریافت کرد",
- "View `x` replies.([^.,0-9]|^)1([^.,0-9]|$)": "نمایش `x` پاسخ ها.([^.,0-9]|^)1([^.,0-9]|$)",
- "View `x` replies.": "نمایش `x` پاسخ ها.",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "نمایش `x` پاسخ ها",
+ "": "نمایش `x` پاسخ ها"
+ },
"`x` ago": "`x` پیش",
"Load more": "بارگذاری بیشتر",
- "`x` points.([^.,0-9]|^)1([^.,0-9]|$)": "`x` نقطه ها.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` points.": "`x` نقطه ها.",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` نقطه ها",
+ "": "`x` نقطه ها"
+ },
"Could not create mix.": "نمیتوان میکس ساخت.",
"Empty playlist": "لیست پخش خالی",
"Not a playlist.": "یک لیست پخش نیست.",
@@ -311,22 +334,37 @@
"Yiddish": "ییدیش",
"Yoruba": "یوروبایی",
"Zulu": "زولو",
- "`x` years.([^.,0-9]|^)1([^.,0-9]|$)": "`x` سال.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` years.": "`x` سال.",
- "`x` months.([^.,0-9]|^)1([^.,0-9]|$)": "`x` ماه.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` months.": "`x` ماه.",
- "`x` weeks.([^.,0-9]|^)1([^.,0-9]|$)": "`x` هفته.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` weeks.": "`x` هفته.",
- "`x` days.([^.,0-9]|^)1([^.,0-9]|$)": "`x` روز.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` days.": "`x` روز.",
- "`x` hours.([^.,0-9]|^)1([^.,0-9]|$)": "`x` ساعت.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` hours.": "`x` ساعت.",
- "`x` minutes.([^.,0-9]|^)1([^.,0-9]|$)": "`x` دقیقه.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` minutes.": "`x` دقیقه.",
- "`x` seconds.([^.,0-9]|^)1([^.,0-9]|$)": "`x` ثانیه.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` seconds.": "`x` ثانیه.",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` سال",
+ "": "`x` سال"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ماه",
+ "": "`x` ماه"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` هفته",
+ "": "`x` هفته"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` روز",
+ "": "`x` روز"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ساعت",
+ "": "`x` ساعت"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` دقیقه",
+ "": "`x` دقیقه"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ثانیه",
+ "": "`x` ثانیه"
+ },
"Fallback comments: ": "نظرات عقب گرد: ",
"Popular": "محبوب",
+ "Search": "",
"Top": "بالا",
"About": "درباره",
"Rating: ": "رتبه دهی: ",
@@ -349,5 +387,32 @@
"Videos": "ویدیو ها",
"Playlists": "لیست های پخش",
"Community": "اجتماع",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "نسخه فعلی: "
-}
+} \ No newline at end of file
diff --git a/locales/fi.json b/locales/fi.json
index 5dfd4ea2..5adeec05 100644
--- a/locales/fi.json
+++ b/locales/fi.json
@@ -1,10 +1,16 @@
{
- "`x` subscribers.([^.,0-9]|^)1([^.,0-9]|$)": "`x` tilaaja",
- "`x` subscribers.": "`x` tilaajaa.",
- "`x` videos.([^.,0-9]|^)1([^.,0-9]|$)": "`x` video",
- "`x` videos.": "`x` videota.",
- "`x` playlists.([^.,0-9]|^)1([^.,0-9]|$)": "`x` soittolista.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` playlists.": "`x` soittolistaa.",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tilaaja",
+ "": "`x` tilaajaa"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` video",
+ "": "`x` videota"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` soittolista",
+ "": "`x` soittolistaa"
+ },
"LIVE": "SUORA",
"Shared `x` ago": "Jaettu `x` sitten",
"Unsubscribe": "Peruuta tilaus",
@@ -71,6 +77,7 @@
"Fallback captions: ": "Toissijaiset tekstitykset: ",
"Show related videos: ": "Näytä aiheeseen liittyviä videoita: ",
"Show annotations by default: ": "Näytä huomautukset oletuksena: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Visuaaliset asetukset",
"Player style: ": "Soittimen tyyli: ",
"Dark mode: ": "Tumma tila: ",
@@ -116,16 +123,22 @@
"Subscription manager": "Tilausten hallinnoija",
"Token manager": "Tunnusten hallinnoija",
"Token": "Tunnus",
- "`x` subscriptions.([^.,0-9]|^)1([^.,0-9]|$)": "`x` tilausta.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` subscriptions.": "`x` tilausta.",
- "`x` tokens.([^.,0-9]|^)1([^.,0-9]|$)": "`x` tunnistetta.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` tokens.": "`x` tunnistetta.",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tilausta",
+ "": "`x` tilausta"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tunnistetta",
+ "": "`x` tunnistetta"
+ },
"Import/export": "Tuo/vie",
"unsubscribe": "peru tilaus",
"revoke": "kumoa",
"Subscriptions": "Tilaukset",
- "`x` unseen notifications.([^.,0-9]|^)1([^.,0-9]|$)": "`x` näkemätöntä ilmoitusta.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` unseen notifications.": "`x` näkemätöntä ilmoitusta.",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` näkemätöntä ilmoitusta",
+ "": "`x` näkemätöntä ilmoitusta"
+ },
"search": "haku",
"Log out": "Kirjaudu ulos",
"Released under the AGPLv3 by Omar Roth.": "Julkaissut AGPLv3-lisenssillä: Omar Roth.",
@@ -144,6 +157,8 @@
"Title": "Nimi",
"Playlist privacy": "Soittolistan yksityisyys",
"Editing playlist `x`": "Muokataan soittolistaa `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Katso YouTubessa",
"Hide annotations": "Piilota merkkaukset",
"Show annotations": "Näytä merkkaukset",
@@ -155,15 +170,19 @@
"Whitelisted regions: ": "valkolistatut alueet: ",
"Blacklisted regions: ": "mustalla listalla olevat alueet: ",
"Shared `x`": "Jaettu `x`",
- "`x` views.([^.,0-9]|^)1([^.,0-9]|$)": "`x` katselukertaa.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` views.": "`x` katselukertaa.",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` katselukertaa",
+ "": "`x` katselukertaa"
+ },
"Premieres in `x`": "Ensiesitykseen aikaa `x`",
"Premieres `x`": "Ensiesitykseen `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.": "Hei! Vaikuttaa siltä, että sinulla on JavaScript pois käytöstä. Klikkaa tästä nähdäksesi kommentit, huomioi että lataamisessa voi kestää melko kauan.",
"View YouTube comments": "Näytä YouTube-kommentit",
"View more comments on Reddit": "Katso lisää kommentteja Redditissä",
- "View `x` comments.([^.,0-9]|^)1([^.,0-9]|$)": "Näytä `x` komenttia.([^.,0-9]|^)1([^.,0-9]|$)",
- "View `x` comments.": "Näytä `x` kommenttia.",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Näytä `x` komenttia",
+ "": "Näytä `x` kommenttia"
+ },
"View Reddit comments": "Näytä Reddit-kommentit",
"Hide replies": "Piilota vastaukset",
"Show replies": "Näytä vastaukset",
@@ -188,12 +207,16 @@
"This channel does not exist.": "Tätä kanavaa ei ole olemassa.",
"Could not get channel info.": "Kanavatietoa ei saatu ladattua.",
"Could not fetch comments": "Kommenttien nouto epäonnistui",
- "View `x` replies.([^.,0-9]|^)1([^.,0-9]|$)": "Näytä `x` vastausta.([^.,0-9]|^)1([^.,0-9]|$)",
- "View `x` replies.": "Näytä `x` vastausta.",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Näytä `x` vastausta",
+ "": "Näytä `x` vastausta"
+ },
"`x` ago": "`x` sitten",
"Load more": "Lataa lisää",
- "`x` points.([^.,0-9]|^)1([^.,0-9]|$)": "`x` pistettä.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` points.": "`x` pistettä.",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` pistettä",
+ "": "`x` pistettä"
+ },
"Could not create mix.": "Sekoituksen luominen epäonnistui.",
"Empty playlist": "Tyhjennä soittolista",
"Not a playlist.": "Ei ole soittolista.",
@@ -311,22 +334,37 @@
"Yiddish": "jiddiš",
"Yoruba": "joruba",
"Zulu": "zulu",
- "`x` years.([^.,0-9]|^)1([^.,0-9]|$)": "`x` vuotta.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` years.": "`x` vuotta.",
- "`x` months.([^.,0-9]|^)1([^.,0-9]|$)": "`x` kuukautta.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` months.": "`x` kuukautta.",
- "`x` weeks.([^.,0-9]|^)1([^.,0-9]|$)": "`x` viikkoa.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` weeks.": "`x` viikkoa.",
- "`x` days.([^.,0-9]|^)1([^.,0-9]|$)": "`x` päivää.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` days.": "`x` päivää.",
- "`x` hours.([^.,0-9]|^)1([^.,0-9]|$)": "`x` tuntia.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` hours.": "`x` tuntia.",
- "`x` minutes.([^.,0-9]|^)1([^.,0-9]|$)": "`x` minuuttia.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` minutes.": "`x` minuuttia.",
- "`x` seconds.([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekuntia.([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` seconds.": "`x` sekuntia.",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` vuotta",
+ "": "`x` vuotta"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` kuukautta",
+ "": "`x` kuukautta"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` viikkoa",
+ "": "`x` viikkoa"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` päivää",
+ "": "`x` päivää"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tuntia",
+ "": "`x` tuntia"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minuuttia",
+ "": "`x` minuuttia"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekuntia",
+ "": "`x` sekuntia"
+ },
"Fallback comments: ": "varakommentit: ",
"Popular": "Suosittu",
+ "Search": "",
"Top": "Ylin",
"About": "Tietoa",
"Rating: ": "Arvosana: ",
@@ -349,5 +387,32 @@
"Videos": "Videot",
"Playlists": "Soittolistat",
"Community": "Yhteisö",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Tämänhetkinen versio: "
-}
+} \ No newline at end of file
diff --git a/locales/fr.json b/locales/fr.json
index d6bdc05a..f1055657 100644
--- a/locales/fr.json
+++ b/locales/fr.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` abonnés",
- "`x` videos": "`x` vidéos",
- "`x` playlists": "`x` listes de lecture",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonné",
+ "": "`x` abonnés"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` vidéo",
+ "": "`x` vidéos"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` liste de lecture",
+ "": "`x` listes de lecture"
+ },
"LIVE": "EN DIRECT",
"Shared `x` ago": "Ajoutée il y a `x`",
"Unsubscribe": "Se désabonner",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Sous-titres alternatifs : ",
"Show related videos: ": "Voir les vidéos liées : ",
"Show annotations by default: ": "Afficher les annotations par défaut : ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Préférences du site",
"Player style: ": "Style du lecteur : ",
"Dark mode: ": "Mode sombre : ",
@@ -91,7 +101,7 @@
"Only show unwatched: ": "Afficher uniquement les vidéos qui n'ont pas été regardées : ",
"Only show notifications (if there are any): ": "Afficher uniquement les notifications (s'il y en a) : ",
"Enable web notifications": "Activer les notifications web",
- "`x` uploaded a video": "`x` a partagé(e) une vidéo",
+ "`x` uploaded a video": "`x` a partagé une vidéo",
"`x` is live": "`x` est en direct",
"Data preferences": "Préférences liées aux données",
"Clear watch history": "Supprimer l'historique des vidéos regardées",
@@ -113,13 +123,22 @@
"Subscription manager": "Gestionnaire d'abonnement",
"Token manager": "Gestionnaire de tokens",
"Token": "Token",
- "`x` subscriptions": "`x` abonnements",
- "`x` tokens": "`x` tokens",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonnements",
+ "": "`x` abonnements"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` token",
+ "": "`x` tokens"
+ },
"Import/export": "Importer/Exporter",
"unsubscribe": "se désabonner",
"revoke": "révoquer",
"Subscriptions": "Abonnements",
- "`x` unseen notifications": "`x` notifications non vues",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` notification non vue",
+ "": "`x` notifications non vues"
+ },
"search": "rechercher",
"Log out": "Déconnexion",
"Released under the AGPLv3 by Omar Roth.": "Publié sous licence AGPLv3 par Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Titre",
"Playlist privacy": "Paramètres de confidentialité de la liste de lecture",
"Editing playlist `x`": "Liste de lecture modifier le `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Voir la vidéo sur Youtube",
"Hide annotations": "Masquer les annotations",
"Show annotations": "Afficher les annotations",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Régions sur liste blanche : ",
"Blacklisted regions: ": "Régions sur liste noire : ",
"Shared `x`": "Ajoutée le `x`",
- "`x` views": "`x` vues",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` vues",
+ "": "`x` vues"
+ },
"Premieres in `x`": "Première dans `x`",
"Premieres `x`": "Première le `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.": "Il semblerait que JavaScript soit désactivé. Cliquez ici pour voir les commentaires, mais gardez à l'esprit que le chargement peut prendre plus de temps.",
"View YouTube comments": "Voir les commentaires YouTube",
"View more comments on Reddit": "Voir plus de commentaires sur Reddit",
- "View `x` comments": "Voir `x` commentaires",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Voir `x` commentaire",
+ "": "Voir `x` commentaires"
+ },
"View Reddit comments": "Voir les commentaires Reddit",
"Hide replies": "Masquer les réponses",
"Show replies": "Afficher les réponses",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Cette chaine n'existe pas.",
"Could not get channel info.": "Impossible de charger les informations de cette chaîne.",
"Could not fetch comments": "Impossible de charger les commentaires",
- "View `x` replies": "Voir `x` réponses",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Voir `x` réponse",
+ "": "Voir `x` réponses"
+ },
"`x` ago": "il y a `x`",
"Load more": "Voir plus",
- "`x` points": "`x` points",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` point",
+ "": "`x` points"
+ },
"Could not create mix.": "Impossible de charger cette liste de lecture.",
"Empty playlist": "La liste de lecture est vide",
"Not a playlist.": "La liste de lecture est invalide.",
@@ -301,15 +334,37 @@
"Yiddish": "Yiddish",
"Yoruba": "Yoruba",
"Zulu": "Zoulou",
- "`x` years": "`x` ans",
- "`x` months": "`x` mois",
- "`x` weeks": "`x` semaines",
- "`x` days": "`x` jours",
- "`x` hours": "`x` heures",
- "`x` minutes": "`x` minutes",
- "`x` seconds": "`x` secondes",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` an",
+ "": "`x` ans"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` mois",
+ "": "`x` mois"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` semaine",
+ "": "`x` semaines"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` jour",
+ "": "`x` jours"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` heure",
+ "": "`x` heures"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minute",
+ "": "`x` minutes"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` seconde",
+ "": "`x` secondes"
+ },
"Fallback comments: ": "Commentaires alternatifs : ",
"Popular": "Populaire",
+ "Search": "Rechercher",
"Top": "Top",
"About": "À propos",
"Rating: ": "Évaluation : ",
@@ -332,5 +387,32 @@
"Videos": "Vidéos",
"Playlists": "Listes de lecture",
"Community": "Communauté",
+ "relevance": "pertinence",
+ "rating": "évaluation",
+ "date": "date",
+ "views": "nombre de vues",
+ "content_type": "type de contenu",
+ "duration": "durée",
+ "features": "fonctionnalités",
+ "sort": "Trier par",
+ "hour": "heure",
+ "today": "aujourd'hui",
+ "week": "semaine",
+ "month": "mois",
+ "year": "année",
+ "video": "vidéo",
+ "channel": "chaîne",
+ "playlist": "liste de lecture",
+ "movie": "film",
+ "show": "affichage",
+ "hd": "HD",
+ "subtitles": "sous-titres / CC",
+ "creative_commons": "Creative Commons",
+ "3d": "3D",
+ "live": "en direct",
+ "4k": "4K",
+ "location": "emplacement",
+ "hdr": "HDR",
+ "filter": "filtrer",
"Current version: ": "Version actuelle : "
-}
+} \ No newline at end of file
diff --git a/locales/he.json b/locales/he.json
index f5e33877..bf34c085 100644
--- a/locales/he.json
+++ b/locales/he.json
@@ -12,14 +12,14 @@
"": "`x` פלייליסטים."
},
"LIVE": "שידור חי",
- "Shared `x` ago": "",
+ "Shared `x` ago": "שותף לפני `x`",
"Unsubscribe": "ביטול מינוי",
"Subscribe": "הרשמה למינוי",
"View channel on YouTube": "צפייה בערוץ ב־YouTube",
"View playlist on YouTube": "צפייה בפלייליסט ב־YouTube",
"newest": "החדש ביותר",
"oldest": "הישן ביותר",
- "popular": "פופולארי",
+ "popular": "סרטונים פופולריים",
"last": "אחרון",
"Next page": "העמוד הבא",
"Previous page": "העמוד הקודם",
@@ -27,8 +27,8 @@
"New password": "סיסמה חדשה",
"New passwords must match": "על הסיסמאות החדשות להתאים",
"Cannot change password for Google accounts": "לא ניתן לשנות את הסיסמה לחשבונות Google",
- "Authorize token?": "",
- "Authorize token for `x`?": "",
+ "Authorize token?": "לאשר את האסימון?",
+ "Authorize token for `x`?": "האם לאשר את האסימון עבור `x`?",
"Yes": "כן",
"No": "לא",
"Import and Export Data": "ייבוא וייצוא נתונים",
@@ -45,7 +45,7 @@
"Delete account?": "למחוק את החשבון?",
"History": "היסטוריה",
"An alternative front-end to YouTube": "ממשק משתמש חלופי ל־YouTube",
- "JavaScript license information": "",
+ "JavaScript license information": "מידע על רישיון JavaScript",
"source": "source",
"Log in": "כניסה",
"Log in/register": "כניסה/הרשמה",
@@ -63,20 +63,21 @@
"Player preferences": "העדפות הנגן",
"Always loop: ": "",
"Autoplay: ": "ניגון אוטומטי: ",
- "Play next by default: ": "",
- "Autoplay next video: ": "נגן אוטומטית את הסרטון הבא ",
- "Listen by default: ": "האזן כברירת מחדל: ",
+ "Play next by default: ": "ניגון הסרטון הבא כברירת מחדל: ",
+ "Autoplay next video: ": "ניגון הסרטון הבא באופן אוטומטי: ",
+ "Listen by default: ": "שמע כברירת מחדל: ",
"Proxy videos: ": "",
"Default speed: ": "מהירות ברירת המחדל: ",
"Preferred video quality: ": "איכות הווידאו המועדפת: ",
- "Player volume: ": "עוצמת שמע בנגן: ",
+ "Player volume: ": "עצמת השמע של הנגן: ",
"Default comments: ": "תגובות ברירת מחדל ",
"youtube": "יוטיוב",
"reddit": "reddit",
"Default captions: ": "כתוביות ברירת מחדל ",
"Fallback captions: ": "כתוביות גיבוי ",
- "Show related videos: ": "הראה סרטונים קשורים: ",
- "Show annotations by default: ": "הראה הסברים כברירת מחדל: ",
+ "Show related videos: ": "הצגת סרטונים קשורים: ",
+ "Show annotations by default: ": "הצגת הערות כברירת מחדל: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "העדפות חזותיות",
"Player style: ": "סגנון הנגן: ",
"Dark mode: ": "מצב כהה: ",
@@ -95,10 +96,10 @@
"alphabetically - reverse": "בסדר אלפביתי - הפוך",
"channel name": "שם הערוץ",
"channel name - reverse": "שם הערוץ - הפוך",
- "Only show latest video from channel: ": "הראה רק את הסרטון האחרון מהערוץ: ",
- "Only show latest unwatched video from channel: ": "הראה רק את הסרטון האחרון שלא נצפה מהערוץ: ",
- "Only show unwatched: ": "הראה רק סרטונים שלא נצפו ",
- "Only show notifications (if there are any): ": "הראה רק התראות (אם יש) ",
+ "Only show latest video from channel: ": "הצגת הסרטון האחרון מהערוץ בלבד: ",
+ "Only show latest unwatched video from channel: ": "הצגת הסרטון האחרון שלא נצפה מהערוץ בלבד: ",
+ "Only show unwatched: ": "הצגת סרטונים שלא נצפו בלבד: ",
+ "Only show notifications (if there are any): ": "הצגת התראות בלבד (אם ישנן): ",
"Enable web notifications": "",
"`x` uploaded a video": "סרטון הועלה על ידי `x`",
"`x` is live": "`x` בשידור חי",
@@ -107,10 +108,10 @@
"Import/export data": "ייבוא/ייצוא נתונים",
"Change password": "שינוי הסיסמה",
"Manage subscriptions": "ניהול מינויים",
- "Manage tokens": "",
+ "Manage tokens": "ניהול אסימונים",
"Watch history": "היסטוריית צפייה",
"Delete account": "מחיקת החשבון",
- "Administrator preferences": "",
+ "Administrator preferences": "הגדרות ניהול מערכת",
"Default homepage: ": "Default homepage: ",
"Feed menu: ": "תפריט ההזנה: ",
"Top enabled: ": "",
@@ -156,13 +157,15 @@
"Title": "",
"Playlist privacy": "Playlist privacy",
"Editing playlist `x`": "",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "צפייה ב־YouTube",
"Hide annotations": "",
"Show annotations": "",
"Genre: ": "Genre: ",
"License: ": "רישיון: ",
"Family friendly? ": "לכל המשפחה? ",
- "Wilson score: ": "",
+ "Wilson score: ": "ציון וילסון: ",
"Engagement: ": "",
"Whitelisted regions: ": "",
"Blacklisted regions: ": "",
@@ -174,13 +177,13 @@
"Premieres in `x`": "",
"Premieres `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.": "שלום! נראה ש־JavaScript כבוי. יש ללחוץ כאן להצגת התגובות, נא לקחת בחשבון שהטעינה תיקח קצת יותר זמן.",
- "View YouTube comments": "",
- "View more comments on Reddit": "",
+ "View YouTube comments": "הצגת התגובות מ־YouTube",
+ "View more comments on Reddit": "להצגת תגובות נוספות ב־Reddit",
"View `x` comments": {
"([^.,0-9]|^)1([^.,0-9]|$)": "הצגת `x` תגובות.([^.,0-9]|^)1([^.,0-9]|$)",
"": "הצגת `x` תגובות."
},
- "View Reddit comments": "",
+ "View Reddit comments": "להצגת התגובות ב־Reddit",
"Hide replies": "הסתרת תגובות",
"Show replies": "הצגת תגובות",
"Incorrect password": "סיסמה שגויה",
@@ -190,17 +193,17 @@
"Login failed. This may be because two-factor authentication is not turned on for your account.": "",
"Wrong answer": "תשובה שגויה",
"Erroneous CAPTCHA": "",
- "CAPTCHA is a required field": "",
+ "CAPTCHA is a required field": "שדה CAPTCHA הוא שדה חובה",
"User ID is a required field": "חובה למלא את שדה שם המשתמש",
"Password is a required field": "חובה למלא את שדה הסיסמה",
"Wrong username or password": "שם משתמש שגוי או סיסמה שגויה",
- "Please sign in using 'Log in with Google'": "",
+ "Please sign in using 'Log in with Google'": "נא להתחבר בעזרת \"התחברות עם Google\"",
"Password cannot be empty": "",
- "Password cannot be longer than 55 characters": "",
+ "Password cannot be longer than 55 characters": "על אורך הסיסמה להיות 55 תווים לכל היותר",
"Please log in": "נא להתחבר",
"Invidious Private Feed for `x`": "",
"channel:`x`": "ערוץ:`x`",
- "Deleted or invalid channel": "",
+ "Deleted or invalid channel": "הערוץ נמחק או שאינו תקין",
"This channel does not exist.": "הערוץ הזה אינו קיים.",
"Could not get channel info.": "לא היה ניתן לקבל מידע על הערוץ.",
"Could not fetch comments": "לא היה ניתן למשוך את התגובות",
@@ -224,7 +227,7 @@
"Erroneous challenge": "",
"Erroneous token": "",
"No such user": "אין משתמש כזה",
- "Token is expired, please try again": "",
+ "Token is expired, please try again": "תוקף האסימון פג, נא לנסות שוב",
"English": "אנגלית",
"English (auto-generated)": "אנגלית (נוצר באופן אוטומטי)",
"Afrikaans": "Afrikaans",
@@ -263,10 +266,10 @@
"Hawaiian": "הוואית",
"Hebrew": "עברית",
"Hindi": "הינדית",
- "Hmong": "",
+ "Hmong": "המונג",
"Hungarian": "הונגרית",
"Icelandic": "איסלנדית",
- "Igbo": "",
+ "Igbo": "איגבו",
"Indonesian": "אינדונזית",
"Irish": "Irish",
"Italian": "איטלקית",
@@ -286,7 +289,7 @@
"Macedonian": "מקדונית",
"Malagasy": "מלגשית",
"Malay": "מלאית",
- "Malayalam": "",
+ "Malayalam": "מלאיאלאם",
"Maltese": "מלטזית",
"Maori": "מאורית",
"Marathi": "מראטהית",
@@ -301,7 +304,7 @@
"Punjabi": "פנג'אבי",
"Romanian": "רומנית",
"Russian": "רוסית",
- "Samoan": "",
+ "Samoan": "סמואית",
"Scottish Gaelic": "גאלית סקוטית",
"Serbian": "Serbian",
"Shona": "",
@@ -329,7 +332,7 @@
"Western Frisian": "",
"Xhosa": "קוסה",
"Yiddish": "יידיש",
- "Yoruba": "",
+ "Yoruba": "יורובה",
"Zulu": "זולו",
"`x` years": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` שנים.([^.,0-9]|^)1([^.,0-9]|$)",
@@ -360,7 +363,8 @@
"": "`x` שניות."
},
"Fallback comments: ": "",
- "Popular": "",
+ "Popular": "סרטונים פופולריים",
+ "Search": "",
"Top": "Top",
"About": "על אודות",
"Rating: ": "דירוג: ",
@@ -374,7 +378,7 @@
"Download": "הורדה",
"Download as: ": "הורדה בתור: ",
"%A %B %-d, %Y": "%A %B %-d, %Y",
- "(edited)": "",
+ "(edited)": "(לאחר עריכה)",
"YouTube comment permalink": "",
"permalink": "",
"`x` marked it with a ❤": "סומנה ב־❤ על ידי `x`",
@@ -411,4 +415,4 @@
"hdr": "HDR",
"filter": "סינון",
"Current version: ": "הגרסה הנוכחית: "
-}
+} \ No newline at end of file
diff --git a/locales/hr.json b/locales/hr.json
index a9a179f3..2142a052 100644
--- a/locales/hr.json
+++ b/locales/hr.json
@@ -77,6 +77,7 @@
"Fallback captions: ": "Alternativni titlovi: ",
"Show related videos: ": "Prikaži povezana videa: ",
"Show annotations by default: ": "Standardno prikaži napomene: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Postavke prikaza",
"Player style: ": "Stil playera: ",
"Dark mode: ": "Tamni modus: ",
@@ -156,6 +157,8 @@
"Title": "Naslov",
"Playlist privacy": "Privatnost playliste",
"Editing playlist `x`": "Uređivanje playliste `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Gledaj na YouTubeu",
"Hide annotations": "Sakrij napomene",
"Show annotations": "Prikaži napomene",
@@ -361,6 +364,7 @@
},
"Fallback comments: ": "Alternativni komentari: ",
"Popular": "Popularni",
+ "Search": "Traži",
"Top": "Najbolji",
"About": "Informacije",
"Rating: ": "Ocjena: ",
@@ -383,5 +387,32 @@
"Videos": "Videa",
"Playlists": "Playliste",
"Community": "Zajednica",
+ "relevance": "značaj",
+ "rating": "ocjena",
+ "date": "datum",
+ "views": "prikazi",
+ "content_type": "vrsta_sadržaja",
+ "duration": "trajanje",
+ "features": "funkcije",
+ "sort": "redoslijed",
+ "hour": "sat",
+ "today": "danas",
+ "week": "tjedan",
+ "month": "mjesec",
+ "year": "godina",
+ "video": "video",
+ "channel": "kanal",
+ "playlist": "playlista",
+ "movie": "film",
+ "show": "emisija",
+ "hd": "hd",
+ "subtitles": "titlovi",
+ "creative_commons": "creative_commons",
+ "3d": "3d",
+ "live": "uživo",
+ "4k": "4k",
+ "location": "lokacija",
+ "hdr": "hdr",
+ "filter": "filtar",
"Current version: ": "Trenutačna verzija: "
-}
+} \ No newline at end of file
diff --git a/locales/hu-HU.json b/locales/hu-HU.json
index f60bb7d2..a8c9cae1 100644
--- a/locales/hu-HU.json
+++ b/locales/hu-HU.json
@@ -68,6 +68,7 @@
"Fallback captions: ": "Másodlagos feliratok: ",
"Show related videos: ": "Kapcsolódó videók mutatása: ",
"Show annotations by default: ": "Annotációk mutatása alapértelmetésben: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Vizuális preferenciák",
"Player style: ": "Lejátszó stílusa: ",
"Dark mode: ": "Sötét mód: ",
@@ -138,6 +139,8 @@
"Title": "Címe",
"Playlist privacy": "Playlist láthatósága",
"Editing playlist `x`": "`x` playlist szerkesztése",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Megtekintés a YouTube-on",
"Hide annotations": "Annotációk elrejtése",
"Show annotations": "Annotációk mutatása",
@@ -309,6 +312,7 @@
"`x` seconds": "`x` másodperc",
"Fallback comments: ": "Másodlagos kommentek: ",
"Popular": "Népszerű",
+ "Search": "",
"Top": "Top",
"About": "Leírás",
"Rating: ": "Besorolás: ",
@@ -332,4 +336,4 @@
"Playlists": "Playlistek",
"Community": "Közösség",
"Current version: ": "Jelenlegi verzió: "
-}
+} \ No newline at end of file
diff --git a/locales/id.json b/locales/id.json
index 66662c69..61424233 100644
--- a/locales/id.json
+++ b/locales/id.json
@@ -77,6 +77,7 @@
"Fallback captions: ": "Subtitel fallback: ",
"Show related videos: ": "Tampilkan video terkait: ",
"Show annotations by default: ": "Tampilkan anotasi secara default: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Preferensi visual",
"Player style: ": "Gaya pemutar: ",
"Dark mode: ": "Mode gelap: ",
@@ -113,7 +114,7 @@
"Administrator preferences": "Preferensi administrator",
"Default homepage: ": "Laman beranda default: ",
"Feed menu: ": "Menu umpan: ",
- "Top enabled: ": "",
+ "Top enabled: ": "Teratas diaktifkan: ",
"CAPTCHA enabled: ": "CAPTCHA diaktifkan: ",
"Login enabled: ": "Masuk diaktifkan: ",
"Registration enabled: ": "Registrasi diaktifkan: ",
@@ -156,6 +157,8 @@
"Title": "Judul",
"Playlist privacy": "Privasi daftar putar",
"Editing playlist `x`": "Menyunting daftar putar `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Tonton di YouTube",
"Hide annotations": "Sembunyikan anotasi",
"Show annotations": "Tampilkan anotasi",
@@ -219,10 +222,10 @@
"Not a playlist.": "Bukan daftar putar.",
"Playlist does not exist.": "Daftar putar tidak ada.",
"Could not pull trending pages.": "Tidak bisa mendapatkan laman tren.",
- "Hidden field \"challenge\" is a required field": "",
- "Hidden field \"token\" is a required field": "",
- "Erroneous challenge": "",
- "Erroneous token": "",
+ "Hidden field \"challenge\" is a required field": "Bidang \"tantangan\" tersembunyi wajib diisi",
+ "Hidden field \"token\" is a required field": "Bidang \"token\" tersembunyi wajib diisi",
+ "Erroneous challenge": "Tantangan salah",
+ "Erroneous token": "Token salah",
"No such user": "Tidak ada pengguna demikian",
"Token is expired, please try again": "Token kadaluwarsa, harap coba lagi",
"English": "Bahasa Inggris",
@@ -243,7 +246,7 @@
"Cebuano": "Bahasa Cebu",
"Chinese (Simplified)": "Bahasa Cina",
"Chinese (Traditional)": "Bahasa Cina (Tradisonal)",
- "Corsican": "",
+ "Corsican": "Bahasa Korsika",
"Croatian": "Bahasa Kroasia",
"Czech": "Bahasa Ceko",
"Danish": "Bahasa Denmak",
@@ -253,17 +256,17 @@
"Filipino": "Bahasa Filipina",
"Finnish": "Bahasa Finlandia",
"French": "Bahasa Perancis",
- "Galician": "",
+ "Galician": "Bahasa Galisia",
"Georgian": "Bahasa Georgia",
"German": "Bahasa Jerman",
"Greek": "Bahasa Yunani",
- "Gujarati": "",
- "Haitian Creole": "",
- "Hausa": "",
+ "Gujarati": "Bahasa Gujarat",
+ "Haitian Creole": "Bahasa Kreol Haiti",
+ "Hausa": "Bahasa Hausa",
"Hawaiian": "Bahasa Hawai",
"Hebrew": "Bahasa Ibrani",
"Hindi": "Bahasa Hindi",
- "Hmong": "",
+ "Hmong": "Bahasa Hmong",
"Hungarian": "Bahasa Hungaria",
"Icelandic": "Bahasa Islandia",
"Igbo": "Bahasa Igbo",
@@ -272,53 +275,53 @@
"Italian": "Bahasa Italia",
"Japanese": "Bahasa Jepang",
"Javanese": "Bahasa Jawa",
- "Kannada": "",
- "Kazakh": "",
- "Khmer": "",
+ "Kannada": "Bahasa Kannada",
+ "Kazakh": "Bahasa Kazakh",
+ "Khmer": "Bahasa Khmer",
"Korean": "Bahasa Korea",
"Kurdish": "Bahasa Kurdistan",
- "Kyrgyz": "",
- "Lao": "",
+ "Kyrgyz": "Bahasa Kirgiz",
+ "Lao": "Bahasa Laos",
"Latin": "Bahasa Latin",
"Latvian": "Bahasa Latvia",
"Lithuanian": "Bahasa Lithuania",
- "Luxembourgish": "",
- "Macedonian": "",
- "Malagasy": "",
+ "Luxembourgish": "Bahasa Luksemburg",
+ "Macedonian": "Bahasa Makedonia",
+ "Malagasy": "Bahasa Malagasi",
"Malay": "Bahasa Melayu",
- "Malayalam": "",
- "Maltese": "",
+ "Malayalam": "Bahasa Malayalam",
+ "Maltese": "Bahasa Malta",
"Maori": "Bahasa Maori",
"Marathi": "Bahasa Marathi",
"Mongolian": "Bahasa Mongolia",
"Nepali": "Bahasa Nepal",
- "Norwegian Bokmål": "",
- "Nyanja": "",
- "Pashto": "",
+ "Norwegian Bokmål": "Bahasa Norwegia Bokmål",
+ "Nyanja": "Bahasa Chichewa",
+ "Pashto": "Bahasa Pashtun",
"Persian": "Bahasa Persia",
"Polish": "Bahasa Polandia",
"Portuguese": "Bahasa Portugis",
"Punjabi": "Bahasa Punjabi",
"Romanian": "Bahasa Romania",
"Russian": "Bahasa Russia",
- "Samoan": "",
- "Scottish Gaelic": "",
+ "Samoan": "Bahasa Samoa",
+ "Scottish Gaelic": "Bahasa Gaelik Skotlandia",
"Serbian": "Bahasa Serbia",
- "Shona": "",
- "Sindhi": "",
- "Sinhala": "",
+ "Shona": "Bahasa Shona",
+ "Sindhi": "Bahasa Sindhi",
+ "Sinhala": "Bahasa Sinhala",
"Slovak": "Bahasa Slovakia",
"Slovenian": "Bahasa Slovenia",
"Somali": "Bahasa Somalia",
- "Southern Sotho": "",
+ "Southern Sotho": "Bahasa Sesotho",
"Spanish": "Bahasa Spanyol",
"Spanish (Latin America)": "Bahasa Spanyol (Amerika Latin)",
"Sundanese": "Bahasa Sunda",
"Swahili": "Bahasa Swahili",
"Swedish": "Bahasa Swedia",
- "Tajik": "",
+ "Tajik": "Bahasa Tajik",
"Tamil": "Bahasa Tamil",
- "Telugu": "",
+ "Telugu": "Bahasa Telugu",
"Thai": "Bahasa Thailand",
"Turkish": "Bahasa Turki",
"Ukrainian": "Bahasa Ukraina",
@@ -326,11 +329,11 @@
"Uzbek": "Bahasa Uzbek",
"Vietnamese": "Bahasa Vietnam",
"Welsh": "Bahasa Wales",
- "Western Frisian": "",
- "Xhosa": "",
- "Yiddish": "",
- "Yoruba": "",
- "Zulu": "",
+ "Western Frisian": "Bahasa Frisia Barat",
+ "Xhosa": "Bahasa Xhosa",
+ "Yiddish": "Bahasa Yiddi",
+ "Yoruba": "Bahasa Yoruba",
+ "Zulu": "Bahasa Zulu",
"`x` years": {
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` tahun.([^.,0-9]|^)1([^.,0-9]|$)",
"": "`x` tahun."
@@ -361,7 +364,8 @@
},
"Fallback comments: ": "",
"Popular": "Populer",
- "Top": "",
+ "Search": "Cari",
+ "Top": "Teratas",
"About": "Ihwal",
"Rating: ": "Peringkat: ",
"Language: ": "Bahasa: ",
@@ -373,9 +377,9 @@
"Movies": "Film",
"Download": "Unduh",
"Download as: ": "Unduh sebagai: ",
- "%A %B %-d, %Y": "",
+ "%A %B %-d, %Y": "%A %B %-d, %Y",
"(edited)": "(disunting)",
- "YouTube comment permalink": "",
+ "YouTube comment permalink": "Komentar YouTube permalink",
"permalink": "permalink",
"`x` marked it with a ❤": "`x` telah ditandai dengan ❤",
"Audio mode": "Mode audio",
@@ -383,5 +387,32 @@
"Videos": "Video",
"Playlists": "Daftar putar",
"Community": "Komunitas",
+ "relevance": "Relevan",
+ "rating": "peringkat",
+ "date": "tanggal",
+ "views": "ditonton",
+ "content_type": "tipe_konten",
+ "duration": "durasi",
+ "features": "fitur",
+ "sort": "urut",
+ "hour": "jam",
+ "today": "hari ini",
+ "week": "minggu",
+ "month": "bulan",
+ "year": "tahun",
+ "video": "video",
+ "channel": "kanal",
+ "playlist": "daftar putar",
+ "movie": "film",
+ "show": "tampilkan",
+ "hd": "hd",
+ "subtitles": "subtitel",
+ "creative_commons": "creative_commons",
+ "3d": "3d",
+ "live": "siaran langsung",
+ "4k": "4k",
+ "location": "lokasi",
+ "hdr": "hdr",
+ "filter": "saring",
"Current version: ": "Versi saat ini: "
-}
+} \ No newline at end of file
diff --git a/locales/is.json b/locales/is.json
index a2943b88..569ee9d0 100644
--- a/locales/is.json
+++ b/locales/is.json
@@ -1,9 +1,16 @@
{
- "`x` subscribers": "`x`áskrifendur",
- "`x` videos": "`x` myndbönd",
- "`x` playlists": "`x` spilunarlistar",
- "`x` subscribers.": "`x` áskrifandar.",
- "`x` videos.": "`x` myndbönd.",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` áskrifandar",
+ "": "`x` áskrifendur"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` myndband",
+ "": "`x` myndbönd"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` spilunarlist",
+ "": "`x` spilunarlistar"
+ },
"LIVE": "BEINT",
"Shared `x` ago": "Deilt `x` síðan",
"Unsubscribe": "Afskrá",
@@ -70,6 +77,7 @@
"Fallback captions: ": "Varatextar: ",
"Show related videos: ": "Sýna tengd myndbönd? ",
"Show annotations by default: ": "Á að sýna glósur sjálfgefið? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Sjónrænar stillingar",
"Player style: ": "Spilara stíl: ",
"Dark mode: ": "Myrkur ham: ",
@@ -113,18 +121,24 @@
"Report statistics: ": "Skrá talnagögn? ",
"Save preferences": "Vista stillingar",
"Subscription manager": "Áskriftarstjóri",
- "`x` subscriptions": "`x` áskrifendur",
- "`x` tokens": "`x` tákn",
"Token manager": "Táknstjóri",
"Token": "Tákn",
- "`x` subscriptions.": "`x` áskriftir.",
- "`x` tokens.": "`x` tákn.",
- "`x` unseen notifications": "`x` óséðar tilkynningar",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` áskriftur",
+ "": "`x` áskriftir"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tákn",
+ "": "`x` tákn"
+ },
"Import/export": "Flytja inn/út",
"unsubscribe": "afskrá",
"revoke": "afturkalla",
"Subscriptions": "Áskriftir",
- "`x` unseen notifications.": "`x` óséðar tilkynningar.",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` óséðar tilkynning",
+ "": "`x` óséðar tilkynningar"
+ },
"search": "leita",
"Log out": "Útskrá",
"Released under the AGPLv3 by Omar Roth.": "Útgefið undir AGPLv3 eftir Omar Roth.",
@@ -143,25 +157,32 @@
"Title": "Titill",
"Playlist privacy": "Spilunarlista opinberri",
"Editing playlist `x`": "Að breyta spilunarlista `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Horfa á YouTube",
"Hide annotations": "Fela glósur",
"Show annotations": "Sýna glósur",
"Genre: ": "Tegund: ",
"License: ": "Notkunarleyfi: ",
"Family friendly? ": "Fjölskylduvænt? ",
- "`x` views": "`x` áhorf",
"Wilson score: ": "Wilson stig: ",
"Engagement: ": "Þátttöku: ",
"Whitelisted regions: ": "Svæði á hvítum lista: ",
"Blacklisted regions: ": "Svæði á svörtum lista: ",
"Shared `x`": "Deilt `x`",
- "`x` views.": "`x` áhorf.",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` áhorf",
+ "": "`x` áhorf"
+ },
"Premieres in `x`": "Frumflutt eftir `x`",
"Premieres `x`": "Frumflutt `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.": "Hæ! Lítur út eins og þú hafir slökkt á JavaScript. Smelltu hér til að skoða ummæli, hafðu í huga að þær geta tekið aðeins lengri tíma að hlaða.",
"View YouTube comments": "Skoða YouTube ummæli",
"View more comments on Reddit": "Skoða fleiri ummæli á Reddit",
- "View `x` comments": "Skoða `x` ummæli",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Skoða `x` ummæli",
+ "": "Skoða `x` ummæli"
+ },
"View Reddit comments": "Skoða Reddit ummæli",
"Hide replies": "Fela svör",
"Show replies": "Sýna svör",
@@ -180,18 +201,22 @@
"Password cannot be empty": "Lykilorð má ekki vera autt",
"Password cannot be longer than 55 characters": "Lykilorð má ekki vera lengra en 55 stafir",
"Please log in": "Vinsamlegast skráðu þig inn",
- "View `x` replies": "Skoða `x` svör",
"Invidious Private Feed for `x`": "Invidious Persónulegur Straumur fyrir `x`",
"channel:`x`": "rás:`x`",
- "`x` points": "`x` stig",
"Deleted or invalid channel": "Eytt eða ógild rás",
"This channel does not exist.": "Þessi rás er ekki til.",
"Could not get channel info.": "Ekki tókst að fá rásarupplýsingar.",
"Could not fetch comments": "Ekki tókst að sækja ummæli",
- "View `x` replies.": "Skoða `x` svör.",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Skoða `x` svar",
+ "": "Skoða `x` svör"
+ },
"`x` ago": "`x` síðan",
"Load more": "Hlaða meira",
- "`x` points.": "`x` stig.",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` stig",
+ "": "`x` stig"
+ },
"Could not create mix.": "Ekki tókst að búa til blöndu.",
"Empty playlist": "Tómur spilunarlisti",
"Not a playlist.": "Ekki spilunarlisti.",
@@ -301,13 +326,6 @@
"Turkish": "Tyrkneska",
"Ukrainian": "Úkraníska",
"Urdu": "Úrdú",
- "`x` years": "`x` ár",
- "`x` months": "`x` mánuði",
- "`x` weeks": "`x` vikur",
- "`x` days": "`x` daga",
- "`x` hours": "`x` klukkustundir",
- "`x` minutes": "`x` mínútur",
- "`x` seconds": "`x` sekúndur",
"Uzbek": "Úsbekíska",
"Vietnamese": "Víetnamska",
"Welsh": "Velska",
@@ -316,22 +334,42 @@
"Yiddish": "Jiddíska",
"Yoruba": "Jórúba",
"Zulu": "Zúlú",
- "`x` years.": "`x` ár.",
- "`x` months.": "`x` mánuði.",
- "`x` weeks.": "`x` vikur.",
- "`x` days.": "`x` dagar.",
- "`x` hours.": "`x` klukkustundir.",
- "`x` minutes.": "`x` mínútur.",
- "`x` seconds.": "`x` sekúndur.",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ár",
+ "": "`x` ár"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` mánuð",
+ "": "`x` mánuði"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` vika",
+ "": "`x` vikur"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` dagur",
+ "": "`x` dagar"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` klukkustund",
+ "": "`x` klukkustundir"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` mínúta",
+ "": "`x` mínútur"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekúnda",
+ "": "`x` sekúndur"
+ },
"Fallback comments: ": "Vara ummæli: ",
"Popular": "Vinsælt",
- "permalink": "Varanlegur tengill",
+ "Search": "",
"Top": "Topp",
"About": "Um",
"Rating: ": "Einkunn: ",
"Language: ": "Tungumál: ",
"View as playlist": "Skoða sem spilunarlista",
- "Community": "Samfélag",
"Default": "Sjálfgefið",
"Music": "Tónlist",
"Gaming": "Tólvuleikja",
@@ -342,10 +380,39 @@
"%A %B %-d, %Y": "%A %B %-d, %Y",
"(edited)": "(breytt)",
"YouTube comment permalink": "YouTube ummæli varanlegur tengill",
+ "permalink": "Varanlegur tengill",
"`x` marked it with a ❤": "`x` merkti það með ❤",
"Audio mode": "Hljóð ham",
"Video mode": "Myndband ham",
"Videos": "Myndbönd",
"Playlists": "Spilunarlistar",
+ "Community": "Samfélag",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Núverandi útgáfa: "
-}
+} \ No newline at end of file
diff --git a/locales/it.json b/locales/it.json
index 789bdd1a..e2228bca 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -1,9 +1,16 @@
{
- "`x` subscribers..([^.,0-9]|^)1([^.,0-9]|$)": "`x` iscritto",
- "`x` subscribers..": "`x` iscritti.",
- "`x` videos..([^.,0-9]|^)1([^.,0-9]|$)": "`x` video",
- "`x` videos..": "`x` video.",
- "`x` playlists": "`x` playlist",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` iscritto",
+ "": "`x` iscritti"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` video",
+ "": "`x` video"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` playlist",
+ "": "`x` playlist"
+ },
"LIVE": "IN DIRETTA",
"Shared `x` ago": "Condiviso `x` fa",
"Unsubscribe": "Disiscriviti",
@@ -70,6 +77,7 @@
"Fallback captions: ": "Sottotitoli alternativi: ",
"Show related videos: ": "Mostra video correlati: ",
"Show annotations by default: ": "Mostra le annotazioni in modo predefinito: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Preferenze grafiche",
"Player style: ": "Stile riproduttore: ",
"Dark mode: ": "Tema scuro: ",
@@ -115,16 +123,22 @@
"Subscription manager": "Gestione delle iscrizioni",
"Token manager": "Gestione dei gettoni",
"Token": "Gettone",
- "`x` subscriptions..([^.,0-9]|^)1([^.,0-9]|$)": "`x` iscrizione",
- "`x` subscriptions..": "`x` iscrizioni.",
- "`x` tokens..([^.,0-9]|^)1([^.,0-9]|$)": "`x` gettone",
- "`x` tokens..": "`x` gettoni.",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` iscrizione",
+ "": "`x` iscrizioni"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` gettone",
+ "": "`x` gettoni"
+ },
"Import/export": "Importa/esporta",
"unsubscribe": "disiscriviti",
"revoke": "revoca",
"Subscriptions": "Iscrizioni",
- "`x` unseen notifications..([^.,0-9]|^)1([^.,0-9]|$)": "`x` notifica non visualizzata",
- "`x` unseen notifications..": "`x` notifiche non visualizzate.",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` notifica non visualizzata",
+ "": "`x` notifiche non visualizzate"
+ },
"search": "Cerca",
"Log out": "Esci",
"Released under the AGPLv3 by Omar Roth.": "Pubblicato con licenza AGPLv3 da Omar Roth.",
@@ -143,6 +157,8 @@
"Title": "Titolo",
"Playlist privacy": "Privacy playlist",
"Editing playlist `x`": "Modificando la playlist `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Guarda su YouTube",
"Hide annotations": "Nascondi annotazioni",
"Show annotations": "Mostra annotazioni",
@@ -154,14 +170,19 @@
"Whitelisted regions: ": "Regioni in lista bianca: ",
"Blacklisted regions: ": "Regioni in lista nera: ",
"Shared `x`": "Condiviso `x`",
- "`x` views..([^.,0-9]|^)1([^.,0-9]|$)": "`x` visualizzazione",
- "`x` views..": "`x` visualizzazioni.",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` visualizzazione",
+ "": "`x` visualizzazioni"
+ },
"Premieres in `x`": "In anteprima in `x`",
"Premieres `x`": "In anteprima `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.": "Ciao! Sembra che tu abbia disattivato JavaScript. Clicca qui per visualizzare i commenti. Considera che potrebbe volerci più tempo.",
"View YouTube comments": "Visualizza i commenti da YouTube",
"View more comments on Reddit": "Visualizza più commenti su Reddit",
- "View `x` comments": "Visualizza `x` commenti",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Visualizza `x` commento",
+ "": "Visualizza `x` commenti"
+ },
"View Reddit comments": "Visualizza i commenti da Reddit",
"Hide replies": "Nascondi le risposte",
"Show replies": "Mostra le risposte",
@@ -186,12 +207,16 @@
"This channel does not exist.": "Questo canale non esiste.",
"Could not get channel info.": "Impossibile ottenere le informazioni del canale.",
"Could not fetch comments": "Impossibile recuperare i commenti",
- "View `x` replies..([^.,0-9]|^)1([^.,0-9]|$)": "Visualizza `x` risposta",
- "View `x` replies..": "Visualizza `x` risposte.",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Visualizza `x` risposta",
+ "": "Visualizza `x` risposte"
+ },
"`x` ago": "`x` fa",
"Load more": "Carica altro",
- "`x` points..([^.,0-9]|^)1([^.,0-9]|$)": "`x` punto",
- "`x` points..": "`x` punti.",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` punto",
+ "": "`x` punti"
+ },
"Could not create mix.": "Impossibile creare il mix.",
"Empty playlist": "Playlist vuota",
"Not a playlist.": "Non è una playlist.",
@@ -309,22 +334,37 @@
"Yiddish": "Yiddish",
"Yoruba": "Yoruba",
"Zulu": "Zulu",
- "`x` years..([^.,0-9]|^)1([^.,0-9]|$)": "`x` anno",
- "`x` years..": "`x` anni.",
- "`x` months..([^.,0-9]|^)1([^.,0-9]|$)": "`x` mese",
- "`x` months..": "`x` mesi.",
- "`x` weeks..([^.,0-9]|^)1([^.,0-9]|$)": "`x` settimana",
- "`x` weeks..": "`x` settimane.",
- "`x` days..([^.,0-9]|^)1([^.,0-9]|$)": "`x` giorno",
- "`x` days..": "`x` giorni.",
- "`x` hours..([^.,0-9]|^)1([^.,0-9]|$)": "`x` ora",
- "`x` hours..": "`x` ore.",
- "`x` minutes..([^.,0-9]|^)1([^.,0-9]|$)": "`x` minuto",
- "`x` minutes..": "`x` minuti.",
- "`x` seconds..([^.,0-9]|^)1([^.,0-9]|$)": "`x` secondo",
- "`x` seconds..": "`x` secondi.",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` anno",
+ "": "`x` anni"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` mese",
+ "": "`x` mesi"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` settimana",
+ "": "`x` settimane"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` giorno",
+ "": "`x` giorni"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ora",
+ "": "`x` ore"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minuto",
+ "": "`x` minuti"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` secondo",
+ "": "`x` secondi"
+ },
"Fallback comments: ": "Commenti alternativi: ",
"Popular": "Popolare",
+ "Search": "",
"Top": "Top",
"About": "Al riguardo",
"Rating: ": "Punteggio: ",
@@ -347,5 +387,32 @@
"Videos": "Video",
"Playlists": "Playlist",
"Community": "Comunità",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Versione attuale: "
-}
+} \ No newline at end of file
diff --git a/locales/ja.json b/locales/ja.json
index 51b1332d..e570ec35 100644
--- a/locales/ja.json
+++ b/locales/ja.json
@@ -77,6 +77,7 @@
"Fallback captions: ": "フォールバック時の字幕: ",
"Show related videos: ": "関連動画を表示: ",
"Show annotations by default: ": "デフォルトでアノテーションを表示: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "外観設定",
"Player style: ": "プレイヤースタイル: ",
"Dark mode: ": "ダークモード: ",
@@ -156,6 +157,8 @@
"Title": "タイトル",
"Playlist privacy": "再生リストのプライバシー",
"Editing playlist `x`": "再生リスト `x` を編集中",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "YouTube で視聴",
"Hide annotations": "アノテーションを隠す",
"Show annotations": "アノテーションを表示",
@@ -361,6 +364,7 @@
},
"Fallback comments: ": "フォールバック時のコメント: ",
"Popular": "人気",
+ "Search": "",
"Top": "トップ",
"About": "このサービスについて",
"Rating: ": "評価: ",
@@ -383,5 +387,32 @@
"Videos": "動画",
"Playlists": "プレイリスト",
"Community": "コミュニティ",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "現在のバージョン: "
-}
+} \ No newline at end of file
diff --git a/locales/nb-NO.json b/locales/nb-NO.json
index 355a1c33..0cccdd77 100644
--- a/locales/nb-NO.json
+++ b/locales/nb-NO.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` abonnenter",
- "`x` videos": "`x` videoer",
- "`x` playlists": "`x` spillelister",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonnenter",
+ "": "`x` abonnenter"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` videoer",
+ "": "`x` videoer"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` spillelister",
+ "": "`x` spillelister"
+ },
"LIVE": "SANNTIDSVISNING",
"Shared `x` ago": "Delt for `x` siden",
"Unsubscribe": "Opphev abonnement",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Tilbakefallsundertitler: ",
"Show related videos: ": "Vis relaterte videoer? ",
"Show annotations by default: ": "Vis merknader som forvalg? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Visuelle innstillinger",
"Player style: ": "Avspillerstil: ",
"Dark mode: ": "Mørk drakt: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Abonnementsbehandler",
"Token manager": "Symbolbehandler",
"Token": "Symbol",
- "`x` subscriptions": "`x` abonnementer",
- "`x` tokens": "`x` symboler",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonnementer",
+ "": "`x` abonnementer"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` symboler",
+ "": "`x` symboler"
+ },
"Import/export": "Importer/eksporter",
"unsubscribe": "opphev abonnement",
"revoke": "tilbakekall",
"Subscriptions": "Abonnement",
- "`x` unseen notifications": "`x` usette merknader",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` usette merknader",
+ "": "`x` usette merknader"
+ },
"search": "søk",
"Log out": "Logg ut",
"Released under the AGPLv3 by Omar Roth.": "Utgitt med AGPLv3+lisens av Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Tittel",
"Playlist privacy": "Vern av spilleliste",
"Editing playlist `x`": "Endre spilleliste «x»",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Vis video på YouTube",
"Hide annotations": "Skjul merknader",
"Show annotations": "Vis merknader",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Hvitlistede regioner: ",
"Blacklisted regions: ": "Svartelistede regioner: ",
"Shared `x`": "Delt `x`",
- "`x` views": "`x` visninger",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` visninger",
+ "": "`x` visninger"
+ },
"Premieres in `x`": "Premiere om `x`",
"Premieres `x`": "Première `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.": "Hei. Det ser ut til at du har JavaScript avslått. Klikk her for å vise kommentarer, ha i minnet at innlasting tar lengre tid.",
"View YouTube comments": "Vis YouTube-kommentarer",
"View more comments on Reddit": "Vis flere kommenterer på Reddit",
- "View `x` comments": "Vis `x` kommentarer",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Vis `x` kommentarer",
+ "": "Vis `x` kommentarer"
+ },
"View Reddit comments": "Vis Reddit-kommentarer",
"Hide replies": "Skjul svar",
"Show replies": "Vis svar",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Denne kanalen finnes ikke.",
"Could not get channel info.": "Kunne ikke innhente kanalinfo.",
"Could not fetch comments": "Kunne ikke hente kommentarer",
- "View `x` replies": "Vis `x` svar",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Vis `x` svar",
+ "": "Vis `x` svar"
+ },
"`x` ago": "`x` siden",
"Load more": "Last inn flere",
- "`x` points": "`x` poeng",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` poeng",
+ "": "`x` poeng"
+ },
"Could not create mix.": "Kunne ikke opprette miks.",
"Empty playlist": "Spillelisten er tom",
"Not a playlist.": "Ugyldig spilleliste.",
@@ -301,15 +334,37 @@
"Yiddish": "Jiddisk",
"Yoruba": "Joruba",
"Zulu": "Zulu",
- "`x` years": "`x` år",
- "`x` months": "`x` måneder",
- "`x` weeks": "`x` uker",
- "`x` days": "`x` dager",
- "`x` hours": "`x` timer",
- "`x` minutes": "`x` minutter",
- "`x` seconds": "`x` sekunder",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` år",
+ "": "`x` år"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` måneder",
+ "": "`x` måneder"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` uker",
+ "": "`x` uker"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` dager",
+ "": "`x` dager"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` timer",
+ "": "`x` timer"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minutter",
+ "": "`x` minutter"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekunder",
+ "": "`x` sekunder"
+ },
"Fallback comments: ": "Tilbakefallskommentarer: ",
"Popular": "Populært",
+ "Search": "",
"Top": "Topp",
"About": "Om",
"Rating: ": "Vurdering: ",
@@ -332,5 +387,32 @@
"Videos": "Videoer",
"Playlists": "Spillelister",
"Community": "Gemenskap",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Gjeldende versjon: "
-}
+} \ No newline at end of file
diff --git a/locales/nl.json b/locales/nl.json
index de2a2bb7..6d2ff68c 100644
--- a/locales/nl.json
+++ b/locales/nl.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` abonnees",
- "`x` videos": "`x` video's",
- "`x` playlists": "`x` afspeellijsten",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonnees",
+ "": "`x` abonnees"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` video's",
+ "": "`x` video's"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` afspeellijsten",
+ "": "`x` afspeellijsten"
+ },
"LIVE": "LIVE",
"Shared `x` ago": "Gedeeld: `x` geleden",
"Unsubscribe": "Deabonneren",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Alternatieve ondertiteling: ",
"Show related videos: ": "Gerelateerde video's tonen? ",
"Show annotations by default: ": "Standaard annotaties tonen? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Visuele instellingen",
"Player style: ": "Speler vormgeving ",
"Dark mode: ": "Donkere modus: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Abonnementen beheren",
"Token manager": "Toegangssleutels beheren",
"Token": "Toegangssleutel",
- "`x` subscriptions": "`x` abonnementen",
- "`x` tokens": "`x` toegangssleutels",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonnementen",
+ "": "`x` abonnementen"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` toegangssleutels",
+ "": "`x` toegangssleutels"
+ },
"Import/export": "Importeren/Exporteren",
"unsubscribe": "Deabonneren",
"revoke": "Intrekken",
"Subscriptions": "Abonnementen",
- "`x` unseen notifications": "`x` ongelezen meldingen",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ongelezen meldingen",
+ "": "`x` ongelezen meldingen"
+ },
"search": "zoeken",
"Log out": "Uitloggen",
"Released under the AGPLv3 by Omar Roth.": "Uitgebracht onder de AGPLv3-licentie, door Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Titel",
"Playlist privacy": "Afspeellijst privacy",
"Editing playlist `x`": "Afspeellijst `x` wijzigen",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Video bekijken op YouTube",
"Hide annotations": "Annotaties verbergen",
"Show annotations": "Annotaties tonen",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Toegestane regio's: ",
"Blacklisted regions: ": "Geblokkeerde regio's: ",
"Shared `x`": "`x` gedeeld",
- "`x` views": "`x` weergaven",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` weergaven",
+ "": "`x` weergaven"
+ },
"Premieres in `x`": "Verschijnt over `x`",
"Premieres `x`": "Verschijnt op `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.": "Hoi! Het lijkt erop dat je JavaScript hebt uitgeschakeld. Klik hier om de reacties te bekijken. Let op: het laden duurt wat langer.",
"View YouTube comments": "YouTube-reacties tonen",
"View more comments on Reddit": "Meer reacties bekijken op Reddit",
- "View `x` comments": "`x` reacties tonen",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` reacties tonen",
+ "": "`x` reacties tonen"
+ },
"View Reddit comments": "Reddit-reacties tonen",
"Hide replies": "Antwoorden verbergen",
"Show replies": "Antwoorden tonen",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Dit kanaal bestaat niet.",
"Could not get channel info.": "Kan geen kanaalinformatie ophalen.",
"Could not fetch comments": "Kan reacties niet ophalen",
- "View `x` replies": "`x` antwoorden tonen",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` antwoorden tonen",
+ "": "`x` antwoorden tonen"
+ },
"`x` ago": "`x` geleden",
"Load more": "Meer laden",
- "`x` points": "`x` punten",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` punten",
+ "": "`x` punten"
+ },
"Could not create mix.": "Kan geen mix maken.",
"Empty playlist": "Lege afspeellijst",
"Not a playlist.": "Ongeldige afspeellijst.",
@@ -301,15 +334,37 @@
"Yiddish": "Joods",
"Yoruba": "Yoruba",
"Zulu": "Zulu",
- "`x` years": "`x` jaar",
- "`x` months": "`x` maanden",
- "`x` weeks": "`x` weken",
- "`x` days": "`x` dagen",
- "`x` hours": "`x` uur",
- "`x` minutes": "`x` minuten",
- "`x` seconds": "`x` seconden",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` jaar",
+ "": "`x` jaar"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` maanden",
+ "": "`x` maanden"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` weken",
+ "": "`x` weken"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` dagen",
+ "": "`x` dagen"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` uur",
+ "": "`x` uur"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minuten",
+ "": "`x` minuten"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` seconden",
+ "": "`x` seconden"
+ },
"Fallback comments: ": "Terugvallen op ",
"Popular": "Populair",
+ "Search": "",
"Top": "Top",
"About": "Over",
"Rating: ": "Waardering: ",
@@ -332,6 +387,32 @@
"Videos": "Video's",
"Playlists": "Afspeellijsten",
"Community": "Gemeenschap",
- "Current version: ": "Huidige versie: ",
- "Download is disabled.": "Downloaden is uitgeschakeld."
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
+ "Current version: ": "Huidige versie: "
}
diff --git a/locales/pl.json b/locales/pl.json
index 66b8f4b0..3d64aa07 100644
--- a/locales/pl.json
+++ b/locales/pl.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` subskrybcji",
- "`x` videos": "`x` filmów",
- "`x` playlists": "`x` playlist",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` subskrybcji",
+ "": "`x` subskrybcji"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` filmów",
+ "": "`x` filmów"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` playlist",
+ "": "`x` playlist"
+ },
"LIVE": "NA ŻYWO",
"Shared `x` ago": "Udostępniono `x` temu",
"Unsubscribe": "Odsubskrybuj",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Zastępcze napisy: ",
"Show related videos: ": "Pokaż powiązane filmy? ",
"Show annotations by default: ": "Domyślnie pokazuj adnotacje: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Preferencje Wizualne",
"Player style: ": "Styl odtwarzacza: ",
"Dark mode: ": "Ciemny motyw: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Manager subskrybcji",
"Token manager": "Menedżer tokenów",
"Token": "Token",
- "`x` subscriptions": "`x` subskrybcji",
- "`x` tokens": "",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` subskrybcji",
+ "": "`x` subskrybcji"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "",
+ "": ""
+ },
"Import/export": "Import/Eksport",
"unsubscribe": "odsubskrybuj",
"revoke": "cofnij",
"Subscriptions": "Subskrybcje",
- "`x` unseen notifications": "`x` nowych powiadomień",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` nowych powiadomień",
+ "": "`x` nowych powiadomień"
+ },
"search": "szukaj",
"Log out": "Wyloguj",
"Released under the AGPLv3 by Omar Roth.": "Wydano na licencji AGPLv3 przez Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Tytuł",
"Playlist privacy": "Widoczność playlisty",
"Editing playlist `x`": "Edycja playlisty `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Zobacz film na YouTube",
"Hide annotations": "Ukryj adnotacje",
"Show annotations": "Pokaż adnotacje",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Dostępny na obszarach: ",
"Blacklisted regions: ": "Niedostępny na obszarach: ",
"Shared `x`": "Udostępniono `x`",
- "`x` views": "`x` wyświetleń",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` wyświetleń",
+ "": "`x` wyświetleń"
+ },
"Premieres in `x`": "Publikacja za `x`",
"Premieres `x`": "Publikacja za `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.": "Cześć! Wygląda na to, że masz wyłączoną obsługę JavaScriptu. Kliknij tutaj, żeby zobaczyć komentarze. Pamiętaj, że wczytywanie może potrwać dłużej.",
"View YouTube comments": "Wyświetl komentarze z YouTube",
"View more comments on Reddit": "Wyświetl więcej komentarzy na Reddicie",
- "View `x` comments": "Wyświetl `x` komentarzy",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Wyświetl `x` komentarzy",
+ "": "Wyświetl `x` komentarzy"
+ },
"View Reddit comments": "Wyświetl komentarze z Redditta",
"Hide replies": "Ukryj odpowiedzi",
"Show replies": "Pokaż odpowiedzi",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Ten kanał nie istnieje.",
"Could not get channel info.": "Nie udało się uzyskać informacji o kanale.",
"Could not fetch comments": "Nie udało się pobrać komentarzy",
- "View `x` replies": "Wyświetl `x` odpowiedzi",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Wyświetl `x` odpowiedzi",
+ "": "Wyświetl `x` odpowiedzi"
+ },
"`x` ago": "`x` temu",
"Load more": "Wczytaj więcej",
- "`x` points": "`x` punktów",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` punktów",
+ "": "`x` punktów"
+ },
"Could not create mix.": "Nie udało się utworzyć miksu.",
"Empty playlist": "Lista odtwarzania jest pusta",
"Not a playlist.": "Niepoprawna lista.",
@@ -301,15 +334,37 @@
"Yiddish": "jidysz",
"Yoruba": "joruba",
"Zulu": "zuluski",
- "`x` years": "`x` lat",
- "`x` months": "`x` miesięcy",
- "`x` weeks": "`x` tygodni",
- "`x` days": "`x` dni",
- "`x` hours": "`x` godzin",
- "`x` minutes": "`x` minut",
- "`x` seconds": "`x` sekund",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` lat",
+ "": "`x` lat"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` miesięcy",
+ "": "`x` miesięcy"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tygodni",
+ "": "`x` tygodni"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` dni",
+ "": "`x` dni"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` godzin",
+ "": "`x` godzin"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minut",
+ "": "`x` minut"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekund",
+ "": "`x` sekund"
+ },
"Fallback comments: ": "Zastępcze komentarze: ",
"Popular": "Popularne",
+ "Search": "",
"Top": "Top",
"About": "Informacje",
"Rating: ": "Ocena: ",
@@ -332,5 +387,32 @@
"Videos": "Filmy",
"Playlists": "Playlisty",
"Community": "Społeczność",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Aktualna wersja: "
-}
+} \ No newline at end of file
diff --git a/locales/pt-BR.json b/locales/pt-BR.json
index cf73abd8..d358928e 100644
--- a/locales/pt-BR.json
+++ b/locales/pt-BR.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` inscritos",
- "`x` videos": "`x` vídeos",
- "`x` playlists": "`x` listas de reprodução",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` inscritos",
+ "": "`x` inscritos"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` vídeos",
+ "": "`x` vídeos"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` listas de reprodução",
+ "": "`x` listas de reprodução"
+ },
"LIVE": "AO VIVO",
"Shared `x` ago": "Compartilhado `x` atrás",
"Unsubscribe": "Cancelar inscrição",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Legendas alternativas: ",
"Show related videos: ": "Mostrar vídeos relacionados: ",
"Show annotations by default: ": "Sempre mostrar anotações: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Preferências visuais",
"Player style: ": "Estilo do tocador: ",
"Dark mode: ": "Modo escuro: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Gerenciador de inscrições",
"Token manager": "Gerenciador de tokens",
"Token": "Token",
- "`x` subscriptions": "`x` inscrições",
- "`x` tokens": "`x` tokens",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` inscrições",
+ "": "`x` inscrições"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tokens",
+ "": "`x` tokens"
+ },
"Import/export": "Importar/Exportar",
"unsubscribe": "cancelar inscrição",
"revoke": "revogar",
"Subscriptions": "Inscrições",
- "`x` unseen notifications": "`x` notificações não visualizadas",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` notificações não visualizadas",
+ "": "`x` notificações não visualizadas"
+ },
"search": "Pesquisar",
"Log out": "Sair",
"Released under the AGPLv3 by Omar Roth.": "Publicado sob a licença AGPLv3, por Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Título",
"Playlist privacy": "Privacidade da playlist",
"Editing playlist `x`": "Editando playlist `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Assistir no YouTube",
"Hide annotations": "Ocultar anotações",
"Show annotations": "Mostrar anotações",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Regiões permitidas: ",
"Blacklisted regions: ": "Regiões bloqueadas: ",
"Shared `x`": "Compartilhado `x`",
- "`x` views": "`x` visualizações",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` visualizações",
+ "": "`x` visualizações"
+ },
"Premieres in `x`": "Estreia em `x`",
"Premieres `x`": "Estreia `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.": "Oi! Parece que seu JavaScript está desativado. Clique aqui para ver os comentários, entretanto eles podem levar um pouco mais de tempo para carregar.",
"View YouTube comments": "Ver comentários no YouTube",
"View more comments on Reddit": "Ver mais comentários no Reddit",
- "View `x` comments": "Ver `x` comentários",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` comentários",
+ "": "Ver `x` comentários"
+ },
"View Reddit comments": "Ver comentários no Reddit",
"Hide replies": "Ocultar respostas",
"Show replies": "Mostrar respostas",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Este canal não existe.",
"Could not get channel info.": "Não foi possível obter as informações do canal.",
"Could not fetch comments": "Não foi possível obter os comentários",
- "View `x` replies": "Ver `x` respostas",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` respostas",
+ "": "Ver `x` respostas"
+ },
"`x` ago": "`x` atrás",
"Load more": "Carregar mais",
- "`x` points": "`x` pontos",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` pontos",
+ "": "`x` pontos"
+ },
"Could not create mix.": "Não foi possível criar o mix.",
"Empty playlist": "Lista de reprodução vazia",
"Not a playlist.": "Não é uma lista de reprodução.",
@@ -301,15 +334,37 @@
"Yiddish": "Iídiche",
"Yoruba": "Iorubá",
"Zulu": "Zulu",
- "`x` years": "`x` anos",
- "`x` months": "`x` meses",
- "`x` weeks": "`x` semanas",
- "`x` days": "`x` dias",
- "`x` hours": "`x` horas",
- "`x` minutes": "`x` minutos",
- "`x` seconds": "`x` segundos",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` anos",
+ "": "`x` anos"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` meses",
+ "": "`x` meses"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` semanas",
+ "": "`x` semanas"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` dias",
+ "": "`x` dias"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` horas",
+ "": "`x` horas"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minutos",
+ "": "`x` minutos"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` segundos",
+ "": "`x` segundos"
+ },
"Fallback comments: ": "Comentários alternativos: ",
"Popular": "Populares",
+ "Search": "",
"Top": "No topo",
"About": "Sobre",
"Rating: ": "Avaliação: ",
@@ -332,5 +387,32 @@
"Videos": "Vídeos",
"Playlists": "Listas de reprodução",
"Community": "Comunidade",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Versão atual: "
-}
+} \ No newline at end of file
diff --git a/locales/pt-PT.json b/locales/pt-PT.json
index 1082c023..c25e9353 100644
--- a/locales/pt-PT.json
+++ b/locales/pt-PT.json
@@ -1,10 +1,16 @@
{
- "`x` subscribers..([^.,0-9]|^)1([^.,0-9]|$)": "`x` subscritores..([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` subscribers..": "`x` subscritores.",
- "`x` videos..([^.,0-9]|^)1([^.,0-9]|$)": "`x` videos..([^.,0-9]|^)1([^.,0-9]|$)",
- "`x` videos..": "`x` vídeos.",
- "`x` playlists..([^.,0-9]|^)1([^.,0-9]|$)": "`x` listas de reprodução.",
- "`x` playlists..": "`x` listas de reprodução.",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` subscritores",
+ "": "`x` subscritores"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` videos",
+ "": "`x` vídeos"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` listas de reprodução",
+ "": "`x` listas de reprodução"
+ },
"LIVE": "Em direto",
"Shared `x` ago": "Partilhado `x` atrás",
"Unsubscribe": "Anular subscrição",
@@ -71,6 +77,7 @@
"Fallback captions: ": "Legendas alternativas: ",
"Show related videos: ": "Mostrar vídeos relacionados: ",
"Show annotations by default: ": "Mostrar sempre anotações: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Preferências visuais",
"Player style: ": "Estilo do reprodutor: ",
"Dark mode: ": "Modo escuro: ",
@@ -116,16 +123,22 @@
"Subscription manager": "Gerir subscrições",
"Token manager": "Gerir tokens",
"Token": "Token",
- "`x` subscriptions..([^.,0-9]|^)1([^.,0-9]|$)": "`x` subscrições.",
- "`x` subscriptions..": "`x` subscrições.",
- "`x` tokens..([^.,0-9]|^)1([^.,0-9]|$)": "`x` tokens.",
- "`x` tokens..": "`x` tokens.",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` subscrições",
+ "": "`x` subscrições"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tokens",
+ "": "`x` tokens"
+ },
"Import/export": "Importar/Exportar",
"unsubscribe": "Anular subscrição",
"revoke": "revogar",
"Subscriptions": "Subscrições",
- "`x` unseen notifications..([^.,0-9]|^)1([^.,0-9]|$)": "`x` notificações não vistas.",
- "`x` unseen notifications..": "`x` notificações não vistas.",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` notificações não vistas",
+ "": "`x` notificações não vistas"
+ },
"search": "Pesquisar",
"Log out": "Terminar sessão",
"Released under the AGPLv3 by Omar Roth.": "Publicado sob a licença AGPLv3, por Omar Roth.",
@@ -144,6 +157,8 @@
"Title": "Título",
"Playlist privacy": "Privacidade da lista de reprodução",
"Editing playlist `x`": "A editar lista de reprodução 'x'",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Ver no YouTube",
"Hide annotations": "Ocultar anotações",
"Show annotations": "Mostrar anotações",
@@ -155,15 +170,19 @@
"Whitelisted regions: ": "Regiões permitidas: ",
"Blacklisted regions: ": "Regiões bloqueadas: ",
"Shared `x`": "Partilhado `x`",
- "`x` views..([^.,0-9]|^)1([^.,0-9]|$)": "`x` visualizações.",
- "`x` views..": "`x` visualizações.",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` visualizações",
+ "": "`x` visualizações"
+ },
"Premieres in `x`": "Estreias em 'x'",
"Premieres `x`": "Estreias '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.": "Oi! Parece que JavaScript está desativado. Clique aqui para ver os comentários, entretanto eles podem levar mais tempo para carregar.",
"View YouTube comments": "Ver comentários do YouTube",
"View more comments on Reddit": "Ver mais comentários no Reddit",
- "View `x` comments..([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` comentários.",
- "View `x` comments..": "Ver `x` comentários.",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` comentários",
+ "": "Ver `x` comentários"
+ },
"View Reddit comments": "Ver comentários do Reddit",
"Hide replies": "Ocultar respostas",
"Show replies": "Mostrar respostas",
@@ -188,12 +207,16 @@
"This channel does not exist.": "Este canal não existe.",
"Could not get channel info.": "Não foi possível obter as informações do canal.",
"Could not fetch comments": "Não foi possível obter os comentários",
- "View `x` replies..([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` respostas.",
- "View `x` replies..": "Ver `x` respostas.",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Ver `x` respostas",
+ "": "Ver `x` respostas"
+ },
"`x` ago": "`x` atrás",
"Load more": "Carregar mais",
- "`x` points..([^.,0-9]|^)1([^.,0-9]|$)": "'x' pontos.",
- "`x` points..": "'x' pontos.",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` pontos",
+ "": "`x` pontos"
+ },
"Could not create mix.": "Não foi possível criar mistura.",
"Empty playlist": "Lista de reprodução vazia",
"Not a playlist.": "Não é uma lista de reprodução.",
@@ -311,22 +334,37 @@
"Yiddish": "Iídiche",
"Yoruba": "Ioruba",
"Zulu": "Zulu",
- "`x` years..([^.,0-9]|^)1([^.,0-9]|$)": "`x` anos.",
- "`x` years..": "`x` anos.",
- "`x` months..([^.,0-9]|^)1([^.,0-9]|$)": "`x` meses.",
- "`x` months..": "`x` meses.",
- "`x` weeks..([^.,0-9]|^)1([^.,0-9]|$)": "`x` semanas.",
- "`x` weeks..": "`x` semanas.",
- "`x` days..([^.,0-9]|^)1([^.,0-9]|$)": "`x` dias.",
- "`x` days..": "`x` dias.",
- "`x` hours..([^.,0-9]|^)1([^.,0-9]|$)": "`x` horas.",
- "`x` hours..": "`x` horas.",
- "`x` minutes..([^.,0-9]|^)1([^.,0-9]|$)": "`x` minutos.",
- "`x` minutes..": "`x` minutos.",
- "`x` seconds..([^.,0-9]|^)1([^.,0-9]|$)": "`x` segundos.",
- "`x` seconds..": "`x` segundos.",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` anos",
+ "": "`x` anos"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` meses",
+ "": "`x` meses"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` semanas",
+ "": "`x` semanas"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` dias",
+ "": "`x` dias"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` horas",
+ "": "`x` horas"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minutos",
+ "": "`x` minutos"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` segundos",
+ "": "`x` segundos"
+ },
"Fallback comments: ": "Comentários alternativos: ",
"Popular": "Popular",
+ "Search": "",
"Top": "Top",
"About": "Sobre",
"Rating: ": "Avaliação: ",
@@ -349,5 +387,32 @@
"Videos": "Vídeos",
"Playlists": "Listas de reprodução",
"Community": "Comunidade",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Versão atual: "
-}
+} \ No newline at end of file
diff --git a/locales/ro.json b/locales/ro.json
index 08d2c386..057b919c 100644
--- a/locales/ro.json
+++ b/locales/ro.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` abonați",
- "`x` videos": "`x` videoclipuri",
- "`x` playlists": "`x` liste de redare",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonați",
+ "": "`x` abonați"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` videoclipuri",
+ "": "`x` videoclipuri"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` liste de redare",
+ "": "`x` liste de redare"
+ },
"LIVE": "ÎN DIRECT",
"Shared `x` ago": "Adăugat acum `x`",
"Unsubscribe": "Dezabonați-vă",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Subtitrări alternative: ",
"Show related videos: ": "Afișați videoclipurile asemănătoare: ",
"Show annotations by default: ": "Afișați adnotările în mod implicit: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Preferințele site-ului",
"Player style: ": "Stilul player-ului : ",
"Dark mode: ": "Modul întunecat : ",
@@ -113,13 +123,22 @@
"Subscription manager": "Gestionați abonamentele",
"Token manager": "Manager de Tokene",
"Token": "Token",
- "`x` subscriptions": "`x` abonamente",
- "`x` tokens": "`x` tokens",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonamente",
+ "": "`x` abonamente"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` tokens",
+ "": "`x` tokens"
+ },
"Import/export": "Importați/Exportați",
"unsubscribe": "dezabonați-vă",
"revoke": "revocați",
"Subscriptions": "Abonamente",
- "`x` unseen notifications": "`x` notificări nevăzute",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` notificări nevăzute",
+ "": "`x` notificări nevăzute"
+ },
"search": "căutați",
"Log out": "Deconectați-vă",
"Released under the AGPLv3 by Omar Roth.": "Publicat sub licența AGPLv3 de Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Titlu",
"Playlist privacy": "Parametrii de confidențialitate ai listei de redare",
"Editing playlist `x`": "Modificați lista de redare `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Urmăriți videoclipul pe YouTube",
"Hide annotations": "Ascundeți adnotările",
"Show annotations": "Afișați adnotările",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Regiunile de pe lista albă: ",
"Blacklisted regions: ": "Regiunile de pe lista neagră: ",
"Shared `x`": "Publicat pe `x`",
- "`x` views": "`x` vizionări",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` vizionări",
+ "": "`x` vizionări"
+ },
"Premieres in `x`": "Premiera în `x`",
"Premieres `x`": "Premiera pe `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.": "Se pare că ați dezactivat JavaScript. Apăsați aici pentru a vizualiza comentariile. Țineți minte faptul că încărcarea lor ar putea să dureze puțin mai mult.",
"View YouTube comments": "Vedeți comentariile de pe YouTube",
"View more comments on Reddit": "Vedeți mai multe comentarii pe Reddit",
- "View `x` comments": "Afișați `x` comentarii",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Afișați `x` comentarii",
+ "": "Afișați `x` comentarii"
+ },
"View Reddit comments": "Afișați comentariile de pe Reddit",
"Hide replies": "Ascundeți replicile",
"Show replies": "Afișați replicile",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Acest canal nu există.",
"Could not get channel info.": "Nu am putut primi informații despre acest canal.",
"Could not fetch comments": "Încărcarea comentariilor a eșuat.",
- "View `x` replies": "Afișați `x` replici",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Afișați `x` replici",
+ "": "Afișați `x` replici"
+ },
"`x` ago": "acum `x`",
"Load more": "Vedeți mai mult",
- "`x` points": "`x` puncte",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` puncte",
+ "": "`x` puncte"
+ },
"Could not create mix.": "Nu am putut crea această listă de redare.",
"Empty playlist": "Lista de redare este goală",
"Not a playlist.": "Lista de redare este invalidă.",
@@ -301,15 +334,37 @@
"Yiddish": "Yiddish",
"Yoruba": "Yoruba",
"Zulu": "Zoulou",
- "`x` years": "`x` ani",
- "`x` months": "`x` luni",
- "`x` weeks": "`x` săptămâni",
- "`x` days": "`x` zile",
- "`x` hours": "`x` ore",
- "`x` minutes": "`x` minute",
- "`x` seconds": "`x` secunde",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ani",
+ "": "`x` ani"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` luni",
+ "": "`x` luni"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` săptămâni",
+ "": "`x` săptămâni"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` zile",
+ "": "`x` zile"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ore",
+ "": "`x` ore"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minute",
+ "": "`x` minute"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` secunde",
+ "": "`x` secunde"
+ },
"Fallback comments: ": "Comentarii alternative: ",
"Popular": "Popular",
+ "Search": "",
"Top": "Top",
"About": "Despre",
"Rating: ": "Evaluare: ",
@@ -332,5 +387,32 @@
"Videos": "Videoclipuri",
"Playlists": "Liste de redare",
"Community": "Comunitate",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Versiunea actuală: "
-} \ No newline at end of file
+}
diff --git a/locales/ru.json b/locales/ru.json
index e69b32e5..a737745e 100644
--- a/locales/ru.json
+++ b/locales/ru.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` подписчиков",
- "`x` videos": "`x` видео",
- "`x` playlists": "`x` плейлистов",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` подписчиков",
+ "": "`x` подписчиков"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` видео",
+ "": "`x` видео"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` плейлистов",
+ "": "`x` плейлистов"
+ },
"LIVE": "ПРЯМОЙ ЭФИР",
"Shared `x` ago": "Опубликовано `x` назад",
"Unsubscribe": "Отписаться",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Дополнительный язык субтитров: ",
"Show related videos: ": "Показывать похожие видео? ",
"Show annotations by default: ": "Всегда показывать аннотации? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Настройки сайта",
"Player style: ": "Стиль проигрывателя: ",
"Dark mode: ": "Тёмное оформление: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Менеджер подписок",
"Token manager": "Менеджер токенов",
"Token": "Токен",
- "`x` subscriptions": "`x` подписок",
- "`x` tokens": "`x` токенов",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` подписок",
+ "": "`x` подписок"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` токенов",
+ "": "`x` токенов"
+ },
"Import/export": "Импорт и экспорт",
"unsubscribe": "отписаться",
"revoke": "отозвать",
"Subscriptions": "Подписки",
- "`x` unseen notifications": "`x` непросмотренных оповещений",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` непросмотренных оповещений",
+ "": "`x` непросмотренных оповещений"
+ },
"search": "поиск",
"Log out": "Выйти",
"Released under the AGPLv3 by Omar Roth.": "Реализовано Омаром Ротом по лицензии AGPLv3.",
@@ -138,6 +157,8 @@
"Title": "Заголовок",
"Playlist privacy": "Конфиденциальность плейлиста",
"Editing playlist `x`": "Редактирование плейлиста `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Смотреть на YouTube",
"Hide annotations": "Скрыть аннотации",
"Show annotations": "Показать аннотации",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Доступно в регионах: ",
"Blacklisted regions: ": "Недоступно в регионах: ",
"Shared `x`": "Опубликовано `x`",
- "`x` views": "`x` просмотров",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` просмотров",
+ "": "`x` просмотров"
+ },
"Premieres in `x`": "Премьера через `x`",
"Premieres `x`": "Премьера `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.": "Похоже, у вас отключён JavaScript. Чтобы увидить комментарии, нажмите сюда, но учтите: они могут загружаться немного медленнее.",
"View YouTube comments": "Смотреть комментарии с YouTube",
"View more comments on Reddit": "Посмотреть больше комментариев на Reddit",
- "View `x` comments": "Показать `x` комментариев",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Показать `x` комментариев",
+ "": "Показать `x` комментариев"
+ },
"View Reddit comments": "Смотреть комментарии с Reddit",
"Hide replies": "Скрыть ответы",
"Show replies": "Показать ответы",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Такого канала не существует.",
"Could not get channel info.": "Не удаётся получить информацию об этом канале.",
"Could not fetch comments": "Не удаётся загрузить комментарии",
- "View `x` replies": "Показать `x` ответов",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Показать `x` ответов",
+ "": "Показать `x` ответов"
+ },
"`x` ago": "`x` назад",
"Load more": "Загрузить больше",
- "`x` points": "`x` очков",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` очков",
+ "": "`x` очков"
+ },
"Could not create mix.": "Не удаётся создать микс.",
"Empty playlist": "Плейлист пуст",
"Not a playlist.": "Некорректный плейлист.",
@@ -301,15 +334,37 @@
"Yiddish": "Идиш",
"Yoruba": "Йоруба",
"Zulu": "Зулусский",
- "`x` years": "`x` лет",
- "`x` months": "`x` месяцев",
- "`x` weeks": "`x` недель",
- "`x` days": "`x` дней",
- "`x` hours": "`x` часов",
- "`x` minutes": "`x` минут",
- "`x` seconds": "`x` секунд",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` лет",
+ "": "`x` лет"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` месяцев",
+ "": "`x` месяцев"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` недель",
+ "": "`x` недель"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` дней",
+ "": "`x` дней"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` часов",
+ "": "`x` часов"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` минут",
+ "": "`x` минут"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` секунд",
+ "": "`x` секунд"
+ },
"Fallback comments: ": "Резервные комментарии: ",
"Popular": "Популярное",
+ "Search": "Поиск",
"Top": "Топ",
"About": "О сайте",
"Rating: ": "Рейтинг: ",
@@ -332,5 +387,32 @@
"Videos": "Видео",
"Playlists": "Плейлисты",
"Community": "Сообщество",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Текущая версия: "
-} \ No newline at end of file
+}
diff --git a/locales/si.json b/locales/si.json
index 0dabe03a..c30ad33c 100644
--- a/locales/si.json
+++ b/locales/si.json
@@ -77,6 +77,7 @@
"Fallback captions: ": "",
"Show related videos: ": "",
"Show annotations by default: ": "",
+ "Automatically extend video description: ": "",
"Visual preferences": "",
"Player style: ": "",
"Dark mode: ": "",
@@ -156,6 +157,8 @@
"Title": "",
"Playlist privacy": "",
"Editing playlist `x`": "",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "",
"Hide annotations": "",
"Show annotations": "",
@@ -361,6 +364,7 @@
},
"Fallback comments: ": "",
"Popular": "",
+ "Search": "",
"Top": "",
"About": "",
"Rating: ": "",
@@ -411,4 +415,4 @@
"hdr": "",
"filter": "",
"Current version: ": ""
-}
+} \ No newline at end of file
diff --git a/locales/sk.json b/locales/sk.json
index 0957cb87..f74d66db 100644
--- a/locales/sk.json
+++ b/locales/sk.json
@@ -71,6 +71,7 @@
"Fallback captions: ": "Náhradné titulky: ",
"Show related videos: ": "Zobraziť súvisiace videá: ",
"Show annotations by default: ": "Predvolene zobraziť anotácie: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Vizuálne nastavenia",
"Player style: ": "Štýl prehrávača: ",
"Dark mode: ": "Tmavý režim: ",
@@ -144,6 +145,8 @@
"Title": "",
"Playlist privacy": "",
"Editing playlist `x`": "",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "",
"Hide annotations": "",
"Show annotations": "",
@@ -327,6 +330,7 @@
"`x` seconds.": "",
"Fallback comments: ": "",
"Popular": "",
+ "Search": "",
"Top": "",
"About": "",
"Rating: ": "",
@@ -350,4 +354,4 @@
"Playlists": "",
"Community": "",
"Current version: ": ""
-}
+} \ No newline at end of file
diff --git a/locales/sr.json b/locales/sr.json
index dd8fb2fc..7766f32e 100644
--- a/locales/sr.json
+++ b/locales/sr.json
@@ -77,6 +77,7 @@
"Fallback captions: ": "",
"Show related videos: ": "",
"Show annotations by default: ": "",
+ "Automatically extend video description: ": "",
"Visual preferences": "",
"Player style: ": "",
"Dark mode: ": "",
@@ -156,6 +157,8 @@
"Title": "",
"Playlist privacy": "",
"Editing playlist `x`": "",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "",
"Hide annotations": "",
"Show annotations": "",
@@ -361,6 +364,7 @@
},
"Fallback comments: ": "",
"Popular": "",
+ "Search": "",
"Top": "",
"About": "",
"Rating: ": "",
@@ -411,4 +415,4 @@
"hdr": "",
"filter": "",
"Current version: ": ""
-}
+} \ No newline at end of file
diff --git a/locales/sr_Cyrl.json b/locales/sr_Cyrl.json
index adb25544..77465501 100644
--- a/locales/sr_Cyrl.json
+++ b/locales/sr_Cyrl.json
@@ -68,6 +68,7 @@
"Fallback captions: ": "Алтернативни титлови: ",
"Show related videos: ": "Прикажи сличне видее: ",
"Show annotations by default: ": "Увек приказуј анотације: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Подешавања изгледа",
"Player style: ": "Стил плејера: ",
"Dark mode: ": "Тамни режим: ",
@@ -138,6 +139,8 @@
"Title": "Наслов",
"Playlist privacy": "Видљивост плејлисте",
"Editing playlist `x`": "Уређујете плејлисту `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Гледајте на YouTube-у",
"Hide annotations": "Сакриј анотације",
"Show annotations": "Прикажи анотације",
@@ -310,6 +313,7 @@
"`x` seconds.": "",
"Fallback comments: ": "",
"Popular": "",
+ "Search": "",
"Top": "",
"About": "",
"Rating: ": "",
@@ -333,4 +337,4 @@
"Playlists": "",
"Community": "",
"Current version: ": "Тренутна верзија: "
-}
+} \ No newline at end of file
diff --git a/locales/sv-SE.json b/locales/sv-SE.json
index fef5316f..5a0ffbd2 100644
--- a/locales/sv-SE.json
+++ b/locales/sv-SE.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` prenumeranter",
- "`x` videos": "`x` videor",
- "`x` playlists": "`x` spellistor",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` prenumeranter",
+ "": "`x` prenumeranter"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` videor",
+ "": "`x` videor"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` spellistor",
+ "": "`x` spellistor"
+ },
"LIVE": "LIVE",
"Shared `x` ago": "Delad `x` sedan",
"Unsubscribe": "Avprenumerera",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Ersättningsundertexter: ",
"Show related videos: ": "Visa relaterade videor? ",
"Show annotations by default: ": "Visa länkar-i-videon som förval? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Visuella inställningar",
"Player style: ": "Spelarstil: ",
"Dark mode: ": "Mörkt läge: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Prenumerationshanterare",
"Token manager": "Åtkomst-token-hanterare",
"Token": "Åtkomst-token",
- "`x` subscriptions": "`x` prenumerationer",
- "`x` tokens": "`x` åtkomst-token",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` prenumerationer",
+ "": "`x` prenumerationer"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` åtkomst-token",
+ "": "`x` åtkomst-token"
+ },
"Import/export": "Importera/exportera",
"unsubscribe": "avprenumerera",
"revoke": "återkalla",
"Subscriptions": "Prenumerationer",
- "`x` unseen notifications": "`x` osedda aviseringar",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` osedda aviseringar",
+ "": "`x` osedda aviseringar"
+ },
"search": "sök",
"Log out": "Logga ut",
"Released under the AGPLv3 by Omar Roth.": "Utgiven under AGPLv3-licens av Omar Roth.",
@@ -138,6 +157,8 @@
"Title": "Titel",
"Playlist privacy": "Privatläge på spellista",
"Editing playlist `x`": "Redigerer spellistan `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Titta på YouTube",
"Hide annotations": "Dölj länkar-i-video",
"Show annotations": "Visa länkar-i-video",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Vitlistade regioner: ",
"Blacklisted regions: ": "Svartlistade regioner: ",
"Shared `x`": "Delade `x`",
- "`x` views": "`x` visningar",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` visningar",
+ "": "`x` visningar"
+ },
"Premieres in `x`": "Premiär om `x`",
"Premieres `x`": "Premiär av `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.": "Hej. Det ser ut som att du har JavaScript avstängt. Klicka här för att visa kommentarer, ha i åtanke att nedladdning tar längre tid.",
"View YouTube comments": "Visa YouTube-kommentarer",
"View more comments on Reddit": "Visa flera kommentarer på Reddit",
- "View `x` comments": "Visa `x` kommentarer",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Visa `x` kommentarer",
+ "": "Visa `x` kommentarer"
+ },
"View Reddit comments": "Visa Reddit-kommentarer",
"Hide replies": "Dölj svar",
"Show replies": "Visa svar",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Denna kanal finns inte.",
"Could not get channel info.": "Kunde inte hämta kanalinfo.",
"Could not fetch comments": "Kunde inte hämta kommentarer",
- "View `x` replies": "Visa `x` svar",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Visa `x` svar",
+ "": "Visa `x` svar"
+ },
"`x` ago": "`x` sedan",
"Load more": "Ladda fler",
- "`x` points": "`x` poäng",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` poäng",
+ "": "`x` poäng"
+ },
"Could not create mix.": "Kunde inte skapa mix.",
"Empty playlist": "Spellistan är tom",
"Not a playlist.": "Ogiltig spellista.",
@@ -301,15 +334,37 @@
"Yiddish": "Jiddisch",
"Yoruba": "Yoruba",
"Zulu": "Zulu",
- "`x` years": "`x` år",
- "`x` months": "`x` månader",
- "`x` weeks": "`x` veckor",
- "`x` days": "`x` dagar",
- "`x` hours": "`x` timmar",
- "`x` minutes": "`x` minuter",
- "`x` seconds": "`x` sekunder",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` år",
+ "": "`x` år"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` månader",
+ "": "`x` månader"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` veckor",
+ "": "`x` veckor"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` dagar",
+ "": "`x` dagar"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` timmar",
+ "": "`x` timmar"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` minuter",
+ "": "`x` minuter"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekunder",
+ "": "`x` sekunder"
+ },
"Fallback comments: ": "Fallback-kommentarer: ",
"Popular": "Populärt",
+ "Search": "",
"Top": "Topp",
"About": "Om",
"Rating: ": "Betyg: ",
@@ -332,5 +387,32 @@
"Videos": "Videor",
"Playlists": "Spellistor",
"Community": "Gemenskap",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Nuvarande version: "
-}
+} \ No newline at end of file
diff --git a/locales/tr.json b/locales/tr.json
index 831ecc07..53c2a8c6 100644
--- a/locales/tr.json
+++ b/locales/tr.json
@@ -1,27 +1,34 @@
{
- "`x` subscribers": "`x` abone",
- "`x` videos": "`x` video",
- "`x` playlists": "`x` çalma listesi",
- "`x` subscribers.": "`x` abone.",
- "`x` videos.": "`x` video.",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abone.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` abone."
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` video.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` video."
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` oynatma listesi.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` oynatma listesi."
+ },
"LIVE": "CANLI",
"Shared `x` ago": "`x` önce paylaşıldı",
"Unsubscribe": "Abonelikten çık",
"Subscribe": "Abone ol",
"View channel on YouTube": "Kanalı YouTube'da görüntüle",
- "View playlist on YouTube": "Çalma listesini YouTube'da görüntüle",
+ "View playlist on YouTube": "Oynatma listesini YouTube'da görüntüle",
"newest": "en yeni",
"oldest": "en eski",
"popular": "popüler",
"last": "son",
"Next page": "Sonraki sayfa",
"Previous page": "Önceki sayfa",
- "Clear watch history?": "İzleme geçmisini temizle?",
+ "Clear watch history?": "İzleme geçmişi temizlensin mi?",
"New password": "Yeni parola",
"New passwords must match": "Yeni parolalar eşleşmek zorunda",
"Cannot change password for Google accounts": "Google hesapları için parola değiştirilemez",
- "Authorize token?": "Jetonu yetkilendir?",
- "Authorize token for `x`?": "`x` için jetonu yetkilendir?",
+ "Authorize token?": "Belirteç yetkilendirilsin mi?",
+ "Authorize token for `x`?": "`x` için belirteç yetkilendirilsin mi?",
"Yes": "Evet",
"No": "Hayır",
"Import and Export Data": "Verileri İçe ve Dışa Aktar",
@@ -35,7 +42,7 @@
"Export subscriptions as OPML": "Abonelikleri OPML olarak dışa aktar",
"Export subscriptions as OPML (for NewPipe & FreeTube)": "Abonelikleri OPML olarak dışa aktar (NewPipe ve FreeTube için)",
"Export data as JSON": "Verileri JSON olarak dışa aktar",
- "Delete account?": "Hesabı sil?",
+ "Delete account?": "Hesap silinsin mi?",
"History": "Geçmiş",
"An alternative front-end to YouTube": "YouTube için alternatif bir ön-yüz",
"JavaScript license information": "JavaScript lisans bilgileri",
@@ -70,6 +77,7 @@
"Fallback captions: ": "Yedek altyazılar: ",
"Show related videos: ": "İlgili videoları göster: ",
"Show annotations by default: ": "Öntanımlı olarak ek açıklamaları göster: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Görsel tercihler",
"Player style: ": "Oynatıcı biçimi: ",
"Dark mode: ": "Karanlık mod: ",
@@ -100,7 +108,7 @@
"Import/export data": "Verileri içe/dışa aktar",
"Change password": "Parolayı değiştir",
"Manage subscriptions": "Abonelikleri yönet",
- "Manage tokens": "Jetonları yönet",
+ "Manage tokens": "Belirteçleri yönet",
"Watch history": "İzleme geçmişi",
"Delete account": "Hesap silme",
"Administrator preferences": "Yönetici tercihleri",
@@ -113,55 +121,68 @@
"Report statistics: ": "Rapor istatistikleri: ",
"Save preferences": "Tercihleri kaydet",
"Subscription manager": "Abonelik yöneticisi",
- "`x` subscriptions": "`x` abonelik",
- "`x` tokens": "`x` belirteç",
- "Token manager": "Jeton yöneticisi",
- "Token": "Jeton",
- "`x` subscriptions.": "`x` abonelik.",
- "`x` tokens.": "`x` jeton.",
- "`x` unseen notifications": "`x` okunmamış bildirim",
+ "Token manager": "Belirteç yöneticisi",
+ "Token": "Belirteç",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` abonelik.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` abonelik."
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` belirteç.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` belirteç."
+ },
"Import/export": "İçe/dışa aktar",
"unsubscribe": "abonelikten çık",
"revoke": "geri al",
"Subscriptions": "Abonelikler",
- "`x` unseen notifications.": "`x` okunmamış bildirim.",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` okunmamış bildirim.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` okunmamış bildirim."
+ },
"search": "ara",
"Log out": "Çıkış yap",
- "Public": "Genel",
"Released under the AGPLv3 by Omar Roth.": "Omar Roth tarafından AGPLv3 altında yayımlandı.",
- "Private": "Özel",
- "View all playlists": "Tüm çalma listelerini görüntüle",
- "Updated `x` ago": "`x` önce güncellendi",
- "Delete playlist `x`?": "`x` çalma listesini sil?",
- "Delete playlist": "Çalma listesini sil",
- "Create playlist": "Çalma listesi oluştur",
- "Title": "Başlık",
- "Playlist privacy": "Çalma listesi gizliliği",
- "Editing playlist `x`": "`x` çalma listesi düzenleniyor",
"Source available here.": "Kaynak kodları burada bulunabilir.",
"View JavaScript license information.": "JavaScript lisans bilgilerini görüntüle.",
"View privacy policy.": "Gizlilik politikasını görüntüle.",
"Trending": "Trendler",
+ "Public": "Genel",
"Unlisted": "Listelenmemiş",
+ "Private": "Özel",
+ "View all playlists": "Tüm oynatma listelerini görüntüle",
+ "Updated `x` ago": "`x` önce güncellendi",
+ "Delete playlist `x`?": "`x` oynatma listesi silinsin mi?",
+ "Delete playlist": "Oynatma listesini sil",
+ "Create playlist": "Oynatma listesi oluştur",
+ "Title": "Başlık",
+ "Playlist privacy": "Oynatma listesi gizliliği",
+ "Editing playlist `x`": "`x` oynatma listesi düzenleniyor",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "YouTube'da izle",
"Hide annotations": "Ek açıklamaları gizle",
"Show annotations": "Ek açıklamaları göster",
"Genre: ": "Tür: ",
"License: ": "Lisans: ",
- "Family friendly? ": "Aile için uygun? ",
- "`x` views": "`x` görüntüleme",
+ "Family friendly? ": "Aile için uygun mu? ",
"Wilson score: ": "Wilson puanı: ",
"Engagement: ": "İzleyenlerin oy verme oranı: ",
"Whitelisted regions: ": "Beyaz listeye alınan bölgeler: ",
"Blacklisted regions: ": "Kara listeye alınan bölgeler: ",
"Shared `x`": "`x` paylaşıldı",
- "`x` views.": "`x` izlenme.",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` görüntüleme.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` görüntüleme."
+ },
"Premieres in `x`": "`x`içinde ilk gösterim",
"Premieres `x`": "`x` ilk gösterim",
"Hi! Looks like you have JavaScript turned off. Click here to view comments, keep in mind they may take a bit longer to load.": "Merhaba! JavaScript'i kapatmış gibi görünüyorsun. Yorumları görüntülemek için buraya tıkla, yüklenmelerinin biraz uzun sürebileceğini unutma.",
"View YouTube comments": "YouTube yorumlarını görüntüle",
"View more comments on Reddit": "Reddit'te daha fazla yorum görüntüle",
- "View `x` comments": "`x` yorum görüntüle",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` yorumu görüntüle.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` yorumu görüntüle."
+ },
"View Reddit comments": "Reddit yorumlarını görüntüle",
"Hide replies": "Cevapları gizle",
"Show replies": "Cevapları göster",
@@ -180,29 +201,33 @@
"Password cannot be empty": "Parola boş olamaz",
"Password cannot be longer than 55 characters": "Parola 55 karakterden uzun olamaz",
"Please log in": "Lütfen oturum açın",
- "View `x` replies": "`x` yanıtı görüntüle",
"Invidious Private Feed for `x`": "`x` için İnvidious Özel Akışı",
"channel:`x`": "kanal:`x`",
- "`x` points": "`x` puan",
"Deleted or invalid channel": "Silinmiş ya da geçersiz kanal",
"This channel does not exist.": "Bu kanal mevcut değil.",
"Could not get channel info.": "Kanal bilgisi alınamadı.",
"Could not fetch comments": "Yorumlar alınamadı",
- "View `x` replies.": "`x` yanıtı görüntüle.",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` yanıtı görüntüle.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` yanıtı görüntüle."
+ },
"`x` ago": "`x` önce",
"Load more": "Daha fazla yükle",
- "`x` points.": "`x` puan.",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` puan.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` puan."
+ },
"Could not create mix.": "Mix oluşturulamadı.",
"Empty playlist": "Boş oynatma listesi",
"Not a playlist.": "Oynatma listesi değil.",
"Playlist does not exist.": "Oynatma listesi mevcut değil.",
"Could not pull trending pages.": "Trend sayfaları alınamıyor.",
"Hidden field \"challenge\" is a required field": "Gizli alan \"challenge\" zorunlu bir alandır",
- "Hidden field \"token\" is a required field": "Gizli alan \"jeton\" zorunlu bir alandır",
+ "Hidden field \"token\" is a required field": "\"belirteç\" gizli alanı zorunlu bir alandır",
"Erroneous challenge": "Hatalı challenge",
- "Erroneous token": "Hatalı jeton",
+ "Erroneous token": "Hatalı belirteç",
"No such user": "Böyle bir kullanıcı yok",
- "Token is expired, please try again": "Jetonun süresi doldu, lütfen tekrar deneyin",
+ "Token is expired, please try again": "Belirtecin süresi doldu, lütfen tekrar deneyin",
"English": "İngilizce",
"English (auto-generated)": "İngilizce (otomatik oluşturuldu)",
"Afrikaans": "Afrikanca",
@@ -309,15 +334,37 @@
"Yiddish": "Yiddiş",
"Yoruba": "Yoruba dili",
"Zulu": "Zuluca",
- "`x` years": "`x` yıl",
- "`x` months": "`x` ay",
- "`x` weeks": "`x` hafta",
- "`x` days": "`x` gün",
- "`x` hours": "`x` saat",
- "`x` minutes": "`x` dakika",
- "`x` seconds": "`x` saniye",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` yıl.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` yıl."
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` ay.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` ay."
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` hafta.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` hafta."
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` gün.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` gün."
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` saat.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` saat."
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` dakika.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` dakika."
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` saniye.([^.,0-9]|^)1([^.,0-9]|$)",
+ "": "`x` saniye."
+ },
"Fallback comments: ": "Yedek yorumlar: ",
"Popular": "Popüler",
+ "Search": "Ara",
"Top": "Enler",
"About": "Hakkında",
"Rating: ": "Değerlendirme: ",
@@ -340,5 +387,32 @@
"Videos": "Videolar",
"Playlists": "Oynatma listeleri",
"Community": "Topluluk",
+ "relevance": "ilgi",
+ "rating": "değerlendirme",
+ "date": "tarih",
+ "views": "görüntüleme",
+ "content_type": "içerik_türü",
+ "duration": "süre",
+ "features": "özellikler",
+ "sort": "sırala",
+ "hour": "saat",
+ "today": "bugün",
+ "week": "hafta",
+ "month": "ay",
+ "year": "yıl",
+ "video": "video",
+ "channel": "kanal",
+ "playlist": "oynatma listesi",
+ "movie": "film",
+ "show": "gösteri",
+ "hd": "HD",
+ "subtitles": "alt yazılar",
+ "creative_commons": "Creative Commons",
+ "3d": "3B",
+ "live": "canlı",
+ "4k": "4K",
+ "location": "konum",
+ "hdr": "HDR",
+ "filter": "filtrele",
"Current version: ": "Şu anki sürüm: "
-}
+} \ No newline at end of file
diff --git a/locales/uk.json b/locales/uk.json
index b04e0b2d..0795612e 100644
--- a/locales/uk.json
+++ b/locales/uk.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` підписників",
- "`x` videos": "`x` відео",
- "`x` playlists": "списки відтворення \"x\"",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` підписників",
+ "": "`x` підписників"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` відео",
+ "": "`x` відео"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "списки відтворення `x`",
+ "": "списки відтворення `x`"
+ },
"LIVE": "ПРЯМИЙ ЕФІР",
"Shared `x` ago": "Розміщено `x` назад",
"Unsubscribe": "Відписатися",
@@ -68,6 +77,7 @@
"Fallback captions: ": "Запасна мова субтитрів: ",
"Show related videos: ": "Показувати схожі відео? ",
"Show annotations by default: ": "Завжди показувати анотації? ",
+ "Automatically extend video description: ": "",
"Visual preferences": "Налаштування сайту",
"Player style: ": "Стиль програвача: ",
"Dark mode: ": "Темне оформлення: ",
@@ -113,13 +123,22 @@
"Subscription manager": "Менеджер підписок",
"Token manager": "Менеджер токенів",
"Token": "Токен",
- "`x` subscriptions": "`x` підписка / підписок / підписки",
- "`x` tokens": "`x` токенів",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` підписка / підписок / підписки",
+ "": "`x` підписка / підписок / підписки"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` токенів",
+ "": "`x` токенів"
+ },
"Import/export": "Імпорт і експорт",
"unsubscribe": "відписатися",
"revoke": "скасувати",
"Subscriptions": "Підписки",
- "`x` unseen notifications": "`x` непереглянуте сповіщення / непереглянутих сповіщень / непереглянутих сповіщення",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` непереглянуте сповіщення / непереглянутих сповіщень / непереглянутих сповіщення",
+ "": "`x` непереглянуте сповіщення / непереглянутих сповіщень / непереглянутих сповіщення"
+ },
"search": "пошук",
"Log out": "Вийти",
"Released under the AGPLv3 by Omar Roth.": "Реалізовано Омаром Ротом за ліцензією AGPLv3.",
@@ -138,6 +157,8 @@
"Title": "Заголовок",
"Playlist privacy": "Конфіденційність списку відтворення",
"Editing playlist `x`": "Редагування списку відтворення \"x\"",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "Дивитися на YouTube",
"Hide annotations": "Приховати анотації",
"Show annotations": "Показати анотації",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "Доступно у регіонах: ",
"Blacklisted regions: ": "Недоступно у регіонах: ",
"Shared `x`": "Розміщено `x`",
- "`x` views": "`x` переглядів",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` переглядів",
+ "": "`x` переглядів"
+ },
"Premieres in `x`": "Прем’єра через `x`",
"Premieres `x`": "Прем’єра `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.": "Схоже, у вас відключений JavaScript. Щоб побачити коментарі, натисніть сюда, але майте на увазі, що вони можуть завантажуватися трохи довше.",
"View YouTube comments": "Переглянути коментарі з YouTube",
"View more comments on Reddit": "Переглянути більше коментарів на Reddit",
- "View `x` comments": "Переглянути `x` коментар / коментарів / коментаря",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Переглянути `x` коментар / коментарів / коментаря",
+ "": "Переглянути `x` коментар / коментарів / коментаря"
+ },
"View Reddit comments": "Переглянути коментарі з Reddit",
"Hide replies": "Сховати відповіді",
"Show replies": "Показати відповіді",
@@ -180,10 +207,16 @@
"This channel does not exist.": "Такого каналу не існує.",
"Could not get channel info.": "Не вдається отримати інформацію щодо цього каналу.",
"Could not fetch comments": "Не вдається завантажити коментарі",
- "View `x` replies": "Переглянути `x` відповідь / відповідей / відповіді",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "Переглянути `x` відповідь / відповідей / відповіді",
+ "": "Переглянути `x` відповідь / відповідей / відповіді"
+ },
"`x` ago": "`x` тому",
"Load more": "Завантажити більше",
- "`x` points": "`x` очко / очок / очка",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` очко / очок / очка",
+ "": "`x` очко / очок / очка"
+ },
"Could not create mix.": "Не вдається створити мікс.",
"Empty playlist": "Плейлист порожній",
"Not a playlist.": "Недійсний плейлист.",
@@ -301,15 +334,37 @@
"Yiddish": "Їдиш",
"Yoruba": "Йоруба",
"Zulu": "Зулу",
- "`x` years": "`x` років",
- "`x` months": "`x` місяців",
- "`x` weeks": "`x` тижнів",
- "`x` days": "`x` днів",
- "`x` hours": "`x` годин",
- "`x` minutes": "`x` хвилин",
- "`x` seconds": "`x` секунд",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` років",
+ "": "`x` років"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` місяців",
+ "": "`x` місяців"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` тижнів",
+ "": "`x` тижнів"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` днів",
+ "": "`x` днів"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` годин",
+ "": "`x` годин"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` хвилин",
+ "": "`x` хвилин"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` секунд",
+ "": "`x` секунд"
+ },
"Fallback comments: ": "Резервні коментарі: ",
"Popular": "Популярне",
+ "Search": "",
"Top": "Топ",
"About": "Про сайт",
"Rating: ": "Рейтинг: ",
@@ -332,5 +387,32 @@
"Videos": "Відео",
"Playlists": "Плейлисти",
"Community": "Спільнота",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "Поточна версія: "
-} \ No newline at end of file
+}
diff --git a/locales/zh-CN.json b/locales/zh-CN.json
index d7f12975..8bd49845 100644
--- a/locales/zh-CN.json
+++ b/locales/zh-CN.json
@@ -1,7 +1,16 @@
{
- "`x` subscribers": "`x` 位订阅者",
- "`x` videos": "`x` 个视频",
- "`x` playlists": "`x` 个播放列表",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 位订阅者",
+ "": "`x` 位订阅者"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 个视频",
+ "": "`x` 个视频"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 个播放列表",
+ "": "`x` 个播放列表"
+ },
"LIVE": "直播",
"Shared `x` ago": "`x` 前分享",
"Unsubscribe": "取消订阅",
@@ -68,6 +77,7 @@
"Fallback captions: ": "后备字幕语言: ",
"Show related videos: ": "是否显示相关视频: ",
"Show annotations by default: ": "是否默认显示视频注释: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "视觉选项",
"Player style: ": "播放器样式: ",
"Dark mode: ": "深色模式: ",
@@ -113,13 +123,22 @@
"Subscription manager": "订阅管理器",
"Token manager": "令牌管理器",
"Token": "令牌",
- "`x` subscriptions": "`x` 个订阅",
- "`x` tokens": "`x` 个令牌",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 个订阅",
+ "": "`x` 个订阅"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 个令牌",
+ "": "`x` 个令牌"
+ },
"Import/export": "导入/导出",
"unsubscribe": "取消订阅",
"revoke": "吊销",
"Subscriptions": "订阅",
- "`x` unseen notifications": "`x` 条未读通知",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 条未读通知",
+ "": "`x` 条未读通知"
+ },
"search": "搜索",
"Log out": "登出",
"Released under the AGPLv3 by Omar Roth.": "由 Omar Roth 开发,以 AGPLv3 授权。",
@@ -138,6 +157,8 @@
"Title": "标题",
"Playlist privacy": "播放列表隐私设置",
"Editing playlist `x`": "正在编辑播放列表 `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "在 YouTube 观看",
"Hide annotations": "隐藏注释",
"Show annotations": "显示注释",
@@ -149,13 +170,19 @@
"Whitelisted regions: ": "白名单地区: ",
"Blacklisted regions: ": "黑名单地区: ",
"Shared `x`": "`x`发布",
- "`x` views": "`x` 播放",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 播放",
+ "": "`x` 播放"
+ },
"Premieres in `x`": "首映于 `x` 后",
"Premieres `x`": "首映于 `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.": "你好!看起来你关闭了 JavaScript。点击这里阅读评论。注意它们加载的时间可能会稍长。",
"View YouTube comments": "查看 YouTube 评论",
"View more comments on Reddit": "在 Reddit 查看更多评论",
- "View `x` comments": "查看 `x` 条评论",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "查看 `x` 条评论",
+ "": "查看 `x` 条评论"
+ },
"View Reddit comments": "查看 Reddit 评论",
"Hide replies": "隐藏回复",
"Show replies": "显示回复",
@@ -180,10 +207,16 @@
"This channel does not exist.": "频道不存在。",
"Could not get channel info.": "无法获取频道信息。",
"Could not fetch comments": "无法获取评论",
- "View `x` replies": "查看 `x` 条回复",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "查看 `x` 条回复",
+ "": "查看 `x` 条回复"
+ },
"`x` ago": "`x` 前",
"Load more": "加载更多",
- "`x` points": "`x` 分",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 分",
+ "": "`x` 分"
+ },
"Could not create mix.": "无法创建合集。",
"Empty playlist": "空播放列表",
"Not a playlist.": "非播放列表。",
@@ -301,15 +334,37 @@
"Yiddish": "意第绪语",
"Yoruba": "约鲁巴语",
"Zulu": "祖鲁语",
- "`x` years": "`x` 年",
- "`x` months": "`x` 月",
- "`x` weeks": "`x` 周",
- "`x` days": "`x` 天",
- "`x` hours": "`x` 小时",
- "`x` minutes": "`x` 分钟",
- "`x` seconds": "`x` 秒",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 年",
+ "": "`x` 年"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 月",
+ "": "`x` 月"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 周",
+ "": "`x` 周"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 天",
+ "": "`x` 天"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 小时",
+ "": "`x` 小时"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 分钟",
+ "": "`x` 分钟"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 秒",
+ "": "`x` 秒"
+ },
"Fallback comments: ": "后备评论: ",
"Popular": "热门频道",
+ "Search": "",
"Top": "热门视频",
"About": "关于",
"Rating: ": "评分: ",
@@ -332,5 +387,32 @@
"Videos": "视频",
"Playlists": "播放列表",
"Community": "社区",
+ "relevance": "",
+ "rating": "",
+ "date": "",
+ "views": "",
+ "content_type": "",
+ "duration": "",
+ "features": "",
+ "sort": "",
+ "hour": "",
+ "today": "",
+ "week": "",
+ "month": "",
+ "year": "",
+ "video": "",
+ "channel": "",
+ "playlist": "",
+ "movie": "",
+ "show": "",
+ "hd": "",
+ "subtitles": "",
+ "creative_commons": "",
+ "3d": "",
+ "live": "",
+ "4k": "",
+ "location": "",
+ "hdr": "",
+ "filter": "",
"Current version: ": "当前版本: "
-}
+} \ No newline at end of file
diff --git a/locales/zh-TW.json b/locales/zh-TW.json
index 6b40db55..044647be 100644
--- a/locales/zh-TW.json
+++ b/locales/zh-TW.json
@@ -1,9 +1,16 @@
{
- "`x` subscribers.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個訂閱者",
- "`x` subscribers.": "`x` 個訂閱者",
- "`x` videos.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 部影片",
- "`x` videos.": "`x` 部影片",
- "`x` playlists": "`x` 播放清單",
+ "`x` subscribers": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個訂閱者",
+ "": "`x` 個訂閱者"
+ },
+ "`x` videos": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 部影片",
+ "": "`x` 部影片"
+ },
+ "`x` playlists": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 播放清單",
+ "": "`x` 播放清單。"
+ },
"LIVE": "直播",
"Shared `x` ago": "`x` 前分享",
"Unsubscribe": "取消訂閱",
@@ -70,6 +77,7 @@
"Fallback captions: ": "汰退字幕: ",
"Show related videos: ": "顯示相關的影片: ",
"Show annotations by default: ": "預設顯示註釋: ",
+ "Automatically extend video description: ": "",
"Visual preferences": "視覺偏好設定",
"Player style: ": "播放器樣式: ",
"Dark mode: ": "深色模式: ",
@@ -115,16 +123,22 @@
"Subscription manager": "訂閱管理員",
"Token manager": "Token 管理員",
"Token": "Token",
- "`x` subscriptions.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個訂閱",
- "`x` subscriptions.": "`x` 個訂閱",
- "`x` tokens.([^.,0-9]|^)1([^.,0-9]|$)": "`x` token",
- "`x` tokens.": "`x` 個存取金鑰",
+ "`x` subscriptions": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個訂閱",
+ "": "`x` 個訂閱"
+ },
+ "`x` tokens": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` token",
+ "": "`x` 個存取金鑰"
+ },
"Import/export": "匯入/匯出",
"unsubscribe": "取消訂閱",
"revoke": "撤銷",
"Subscriptions": "訂閱",
- "`x` unseen notifications.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個未讀的通知",
- "`x` unseen notifications.": "`x` 個未讀的通知",
+ "`x` unseen notifications": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 個未讀的通知",
+ "": "`x` 個未讀的通知"
+ },
"search": "搜尋",
"Log out": "登出",
"Released under the AGPLv3 by Omar Roth.": "Omar Roth 以 AGPLv3 釋出。",
@@ -143,6 +157,8 @@
"Title": "標題",
"Playlist privacy": "播放清單隱私",
"Editing playlist `x`": "已編輯播放清單 `x`",
+ "Show more": "",
+ "Show less": "",
"Watch on YouTube": "在 YouTube 上觀看",
"Hide annotations": "隱藏註釋",
"Show annotations": "顯示註釋",
@@ -154,14 +170,19 @@
"Whitelisted regions: ": "白名單區域: ",
"Blacklisted regions: ": "黑名單區域: ",
"Shared `x`": "`x` 發佈",
- "`x` views.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 次檢視",
- "`x` views.": "`x` 次檢視",
+ "`x` views": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 次檢視",
+ "": "`x` 次檢視"
+ },
"Premieres in `x`": "首映於 `x`",
"Premieres `x`": "首映於 `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.": "嗨!看來您將 JavaScript 關閉了。點擊這裡以檢視留言,請注意,它們可能需要比較長的時間載入。",
"View YouTube comments": "檢視 YouTube 留言",
"View more comments on Reddit": "在 Reddit 上檢視更多留言",
- "View `x` comments": "檢視 `x` 則留言",
+ "View `x` comments": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "檢視 `x` 則留言",
+ "": "檢視 `x` 則留言。"
+ },
"View Reddit comments": "檢視 Reddit 留言",
"Hide replies": "隱藏回覆",
"Show replies": "顯示回覆",
@@ -186,12 +207,16 @@
"This channel does not exist.": "此頻道不存在。",
"Could not get channel info.": "無法取得頻道資訊。",
"Could not fetch comments": "無法擷取留言",
- "View `x` replies.([^.,0-9]|^)1([^.,0-9]|$)": "檢視 `x` 則回覆",
- "View `x` replies.": "檢視 `x` 則回覆",
+ "View `x` replies": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "檢視 `x` 則回覆",
+ "": "檢視 `x` 則回覆"
+ },
"`x` ago": "`x` 以前",
"Load more": "載入更多",
- "`x` points.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 點",
- "`x` points.": "`x` 點",
+ "`x` points": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 點",
+ "": "`x` 點"
+ },
"Could not create mix.": "無法建立混合。",
"Empty playlist": "空的播放清單",
"Not a playlist.": "不是播放清單。",
@@ -309,22 +334,37 @@
"Yiddish": "意第緒語",
"Yoruba": "約魯巴語",
"Zulu": "祖魯語",
- "`x` years.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 年",
- "`x` years.": "`x` 年",
- "`x` months.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 月",
- "`x` months.": "`x` 月",
- "`x` weeks.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 週",
- "`x` weeks.": "`x` 週",
- "`x` days.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 天",
- "`x` days.": "`x` 天",
- "`x` hours.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 小時",
- "`x` hours.": "`x` 小時",
- "`x` minutes.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 天",
- "`x` minutes.": "`x` 分鐘",
- "`x` seconds.([^.,0-9]|^)1([^.,0-9]|$)": "`x` 秒",
- "`x` seconds.": "`x` 秒",
+ "`x` years": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 年",
+ "": "`x` 年"
+ },
+ "`x` months": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 月",
+ "": "`x` 月"
+ },
+ "`x` weeks": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 週",
+ "": "`x` 週"
+ },
+ "`x` days": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 天",
+ "": "`x` 天"
+ },
+ "`x` hours": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 小時",
+ "": "`x` 小時"
+ },
+ "`x` minutes": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 天",
+ "": "`x` 分鐘"
+ },
+ "`x` seconds": {
+ "([^.,0-9]|^)1([^.,0-9]|$)": "`x` 秒",
+ "": "`x` 秒"
+ },
"Fallback comments: ": "汰退留言: ",
"Popular": "熱門頻道",
+ "Search": "搜尋",
"Top": "熱門影片",
"About": "關於",
"Rating: ": "評分: ",
@@ -347,5 +387,32 @@
"Videos": "影片",
"Playlists": "播放清單",
"Community": "社群",
+ "relevance": "關聯",
+ "rating": "評分",
+ "date": "日期",
+ "views": "檢視",
+ "content_type": "內容類型",
+ "duration": "時長",
+ "features": "特色",
+ "sort": "排序",
+ "hour": "小時",
+ "today": "今天",
+ "week": "週",
+ "month": "月",
+ "year": "年",
+ "video": "影片",
+ "channel": "頻道",
+ "playlist": "播放清單",
+ "movie": "電影",
+ "show": "秀",
+ "hd": "HD",
+ "subtitles": "字幕",
+ "creative_commons": "創用 CC",
+ "3d": "3D",
+ "live": "直播",
+ "4k": "4K",
+ "location": "位置",
+ "hdr": "HDR",
+ "filter": "篩選條件",
"Current version: ": "目前版本: "
-}
+} \ No newline at end of file
diff --git a/spec/locales_spec.cr b/spec/locales_spec.cr
new file mode 100644
index 00000000..6a083ee7
--- /dev/null
+++ b/spec/locales_spec.cr
@@ -0,0 +1,29 @@
+require "spec"
+require "json"
+require "../src/invidious/helpers/i18n.cr"
+
+describe "Locales" do
+ describe "#consistency" do
+ locales_list = LOCALES.keys.select! { |key| key != "en-US" }
+
+ locales_list.each do |locale|
+ puts "\nChecking locale #{locale}"
+ failed = false
+
+ # Use "en-US" as the reference
+ LOCALES["en-US"].each_key do |ref_key|
+ # Catch exception in order to give a hint on what caused
+ # the failure, and test one locale completely before failing
+ begin
+ LOCALES[locale].has_key?(ref_key).should be_true
+ rescue
+ failed = true
+ puts " Missing key in locale #{locale}: '#{ref_key}'"
+ end
+ end
+
+ # Throw failed assertion exception in here
+ failed.should be_false
+ end
+ end
+end
diff --git a/src/invidious.cr b/src/invidious.cr
index 88b9ad85..ae20e13e 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -65,37 +65,7 @@ SOFTWARE = {
"branch" => "#{CURRENT_BRANCH}",
}
-LOCALES = {
- "ar" => load_locale("ar"),
- "de" => load_locale("de"),
- "el" => load_locale("el"),
- "en-US" => load_locale("en-US"),
- "eo" => load_locale("eo"),
- "es" => load_locale("es"),
- "fa" => load_locale("fa"),
- "fi" => load_locale("fi"),
- "fr" => load_locale("fr"),
- "he" => load_locale("he"),
- "hr" => load_locale("hr"),
- "id" => load_locale("id"),
- "is" => load_locale("is"),
- "it" => load_locale("it"),
- "ja" => load_locale("ja"),
- "nb-NO" => load_locale("nb-NO"),
- "nl" => load_locale("nl"),
- "pl" => load_locale("pl"),
- "pt-BR" => load_locale("pt-BR"),
- "pt-PT" => load_locale("pt-PT"),
- "ro" => load_locale("ro"),
- "ru" => load_locale("ru"),
- "sv" => load_locale("sv-SE"),
- "tr" => load_locale("tr"),
- "uk" => load_locale("uk"),
- "zh-CN" => load_locale("zh-CN"),
- "zh-TW" => load_locale("zh-TW"),
-}
-
-YT_POOL = QUICPool.new(YT_URL, capacity: CONFIG.pool_size, timeout: 2.0)
+YT_POOL = YoutubeConnectionPool.new(YT_URL, capacity: CONFIG.pool_size, timeout: 2.0, use_quic: CONFIG.use_quic)
# CLI
Kemal.config.extra_options do |parser|
@@ -308,9 +278,17 @@ end
Invidious::Routing.get "/", Invidious::Routes::Misc, :home
Invidious::Routing.get "/privacy", Invidious::Routes::Misc, :privacy
Invidious::Routing.get "/licenses", Invidious::Routes::Misc, :licenses
-Invidious::Routing.get "/watch", Invidious::Routes::Watch
+
+Invidious::Routing.get "/watch", Invidious::Routes::Watch, :handle
+Invidious::Routing.get "/watch/:id", Invidious::Routes::Watch, :redirect
+Invidious::Routing.get "/shorts/:id", Invidious::Routes::Watch, :redirect
+Invidious::Routing.get "/w/:id", Invidious::Routes::Watch, :redirect
+Invidious::Routing.get "/v/:id", Invidious::Routes::Watch, :redirect
+Invidious::Routing.get "/e/:id", Invidious::Routes::Watch, :redirect
+
Invidious::Routing.get "/embed/", Invidious::Routes::Embed, :redirect
Invidious::Routing.get "/embed/:id", Invidious::Routes::Embed, :show
+
Invidious::Routing.get "/view_all_playlists", Invidious::Routes::Playlists, :index
Invidious::Routing.get "/create_playlist", Invidious::Routes::Playlists, :new
Invidious::Routing.post "/create_playlist", Invidious::Routes::Playlists, :create
@@ -323,12 +301,15 @@ Invidious::Routing.get "/add_playlist_items", Invidious::Routes::Playlists, :add
Invidious::Routing.post "/playlist_ajax", Invidious::Routes::Playlists, :playlist_ajax
Invidious::Routing.get "/playlist", Invidious::Routes::Playlists, :show
Invidious::Routing.get "/mix", Invidious::Routes::Playlists, :mix
+
Invidious::Routing.get "/opensearch.xml", Invidious::Routes::Search, :opensearch
Invidious::Routing.get "/results", Invidious::Routes::Search, :results
Invidious::Routing.get "/search", Invidious::Routes::Search, :search
+
Invidious::Routing.get "/login", Invidious::Routes::Login, :login_page
Invidious::Routing.post "/login", Invidious::Routes::Login, :login
Invidious::Routing.post "/signout", Invidious::Routes::Login, :signout
+
Invidious::Routing.get "/preferences", Invidious::Routes::PreferencesRoute, :show
Invidious::Routing.post "/preferences", Invidious::Routes::PreferencesRoute, :update
Invidious::Routing.get "/toggle_theme", Invidious::Routes::PreferencesRoute, :toggle_theme
diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr
index f6b6acd1..e1d877b7 100644
--- a/src/invidious/helpers/helpers.cr
+++ b/src/invidious/helpers/helpers.cr
@@ -50,6 +50,7 @@ struct ConfigPreferences
property thin_mode : Bool = false
property unseen_only : Bool = false
property video_loop : Bool = false
+ property extend_desc : Bool = false
property volume : Int32 = 100
def to_tuple
@@ -98,6 +99,7 @@ class Config
property port : Int32 = 3000 # Port to listen for connections (overrided by command line argument)
property host_binding : String = "0.0.0.0" # Host to bind (overrided by command line argument)
property pool_size : Int32 = 100 # Pool size for HTTP requests to youtube.com and ytimg.com (each domain has a separate pool of `pool_size`)
+ property use_quic : Bool = true # Use quic transport for youtube api
@[YAML::Field(converter: Preferences::StringToCookies)]
property cookies : HTTP::Cookies = HTTP::Cookies.new # Saved cookies in "name1=value1; name2=value2..." format
@@ -678,7 +680,7 @@ def create_notification_stream(env, topics, connection_channel)
end
def extract_initial_data(body) : Hash(String, JSON::Any)
- return JSON.parse(body.match(/(window\["ytInitialData"\]|var\s*ytInitialData)\s*=\s*(?<info>\{.*?\});/mx).try &.["info"] || "{}").as_h
+ return JSON.parse(body.match(/(window\["ytInitialData"\]|var\s*ytInitialData)\s*=\s*(?<info>{.*?});<\/script>/mx).try &.["info"] || "{}").as_h
end
def proxy_file(response, env)
diff --git a/src/invidious/helpers/i18n.cr b/src/invidious/helpers/i18n.cr
index 0faa2e32..45a3f1ae 100644
--- a/src/invidious/helpers/i18n.cr
+++ b/src/invidious/helpers/i18n.cr
@@ -1,3 +1,33 @@
+LOCALES = {
+ "ar" => load_locale("ar"),
+ "de" => load_locale("de"),
+ "el" => load_locale("el"),
+ "en-US" => load_locale("en-US"),
+ "eo" => load_locale("eo"),
+ "es" => load_locale("es"),
+ "fa" => load_locale("fa"),
+ "fi" => load_locale("fi"),
+ "fr" => load_locale("fr"),
+ "he" => load_locale("he"),
+ "hr" => load_locale("hr"),
+ "id" => load_locale("id"),
+ "is" => load_locale("is"),
+ "it" => load_locale("it"),
+ "ja" => load_locale("ja"),
+ "nb-NO" => load_locale("nb-NO"),
+ "nl" => load_locale("nl"),
+ "pl" => load_locale("pl"),
+ "pt-BR" => load_locale("pt-BR"),
+ "pt-PT" => load_locale("pt-PT"),
+ "ro" => load_locale("ro"),
+ "ru" => load_locale("ru"),
+ "sv" => load_locale("sv-SE"),
+ "tr" => load_locale("tr"),
+ "uk" => load_locale("uk"),
+ "zh-CN" => load_locale("zh-CN"),
+ "zh-TW" => load_locale("zh-TW"),
+}
+
def load_locale(name)
return JSON.parse(File.read("locales/#{name}.json")).as_h
end
diff --git a/src/invidious/helpers/macros.cr b/src/invidious/helpers/macros.cr
index 8b74bc86..5d426a8b 100644
--- a/src/invidious/helpers/macros.cr
+++ b/src/invidious/helpers/macros.cr
@@ -48,7 +48,8 @@ module JSON::Serializable
end
end
-macro templated(filename, template = "template")
+macro templated(filename, template = "template", navbar_search = true)
+ navbar_search = {{navbar_search}}
render "src/invidious/views/#{{{filename}}}.ecr", "src/invidious/views/#{{{template}}}.ecr"
end
diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr
index 67f496df..10d4e6b6 100644
--- a/src/invidious/helpers/utils.cr
+++ b/src/invidious/helpers/utils.cr
@@ -16,15 +16,15 @@ def add_yt_headers(request)
end
end
-struct QUICPool
+struct YoutubeConnectionPool
property! url : URI
property! capacity : Int32
property! timeout : Float64
- property pool : ConnectionPool(QUIC::Client)
+ property pool : ConnectionPool(QUIC::Client | HTTP::Client)
- def initialize(url : URI, @capacity = 5, @timeout = 5.0)
+ def initialize(url : URI, @capacity = 5, @timeout = 5.0, use_quic = true)
@url = url
- @pool = build_pool
+ @pool = build_pool(use_quic)
end
def client(region = nil, &block)
@@ -50,9 +50,13 @@ struct QUICPool
response
end
- private def build_pool
- ConnectionPool(QUIC::Client).new(capacity: capacity, timeout: timeout) do
- conn = QUIC::Client.new(url)
+ private def build_pool(use_quic)
+ ConnectionPool(QUIC::Client | HTTP::Client).new(capacity: capacity, timeout: timeout) do
+ if use_quic
+ conn = QUIC::Client.new(url)
+ else
+ conn = HTTP::Client.new(url)
+ end
conn.family = (url.host == "www.youtube.com") ? CONFIG.force_resolve : Socket::Family::INET
conn.family = Socket::Family::INET if conn.family == Socket::Family::UNSPEC
conn.before_request { |r| add_yt_headers(r) } if url.host == "www.youtube.com"
diff --git a/src/invidious/jobs/statistics_refresh_job.cr b/src/invidious/jobs/statistics_refresh_job.cr
index aa46fb0e..6569c0a1 100644
--- a/src/invidious/jobs/statistics_refresh_job.cr
+++ b/src/invidious/jobs/statistics_refresh_job.cr
@@ -42,7 +42,7 @@ class Invidious::Jobs::StatisticsRefreshJob < Invidious::Jobs::BaseJob
"version" => @software_config["version"],
"branch" => @software_config["branch"],
}
- STATISTICS["openRegistration"] = CONFIG.registration_enabled
+ STATISTICS["openRegistrations"] = CONFIG.registration_enabled
end
private def refresh_stats
diff --git a/src/invidious/playlists.cr b/src/invidious/playlists.cr
index 71f6a9b8..073a9986 100644
--- a/src/invidious/playlists.cr
+++ b/src/invidious/playlists.cr
@@ -437,7 +437,8 @@ end
def get_playlist_videos(db, playlist, offset, locale = nil, continuation = nil)
# Show empy playlist if requested page is out of range
- if offset >= playlist.video_count
+ # (e.g, when a new playlist has been created, offset will be negative)
+ if offset >= playlist.video_count || offset < 0
return [] of PlaylistVideo
end
diff --git a/src/invidious/routes/misc.cr b/src/invidious/routes/misc.cr
index bc009633..d32ba892 100644
--- a/src/invidious/routes/misc.cr
+++ b/src/invidious/routes/misc.cr
@@ -22,7 +22,7 @@ class Invidious::Routes::Misc < Invidious::Routes::BaseRoute
env.redirect "/feed/popular"
end
else
- templated "empty"
+ templated "search_homepage", navbar_search: false
end
end
diff --git a/src/invidious/routes/watch.cr b/src/invidious/routes/watch.cr
index 8169e1ed..d0338882 100644
--- a/src/invidious/routes/watch.cr
+++ b/src/invidious/routes/watch.cr
@@ -187,4 +187,13 @@ class Invidious::Routes::Watch < Invidious::Routes::BaseRoute
templated "watch"
end
+
+ def redirect(env)
+ url = "/watch?v=#{env.params.url["id"]}"
+ if env.params.query.size > 0
+ url += "&#{env.params.query}"
+ end
+
+ return env.redirect url
+ end
end
diff --git a/src/invidious/users.cr b/src/invidious/users.cr
index 8fef64a0..e4ebb4d1 100644
--- a/src/invidious/users.cr
+++ b/src/invidious/users.cr
@@ -78,6 +78,7 @@ struct Preferences
property thin_mode : Bool = CONFIG.default_user_preferences.thin_mode
property unseen_only : Bool = CONFIG.default_user_preferences.unseen_only
property video_loop : Bool = CONFIG.default_user_preferences.video_loop
+ property extend_desc : Bool = CONFIG.default_user_preferences.extend_desc
property volume : Int32 = CONFIG.default_user_preferences.volume
module BoolToString
diff --git a/src/invidious/videos.cr b/src/invidious/videos.cr
index e6d4c764..bf281507 100644
--- a/src/invidious/videos.cr
+++ b/src/invidious/videos.cr
@@ -242,6 +242,7 @@ struct VideoPreferences
property speed : Float32 | Float64
property video_end : Float64 | Int32
property video_loop : Bool
+ property extend_desc : Bool
property video_start : Float64 | Int32
property volume : Int32
end
@@ -818,7 +819,7 @@ end
def extract_polymer_config(body)
params = {} of String => JSON::Any
- player_response = body.match(/(window\["ytInitialPlayerResponse"\]|var\sytInitialPlayerResponse)\s*=\s*(?<info>{.*?});/m)
+ player_response = body.match(/(window\["ytInitialPlayerResponse"\]|var\sytInitialPlayerResponse)\s*=\s*(?<info>{.*?});\s*var\s*meta/m)
.try { |r| JSON.parse(r["info"]).as_h }
if body.includes?("To continue with your YouTube experience, please fill out the form below.") ||
@@ -1050,6 +1051,7 @@ def process_video_params(query, preferences)
related_videos = query["related_videos"]?.try { |q| (q == "true" || q == "1").to_unsafe }
speed = query["speed"]?.try &.rchop("x").to_f?
video_loop = query["loop"]?.try { |q| (q == "true" || q == "1").to_unsafe }
+ extend_desc = query["extend_desc"]?.try { |q| (q == "true" || q == "1").to_unsafe }
volume = query["volume"]?.try &.to_i?
if preferences
@@ -1068,6 +1070,7 @@ def process_video_params(query, preferences)
related_videos ||= preferences.related_videos.to_unsafe
speed ||= preferences.speed
video_loop ||= preferences.video_loop.to_unsafe
+ extend_desc ||= preferences.extend_desc.to_unsafe
volume ||= preferences.volume
end
@@ -1085,6 +1088,7 @@ def process_video_params(query, preferences)
related_videos ||= CONFIG.default_user_preferences.related_videos.to_unsafe
speed ||= CONFIG.default_user_preferences.speed
video_loop ||= CONFIG.default_user_preferences.video_loop.to_unsafe
+ extend_desc ||= CONFIG.default_user_preferences.extend_desc.to_unsafe
volume ||= CONFIG.default_user_preferences.volume
annotations = annotations == 1
@@ -1095,6 +1099,7 @@ def process_video_params(query, preferences)
local = local == 1
related_videos = related_videos == 1
video_loop = video_loop == 1
+ extend_desc = extend_desc == 1
if CONFIG.disabled?("dash") && quality == "dash"
quality = "high"
@@ -1141,6 +1146,7 @@ def process_video_params(query, preferences)
speed: speed,
video_end: video_end,
video_loop: video_loop,
+ extend_desc: extend_desc,
video_start: video_start,
volume: volume,
})
@@ -1150,15 +1156,15 @@ end
def build_thumbnails(id)
return {
- {name: "maxres", host: "#{HOST_URL}", url: "maxres", height: 720, width: 1280},
- {name: "maxresdefault", host: "https://i.ytimg.com", url: "maxresdefault", height: 720, width: 1280},
- {name: "sddefault", host: "https://i.ytimg.com", url: "sddefault", height: 480, width: 640},
- {name: "high", host: "https://i.ytimg.com", url: "hqdefault", height: 360, width: 480},
- {name: "medium", host: "https://i.ytimg.com", url: "mqdefault", height: 180, width: 320},
- {name: "default", host: "https://i.ytimg.com", url: "default", height: 90, width: 120},
- {name: "start", host: "https://i.ytimg.com", url: "1", height: 90, width: 120},
- {name: "middle", host: "https://i.ytimg.com", url: "2", height: 90, width: 120},
- {name: "end", host: "https://i.ytimg.com", url: "3", height: 90, width: 120},
+ {host: HOST_URL, height: 720, width: 1280, name: "maxres", url: "maxres"},
+ {host: HOST_URL, height: 720, width: 1280, name: "maxresdefault", url: "maxresdefault"},
+ {host: HOST_URL, height: 480, width: 640, name: "sddefault", url: "sddefault"},
+ {host: HOST_URL, height: 360, width: 480, name: "high", url: "hqdefault"},
+ {host: HOST_URL, height: 180, width: 320, name: "medium", url: "mqdefault"},
+ {host: HOST_URL, height: 90, width: 120, name: "default", url: "default"},
+ {host: HOST_URL, height: 90, width: 120, name: "start", url: "1"},
+ {host: HOST_URL, height: 90, width: 120, name: "middle", url: "2"},
+ {host: HOST_URL, height: 90, width: 120, name: "end", url: "3"},
}
end
diff --git a/src/invidious/views/empty.ecr b/src/invidious/views/empty.ecr
deleted file mode 100644
index c10c097e..00000000
--- a/src/invidious/views/empty.ecr
+++ /dev/null
@@ -1,8 +0,0 @@
-<% content_for "header" do %>
-<meta name="description" content="<%= translate(locale, "An alternative front-end to YouTube") %>">
-<title>
- Invidious
-</title>
-<% end %>
-
-<%= rendered "components/feed_menu" %>
diff --git a/src/invidious/views/preferences.ecr b/src/invidious/views/preferences.ecr
index 14d63536..602340a4 100644
--- a/src/invidious/views/preferences.ecr
+++ b/src/invidious/views/preferences.ecr
@@ -106,6 +106,12 @@
<input name="annotations" id="annotations" type="checkbox" <% if preferences.annotations %>checked<% end %>>
</div>
+ <div class="pure-control-group">
+ <label for="extend_desc"><%= translate(locale, "Automatically extend video description: ") %></label>
+ <input name="extend_desc" id="extend_desc" type="checkbox" <% if preferences.extend_desc %>checked<% end %>>
+ </div>
+
+
<legend><%= translate(locale, "Visual preferences") %></legend>
<div class="pure-control-group">
@@ -150,7 +156,7 @@
<label for="default_home"><%= translate(locale, "Default homepage: ") %></label>
<select name="default_home" id="default_home">
<% feed_options.each do |option| %>
- <option value="<%= option %>" <% if preferences.default_home == option %> selected <% end %>><%= translate(locale, option.blank? ? "none" : option) %></option>
+ <option value="<%= option %>" <% if preferences.default_home == option %> selected <% end %>><%= translate(locale, option.blank? ? "Search" : option) %></option>
<% end %>
</select>
</div>
@@ -160,7 +166,7 @@
<% (feed_options.size - 1).times do |index| %>
<select name="feed_menu[<%= index %>]" id="feed_menu[<%= index %>]">
<% feed_options.each do |option| %>
- <option value="<%= option %>" <% if preferences.feed_menu[index]? == option %> selected <% end %>><%= translate(locale, option.blank? ? "none" : option) %></option>
+ <option value="<%= option %>" <% if preferences.feed_menu[index]? == option %> selected <% end %>><%= translate(locale, option.blank? ? "Search" : option) %></option>
<% end %>
</select>
<% end %>
diff --git a/src/invidious/views/search_homepage.ecr b/src/invidious/views/search_homepage.ecr
new file mode 100644
index 00000000..b36500e9
--- /dev/null
+++ b/src/invidious/views/search_homepage.ecr
@@ -0,0 +1,24 @@
+<% content_for "header" do %>
+<meta name="description" content="<%= translate(locale, "An alternative front-end to YouTube") %>">
+<title>
+ Invidious
+</title>
+<link rel="stylesheet" href="/css/empty.css?v=<%= ASSET_COMMIT %>">
+<% end %>
+
+<%= rendered "components/feed_menu" %>
+
+<div class="pure-g h-box" id="search-widget">
+ <div class="pure-u-1" id="logo">
+ <h1 href="/" class="pure-menu-heading">Invidious</h1>
+ </div>
+ <div class="pure-u-1-4"></div>
+ <div class="pure-u-1 pure-u-md-12-24 searchbar">
+ <form class="pure-form" action="/search" method="get">
+ <fieldset>
+ <input type="search" style="width:100%" name="q" placeholder="<%= translate(locale, "search") %>" value="<%= env.get?("search").try {|x| HTML.escape(x.as(String)) } %>">
+ </fieldset>
+ </form>
+ </div>
+ <div class="pure-u-1-4"></div>
+</div>
diff --git a/src/invidious/views/template.ecr b/src/invidious/views/template.ecr
index 61b900e3..5b63bf1f 100644
--- a/src/invidious/views/template.ecr
+++ b/src/invidious/views/template.ecr
@@ -26,18 +26,21 @@
<span style="display:none" id="dark_mode_pref"><%= env.get("preferences").as(Preferences).dark_mode %></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">
+ <div class="pure-u-1 pure-u-md-20-24", id="contents">
<div class="pure-g navbar h-box">
- <div class="pure-u-1 pure-u-md-4-24">
- <a href="/" class="index-link pure-menu-heading">Invidious</a>
- </div>
- <div class="pure-u-1 pure-u-md-12-24 searchbar">
- <form class="pure-form" action="/search" method="get">
- <fieldset>
- <input type="search" style="width:100%" name="q" placeholder="<%= translate(locale, "search") %>" value="<%= env.get?("search").try {|x| HTML.escape(x.as(String)) } %>">
- </fieldset>
- </form>
- </div>
+ <% if navbar_search %>
+ <div class="pure-u-1 pure-u-md-4-24">
+ <a href="/" class="index-link pure-menu-heading">Invidious</a>
+ </div>
+ <div class="pure-u-1 pure-u-md-12-24 searchbar">
+ <form class="pure-form" action="/search" method="get">
+ <fieldset>
+ <input type="search" style="width:100%" name="q" placeholder="<%= translate(locale, "search") %>" value="<%= env.get?("search").try {|x| HTML.escape(x.as(String)) } %>">
+ </fieldset>
+ </form>
+ </div>
+ <% end %>
+
<div class="pure-u-1 pure-u-md-8-24 user-field">
<% if env.get? "user" %>
<div class="pure-u-1-4">
@@ -106,7 +109,7 @@
<%= content %>
- <div class="footer">
+ <footer>
<div class="pure-g">
<div class="pure-u-1 pure-u-md-1-3">
<a href="https://github.com/iv-org/invidious">
@@ -140,7 +143,7 @@
<%= translate(locale, "Current version: ") %> <%= CURRENT_VERSION %>-<%= CURRENT_COMMIT %> @ <%= CURRENT_BRANCH %>
</div>
</div>
- </div>
+ </footer>
</div>
<div class="pure-u-1 pure-u-md-2-24"></div>
</div>
diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr
index a86e23b2..8b587eb3 100644
--- a/src/invidious/views/watch.ecr
+++ b/src/invidious/views/watch.ecr
@@ -25,6 +25,19 @@
<link rel="alternate" href="https://www.youtube.com/watch?v=<%= video.id %>">
<%= rendered "components/player_sources" %>
<title><%= HTML.escape(video.title) %> - Invidious</title>
+
+<!-- Description expansion also updates the 'Show more' button to 'Show less' so
+we're going to need to do it here in order to allow for translations.
+ -->
+<style>
+#descexpansionbutton + label > a::after {
+ content: "<%= translate(locale, "Show more") %>"
+}
+
+#descexpansionbutton:checked + label > a::after {
+ content: "<%= translate(locale, "Show less") %>"
+}
+</style>
<% end %>
<script id="video_data" type="application/json">
@@ -227,8 +240,18 @@
<% end %>
</p>
- <div>
- <%= video.description_html %>
+ <div id="description-box"> <!-- Description -->
+ <% if video.description.size < 200 || params.extend_desc %>
+ <%= video.description_html %>
+ <% else %>
+ <input id="descexpansionbutton" type="checkbox"/>
+ <label for="descexpansionbutton" style="order: 1;">
+ <a></a>
+ </label>
+ <div id="descriptionWrapper">
+ <%= video.description_html %>
+ </div>
+ <% end %>
</div>
<hr>