diff --git a/src/assets/locales/cs.json b/src/assets/locales/cs.json
new file mode 100644
index 00000000..4a50d7a1
--- /dev/null
+++ b/src/assets/locales/cs.json
@@ -0,0 +1,77 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "Načítání...",
+ "loadingList": "Načítání..."
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "To je vše co máme!",
+ "sectionTitle": "Výsledky vyhledávání",
+ "noResults": "Nemohli jsme nic najít!",
+ "failed": "Nepodařilo se najít média, zkuste to znovu!",
+ "loading": "Načítání...",
+ "placeholder": "Co si přejete sledovat?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Záložky"
+ },
+ "continueWatching": {
+ "sectionTitle": "Pokračujte ve sledování"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Film",
+ "show": "Seriál"
+ },
+ "episodeDisplay": "S{{season}} E{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Jejda, rozbilo se to!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Nenalezeno",
+ "homeButton": "Zpátky domů",
+ "title": "Nemohli jsme najít Vaše média.",
+ "text": "Nemohli jsme najít média o které jste požádali. Buďto jsme ho nemohli najít, nebo jste manipulovali s URL."
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Nahrát titulky",
+ "customizeLabel": "Upravit",
+ "title": "Titulky"
+ },
+ "sources": {
+ "title": "Zdroje"
+ },
+ "episodes": {
+ "button": "Epizody",
+ "loadingTitle": "Načítání...",
+ "loadingList": "Načítání..."
+ }
+ },
+ "back": {
+ "default": "Zpátky domů",
+ "short": "Zpět"
+ }
+ },
+ "notFound": {
+ "badge": "Nenalezeno",
+ "goHome": "Zpátky domů",
+ "title": "Tuto stránku se nepodařilo najít",
+ "message": "Dívali jsme se všude: pod koši, ve skříni, za proxy, ale nakonec jsme nemohli najít stránku, kterou hledáte."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "Zkontrolujte své internetové připojení"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/de.json b/src/assets/locales/de.json
new file mode 100644
index 00000000..0f93ec50
--- /dev/null
+++ b/src/assets/locales/de.json
@@ -0,0 +1,77 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "Wird geladen...",
+ "loadingList": "Wird geladen..."
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "Das ist alles, was wir haben!",
+ "sectionTitle": "Suchergebnisse",
+ "noResults": "Wir haben nichts gefunden!",
+ "failed": "Das Medium wurde nicht gefunden, bitte versuchen Sie es erneut!",
+ "loading": "Wird geladen...",
+ "placeholder": "Was willst du gucken?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Favoriten"
+ },
+ "continueWatching": {
+ "sectionTitle": "Weiter ansehen"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Film",
+ "show": "Serie"
+ },
+ "episodeDisplay": "S{{season}} E{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Hoppla, etwas ist schiefgegangen!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Nicht gefunden",
+ "homeButton": "Zurück zur Startseite",
+ "title": "Das Medium konnte nicht gefunden werden",
+ "text": "Wir konnten die angeforderten Medien nicht finden."
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Untertitel hochladen",
+ "customizeLabel": "Bearbeiten",
+ "title": "Untertitel"
+ },
+ "sources": {
+ "title": "Quellen"
+ },
+ "episodes": {
+ "button": "Folgen",
+ "loadingTitle": "Wird geladen...",
+ "loadingList": "Wird geladen..."
+ }
+ },
+ "back": {
+ "default": "Zurück zur Startseite",
+ "short": "Rückmeldung"
+ }
+ },
+ "notFound": {
+ "badge": "Nicht gefunden",
+ "goHome": "Zurück zur Startseite",
+ "title": "Diese Seite kann nicht gefunden werden",
+ "message": "Wir haben überall gesucht, aber am Ende konnten wir die gesuchte Seite nicht finden."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "Internetverbindung ist instabil"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json
index c8be940e..9700a303 100644
--- a/src/assets/locales/en.json
+++ b/src/assets/locales/en.json
@@ -51,9 +51,9 @@
},
"notFound": {
"badge": "Not found",
- "title": "Page could not be found",
- "message": "Oh, my apowogies, sweetie! The itty-bitty movie-web did its utmost bestest, but alas, no wucky videos to be spotted anywhere (´⊙ω⊙`) Please don't be angwy, wittle movie-web ish twying so hard. Can you find it in your heart to forgive? UwU 💖",
- "goHome": "Go home"
+ "title": "Couldn't find that page",
+ "message": "We looked everywhere: under the bins, in the closet, behind the proxy but ultimately couldn't find the page you are looking for.",
+ "goHome": "Back to home"
},
"global": {
"name": "movie-web"
@@ -81,7 +81,7 @@
},
"playbackError": {
"badge": "Not found",
- "title": "Goo goo gaa gaa",
+ "title": "Whoops, it broke!",
"text": "Oh, my apowogies, sweetie! The itty-bitty movie-web did its utmost bestest, but alas, no wucky videos to be spotted anywhere (´⊙ω⊙`) Please don't be angwy, wittle movie-web ish twying so hard. Can you find it in your heart to forgive? UwU 💖",
"homeButton": "Go home",
"errors": {
@@ -95,9 +95,9 @@
"metadata": {
"notFound": {
"badge": "Not found",
- "title": "This media doesnt exist",
- "text": "Oh, my apowogies, sweetie! The itty-bitty movie-web did its utmost bestest, but alas, no wucky videos to be spotted anywhere (´⊙ω⊙`) Please don't be angwy, wittle movie-web ish twying so hard. Can you find it in your heart to forgive? UwU 💖",
- "homeButton": "Go home"
+ "title": "Couldn't find that media",
+ "text": "We couldn't find the media you requested. Either it's been removed or you tampered with the URL",
+ "homeButton": "Back to home"
},
"failed": {
"badge": "Failed",
@@ -172,19 +172,19 @@
"downloadVideo": "Download video",
"downloadCaption": "Download current caption",
"onPc": {
+ "1": "On PC, right click the video and select Save video as",
"title": "Downloading on PC",
- "shortTitle": "Download / PC",
- "1": "On PC, right click the video and select Save video as"
+ "shortTitle": "Download / PC"
},
"onAndroid": {
+ "1": "To download on Android, tap and hold on the video, then select save.",
"title": "Downloading on Android",
- "shortTitle": "Download / Android",
- "1": "To download on Android, tap and hold on the video, then select save."
+ "shortTitle": "Download / Android"
},
"onIos": {
+ "1": "To download on iOS, click , then Save to Files . All that's left to do now is to pick a nice and cozy folder for your video!",
"title": "Downloading on iOS",
- "shortTitle": "Download / iOS",
- "1": "To download on iOS, click , then Save to Files . All that's left to do now is to pick a nice and cozy folder for your video!"
+ "shortTitle": "Download / iOS"
}
},
"playback": {
diff --git a/src/assets/locales/fr.json b/src/assets/locales/fr.json
new file mode 100644
index 00000000..27ed6509
--- /dev/null
+++ b/src/assets/locales/fr.json
@@ -0,0 +1,77 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "Chargement...",
+ "loadingList": "Chargement..."
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "C'est tout ce que nous avons!",
+ "sectionTitle": "Résultats de la recherche",
+ "noResults": "Nous n'avons rien trouvé!",
+ "failed": "Le média n'a pas été trouvé, veuillez réessayez!",
+ "loading": "Chargement...",
+ "placeholder": "Que voulez-vous voir?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Favoris"
+ },
+ "continueWatching": {
+ "sectionTitle": "Continuer le visionnage"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Film",
+ "show": "Série"
+ },
+ "episodeDisplay": "S{{season}} E{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Oups, c'est coupé !"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Introuvable",
+ "homeButton": "Retour à l'accueil",
+ "title": "Impossible de trouver ce média",
+ "text": "Nous n'avons pas trouvé le média que vous avez demandé. Soit il a été supprimé, soit vous avez modifié l'URL."
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Télécharger des sous-titres",
+ "customizeLabel": "Personnaliser",
+ "title": "Sous-titres"
+ },
+ "sources": {
+ "title": "Sources"
+ },
+ "episodes": {
+ "button": "Épisodes",
+ "loadingTitle": "Chargement...",
+ "loadingList": "Chargement..."
+ }
+ },
+ "back": {
+ "default": "Retour à la page d'accueil",
+ "short": "Retour"
+ }
+ },
+ "notFound": {
+ "badge": "Introuvable",
+ "goHome": "Retour à l'accueil",
+ "title": "Impossible de trouver cette page",
+ "message": "Nous avons cherché partout : sous les poubelles, dans le placard, derrière le proxy, mais nous n'avons finalement pas trouvé la page que vous cherchez."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "Vérifiez votre connexion internet"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/it.json b/src/assets/locales/it.json
new file mode 100644
index 00000000..8414c4b4
--- /dev/null
+++ b/src/assets/locales/it.json
@@ -0,0 +1,77 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "Caricamento...",
+ "loadingList": "Caricamento..."
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "Ecco tutto ciò che abbiamo!",
+ "sectionTitle": "Risultati della ricerca",
+ "noResults": "Non abbiamo trovato nulla!",
+ "failed": "Impossibile trovare i media, riprova!",
+ "loading": "Caricamento...",
+ "placeholder": "Cosa vuoi guardare?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Segnalibri"
+ },
+ "continueWatching": {
+ "sectionTitle": "Continua a guardare"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Film",
+ "show": "Serie"
+ },
+ "episodeDisplay": "S{{season}} E{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Ops, qualcosa si è rotto!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Non trovato",
+ "homeButton": "Torna alla home",
+ "title": "Impossibile trovare quel media",
+ "text": "Non siamo riusciti a trovare il media richiesto. È stato rimosso o hai manomesso l'URL."
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Carica sottotitolo",
+ "customizeLabel": "Personalizza",
+ "title": "Sottotitoli"
+ },
+ "sources": {
+ "title": "Fonti"
+ },
+ "episodes": {
+ "button": "Episodi",
+ "loadingTitle": "Caricamento...",
+ "loadingList": "Caricamento..."
+ }
+ },
+ "back": {
+ "default": "Torna alla home",
+ "short": "Indietro"
+ }
+ },
+ "notFound": {
+ "badge": "Non trovato",
+ "goHome": "Torna alla home",
+ "title": "Impossibile trovare quella pagina",
+ "message": "Abbiamo cercato ovunque: sotto i bidoni, nell'armadio, dietro il proxy, ma alla fine non siamo riusciti a trovare la pagina che stai cercando."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "Controlla la tua connessione internet"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/nl.json b/src/assets/locales/nl.json
new file mode 100644
index 00000000..17b5562b
--- /dev/null
+++ b/src/assets/locales/nl.json
@@ -0,0 +1,77 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "Aan het zoeken...",
+ "loadingList": "Aan het zoeken..."
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "Dat is het!",
+ "sectionTitle": "Zoekresultaten",
+ "noResults": "We konden helaas niets vinden.",
+ "failed": "Het is niet gelukt de media te laden, probeer het nog eens.",
+ "loading": "Aan het zoeken...",
+ "placeholder": "Wat wil je graag kijken?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Opgeslagen"
+ },
+ "continueWatching": {
+ "sectionTitle": "Kijk verder"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Films",
+ "show": "Series"
+ },
+ "episodeDisplay": "S{{season}} A{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Oeps, hier ging iets mis!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Pagina niet gevonden",
+ "homeButton": "Naar de home-pagina",
+ "title": "We konden deze media niet vinden.",
+ "text": "We konden dit stukje media niet vinden. Het is mogelijk verwijderd, of jij hebt zelf de URL aangepast."
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Ondertiteling uploaden",
+ "customizeLabel": "Instellingen",
+ "title": "Ondertiteling"
+ },
+ "sources": {
+ "title": "Bronnen"
+ },
+ "episodes": {
+ "button": "Afleveringen",
+ "loadingTitle": "Aan het zoeken...",
+ "loadingList": "Aan het zoeken..."
+ }
+ },
+ "back": {
+ "default": "Naar de home-pagina",
+ "short": "Terug"
+ }
+ },
+ "notFound": {
+ "badge": "Pagina niet gevonden",
+ "goHome": "Naar de home-pagina",
+ "title": "Pagina niet gevonden",
+ "message": "We hebben echt alles geprobeerd, zelfs tijdrijzen; echter hebben we deze pagina helaas niet kunnen vinden."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "Controleer je internetverbinding"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/pirate.json b/src/assets/locales/pirate.json
new file mode 100644
index 00000000..c84c91dd
--- /dev/null
+++ b/src/assets/locales/pirate.json
@@ -0,0 +1,65 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "home": {
+ "search": {
+ "allResults": "That be all we 'ave, me hearty!",
+ "sectionTitle": "Search results",
+ "noResults": "We couldn't find anythin' that matches yer search!",
+ "failed": "Failed t' find media, walk the plank and try again!",
+ "placeholder": "Wha' be ye searchin' for?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Treasure Maps"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Movie",
+ "show": "Series"
+ },
+ "episodeDisplay": "S{{season}} E{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Shiver me timbers! It broke!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Ahoy! I see nothin' on the horizon.",
+ "homeButton": "Back to the port",
+ "title": "Avast ye! Couldn't find that media",
+ "text": "We couldn't find the media ye requested. Either it's been scuttled or ye tampered with the URL, ye scallywag!"
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Upload yer own caption!",
+ "customizeLabel": "Customize yer captions",
+ "title": "Select a subtitle language, me hearty!"
+ },
+ "sources": {
+ "title": "Wha' provider do ye want to use?"
+ },
+ "episodes": {
+ "button": "Episodes"
+ }
+ },
+ "back": {
+ "default": "Back to the port, mates!",
+ "short": "Back"
+ }
+ },
+ "notFound": {
+ "badge": "Ahoy! I see nothin' on the horizon.",
+ "goHome": "Back to the port",
+ "title": "Avast ye! Couldn't find that page.",
+ "message": "Arrr! We searched every inch o' the vessel: from the bilge to the crow's nest, from the keel to the topmast, but avast! We couldn't find the page ye be lookin' fer, me heartie."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "Avast! Check yer internet connection"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/pl.json b/src/assets/locales/pl.json
new file mode 100644
index 00000000..54bd18b1
--- /dev/null
+++ b/src/assets/locales/pl.json
@@ -0,0 +1,80 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "Wczytywanie...",
+ "loadingList": "Wczytywanie..."
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "To wszystko co mamy!",
+ "sectionTitle": "Wyniki wyszukiwania",
+ "noResults": "Nie mogliśmy niczego znaleźć!",
+ "failed": "Nie udało się znaleźć mediów, Spróbuj ponownie!",
+ "loading": "Wczytywanie...",
+ "placeholder": "Co chciałbyś obejrzeć?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Zakładki"
+ },
+ "continueWatching": {
+ "sectionTitle": "Kontynuuj oglądanie"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Filmy",
+ "show": "Seriale"
+ },
+ "episodeDisplay": "S{{season}} E{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Ups, popsuło się!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Nie znaleziono",
+ "homeButton": "Wróć na stronę główną",
+ "title": "Nie można znaleźć multimediów",
+ "text": "Nie mogliśmy znaleźć rządanych multimediów. Albo zostały usunięte, albo grzebałeś przy adresie URL."
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Załącz",
+ "customizeLabel": "Personalizuj",
+ "title": "Napisy"
+ },
+ "sources": {
+ "title": "Źródła"
+ },
+ "episodes": {
+ "button": "Odcinki",
+ "loadingTitle": "Wczytywanie...",
+ "loadingList": "Wczytywanie..."
+ }
+ },
+ "back": {
+ "default": "Wróć na stronę główną",
+ "short": "Wróć"
+ }
+ },
+ "notFound": {
+ "badge": "Nie znaleziono",
+ "goHome": "Wróć na stronę główną",
+ "title": "Nie można znaleźć tej strony",
+ "message": "Szukaliśmy wszędzie: w koszu, w szafie a nawet w piwnicy, ale nie byliśmy w stanie znaleźć strony której szukasz."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "Sprawdź swoje połączenie sieciowe"
+ }
+ },
+ "overlays": {
+ "close": "Zamknąć"
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/tr.json b/src/assets/locales/tr.json
new file mode 100644
index 00000000..497c9362
--- /dev/null
+++ b/src/assets/locales/tr.json
@@ -0,0 +1,80 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "Yükleniyor...",
+ "loadingList": "Yükleniyor..."
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "Bu kadarını bulabildik!",
+ "sectionTitle": "Arama sonuçları",
+ "noResults": "Hiçbir şey bulamadık!",
+ "failed": "Medya bulunamadı, tekrar deneyin!",
+ "loading": "Yükleniyor...",
+ "placeholder": "Ne izlemek istersiniz?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Yerimleri"
+ },
+ "continueWatching": {
+ "sectionTitle": "İzlemeye devam edin"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Film",
+ "show": "Dizi"
+ },
+ "episodeDisplay": "S{{season}} B{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Hay aksi, bozuldu!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Bulunamadı",
+ "homeButton": "Geri",
+ "title": "Medya bulunamadı",
+ "text": "İstediğiniz medyayı bulamadık. URL'i yanlış girdiniz ya da medya kaldırıldı."
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Altyazı yükle",
+ "customizeLabel": "Kişiselleştirme",
+ "title": "Altyazılar"
+ },
+ "sources": {
+ "title": "Kaynaklar"
+ },
+ "episodes": {
+ "button": "Bölümler",
+ "loadingTitle": "Yükleniyor...",
+ "loadingList": "Yükleniyor..."
+ }
+ },
+ "back": {
+ "default": "Ana sayfaya dön",
+ "short": "Geri"
+ }
+ },
+ "notFound": {
+ "badge": "Bulunamadı",
+ "goHome": "Geri",
+ "title": "Sayfa bulunamadı",
+ "message": "Her yere baktık: bazanın altına, dolabın içine hatta ara sunucuya ama maalesef aradığınız sayfayı bulamadık."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "İnternet bağlantınızı kontrol ediniz"
+ }
+ },
+ "overlays": {
+ "close": "Kapat"
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/vi.json b/src/assets/locales/vi.json
new file mode 100644
index 00000000..7fe608e5
--- /dev/null
+++ b/src/assets/locales/vi.json
@@ -0,0 +1,77 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "Đang tải...",
+ "loadingList": "Đang tải..."
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "Đó là tất cả chúng tôi có!",
+ "sectionTitle": "Kết quả tìm kiếm",
+ "noResults": "Chúng tôi không thể tìm thấy gì!",
+ "failed": "Không thể tìm thấy nội dung, hãy thử lại!",
+ "loading": "Đang tải...",
+ "placeholder": "Bạn muốn xem gì?"
+ },
+ "bookmarks": {
+ "sectionTitle": "Đánh dấu"
+ },
+ "continueWatching": {
+ "sectionTitle": "Tiếp tục xem"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "Phim",
+ "show": "Chương trình truyền hình"
+ },
+ "episodeDisplay": "M{{season}} T{{episode}}"
+ },
+ "player": {
+ "playbackError": {
+ "title": "Rất tiếc, đã hỏng!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "Không tìm thấy",
+ "homeButton": "Quay lại trang chính",
+ "title": "Không thể tìm thấy nội dung",
+ "text": "Chúng tôi không thể tìm thấy nội dung mà bạn yêu cầu. Hoặc là nó đã bị xóa, hoặc bạn đã xáo trộn URL"
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "Tải phụ đề lên",
+ "customizeLabel": "Tùy chỉnh",
+ "title": "Phụ đề"
+ },
+ "sources": {
+ "title": "Nguồn"
+ },
+ "episodes": {
+ "button": "Tập",
+ "loadingTitle": "Đang tải...",
+ "loadingList": "Đang tải..."
+ }
+ },
+ "back": {
+ "default": "Quay lại trang chính",
+ "short": "Quay lại"
+ }
+ },
+ "notFound": {
+ "badge": "Không tìm thấy",
+ "goHome": "Quay lại trang chính",
+ "title": "Không thể tìm thấy trang",
+ "message": "Chúng tôi đã tìm kiếm khắp nơi: dưới thùng rác, trong tủ quần áo, đằng sau máy chủ proxy nhưng vẫn không thể tìm thấy trang bạn đang tìm kiếm."
+ },
+ "navigation": {
+ "banner": {
+ "offline": "Hãy kiểm tra kết nối Internet của bạn"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/assets/locales/zh.json b/src/assets/locales/zh.json
new file mode 100644
index 00000000..594cde2c
--- /dev/null
+++ b/src/assets/locales/zh.json
@@ -0,0 +1,77 @@
+{
+ "global": {
+ "name": "movie-web"
+ },
+ "menus": {
+ "episodes": {
+ "loadingTitle": "载入中……",
+ "loadingList": "载入中……"
+ }
+ },
+ "home": {
+ "search": {
+ "allResults": "以上是我们能找到的所有结果!",
+ "sectionTitle": "搜索结果",
+ "noResults": "我们找不到任何结果!",
+ "failed": "查找媒体失败,请重试!",
+ "loading": "载入中……",
+ "placeholder": "您想看些什么?"
+ },
+ "bookmarks": {
+ "sectionTitle": "书签"
+ },
+ "continueWatching": {
+ "sectionTitle": "继续观看"
+ }
+ },
+ "media": {
+ "types": {
+ "movie": "电影",
+ "show": "连续剧"
+ },
+ "episodeDisplay": "第{{season}}季 第{{episode}}集"
+ },
+ "player": {
+ "playbackError": {
+ "title": "哎呀,出问题了!"
+ },
+ "metadata": {
+ "notFound": {
+ "badge": "未找到",
+ "homeButton": "返回首页",
+ "title": "无法找到媒体",
+ "text": "我们无法找到您请求的媒体。它可能已被删除,或您篡改了 URL"
+ }
+ },
+ "menus": {
+ "captions": {
+ "customChoice": "上传字幕",
+ "customizeLabel": "自定义",
+ "title": "字幕"
+ },
+ "sources": {
+ "title": "视频源"
+ },
+ "episodes": {
+ "button": "分集",
+ "loadingTitle": "载入中……",
+ "loadingList": "载入中……"
+ }
+ },
+ "back": {
+ "default": "返回首页",
+ "short": "返回"
+ }
+ },
+ "notFound": {
+ "badge": "未找到",
+ "goHome": "返回首页",
+ "title": "无法找到页面",
+ "message": "我们已经到处找过了:不管是垃圾桶下、橱柜里或是代理之后。但最终并没有发现您查找的页面。"
+ },
+ "navigation": {
+ "banner": {
+ "offline": "检查您的互联网连接"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/lang_migrate.js b/src/lang_migrate.js
new file mode 100644
index 00000000..2afddf9e
--- /dev/null
+++ b/src/lang_migrate.js
@@ -0,0 +1,95 @@
+const path = require("path");
+const fs = require("fs/promises");
+const { existsSync } = require("fs");
+const _ = require("lodash");
+
+function bootstrap(cb) {
+ cb();
+}
+
+const langs = [
+ "en",
+ "cs",
+ "de",
+ "fr",
+ "it",
+ "nl",
+ "pirate",
+ "pl",
+ "tr",
+ "vi",
+ "zh"
+];
+
+const convert = `
+global.name global.name
+search.loading player.menus.episodes.loadingTitle
+search.loading player.menus.episodes.loadingList
+search.allResults home.search.allResults
+search.headingTitle home.search.sectionTitle
+search.noResults home.search.noResults
+search.allFailed home.search.failed
+search.bookmarks home.bookmarks.sectionTitle
+search.loading home.search.loading
+search.continueWatching home.continueWatching.sectionTitle
+search.placeholder home.search.placeholder
+media.movie media.types.movie
+media.series media.types.show
+seasons.seasonAndEpisode media.episodeDisplay
+media.errors.genericTitle player.playbackError.title
+notFound.genericTitle player.metadata.notFound.badge
+notFound.backArrow player.metadata.notFound.homeButton
+notFound.media.title player.metadata.notFound.title
+notFound.media.description player.metadata.notFound.text
+notFound.genericTitle notFound.badge
+notFound.backArrow notFound.goHome
+notFound.page.title notFound.title
+notFound.page.description notFound.message
+errors.offline navigation.banner.offline
+videoPlayer.popouts.uploadCustomCaption player.menus.captions.customChoice
+videoPlayer.popouts.captionPreferences.title player.menus.captions.customizeLabel
+videoPlayer.popouts.captions player.menus.captions.title
+videoPlayer.popouts.sources player.menus.sources.title
+videoPlayer.popouts.close overlays.close
+videoPlayer.buttons.episodes player.menus.episodes.button
+videoPlayer.backToHome player.back.default
+videoPlayer.backToHomeShort player.back.short
+searchBar.movie media.types.movie
+searchBar.series media.types.show
+`;
+
+const translations = convert
+ .trim()
+ .split("\n")
+ .map((row) => row.split("\t"));
+
+console.log(translations);
+
+const oldBasePath = path.join(__dirname, "./setup/locales/");
+const newBasePath = path.join(__dirname, "./assets/locales/");
+
+bootstrap(async () => {
+ for (let lang of langs) {
+ const oldFile = JSON.parse(
+ await fs.readFile(oldBasePath + lang + "/translation.json")
+ );
+
+ let newFile = {};
+ if (existsSync(newBasePath + lang + ".json")) {
+ newFile = JSON.parse(await fs.readFile(newBasePath + lang + ".json"));
+ }
+
+ for (let mapping of translations) {
+ const value = _.get(oldFile, mapping[0]);
+ if (value) {
+ _.set(newFile, mapping[1], value);
+ }
+ }
+
+ await fs.mkdir(newBasePath, { recursive: true });
+ await fs.writeFile(
+ newBasePath + lang + ".json",
+ JSON.stringify(newFile, null, 2)
+ );
+ }
+});
diff --git a/temp_locale b/temp_locale
new file mode 100644
index 00000000..ab037340
--- /dev/null
+++ b/temp_locale
@@ -0,0 +1,11 @@
+errors.offline,navigation.banner.offline
+videoPlayer.popouts.uploadCustomCaption,player.menus.captions.customChoice
+videoPlayer.popouts.captionPreferences.title,player.menus.captions.customizeLabel
+videoPlayer.popouts.captions,player.menus.captions.title
+videoPlayer.popouts.sources,player.menus.sources.title
+videoPlayer.popouts.close,overlays.close
+videoPlayer.buttons.episodes,player.menus.episodes.button
+videoPlayer.backToHome,player.back.default
+videoPlayer.backToHomeShort,player.back.short
+searchBar.movie,media.types.movie
+searchBar.series,media.types.show