Merge branch 'master' into syeopite-patch-1

This commit is contained in:
syeopite 2021-09-01 11:27:08 +00:00 committed by GitHub
commit a62aeb090c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
45 changed files with 121 additions and 96 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -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.": "عرض سياسة الخصوصية.",

View File

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

View File

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

View File

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

View File

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

View File

@ -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.": "Προβολή πολιτικής απορρήτου.",

View File

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

View File

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

View File

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

View File

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

View File

@ -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.": "نمایش سیاست حفظ حریم خصوصی.",

View File

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

View File

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

View File

@ -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.": "להצגת מדיניות הפרטיות.",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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.": "プライバシーポリシー",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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.": "Посмотреть политику конфиденциальности.",

View File

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

View File

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

View File

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

View File

@ -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.": "Прикажи извештај о приватности.",

View File

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

View File

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

View File

@ -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.": "Переглянути політику приватності.",

View File

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

View File

@ -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.": "查看隐私政策。",

View File

@ -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.": "檢視隱私權政策。",

View File

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

View File

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