mirror of
https://github.com/iv-org/invidious.git
synced 2025-04-22 08:19:09 -04:00
Merge branch 'master' into syeopite-patch-1
This commit is contained in:
commit
a62aeb090c
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -86,6 +86,9 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Build Docker
|
||||
run: docker-compose build --build-arg release=0
|
||||
|
||||
- name: Run Docker
|
||||
run: docker-compose up -d
|
||||
|
||||
- name: Test Docker
|
||||
@ -112,6 +115,7 @@ jobs:
|
||||
context: .
|
||||
file: docker/Dockerfile.arm64
|
||||
platforms: linux/arm64/v8
|
||||
build-args: release=0
|
||||
|
||||
- name: Test Docker
|
||||
run: while curl -Isf http://localhost:3000; do sleep 1; done
|
||||
|
2
.github/workflows/container-release.yml
vendored
2
.github/workflows/container-release.yml
vendored
@ -49,6 +49,7 @@ jobs:
|
||||
labels: quay.expires-after=12w
|
||||
push: true
|
||||
tags: quay.io/invidious/invidious:${{ github.sha }},quay.io/invidious/invidious:latest
|
||||
build-args: release=1
|
||||
|
||||
- name: Build and push Docker ARM64 image for Push Event
|
||||
if: github.ref == 'refs/heads/master'
|
||||
@ -60,3 +61,4 @@ jobs:
|
||||
labels: quay.expires-after=12w
|
||||
push: true
|
||||
tags: quay.io/invidious/invidious:${{ github.sha }}-arm64,quay.io/invidious/invidious:latest-arm64
|
||||
build-args: release=1
|
@ -1,6 +1,8 @@
|
||||
FROM crystallang/crystal:1.1.1-alpine AS builder
|
||||
RUN apk add --no-cache sqlite-static yaml-static
|
||||
|
||||
ARG release
|
||||
|
||||
WORKDIR /invidious
|
||||
COPY ./shard.yml ./shard.yml
|
||||
COPY ./shard.lock ./shard.lock
|
||||
@ -16,10 +18,17 @@ COPY ./.git/ ./.git/
|
||||
RUN crystal spec --warnings all \
|
||||
--link-flags "-lxml2 -llzma"
|
||||
|
||||
RUN crystal build ./src/invidious.cr \
|
||||
--release \
|
||||
--static --warnings all \
|
||||
--link-flags "-lxml2 -llzma"
|
||||
RUN if [ ${release} == 1 ] ; then \
|
||||
crystal build ./src/invidious.cr \
|
||||
--release \
|
||||
--static --warnings all \
|
||||
--link-flags "-lxml2 -llzma"; \
|
||||
else \
|
||||
crystal build ./src/invidious.cr \
|
||||
--static --warnings all \
|
||||
--link-flags "-lxml2 -llzma"; \
|
||||
fi
|
||||
|
||||
|
||||
FROM alpine:latest
|
||||
RUN apk add --no-cache librsvg ttf-opensans
|
||||
|
@ -1,6 +1,8 @@
|
||||
FROM alpine:3.14 AS builder
|
||||
RUN apk add --no-cache 'crystal<2' shards sqlite-static yaml-static yaml-dev libxml2-dev zlib-static openssl-libs-static openssl-dev musl-dev
|
||||
|
||||
ARG release
|
||||
|
||||
WORKDIR /invidious
|
||||
COPY ./shard.yml ./shard.yml
|
||||
COPY ./shard.lock ./shard.lock
|
||||
@ -16,10 +18,16 @@ COPY ./.git/ ./.git/
|
||||
RUN crystal spec --warnings all \
|
||||
--link-flags "-lxml2 -llzma"
|
||||
|
||||
RUN crystal build ./src/invidious.cr \
|
||||
--release \
|
||||
--static --warnings all \
|
||||
--link-flags "-lxml2 -llzma"
|
||||
RUN if [ ${release} == 1 ] ; then \
|
||||
crystal build ./src/invidious.cr \
|
||||
--release \
|
||||
--static --warnings all \
|
||||
--link-flags "-lxml2 -llzma"; \
|
||||
else \
|
||||
crystal build ./src/invidious.cr \
|
||||
--static --warnings all \
|
||||
--link-flags "-lxml2 -llzma"; \
|
||||
fi
|
||||
|
||||
FROM alpine:latest
|
||||
RUN apk add --no-cache librsvg ttf-opensans
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "بحث",
|
||||
"Log out": "تسجيل الخروج",
|
||||
"Released under the AGPLv3 by Omar Roth.": "تم الإنشاء تحت AGPLv3 بواسطة عمر روث.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "الأكواد متوفرة هنا.",
|
||||
"View JavaScript license information.": "مشاهدة معلومات حول تراخيص الجافاسكريبت.",
|
||||
"View privacy policy.": "عرض سياسة الخصوصية.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "",
|
||||
"Log out": "",
|
||||
"Released under the AGPLv3 by Omar Roth.": "",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "",
|
||||
"View JavaScript license information.": "",
|
||||
"View privacy policy.": "",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "hledat",
|
||||
"Log out": "Odhlásit se",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Vydáno Omarem Roth pod AGPLv3.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Zdrojový kód dostupný zde.",
|
||||
"View JavaScript license information.": "Zobrazit informace o licenci JavaScript .",
|
||||
"View privacy policy.": "Zobrazit Zásady ochrany osobních údajů.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "søg",
|
||||
"Log out": "Log ud",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Offentliggjort under AGPLv3 af Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Kilde tilgængelig her.",
|
||||
"View JavaScript license information.": "Vis JavaScriptlicensinformation.",
|
||||
"View privacy policy.": "Vis privatpolitik.",
|
||||
|
@ -13,7 +13,7 @@
|
||||
},
|
||||
"LIVE": "LIVE",
|
||||
"Shared `x` ago": "Vor `x` geteilt",
|
||||
"Unsubscribe": "Abbestellen",
|
||||
"Unsubscribe": "Abo beenden",
|
||||
"Subscribe": "Abonnieren",
|
||||
"View channel on YouTube": "Kanal auf YouTube anzeigen",
|
||||
"View playlist on YouTube": "Wiedergabeliste auf YouTube anzeigen",
|
||||
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "Suchen",
|
||||
"Log out": "Abmelden",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Veröffentlicht unter AGPLv3 von Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Quellcode verfügbar hier.",
|
||||
"View JavaScript license information.": "Javascript Lizenzinformationen anzeigen.",
|
||||
"View privacy policy.": "Datenschutzerklärung einsehen.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "αναζήτηση",
|
||||
"Log out": "Αποσύνδεση",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Κυκλοφορεί υπό την άδεια AGPLv3 από τον Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Προβολή πηγαίου κώδικα εδώ.",
|
||||
"View JavaScript license information.": "Προβολή πληροφοριών άδειας JavaScript.",
|
||||
"View privacy policy.": "Προβολή πολιτικής απορρήτου.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "search",
|
||||
"Log out": "Log out",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Released under the AGPLv3 by Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "Released under the AGPLv3 on Github.",
|
||||
"Source available here.": "Source available here.",
|
||||
"View JavaScript license information.": "View JavaScript license information.",
|
||||
"View privacy policy.": "View privacy policy.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "serĉi",
|
||||
"Log out": "Elsaluti",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Eldonita sub la AGPLv3 de Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Fonto havebla ĉi tie.",
|
||||
"View JavaScript license information.": "Vidi Ĝavoskriptan licencan informon.",
|
||||
"View privacy policy.": "Vidi regularon pri privateco.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "buscar",
|
||||
"Log out": "Cerrar la sesión",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Publicado bajo licencia AGPLv3 por Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Código fuente disponible aquí.",
|
||||
"View JavaScript license information.": "Ver información de licencia de JavaScript.",
|
||||
"View privacy policy.": "Ver la política de privacidad.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "",
|
||||
"Log out": "",
|
||||
"Released under the AGPLv3 by Omar Roth.": "",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "",
|
||||
"View JavaScript license information.": "",
|
||||
"View privacy policy.": "",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "جستجو",
|
||||
"Log out": "خروج",
|
||||
"Released under the AGPLv3 by Omar Roth.": "منتشر شده تحت مجوز AGPLv3 توسط Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "منبع اینجا دردسترس است.",
|
||||
"View JavaScript license information.": "نمایش اطلاعات مجوز جاوا اسکریپت.",
|
||||
"View privacy policy.": "نمایش سیاست حفظ حریم خصوصی.",
|
||||
|
@ -77,8 +77,8 @@
|
||||
"Fallback captions: ": "Toissijaiset tekstitykset: ",
|
||||
"Show related videos: ": "Näytä aiheeseen liittyviä videoita: ",
|
||||
"Show annotations by default: ": "Näytä huomautukset oletuksena: ",
|
||||
"Automatically extend video description: ": "",
|
||||
"Interactive 360 degree videos: ": "",
|
||||
"Automatically extend video description: ": "Laajenna automaattisesti videon kuvausta: ",
|
||||
"Interactive 360 degree videos: ": "Interaktiiviset 360-asteiset videot: ",
|
||||
"Visual preferences": "Visuaaliset asetukset",
|
||||
"Player style: ": "Soittimen tyyli: ",
|
||||
"Dark mode: ": "Tumma tila: ",
|
||||
@ -86,8 +86,8 @@
|
||||
"dark": "tumma",
|
||||
"light": "vaalea",
|
||||
"Thin mode: ": "Kapea tila ",
|
||||
"Miscellaneous preferences": "",
|
||||
"Automaticatic instance redirection (fallback to redirect.invidious.io): ": "",
|
||||
"Miscellaneous preferences": "Sekalaiset asetukset",
|
||||
"Automaticatic instance redirection (fallback to redirect.invidious.io): ": "Automaattinen palveluntarjoajan uudelleenohjaus (perääntyminen sivulle redirect.invidious.io) ",
|
||||
"Subscription preferences": "Tilausten asetukset",
|
||||
"Show annotations by default for subscribed channels: ": "Näytä oletuksena tilattujen kanavien huomautukset: ",
|
||||
"Redirect homepage to feed: ": "Uudelleenohjaa kotisivu syötteeseen: ",
|
||||
@ -117,7 +117,7 @@
|
||||
"Administrator preferences": "Järjestelmänvalvojan asetukset",
|
||||
"Default homepage: ": "Oletuskotisivu: ",
|
||||
"Feed menu: ": "Syötevalikko: ",
|
||||
"Show nickname on top: ": "",
|
||||
"Show nickname on top: ": "Näytä nimimerkki ylimpänä: ",
|
||||
"Top enabled: ": "Yläosa käytössä: ",
|
||||
"CAPTCHA enabled: ": "CAPTCHA käytössä: ",
|
||||
"Login enabled: ": "Kirjautuminen käytössä: ",
|
||||
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "haku",
|
||||
"Log out": "Kirjaudu ulos",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Julkaissut AGPLv3-lisenssillä: Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Lähdekoodi on saatavilla täällä.",
|
||||
"View JavaScript license information.": "JavaScript-koodin lisenssit.",
|
||||
"View privacy policy.": "Katso tietosuojaseloste.",
|
||||
@ -161,11 +161,11 @@
|
||||
"Title": "Nimi",
|
||||
"Playlist privacy": "Soittolistan yksityisyys",
|
||||
"Editing playlist `x`": "Muokataan soittolistaa `x`",
|
||||
"Show more": "",
|
||||
"Show less": "",
|
||||
"Show more": "Näytä enemmän",
|
||||
"Show less": "Näytä vähemmän",
|
||||
"Watch on YouTube": "Katso YouTubessa",
|
||||
"Switch Invidious Instance": "",
|
||||
"Broken? Try another Invidious Instance": "",
|
||||
"Switch Invidious Instance": "Vaihda Invidious-palveluntarjoajaa",
|
||||
"Broken? Try another Invidious Instance": "Rikki? Kokeile toista Invidious-palveluntarjoajaa",
|
||||
"Hide annotations": "Piilota merkkaukset",
|
||||
"Show annotations": "Näytä merkkaukset",
|
||||
"Genre: ": "Genre: ",
|
||||
@ -173,11 +173,11 @@
|
||||
"Family friendly? ": "Kaiken ikäisille sopiva? ",
|
||||
"Wilson score: ": "Wilson-pistemäärä: ",
|
||||
"Engagement: ": "Huomio: ",
|
||||
"Whitelisted regions: ": "valkolistatut alueet: ",
|
||||
"Blacklisted regions: ": "mustalla listalla olevat alueet: ",
|
||||
"Whitelisted regions: ": "Sallitut alueet: ",
|
||||
"Blacklisted regions: ": "Estetyt alueet: ",
|
||||
"Shared `x`": "Jaettu `x`",
|
||||
"`x` views": {
|
||||
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` katselukertaa",
|
||||
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` katselukerta",
|
||||
"": "`x` katselukertaa"
|
||||
},
|
||||
"Premieres in `x`": "Ensiesitykseen aikaa `x`",
|
||||
@ -227,8 +227,8 @@
|
||||
"Empty playlist": "Tyhjennä soittolista",
|
||||
"Not a playlist.": "Ei ole soittolista.",
|
||||
"Playlist does not exist.": "Soittolistaa ei ole olemassa.",
|
||||
"Could not pull trending pages.": "Nousussa olevien sivujen lataus epäonnitui.",
|
||||
"Hidden field \"challenge\" is a required field": "Piilotettu kenttä \"challenge\" on vaaditaan",
|
||||
"Could not pull trending pages.": "Nousussa olevien sivujen lataus epäonnistui.",
|
||||
"Hidden field \"challenge\" is a required field": "Piilotettu kenttä \"challenge\" vaaditaan",
|
||||
"Hidden field \"token\" is a required field": "Piilotettu kenttä \"tunniste\" vaaditaan",
|
||||
"Erroneous challenge": "Virheellinen haaste",
|
||||
"Erroneous token": "Virheellinen tunniste",
|
||||
@ -368,9 +368,9 @@
|
||||
"([^.,0-9]|^)1([^.,0-9]|$)": "`x` sekuntia",
|
||||
"": "`x` sekuntia"
|
||||
},
|
||||
"Fallback comments: ": "varakommentit: ",
|
||||
"Fallback comments: ": "Varakommentit: ",
|
||||
"Popular": "Suosittu",
|
||||
"Search": "",
|
||||
"Search": "Etsi",
|
||||
"Top": "Ylin",
|
||||
"About": "Tietoa",
|
||||
"Rating: ": "Arvosana: ",
|
||||
@ -393,35 +393,35 @@
|
||||
"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": "",
|
||||
"relevance": "Osuvuus",
|
||||
"rating": "Arvostelu",
|
||||
"date": "Latauspäivämäärä",
|
||||
"views": "Katselukerrat",
|
||||
"content_type": "Tyyppi",
|
||||
"duration": "Kesto",
|
||||
"features": "Ominaisuudet",
|
||||
"sort": "Luokittele",
|
||||
"hour": "Viimeisin tunti",
|
||||
"today": "Tänään",
|
||||
"week": "Tämä viikko",
|
||||
"month": "Tämä kuukausi",
|
||||
"year": "Tämä vuosi",
|
||||
"video": "Video",
|
||||
"channel": "Kanava",
|
||||
"playlist": "Soittolista",
|
||||
"movie": "Elokuva",
|
||||
"show": "Ohjelma",
|
||||
"hd": "HD",
|
||||
"subtitles": "Tekstitys/CC",
|
||||
"creative_commons": "Creative Commons",
|
||||
"3d": "3D",
|
||||
"live": "Suora lähetys",
|
||||
"4k": "4K",
|
||||
"location": "Sijainti",
|
||||
"hdr": "HDR",
|
||||
"filter": "Suodatin",
|
||||
"Current version: ": "Tämänhetkinen versio: ",
|
||||
"next_steps_error_message": "",
|
||||
"next_steps_error_message_refresh": "",
|
||||
"next_steps_error_message_go_to_youtube": ""
|
||||
"next_steps_error_message": "Sinun tulisi kokeilla seuraavia: ",
|
||||
"next_steps_error_message_refresh": "Päivitä",
|
||||
"next_steps_error_message_go_to_youtube": "Siirry YouTubeen"
|
||||
}
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "rechercher",
|
||||
"Log out": "Se déconnecter",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Publié sous licence AGPLv3 par Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "Publié sous licence AGPLv3 sur Github.",
|
||||
"Source available here.": "Code source disponible ici.",
|
||||
"View JavaScript license information.": "Informations des licences JavaScript.",
|
||||
"View privacy policy.": "Politique de confidentialité.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "חיפוש",
|
||||
"Log out": "יציאה",
|
||||
"Released under the AGPLv3 by Omar Roth.": "מופץ תחת רישיון AGPLv3 על ידי עמר רות׳ (Omar Roth).",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "קוד המקור זמין כאן.",
|
||||
"View JavaScript license information.": "",
|
||||
"View privacy policy.": "להצגת מדיניות הפרטיות.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "traži",
|
||||
"Log out": "Odjavi se",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Izdano pod licencom AGPLv3, Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Izvor je ovdje dostupan.",
|
||||
"View JavaScript license information.": "Prikaži informacije o JavaScript licenci.",
|
||||
"View privacy policy.": "Prikaži politiku privatnosti.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "keresés",
|
||||
"Log out": "Kijelentkezés",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Omar Roth által kiadva AGPLv3 licensz alatt.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "A forráskód itt érhető el.",
|
||||
"View JavaScript license information.": "JavaScript licensz inforkációk megtekintése.",
|
||||
"View privacy policy.": "Adatvédelmi irányelvek megtekintése.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "cari",
|
||||
"Log out": "Keluar",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Dirilis dibawah AGPLv3 oleh Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Sumber tersedia di sini.",
|
||||
"View JavaScript license information.": "Tampilkan informasi lisensi JavaScript.",
|
||||
"View privacy policy.": "Lihat kebijakan privasi.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "leita",
|
||||
"Log out": "Útskrá",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Útgefið undir AGPLv3 eftir Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Frumkóði aðgengilegur hér.",
|
||||
"View JavaScript license information.": "Skoða JavaScript leyfisupplýsingar.",
|
||||
"View privacy policy.": "Skoða meðferð persónuupplýsinga.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "Cerca",
|
||||
"Log out": "Esci",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Pubblicato con licenza AGPLv3 da Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Codice sorgente.",
|
||||
"View JavaScript license information.": "Guarda le informazioni di licenza del codice JavaScript.",
|
||||
"View privacy policy.": "Vedi la politica sulla privacy.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "検索",
|
||||
"Log out": "ログアウト",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Omar Roth によって AGPLv3 でリリースされています",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "ソースはここで閲覧可能です。",
|
||||
"View JavaScript license information.": "JavaScript ライセンス情報",
|
||||
"View privacy policy.": "プライバシーポリシー",
|
||||
|
@ -136,6 +136,7 @@
|
||||
"Delete playlist": "재생목록 삭제",
|
||||
"Delete playlist `x`?": "재생목록 `x` 를 삭제 하시겠습니까?",
|
||||
"Updated `x` ago": "`x` 전에 업데이트됨",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"View all playlists": "모든 재생목록 보기",
|
||||
"Private": "비공개",
|
||||
"Unlisted": "목록에 없음",
|
||||
@ -143,7 +144,6 @@
|
||||
"View privacy policy.": "개인정보 처리방침 보기.",
|
||||
"View JavaScript license information.": "JavaScript 라이센스 정보 보기.",
|
||||
"Source available here.": "소스는 여기에서 사용할 수 있습니다.",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Omar Roth에 의해 AGPLv3에 따라 공개되었습니다.",
|
||||
"Log out": "로그아웃",
|
||||
"search": "검색",
|
||||
"`x` unseen notifications": {
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "ieškoti",
|
||||
"Log out": "Atsijungti",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Išleista pagal AGPLv3 - Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Kodas prieinamas čia.",
|
||||
"View JavaScript license information.": "Žiūrėti JavaScript licencijos informaciją.",
|
||||
"View privacy policy.": "Žiūrėti privatumo politiką.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "søk",
|
||||
"Log out": "Logg ut",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Utgitt med AGPLv3+lisens av Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Kildekode tilgjengelig her.",
|
||||
"View JavaScript license information.": "Vis JavaScript-lisensinfo.",
|
||||
"View privacy policy.": "Vis personvernspraksis.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "zoeken",
|
||||
"Log out": "Uitloggen",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Uitgebracht onder de AGPLv3-licentie, door Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "De broncode is hier beschikbaar.",
|
||||
"View JavaScript license information.": "JavaScript-licentieinformatie tonen.",
|
||||
"View privacy policy.": "Privacybeleid tonen.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "szukaj",
|
||||
"Log out": "Wyloguj",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Wydano na licencji AGPLv3 przez Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Kod źródłowy dostępny tutaj.",
|
||||
"View JavaScript license information.": "Wyświetl informację o licencji JavaScript.",
|
||||
"View privacy policy.": "Polityka prywatności.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "Pesquisar",
|
||||
"Log out": "Sair",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Publicado sob a licença AGPLv3, por Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Código-fonte disponível aqui.",
|
||||
"View JavaScript license information.": "Ver informações da licença do JavaScript.",
|
||||
"View privacy policy.": "Ver a política de privacidade.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "Pesquisar",
|
||||
"Log out": "Terminar sessão",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Publicado sob a licença AGPLv3, por Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Código-fonte disponível aqui.",
|
||||
"View JavaScript license information.": "Ver informações da licença do JavaScript.",
|
||||
"View privacy policy.": "Ver a política de privacidade.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "căutați",
|
||||
"Log out": "Deconectați-vă",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Publicat sub licența AGPLv3 de Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Codul sursă este disponibil aici.",
|
||||
"View JavaScript license information.": "Informații legate de licența JavaScript.",
|
||||
"View privacy policy.": "Politica de confidențialitate.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "поиск",
|
||||
"Log out": "Выйти",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Реализовано Омаром Ротом по лицензии AGPLv3.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Исходный код доступен здесь.",
|
||||
"View JavaScript license information.": "Посмотреть информацию по лицензии JavaScript.",
|
||||
"View privacy policy.": "Посмотреть политику конфиденциальности.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "",
|
||||
"Log out": "",
|
||||
"Released under the AGPLv3 by Omar Roth.": "",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "",
|
||||
"View JavaScript license information.": "",
|
||||
"View privacy policy.": "",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "",
|
||||
"Log out": "",
|
||||
"Released under the AGPLv3 by Omar Roth.": "",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "",
|
||||
"View JavaScript license information.": "",
|
||||
"View privacy policy.": "",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "",
|
||||
"Log out": "",
|
||||
"Released under the AGPLv3 by Omar Roth.": "",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "",
|
||||
"View JavaScript license information.": "",
|
||||
"View privacy policy.": "",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "претрага",
|
||||
"Log out": "Одјавите се",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Издао Омар Рот (Omar Roth) под условима AGPLv3 лиценце.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Изворни код доступан овде.",
|
||||
"View JavaScript license information.": "Прикажи информације о JavaScript лиценци.",
|
||||
"View privacy policy.": "Прикажи извештај о приватности.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "sök",
|
||||
"Log out": "Logga ut",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Utgiven under AGPLv3-licens av Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Källkod tillgänglig här.",
|
||||
"View JavaScript license information.": "Visa JavaScript-licensinformation.",
|
||||
"View privacy policy.": "Visa privatlivspolicy.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "ara",
|
||||
"Log out": "Çıkış yap",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Omar Roth tarafından AGPLv3 altında yayımlandı.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"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.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "пошук",
|
||||
"Log out": "Вийти",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Реалізовано Омаром Ротом за ліцензією AGPLv3.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Програмний код доступний тут.",
|
||||
"View JavaScript license information.": "Переглянути інформацію щодо ліцензії JavaScript.",
|
||||
"View privacy policy.": "Переглянути політику приватності.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "Tìm kiếm",
|
||||
"Log out": "Đăng xuất",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Được phát hành theo AGPLv3 bởi Omar Roth.",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "Nguồn có sẵn ở đây.",
|
||||
"View JavaScript license information.": "Xem thông tin giấy phép JavaScript.",
|
||||
"View privacy policy.": "Xem chính sách bảo mật.",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "搜索",
|
||||
"Log out": "登出",
|
||||
"Released under the AGPLv3 by Omar Roth.": "由 Omar Roth 开发,以 AGPLv3 授权。",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "源码可在此查看。",
|
||||
"View JavaScript license information.": "查看 JavaScript 协议信息。",
|
||||
"View privacy policy.": "查看隐私政策。",
|
||||
|
@ -145,7 +145,7 @@
|
||||
},
|
||||
"search": "搜尋",
|
||||
"Log out": "登出",
|
||||
"Released under the AGPLv3 by Omar Roth.": "Omar Roth 以 AGPLv3 釋出。",
|
||||
"Released under the AGPLv3 on Github.": "",
|
||||
"Source available here.": "原始碼在此提供。",
|
||||
"View JavaScript license information.": "檢視 JavaScript 授權條款資訊。",
|
||||
"View privacy policy.": "檢視隱私權政策。",
|
||||
|
@ -552,7 +552,9 @@ def content_to_comment_html(content)
|
||||
if url = run["navigationEndpoint"]["urlEndpoint"]?.try &.["url"].as_s
|
||||
url = URI.parse(url)
|
||||
|
||||
if !url.host || {"m.youtube.com", "www.youtube.com", "youtu.be"}.includes? url.host
|
||||
if url.host == "youtu.be"
|
||||
url = "/watch?v=#{url.request_target.lstrip('/')}"
|
||||
elsif !url.host || {"m.youtube.com", "www.youtube.com"}.includes? url
|
||||
if url.path == "/redirect"
|
||||
url = HTTP::Params.parse(url.query.not_nil!)["q"]
|
||||
else
|
||||
|
@ -118,7 +118,7 @@
|
||||
<div class="pure-g">
|
||||
<div class="pure-u-1 pure-u-md-1-3">
|
||||
<a href="https://github.com/iv-org/invidious">
|
||||
<%= translate(locale, "Released under the AGPLv3 by Omar Roth.") %>
|
||||
<%= translate(locale, "Released under the AGPLv3 on Github.") %>
|
||||
</a>
|
||||
</div>
|
||||
<div class="pure-u-1 pure-u-md-1-3">
|
||||
|
Loading…
x
Reference in New Issue
Block a user