Compare commits
157 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9eede393ce | ||
|
5ba66db7b4 | ||
|
b304c54bbf | ||
|
ea629a6602 | ||
|
cb43afd936 | ||
|
7265b34459 | ||
|
95b1e05667 | ||
|
80b5623d8a | ||
|
57a4c7cdb0 | ||
|
0c9100f304 | ||
|
52a0ebf830 | ||
|
f6bf981882 | ||
|
b163f92da8 | ||
|
ca27a9ec66 | ||
|
83d037fa6f | ||
|
6762a6468f | ||
|
fc28c8963a | ||
|
3ada481cc1 | ||
|
9db79c37d0 | ||
|
a6ff907c6a | ||
|
c8df125f7b | ||
|
fc9ac3e24f | ||
|
d0e45d586c | ||
|
f7ebfbd651 | ||
|
887f8386a2 | ||
|
18d63d3124 | ||
|
67a3470eb9 | ||
|
9a4fbf85d5 | ||
|
aba04657e2 | ||
|
4da04dcc7c | ||
|
ae30d49d1f | ||
|
90a5a879a7 | ||
|
e3dc135a4e | ||
|
4a10965100 | ||
|
c61b95c1dc | ||
|
c967ce69ec | ||
|
f1db4a90cb | ||
|
278145f49f | ||
|
e32afeb7e0 | ||
|
ac79b18c28 | ||
|
9b14a82f3a | ||
|
ecf1d901a3 | ||
|
9dd8f372a6 | ||
|
544ed48741 | ||
|
41f83f4bef | ||
|
378a1696b3 | ||
|
11ea61d80b | ||
|
e9aee9e7e8 | ||
|
d9063f22c9 | ||
|
ac31d963a1 | ||
|
750bb60f62 | ||
|
7156d8ebf3 | ||
|
2cd87e84da | ||
|
80ded57051 | ||
|
6c28ed8249 | ||
|
b0fa2a6b0e | ||
|
6d38a559f2 | ||
|
50914eee4d | ||
|
1ce97af722 | ||
|
e2f895ff0c | ||
|
1aaff723d9 | ||
|
fce96791e4 | ||
|
061cb548d0 | ||
|
b3367fd60d | ||
|
447b7c6311 | ||
|
61a7607258 | ||
|
7dcd6cad50 | ||
|
46f9925bdc | ||
|
59b4e66d70 | ||
|
7f5fd263ea | ||
|
7cb78dd40d | ||
|
609fdae595 | ||
|
5e52ea8e8f | ||
|
27b28a6d96 | ||
|
c3494c2f84 | ||
|
9f7432450b | ||
|
8fa90689f6 | ||
|
bc32fc3f8a | ||
|
c347fe7ef5 | ||
|
505afab189 | ||
|
8fd224d3b5 | ||
|
a2ec9ff4c4 | ||
|
9133a7aad2 | ||
|
6c284e6cae | ||
|
2f18c3a998 | ||
|
80ad269dcd | ||
|
7ea03b02fb | ||
|
09e6ced6fe | ||
|
4ecca61200 | ||
|
f29fb44f6c | ||
|
d14e6de414 | ||
|
240e662d0c | ||
|
6bd2e1df5a | ||
|
53e0dbb0cb | ||
|
b6fdbe77fa | ||
|
77744cebdd | ||
|
83a892781c | ||
|
c50aad428a | ||
|
4a3f0464db | ||
|
96331fdf65 | ||
|
d600ac7e3a | ||
|
f3b0545881 | ||
|
b6294b6d15 | ||
|
7901d2c5d5 | ||
|
13011ad379 | ||
|
d73a9575bd | ||
|
23c1df5aef | ||
|
adddb84417 | ||
|
ed67c30e1d | ||
|
57edcbeb79 | ||
|
7f0701ee61 | ||
|
ac0e5e6927 | ||
|
cc22562d57 | ||
|
7145469165 | ||
|
e19703122e | ||
|
b35634e71c | ||
|
1c2967be3e | ||
|
1e29ab3e3c | ||
|
8619fe9780 | ||
|
34f96cd533 | ||
|
34b749abed | ||
|
53dae57b75 | ||
|
ac7fa99c45 | ||
|
12f30bc42f | ||
|
2e0a5910ca | ||
|
51724987ca | ||
|
ba6fe26c26 | ||
|
8cf581e92b | ||
|
37d1bf9016 | ||
|
1eee338131 | ||
|
3662eb92a4 | ||
|
ae8cbe1789 | ||
|
467c9758a8 | ||
|
9ff44eaa9b | ||
|
fac9384f62 | ||
|
0045163630 | ||
|
257b080e67 | ||
|
287ea61e17 | ||
|
68538d2112 | ||
|
bbf5645c2b | ||
|
48b708d569 | ||
|
040a054b13 | ||
|
afe2b24c96 | ||
|
7b3d3105c8 | ||
|
c007a48c7d | ||
|
ac8558be7e | ||
|
de8059b7a2 | ||
|
b42a3d3a14 | ||
|
cefa7141f4 | ||
|
dd56986081 | ||
|
d032d6e2f2 | ||
|
0e830ee0a6 | ||
|
690b1c6e68 | ||
|
75af3b992d | ||
|
82d2516951 | ||
|
66001a16bc | ||
|
a59668f46c |
@@ -21,6 +21,7 @@ module.exports = {
|
||||
"dist/*",
|
||||
"/*.js",
|
||||
"/*.ts",
|
||||
"/*.mts",
|
||||
"/plugins/*.ts",
|
||||
"/plugins/*.mjs",
|
||||
"/themes/**/*.ts"
|
||||
@@ -61,7 +62,7 @@ module.exports = {
|
||||
"no-nested-ternary": "off",
|
||||
"prefer-destructuring": "off",
|
||||
"no-param-reassign": "off",
|
||||
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }],
|
||||
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }],
|
||||
"react/jsx-filename-extension": [
|
||||
"error",
|
||||
{ extensions: [".js", ".tsx", ".jsx"] }
|
||||
|
1
.gitignore
vendored
@@ -11,6 +11,7 @@ node_modules
|
||||
# production
|
||||
/dist
|
||||
dev-dist
|
||||
/stats.html
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
|
@@ -27,7 +27,7 @@ We do not want this project to be yet another bulky streaming site, instead it a
|
||||
|
||||
On top of that, hosting should be as cheap and simple as possible. Just a static website with a proxy, with an optional backend if you want cross-device syncing.
|
||||
|
||||
Content is fetched from third parties and scraping is done fully done on the client. This means that the hoster has no files or media on their server. All files are streamed directly from the third parties.
|
||||
Content is fetched from third parties and scraping is fully done on the client. This means that the hoster has no files or media on their server. All files are streamed directly from the third parties.
|
||||
|
||||
## ⚠️ Limitations
|
||||
|
||||
|
103
index.html
@@ -15,6 +15,109 @@
|
||||
<meta name="msapplication-TileColor" content="#120f1d" />
|
||||
<meta name="theme-color" content="#120f1d" />
|
||||
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_15_Pro__iPhone_15__iPhone_14_Pro_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_11_Pro_Max__iPhone_XS_Max_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_11__iPhone_XR_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/4__iPhone_SE__iPod_touch_5th_generation_and_later_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/12.9__iPad_Pro_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/11__iPad_Pro__10.5__iPad_Pro_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/10.9__iPad_Air_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/10.5__iPad_Air_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/10.2__iPad_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
|
||||
href="/splash_screens/8.3__iPad_Mini_landscape.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_15_Pro__iPhone_15__iPhone_14_Pro_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_11_Pro_Max__iPhone_XS_Max_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_11__iPhone_XR_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/4__iPhone_SE__iPod_touch_5th_generation_and_later_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/12.9__iPad_Pro_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/11__iPad_Pro__10.5__iPad_Pro_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/10.9__iPad_Air_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/10.5__iPad_Air_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/10.2__iPad_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_portrait.png">
|
||||
<link rel="apple-touch-startup-image"
|
||||
media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
|
||||
href="/splash_screens/8.3__iPad_Mini_portrait.png">
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
||||
|
141
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "movie-web",
|
||||
"version": "4.1.0",
|
||||
"version": "4.2.0",
|
||||
"private": true,
|
||||
"homepage": "https://movie-web.app",
|
||||
"scripts": {
|
||||
@@ -26,96 +26,99 @@
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@formkit/auto-animate": "^0.7.0",
|
||||
"@headlessui/react": "^1.5.0",
|
||||
"@movie-web/providers": "^1.1.5",
|
||||
"@noble/hashes": "^1.3.2",
|
||||
"@react-spring/web": "^9.7.1",
|
||||
"@scure/bip39": "^1.2.1",
|
||||
"@formkit/auto-animate": "^0.8.1",
|
||||
"@headlessui/react": "^1.7.17",
|
||||
"@movie-web/providers": "^2.0.1",
|
||||
"@noble/hashes": "^1.3.3",
|
||||
"@react-spring/web": "^9.7.3",
|
||||
"@scure/bip39": "^1.2.2",
|
||||
"@sozialhelden/ietf-language-tags": "^5.4.2",
|
||||
"@types/node-forge": "^1.3.8",
|
||||
"@types/node-forge": "^1.3.10",
|
||||
"classnames": "^2.3.2",
|
||||
"core-js": "^3.29.1",
|
||||
"dompurify": "^3.0.1",
|
||||
"flag-icons": "^6.11.1",
|
||||
"core-js": "^3.34.0",
|
||||
"dompurify": "^3.0.6",
|
||||
"flag-icons": "^7.1.0",
|
||||
"focus-trap-react": "^10.2.3",
|
||||
"fscreen": "^1.2.0",
|
||||
"fuse.js": "^6.4.6",
|
||||
"hls.js": "^1.0.7",
|
||||
"i18next": "^22.4.5",
|
||||
"immer": "^10.0.2",
|
||||
"fuse.js": "^7.0.0",
|
||||
"hls.js": "^1.4.14",
|
||||
"i18next": "^23.7.11",
|
||||
"immer": "^10.0.3",
|
||||
"iso-639-1": "^3.1.0",
|
||||
"jwt-decode": "^4.0.0",
|
||||
"lodash.isequal": "^4.5.0",
|
||||
"million": "^2.6.4",
|
||||
"nanoid": "^5.0.4",
|
||||
"node-forge": "^1.3.1",
|
||||
"ofetch": "^1.0.0",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-ga4": "^2.0.0",
|
||||
"ofetch": "^1.3.3",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-ga4": "^2.1.0",
|
||||
"react-google-recaptcha-v3": "^1.10.1",
|
||||
"react-helmet-async": "^1.3.0",
|
||||
"react-i18next": "^12.1.1",
|
||||
"react-router-dom": "^5.2.0",
|
||||
"react-helmet-async": "^2.0.4",
|
||||
"react-i18next": "^14.0.0",
|
||||
"react-lazy-with-preload": "^2.2.1",
|
||||
"react-router-dom": "^6.21.1",
|
||||
"react-sticky-el": "^2.1.0",
|
||||
"react-turnstile": "^1.1.2",
|
||||
"react-use": "^17.4.0",
|
||||
"react-use": "^17.4.2",
|
||||
"slugify": "^1.6.6",
|
||||
"subsrt-ts": "^2.1.1",
|
||||
"zustand": "^4.3.9"
|
||||
"subsrt-ts": "^2.1.2",
|
||||
"zustand": "^4.4.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.21.3",
|
||||
"@babel/preset-env": "^7.20.2",
|
||||
"@babel/preset-typescript": "^7.21.0",
|
||||
"@types/chromecast-caf-sender": "^1.0.5",
|
||||
"@types/crypto-js": "^4.1.1",
|
||||
"@types/dompurify": "^2.4.0",
|
||||
"@types/fscreen": "^1.0.1",
|
||||
"@babel/core": "^7.23.6",
|
||||
"@babel/preset-env": "^7.23.6",
|
||||
"@babel/preset-typescript": "^7.23.3",
|
||||
"@types/chromecast-caf-sender": "^1.0.8",
|
||||
"@types/crypto-js": "^4.2.1",
|
||||
"@types/dompurify": "^3.0.5",
|
||||
"@types/fscreen": "^1.0.4",
|
||||
"@types/lodash.isequal": "^4.5.8",
|
||||
"@types/lodash.throttle": "^4.1.7",
|
||||
"@types/node": "^17.0.15",
|
||||
"@types/pako": "^2.0.0",
|
||||
"@types/react": "^17.0.39",
|
||||
"@types/react-dom": "^17.0.11",
|
||||
"@types/react-helmet": "^6.1.6",
|
||||
"@types/lodash.throttle": "^4.1.9",
|
||||
"@types/node": "^20.10.5",
|
||||
"@types/pako": "^2.0.3",
|
||||
"@types/react": "^18.2.45",
|
||||
"@types/react-dom": "^18.2.18",
|
||||
"@types/react-helmet": "^6.1.11",
|
||||
"@types/react-router": "^5.1.20",
|
||||
"@types/react-router-dom": "^5.3.3",
|
||||
"@types/react-stickynode": "^4.0.0",
|
||||
"@types/react-transition-group": "^4.4.5",
|
||||
"@typescript-eslint/eslint-plugin": "^5.13.0",
|
||||
"@typescript-eslint/parser": "^5.13.0",
|
||||
"@vitejs/plugin-react": "^3.1.0",
|
||||
"autoprefixer": "^10.4.13",
|
||||
"@types/react-stickynode": "^4.0.3",
|
||||
"@types/react-transition-group": "^4.4.10",
|
||||
"@typescript-eslint/eslint-plugin": "^6.15.0",
|
||||
"@typescript-eslint/parser": "^6.15.0",
|
||||
"@vitejs/plugin-react": "^4.2.1",
|
||||
"autoprefixer": "^10.4.16",
|
||||
"cross-env": "^7.0.3",
|
||||
"eslint": "^8.10.0",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-config-airbnb": "19.0.4",
|
||||
"eslint-config-prettier": "^8.6.0",
|
||||
"eslint-import-resolver-typescript": "^2.5.0",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-jsx-a11y": "^6.5.1",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"eslint-plugin-react": "7.29.4",
|
||||
"eslint-plugin-react-hooks": "4.3.0",
|
||||
"glob": "^10.3.3",
|
||||
"handlebars": "^4.7.7",
|
||||
"jsdom": "^21.1.0",
|
||||
"postcss": "^8.4.20",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-import-resolver-typescript": "^3.6.1",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
"eslint-plugin-prettier": "^5.1.1",
|
||||
"eslint-plugin-react": "7.33.2",
|
||||
"eslint-plugin-react-hooks": "4.6.0",
|
||||
"glob": "^10.3.10",
|
||||
"handlebars": "^4.7.8",
|
||||
"jsdom": "^23.0.1",
|
||||
"postcss": "^8.4.32",
|
||||
"postcss-rtl": "^2.0.0",
|
||||
"postcss-rtlcss": "^4.0.9",
|
||||
"prettier": "^2.5.1",
|
||||
"prettier-plugin-tailwindcss": "^0.1.7",
|
||||
"tailwind-scrollbar": "^2.0.1",
|
||||
"tailwindcss": "^3.2.4",
|
||||
"tailwindcss-themer": "^3.1.0",
|
||||
"type-fest": "^4.3.3",
|
||||
"typescript": "^4.6.4",
|
||||
"vite": "^4.4.12",
|
||||
"vite-plugin-checker": "^0.5.6",
|
||||
"vite-plugin-package-version": "^1.0.2",
|
||||
"vite-plugin-pwa": "^0.16.5",
|
||||
"vite-plugin-static-copy": "^0.16.0",
|
||||
"vitest": "^0.28.5"
|
||||
"prettier": "^3.1.1",
|
||||
"prettier-plugin-tailwindcss": "^0.5.9",
|
||||
"rollup-plugin-visualizer": "^5.11.0",
|
||||
"tailwind-scrollbar": "^3.0.5",
|
||||
"tailwindcss": "^3.4.0",
|
||||
"tailwindcss-themer": "^4.0.0",
|
||||
"type-fest": "^4.8.3",
|
||||
"typescript": "^5.3.3",
|
||||
"vite": "^5.0.10",
|
||||
"vite-plugin-checker": "^0.6.2",
|
||||
"vite-plugin-package-version": "^1.1.0",
|
||||
"vite-plugin-pwa": "^0.17.4",
|
||||
"vite-plugin-static-copy": "^1.0.0",
|
||||
"vitest": "^1.1.0"
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
|
3681
pnpm-lock.yaml
generated
BIN
public/splash_screens/10.2__iPad_landscape.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
public/splash_screens/10.2__iPad_portrait.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
public/splash_screens/10.5__iPad_Air_landscape.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
public/splash_screens/10.5__iPad_Air_portrait.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
public/splash_screens/10.9__iPad_Air_landscape.png
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
public/splash_screens/10.9__iPad_Air_portrait.png
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
public/splash_screens/11__iPad_Pro__10.5__iPad_Pro_landscape.png
Normal file
After Width: | Height: | Size: 97 KiB |
BIN
public/splash_screens/11__iPad_Pro__10.5__iPad_Pro_portrait.png
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
public/splash_screens/12.9__iPad_Pro_landscape.png
Normal file
After Width: | Height: | Size: 132 KiB |
BIN
public/splash_screens/12.9__iPad_Pro_portrait.png
Normal file
After Width: | Height: | Size: 134 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 24 KiB |
BIN
public/splash_screens/8.3__iPad_Mini_landscape.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
public/splash_screens/8.3__iPad_Mini_portrait.png
Normal file
After Width: | Height: | Size: 88 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 92 KiB |
BIN
public/splash_screens/iPhone_11__iPhone_XR_landscape.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
public/splash_screens/iPhone_11__iPhone_XR_portrait.png
Normal file
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 81 KiB |
After Width: | Height: | Size: 85 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 86 KiB |
After Width: | Height: | Size: 72 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 31 KiB |
BIN
public/splash_screens/icon.png
Normal file
After Width: | Height: | Size: 29 KiB |
@@ -2,8 +2,11 @@ import ar from "@/assets/locales/ar.json";
|
||||
import cs from "@/assets/locales/cs.json";
|
||||
import de from "@/assets/locales/de.json";
|
||||
import en from "@/assets/locales/en.json";
|
||||
import es from "@/assets/locales/es.json";
|
||||
import et from "@/assets/locales/et.json";
|
||||
import fr from "@/assets/locales/fr.json";
|
||||
import he from "@/assets/locales/he.json";
|
||||
import hi from "@/assets/locales/hi.json";
|
||||
import it from "@/assets/locales/it.json";
|
||||
import lv from "@/assets/locales/lv.json";
|
||||
import minion from "@/assets/locales/minion.json";
|
||||
@@ -11,9 +14,12 @@ import ne from "@/assets/locales/ne.json";
|
||||
import nl from "@/assets/locales/nl.json";
|
||||
import pirate from "@/assets/locales/pirate.json";
|
||||
import pl from "@/assets/locales/pl.json";
|
||||
import ptbr from "@/assets/locales/pt-BR.json";
|
||||
import sv from "@/assets/locales/sv.json";
|
||||
import th from "@/assets/locales/th.json";
|
||||
import tok from "@/assets/locales/tok.json";
|
||||
import tr from "@/assets/locales/tr.json";
|
||||
import uk from "@/assets/locales/uk.json";
|
||||
import vi from "@/assets/locales/vi.json";
|
||||
import zh from "@/assets/locales/zh.json";
|
||||
|
||||
@@ -36,6 +42,12 @@ export const locales = {
|
||||
th,
|
||||
ne,
|
||||
ar,
|
||||
es,
|
||||
et,
|
||||
tok,
|
||||
hi,
|
||||
pt: ptbr,
|
||||
uk,
|
||||
};
|
||||
export type Locales = keyof typeof locales;
|
||||
|
||||
|
@@ -86,7 +86,7 @@
|
||||
"dmca": "DMCA",
|
||||
"github": "غيت هاب"
|
||||
},
|
||||
"tagline": "شاهد عروضك وأفلامك المفضلة باستخدام البث تطبيق مفتوح المصدر هذا."
|
||||
"tagline": "شاهد عروضك وأفلامك المفضلة باستخدام تطبيق البث مفتوح المصدر هذا."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
@@ -157,7 +157,7 @@
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "صفحة غير موجودة",
|
||||
"goHome": "العودة للصفحة الرئيسية",
|
||||
"goHome": "عودة",
|
||||
"message": "بحثنا في كل مكان: في الخزانة وحتى تحت الصناديق، ومع ذلك لم نعثر عن الصفحة التي طلبتَها.",
|
||||
"title": "تعذر العثور على هته الصفحة"
|
||||
},
|
||||
@@ -166,29 +166,16 @@
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "عُدْ للصفحة الرئيسية",
|
||||
"default": "عودة",
|
||||
"short": "عُدْ"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "جارٍ العرض على الجهاز..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "اختيار ترجمة من ملف",
|
||||
"customizeLabel": "تخصيص",
|
||||
"offChoice": "إيقاف",
|
||||
"settings": {
|
||||
"delay": "تأخير الترجمة",
|
||||
"fixCapitals": "تصحيح التهجئة"
|
||||
},
|
||||
"title": "مقاطع الترجمة",
|
||||
"unknownLanguage": "غير معروف"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "يتم أخذ التنزيلات مباشرةً من قبل مقدم الخدمة. movie-web لاسيطرة له على كيفية توفير تلك التنزيلات.",
|
||||
"downloadCaption": "تنزيل مقاطع الترجمة الحالية",
|
||||
"downloadVideo": "تنزيل الفيديو",
|
||||
"hlsExplanation": "هذا الوسيط هو بثٌ مباشر من نوع HTTP، لذا لايمكن تنزيله من movie-web.",
|
||||
"onAndroid": {
|
||||
"1": "للتنزيل على أندرويد، أنقر زر التنزيل وفي الصفحة الموالية <bold>إضغط باستمرار</bold> على الفيديو، وبعدها اختر <bold>حفظ</bold>.",
|
||||
"shortTitle": "تنزيل / Android",
|
||||
@@ -225,9 +212,7 @@
|
||||
"title": "جودة"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "إعدادات الترجمة",
|
||||
"downloadItem": "تنزيل",
|
||||
"enableCaptions": "تفعيل مقاطع الترجمة",
|
||||
"experienceSection": "تجربة المشاهدة",
|
||||
"playbackItem": "إعدادات التشغيل",
|
||||
"qualityItem": "جودة",
|
||||
@@ -305,7 +290,7 @@
|
||||
},
|
||||
"screens": {
|
||||
"dmca": {
|
||||
"text": "مرحبًا بكم في صفحة اتصال بقانون الألفية للملكية الرقمية (DMCA) الخاصة بـ movie-web! نحن نحترم حقوق الملكية الفكرية ونرغب في التعامل بسرعة مع أي قلق يتعلق بحقوق الطبع والنشر. إذا كنت تعتقد أن عملك المحمي بحقوق الطبع والنشر قد تم استخدامه بشكل غير لائق على منصتنا، يرجى إرسال إشعار DMCA مفصل إلى البريد الإلكتروني أدناه. يرجى تضمين وصف للمواد المحمية بحقوق الطبع والنشر، وتفاصيل الاتصال الخاصة بك، وبيان من النية الصادقة. نحن ملتزمون بحل هذه القضايا بسرعة ونقدر تعاونكم في الحفاظ على movie-web كمكان يحترم الإبداع وحقوق الطبع والنشر.",
|
||||
"text": "مرحبًا بكم في صفحة movie-web الخاصة بالتواصل حول قانون الألفية للملكية الرقمية (DMCA) ! نحن نحترم حقوق الملكية الفكرية ونرغب في التعامل بسرعة مع أي مسألة تخص حقوق الطبع والنشر. إن كنت تعتقد أن أيا من أعمالك المحميو بحقوق الطبع والنشر قد تم استخدامها بشكل غير لائق على منصتنا، رجاءً أرسل إشعارا مفصلا إلى البريد الإلكتروني أدناه. يرجى تضمين وصف للمواد المحمية بحقوق الطبع والنشر، وكذا طريقةً للتواصل معك، إضافة إلى تصريح بمصداقية طلبك. نحن ملتزمون بحل هذه القضايا بسرعة ونقدر تعاونكم في الحفاظ على movie-web كمكان يحترم الإبداع وحقوق الطبع والنشر.",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "جار تحميل التطبيق",
|
||||
@@ -371,13 +356,6 @@
|
||||
},
|
||||
"title": "المظهر"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "تعتيم الخلفية",
|
||||
"colorLabel": "لون",
|
||||
"previewQuote": "يجب ألا أخاف. الخوف هو قاتل العقل.",
|
||||
"textSizeLabel": "حجم النص",
|
||||
"title": "مقاطع الترجمة"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "إذا كنت ترغب في الاتصال بخادم خلفي مخصص لتخزين بياناتك، قم بتفعيل هذا ووفر الرابط.",
|
||||
|
@@ -1,71 +1,417 @@
|
||||
{
|
||||
"global": {
|
||||
"name": "movie-web"
|
||||
"about": {
|
||||
"description": "movie-web je webová aplikace, která vyhledává na internetu proudy médií. Cílem týmu je převážně minimalistický přístup ke konzumaci obsahu.",
|
||||
"faqTitle": "Často kladené otázky",
|
||||
"q1": {
|
||||
"body": "movie-web nehostuje žádný obsah. Když kliknete na něco, co chcete sledovat, na internetu se vyhledá vybrané médium (Na obrazovce načítání a na kartě 'zdroje videa' můžete vidět, který zdroj používáte). Média se nikdy nenahrávají movie-webem, vše probíhá prostřednictvím tohoto vyhledávacího mechanismu.",
|
||||
"title": "Kde bereme obsah?"
|
||||
},
|
||||
"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í"
|
||||
}
|
||||
"q2": {
|
||||
"body": "Není možné požádat o pořad nebo film, movie-web nespravuje žádný obsah. Veškerý obsah je prohlížen prostřednictvím zdrojů na internetu.",
|
||||
"title": "Kde můžu požádat o pořad nebo film?"
|
||||
},
|
||||
"media": {
|
||||
"types": {
|
||||
"movie": "Film",
|
||||
"show": "Seriál"
|
||||
},
|
||||
"episodeDisplay": "S{{season}} E{{episode}}"
|
||||
"q3": {
|
||||
"body": "Naše výsledky vyhledávání jsou založeny na The Movie Database (TMDB) a zobrazují se bez ohledu na to, zda naše zdroje skutečně obsah mají.",
|
||||
"title": "Ve výsledcích vyhledávání se zobrazuje pořad nebo film, proč jej nemůžu přehrát?"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
"title": "O movie-webu"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "Zkopírováno",
|
||||
"copy": "Zkopírovat"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "Ještě nemáte účet? <0>Vytvořte si účet.</0>",
|
||||
"deviceNameLabel": "Název zařízení",
|
||||
"deviceNamePlaceholder": "Osobní telefon",
|
||||
"generate": {
|
||||
"description": "Vaše přístupová fráze se chová jako vaše přezdívka a heslo. Uchovejte jí v bezpečí, protože jí budete muset zadat, abyste se mohli přihlásit ke svému účtu",
|
||||
"next": "Uložil jsem si moji přístupovou frázi",
|
||||
"passphraseFrameLabel": "Přístupová fráze",
|
||||
"title": "Vaše přístupová fráze"
|
||||
},
|
||||
"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."
|
||||
"hasAccount": "Již máte účet? <0> Přihlaste se zde.</0>",
|
||||
"login": {
|
||||
"description": "Pro přihlášení ke svému účtu zadejte svou přístupovou frázi",
|
||||
"deviceLengthError": "Zadejte název zařízení",
|
||||
"passphraseLabel": "12slovná přístupová fráze",
|
||||
"passphrasePlaceholder": "Přístupová fráze",
|
||||
"submit": "Přihlásit",
|
||||
"title": "Přihlaste se ke svému účtu",
|
||||
"validationError": "Nesprávná nebo neúplná přístupová fráze"
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Zkontrolujte své internetové připojení"
|
||||
}
|
||||
"register": {
|
||||
"information": {
|
||||
"color1": "První barva profilu",
|
||||
"color2": "Druhá barva profilu",
|
||||
"header": "Zadejte název pro vaše zařízení a vyberte barvy a ikonu uživatele podle vašeho výběru",
|
||||
"icon": "Ikona uživatele",
|
||||
"next": "Další",
|
||||
"title": "Informace o účtu"
|
||||
}
|
||||
},
|
||||
"trust": {
|
||||
"failed": {
|
||||
"text": "Nastavili jste to správně?",
|
||||
"title": "Selhalo připojení k serveru"
|
||||
},
|
||||
"host": "Připojujete se k <0>{{hostname}}</0> - potvrďte, že mu věříte před vytvořením účtu",
|
||||
"no": "Zpět",
|
||||
"title": "Věříte tomuto serveru?",
|
||||
"yes": "Věřím tomuto serveru"
|
||||
},
|
||||
"verify": {
|
||||
"description": "Zadejte prosím svou přístupovou frázi, abyste potvrdili, že jste si ji uložili, a vytvořte si účet",
|
||||
"invalidData": "Data nejsou platná",
|
||||
"noMatch": "Přístupová fráze neodpovídá",
|
||||
"passphraseLabel": "Vaše 12slovná přístupová fráze",
|
||||
"recaptchaFailed": "ReCaptcha ověření se nezdařilo",
|
||||
"register": "Založit účet",
|
||||
"title": "Potvrďte vaši přístupovou frázi"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "Rozbilo se to",
|
||||
"details": "Detaily chyby",
|
||||
"reloadPage": "Znovu načíst stránku",
|
||||
"showError": "Ukázat detaily chyby",
|
||||
"title": "Narazili jsme na chybu!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Zřeknutí odpovědnosti",
|
||||
"disclaimerText": "movie-web nehostuje žádné soubory, pouze odkazuje na služby třetích stran. Právní záležitosti by měly být řešeny s hostiteli souborů a poskytovateli. movie-web nenese odpovědnost za žádné mediální soubory zobrazené poskytovateli videa."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Sledujte své oblíbené pořady a filmy s touto aplikací pro streamování s otevřeným zdrojovým kódem."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
"pages": {
|
||||
"about": "O nás",
|
||||
"dmca": "DMCA",
|
||||
"login": "Přihlásit se",
|
||||
"pagetitle": "{{title}} - movie-web",
|
||||
"register": "Zaregistrovat se",
|
||||
"settings": "Nastavení"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Záložky"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Pokračujte ve sledování"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "Přestat upravovat"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "To je vše co máme!",
|
||||
"failed": "Nepodařilo se najít média, zkuste to znovu!",
|
||||
"loading": "Načítání...",
|
||||
"noResults": "Nemohli jsme nic najít!",
|
||||
"placeholder": "Co si přejete sledovat?",
|
||||
"sectionTitle": "Výsledky vyhledávání"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "Na co byste se chtěli dnes odpoledne dívat?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "Na co byste se chtěli dnes ráno dívat?",
|
||||
"extra": [
|
||||
"Slyšel jsem, že Před úsvitem je super."
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "Na co byste se chtěli dnes večer dívat?",
|
||||
"extra": [
|
||||
"Unaven? Slyšel jsem, že Vymítač ďábla je super."
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "S{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "Film",
|
||||
"show": "Seriál"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Zkontrolujte své internetové připojení"
|
||||
},
|
||||
"menu": {
|
||||
"about": "O nás",
|
||||
"donation": "Přispět",
|
||||
"logout": "Odhlásit se",
|
||||
"register": "Synchronizovat do cloudu",
|
||||
"settings": "Nastavení",
|
||||
"support": "Podpořte nás"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Nenalezeno",
|
||||
"goHome": "Zpátky domů",
|
||||
"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.",
|
||||
"title": "Tuto stránku se nepodařilo najít"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Zavřít"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Zpátky domů",
|
||||
"short": "Zpět"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Odesílání do zařízení..."
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "Stahování probíhá přímo u poskytovatele. movie-web nemá kontrolu nad tím, jak jsou stahování poskytovány.",
|
||||
"downloadPlaylist": "Stáhnout playlist",
|
||||
"downloadVideo": "Stáhnout video",
|
||||
"hlsDisclaimer": "Stahování probíhá přímo u poskytovatele. movie-web nemá kontrolu nad tím, jak jsou stahování poskytovány. Vezměte prosím na vědomí, že stahujete HLS playlist, který je určen pro uživatele obeznámené s pokročilým streamováním médií.",
|
||||
"onAndroid": {
|
||||
"1": "Na Androidu klikněte na tlačítko stahování, poté na nové stránce <bold>klepněte a podržte</bold> na videu a poté vyberte <bold>uložit</bold>.",
|
||||
"shortTitle": "Stahování / Android",
|
||||
"title": "Stahování na Androidu"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "Na iOS klikněte na tlačítko stahování a poté na nové stránce klikněte na <bold><ios_share /></bold> a poté na <bold>Uložit do souborů <ios_files /></bold>.",
|
||||
"shortTitle": "Stahování / iOS",
|
||||
"title": "Stahování na iOS"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "Na počítači klikněte na tlačítko stahování, poté na nové stránce klikněte pravým tlačítkem na video a vyberte <bold>Uložit video jako</bold>",
|
||||
"shortTitle": "Stahování / počítač",
|
||||
"title": "Stahování na počítači"
|
||||
},
|
||||
"title": "Stáhnout"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "Epizody",
|
||||
"emptyState": "V této sezóně nejsou žádné epizody, vraťte se později!",
|
||||
"episodeBadge": "E{{episode}}",
|
||||
"loadingError": "Chyba při načítání sezóny",
|
||||
"loadingList": "Načítání...",
|
||||
"loadingTitle": "Načítání..."
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "Rychlost přehrávání",
|
||||
"title": "Nastavení přehrávání"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "Automatická kvalita",
|
||||
"hint": "Chcete-li získat jinou kvalitu, můžete zkusit <0>přepnout zdroj</0>.",
|
||||
"iosNoQuality": "Kvůli omezením definovaným společností Apple není pro tento zdroj v iOS k dispozici výběr kvality. Chcete-li získat jinou kvalitu, můžete zkusit <0>přepnout zdroj</0>.",
|
||||
"title": "Kvalita"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "Stáhnout",
|
||||
"experienceSection": "Zážitek sledování",
|
||||
"playbackItem": "Nastavení přehrávání",
|
||||
"qualityItem": "Kvalita",
|
||||
"sourceItem": "Zdroje videa",
|
||||
"videoSection": "Nastavení videa"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "Při pokusu o nalezení videí došlo k chybě. Zkuste prosím jiný zdroj.",
|
||||
"title": "Nepodařilo se extrahovat data"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "Nepodařilo se nám najít žádný vklad, zkuste prosím jiný zdroj.",
|
||||
"title": "Žádné vklady"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "Tento zdroj nemá pro tento film nebo pořad žádné proudy média.",
|
||||
"title": "Žádný proud média"
|
||||
},
|
||||
"title": "Zdroje",
|
||||
"unknownOption": "Neznámý"
|
||||
},
|
||||
"subtitles": {
|
||||
"customizeLabel": "Přizpůsobit",
|
||||
"offChoice": "Vypnuto",
|
||||
"settings": {
|
||||
"backlink": "Vlastní titulky",
|
||||
"delay": "Posunutí titulků",
|
||||
"fixCapitals": "Opravit velká písmena"
|
||||
},
|
||||
"title": "Titulky",
|
||||
"unknownLanguage": "Neznámé"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "Neúspěšný",
|
||||
"homeButton": "Jít domů",
|
||||
"text": "Nelze načíst metadata média z TMDB. Zkontrolujte, zda není TMDB nefunkční nebo blokovaný na vašem internetovém připojení.",
|
||||
"title": "Načtení metadat se nezdařilo"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Nenalezeno",
|
||||
"homeButton": "Zpátky domů",
|
||||
"text": "Nemohli jsme najít média o které jste požádali. Buď bylo odstraňeno, nebo jste manipulovali s URL.",
|
||||
"title": "Nemohli jsme najít Vaše média."
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "Zrušit",
|
||||
"next": "Další epizoda"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Chyba přehrávání",
|
||||
"errors": {
|
||||
"errorAborted": "Načítání média bylo přerušeno uživatelem.",
|
||||
"errorDecode": "Navzdory tomu, že bylo dříve určeno jako použitelné došlo při pokusu o dekódování média k chybě.",
|
||||
"errorGenericMedia": "Nastala chyba neznámého média.",
|
||||
"errorNetwork": "Nastala nějaká chyba síťě, která zabránila načtení média, přestože bylo předtím dostupné.",
|
||||
"errorNotSupported": "Médium nebo poskytovatel média není podporovaný."
|
||||
},
|
||||
"homeButton": "Jít domů",
|
||||
"text": "Nastala chyba při přehrávání média. Prosíme skuste to znovu.",
|
||||
"title": "Video se nepodařilo přehrát!"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "Nastala chyba",
|
||||
"notFound": "Nemá toto video",
|
||||
"pending": "Ověřování videí..."
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Nenalezeno",
|
||||
"detailsButton": "Zobrazit podrobnosti",
|
||||
"homeButton": "Jít domů",
|
||||
"text": "Prohledali jsme naše poskytovatele a nenašli jsme média, která hledáte! Nehostujeme žádné média a nemáme žádnou kontrolu nad tím, co je k dispozici. Pro více podrobností klikněte níže na 'Zobrazit podrobnosti'.",
|
||||
"title": "Nedokázali jsme to najít"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "{{timeLeft}} zbývá • Dokončeno v {{timeFinished, datetime}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"screens": {
|
||||
"dmca": {
|
||||
"text": "Vítejte na DMCA kontaktní stránce movie-webu! Respektujeme práva duševního vlastnictví a chceme rychle řešit jakékoli problémy s autorským právem. Pokud se domníváte, že vaše dílo chráněné autorskými právy bylo na naší platformě neoprávněně použito, zašlete prosím podrobné oznámení DMCA na níže uvedený e-mail. Uveďte prosím popis materiálu chráněného autorským právem, své kontaktní údaje a prohlášení o dobré víře. Jsme odhodláni tyto záležitosti rychle vyřešit a oceňujeme vaši spolupráci při udržování movie-webu jako místa, které respektuje kreativitu a autorská práva.",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "Načítání aplikace",
|
||||
"loadingUser": "Načítání vášeho profilu",
|
||||
"loadingUserError": {
|
||||
"logout": "Odhlásit se",
|
||||
"reset": "Resetovat vlastní server",
|
||||
"text": "Nezdařilo se načíst váš profil",
|
||||
"textWithReset": "Nezdařilo se načíst váš profil z vašeho serveru, chcete ho přepnout na výchozí server?"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "Migrace dat se nezdařila.",
|
||||
"inProgress": "Počkejte prosím, migrujeme vaše data. Nemělo by to trvat dlouho."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "Název zařízení",
|
||||
"deviceNamePlaceholder": "Osobní telefon",
|
||||
"editProfile": "Upravit",
|
||||
"logoutButton": "Odhlásit se"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "Smazat účet",
|
||||
"confirmButton": "Smazat účet",
|
||||
"confirmDescription": "Jste si jisti, že chcete smazat váš účet? Všechny data budou ztracena!",
|
||||
"confirmTitle": "Jste si jisti?",
|
||||
"text": "Tato akce nejde vrátit. Všechny data budou smazána a nic nepůjde zachránit.",
|
||||
"title": "Smazat účet"
|
||||
},
|
||||
"title": "Akce"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "Název zařízení",
|
||||
"failed": "Načtení relací se nezdařilo",
|
||||
"removeDevice": "Odstranit",
|
||||
"title": "Zařízení"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "Dokončit",
|
||||
"firstColor": "První barva profilu",
|
||||
"secondColor": "Druhá barva profilu",
|
||||
"title": "Upravit profilovou fotografii",
|
||||
"userIcon": "Ikona uživatele"
|
||||
},
|
||||
"register": {
|
||||
"cta": "Začněte",
|
||||
"text": "Sdílejte průběh sledování mezi zařízeními a udržujte je synchronizovaná.",
|
||||
"title": "Synchronizace do cloudu"
|
||||
},
|
||||
"title": "Účet"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "Aktivní",
|
||||
"themes": {
|
||||
"blue": "Modrá",
|
||||
"default": "Výchozí",
|
||||
"gray": "Šedá",
|
||||
"red": "Červená",
|
||||
"teal": "Modrozelená"
|
||||
},
|
||||
"title": "Vzhled"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Pokud se chcete připojit k vlastnímu backendu pr ukládání dat, povolte toto a zadejte URL adresu.",
|
||||
"label": "Vlastní server",
|
||||
"urlLabel": "URL adresa vlastního serveru"
|
||||
},
|
||||
"title": "Spojení",
|
||||
"workers": {
|
||||
"addButton": "Přidat nového pracovníka",
|
||||
"description": "Aby byla aplikace funkční, veškerá trafika prochází přes proxy. Povolte toto, pokud chcete používat svoje vlastní pracovníky.",
|
||||
"emptyState": "Zatím žádní pracovníci, přidej jednoho dolů",
|
||||
"label": "Použít vlastní proxy pracovníky",
|
||||
"urlLabel": "URL adresy pracovníků",
|
||||
"urlPlaceholder": "https://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "Jazyk aplikace",
|
||||
"languageDescription": "Jazyk použitý na celou aplikaci.",
|
||||
"title": "Lokální"
|
||||
},
|
||||
"reset": "Resetovat",
|
||||
"save": "Uložit",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"appVersion": "Verze aplikace",
|
||||
"backendUrl": "URL backendu",
|
||||
"backendVersion": "Verze backendu",
|
||||
"hostname": "Název hostitele",
|
||||
"insecure": "nebezpečný",
|
||||
"notLoggedIn": "Nejste přihlášen",
|
||||
"secure": "bezpečný",
|
||||
"title": "Informace o aplikaci",
|
||||
"unknownVersion": "Neznámo",
|
||||
"userId": "Uživatelské ID"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"previewQuote": "Nesmím se bát. Strach je zabiják mysli.",
|
||||
"textSizeLabel": "Velikost textu",
|
||||
"title": "Titulky"
|
||||
},
|
||||
"unsaved": "Máte neuložené změny"
|
||||
}
|
||||
}
|
||||
|
@@ -3,15 +3,15 @@
|
||||
"description": "movie-web ist eine Web-App, welche das Internet nach Streams durchsucht. Das Team versucht einen minimalistischen Ansatz umzusetzen.",
|
||||
"faqTitle": "Häufig gestellte Fragen",
|
||||
"q1": {
|
||||
"body": "movie-web hostet keinen eigenen Inhalt. Wenn du auf etwas zum Anschauen klickst, wird das Internet danach durchsucht (Auf dem Ladebildschirm und im Tab \"Videoquellen\" kannst du einstellen, welche Quellen verwendet werden sollen). movie-web lädt keine Videos hoch, alles Videos stammen aus der Suche.",
|
||||
"title": "Woher kommen die Videos?"
|
||||
"body": "movie-web hostet keinen eigenen Inhalt. Wenn du auf etwas zum Anschauen klickst, wird das Internet danach durchsucht (Auf dem Ladebildschirm und im Tab \"Videoquellen\" kannst du einstellen, welche Quellen verwendet werden sollen). movie-web lädt keine Videos hoch, alleVideos stammen aus der Suche.",
|
||||
"title": "Woher stammen die Videos?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "Das Anfragen von Serien oder Filmen ist nicht möglich. movie-web verwaltet keine Inhalte. Alle Videos stammen vom Quellen aus dem Internet.",
|
||||
"title": "Wo kann ich eine Serie oder einen Film anfragen?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "Unsere Suchergebnisse werden von The Movie Database (TMDB) bereitgestellt und angezeigt, egal ob unsere Videoquellen über dieses Video verfügen.",
|
||||
"body": "Unsere Suchergebnisse werden von The Movie Database (TMDB) bereitgestellt und, egal ob unsere Videoquellen über dieses Video verfügen, angezeigt.",
|
||||
"title": "Die Suche zeigt eine Serie oder einen Film an, warum kann ich den dann nicht abspielen?"
|
||||
},
|
||||
"title": "Über movie-web"
|
||||
@@ -25,8 +25,9 @@
|
||||
"deviceNameLabel": "Gerätename",
|
||||
"deviceNamePlaceholder": "Handy",
|
||||
"generate": {
|
||||
"description": "Deine Passphrase dient als dein Nutzername und Passwort. Speiche sie sicher ab, damit du dich in deinem Konto anmelden kannst",
|
||||
"description": "Deine Passphrase dient als dein Nutzername und Passwort. Speichere sie sicher ab, damit du dich in deinem Konto anmelden kannst",
|
||||
"next": "Ich habe meine Passphrase gespeichert",
|
||||
"passphraseFrameLabel": "Passphrase",
|
||||
"title": "Deine Passphrase"
|
||||
},
|
||||
"hasAccount": "Du hast bereits einen Account? <0>Anmelden.</0>",
|
||||
@@ -43,8 +44,8 @@
|
||||
"information": {
|
||||
"color1": "Profilfarbe 1",
|
||||
"color2": "Profilfarbe 2",
|
||||
"header": "Gebe einen Namen für dein Gerät ein und wähle ein Nutzersymbol",
|
||||
"icon": "Nutzersymbol",
|
||||
"header": "Gebe einen Namen für dein Gerät ein und wähle ein Symbol",
|
||||
"icon": "Symbol",
|
||||
"next": "Weiter",
|
||||
"title": "Kontoinformationen"
|
||||
}
|
||||
@@ -54,13 +55,13 @@
|
||||
"text": "Hast du es korrekt konfiguriert?",
|
||||
"title": "Server nicht erreichbar"
|
||||
},
|
||||
"host": "Du verbindest dich zu <0>{{hostname}}</0> - stelle sicher, dass du diesem vertraust, bevor du einen Account erstellst",
|
||||
"host": "Du verbindest dich mit <0>{{hostname}}</0> - stelle sicher das du dem Server vertraust, bevor du ein Konto erstellst",
|
||||
"no": "Zurück",
|
||||
"title": "Vertraust du diesem Server?",
|
||||
"yes": "Ich vertraue diesem Server"
|
||||
},
|
||||
"verify": {
|
||||
"description": "Bitte gebe deine Passphrase vom früheren Schritt an, um zu bestätigen, dass du sie gespeichert hast und um dein Konto zu erstellen",
|
||||
"description": "Bitte gebe deine Passphrase ein, um zu bestätigen, dass du sie gespeichert hast und um dein Konto zu erstellen",
|
||||
"invalidData": "Daten sind ungültig",
|
||||
"noMatch": "Passphrasen stimmen nicht überein",
|
||||
"passphraseLabel": "Deine 12-Wort Passphrase",
|
||||
@@ -110,25 +111,25 @@
|
||||
"stopEditing": "Bearbeiten beenden"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "Das ist alles, was wir haben!",
|
||||
"allResults": "Das ist alles!",
|
||||
"failed": "Das Medium wurde nicht gefunden, bitte versuchen Sie es erneut!",
|
||||
"loading": "Wird geladen...",
|
||||
"noResults": "Wir haben nichts gefunden!",
|
||||
"placeholder": "Was willst du gucken?",
|
||||
"placeholder": "Was möchtest du schauen?",
|
||||
"sectionTitle": "Suchergebnisse"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "Was würdest du diesen Nachmittag gerne schauen?"
|
||||
"default": "Was würdest du diesem Nachmittag gerne schauen?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "Was würdest du diesen Morgen gerne schauen?",
|
||||
"extra": [
|
||||
"Ich hab gehört Before Sunrise soll gut sein"
|
||||
"Before Sunrise soll gut sein"
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "Was würdest du diesen Abend gerne schauen?",
|
||||
"default": "Was möchtest du diesen Abend gerne schauen?",
|
||||
"extra": [
|
||||
"Müde? Ich hab gehört The Exorcist soll gut sein."
|
||||
]
|
||||
@@ -158,7 +159,7 @@
|
||||
"notFound": {
|
||||
"badge": "Nicht gefunden",
|
||||
"goHome": "Zurück zur Startseite",
|
||||
"message": "Wir haben überall gesucht: Unter den Eimern, im Schrank, hinter der Proxy, aber am Ende konnten wir die gesuchte Seite nicht finden.",
|
||||
"message": "Wir haben überall gesucht: Unter den Eimern, im Schrank, hinter dem Proxy. Wir konnten die gesuchte Seite nicht finden.",
|
||||
"title": "Diese Seite wurde nicht gefunden"
|
||||
},
|
||||
"overlays": {
|
||||
@@ -167,28 +168,17 @@
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Zurück zur Startseite",
|
||||
"short": "Rückmeldung"
|
||||
"short": "Zurück"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Casting zum Gerät..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "Untertitel hochladen",
|
||||
"customizeLabel": "Bearbeiten",
|
||||
"offChoice": "Aus",
|
||||
"settings": {
|
||||
"delay": "Untertitelverzögerung",
|
||||
"fixCapitals": "Großschreibung korrigieren"
|
||||
},
|
||||
"title": "Untertitel",
|
||||
"unknownLanguage": "Unbekannt"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "Videos werden direkt vom Provider heruntergeladen. movie-web hat nicht steuern, wie die Downloads bereitgestellt werden.",
|
||||
"downloadCaption": "Ausgewählte Untertitel herunterladen",
|
||||
"disclaimer": "Videos werden direkt vom Provider heruntergeladen. movie-web hat keinen Einfluss darauf, wie Downloads bereitgestellt werden.",
|
||||
"downloadPlaylist": "Playlist herunterladen",
|
||||
"downloadVideo": "Video herunterladen",
|
||||
"hlsExplanation": "Dieses Video ist ein HLS-Stream, welcher auf movie-web nicht heruntergeladen werden kann.",
|
||||
"hlsDisclaimer": "movie-web hat keinen Einfluss darauf, wie Downloads bereitgestellt werden. Downloads werden direkt vom Anbieter bezogen. Bitte beachte, dass du eine HLS-Wiedergabeliste herunterlädst, diese ist für Nutzer gedacht, die mit fortgeschrittenem Multimedia-Streaming vertraut sind.",
|
||||
"onAndroid": {
|
||||
"1": "Um auf Android Herunterzuladen, tippe auf den Download-Button, <bold>tippe und halte</bold> auf der neuen Seite auf das Video und wähle <bold>Speichern</bold> aus.",
|
||||
"shortTitle": "Download / Android",
|
||||
@@ -225,9 +215,7 @@
|
||||
"title": "Qualität"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "Untertiteleinstellungen",
|
||||
"downloadItem": "Download",
|
||||
"enableCaptions": "Untertitel aktivieren",
|
||||
"experienceSection": "Anzeigeerlebnis",
|
||||
"playbackItem": "Wiedergabeeinstellungen",
|
||||
"qualityItem": "Qualität",
|
||||
@@ -237,7 +225,7 @@
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "Beim Versuch, Videos zu finden, ist ein Fehler aufgetreten. Bitte versuche es mit einer anderen Quelle.",
|
||||
"title": "Scrapen fehlgeschlagen"
|
||||
"title": "Fehler beim Laden"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "Es konnten keine Embeds gefunden werden. Bitte versuchen es mit einer anderen Quelle.",
|
||||
@@ -249,6 +237,17 @@
|
||||
},
|
||||
"title": "Quellen",
|
||||
"unknownOption": "Unbekannt"
|
||||
},
|
||||
"subtitles": {
|
||||
"customizeLabel": "Anpassen",
|
||||
"offChoice": "Aus",
|
||||
"settings": {
|
||||
"backlink": "Eigene Untertitel",
|
||||
"delay": "Untertitelverzögerung",
|
||||
"fixCapitals": "Großschreibung korrigieren"
|
||||
},
|
||||
"title": "Untertitel",
|
||||
"unknownLanguage": "Unbekannt"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
@@ -261,8 +260,8 @@
|
||||
"notFound": {
|
||||
"badge": "Nicht gefunden",
|
||||
"homeButton": "Zurück zur Startseite",
|
||||
"text": "Wir konnten das angeforderte Medium nicht finden.",
|
||||
"title": "Das Medium konnte nicht gefunden werden."
|
||||
"text": "Wir konnten das angeforderte Video nicht finden.",
|
||||
"title": "Das Video konnte nicht gefunden werden."
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
@@ -273,13 +272,13 @@
|
||||
"badge": "Wiedergabefehler",
|
||||
"errors": {
|
||||
"errorAborted": "Das Laden des Videos wurde vom Nutzer abgebrochen.",
|
||||
"errorDecode": "Trotz vorheriger Feststellung der Nutzbarkeit trat ein Fehler beim Versuch auf, die Mediumdatei zu decodieren, was zu einem Fehler führte.",
|
||||
"errorDecode": "Beim Versuch, das Video zu dekodieren, ist ein Fehler aufgetreten, obwohl sie zuvor als brauchbar eingestuft worden war.",
|
||||
"errorGenericMedia": "Unbekannter Videofehler ist aufgetreten.",
|
||||
"errorNetwork": "Es ist ein Netzwerkfehler aufgetreten, der das erfolgreiche Abrufen des Mediums verhinderte, obwohl es zuvor verfügbar war.",
|
||||
"errorNotSupported": "Das Medium- oder Mediumanbieterobjekt wird nicht unterstützt."
|
||||
"errorNetwork": "Es ist ein Netzwerkfehler aufgetreten, der verhindert hat, dass das Video erfolgreich abgerufen werden konnten, obwohl es verfügbar waren.",
|
||||
"errorNotSupported": "Das Video- oder Videoanbieter wird nicht unterstützt."
|
||||
},
|
||||
"homeButton": "Zurück zur Startseite",
|
||||
"text": "Ein Fehler ist während der Wiedergabe aufgetreten. Versuche es erneut.",
|
||||
"text": "Während der Wiedergabe ist ein Fehler aufgetreten. Versuche es erneut.",
|
||||
"title": "Hoppla, etwas ist schiefgegangen!"
|
||||
},
|
||||
"scraping": {
|
||||
@@ -292,7 +291,7 @@
|
||||
"badge": "Nicht gefunden",
|
||||
"detailsButton": "Details anzeigen",
|
||||
"homeButton": "Zurück zur Startseite",
|
||||
"text": "Wir haben alle Anbieter durchsucht, konnten aber nicht das Video finden nach dem du suchst! Wir stellen keine eigenen Videos bereit und haben keine Kontrolle darüber, was verfügbar ist. Bitte klicke \"Details anzeigen\" für mehr Details.",
|
||||
"text": "Wir haben alle Anbieter durchsucht, konnten aber nicht das Video finden nach dem du suchst! Wir stellen keine eigenen Videos bereit und haben keine Kontrolle darüber, was verfügbar ist. Bitte klicke auf \"Details anzeigen\" für mehr Details.",
|
||||
"title": "Wir konnten das nicht finden"
|
||||
}
|
||||
},
|
||||
@@ -351,7 +350,7 @@
|
||||
"firstColor": "Profilfarbe 1",
|
||||
"secondColor": "Profilfarbe 2",
|
||||
"title": "Profilbild bearbeiten",
|
||||
"userIcon": "Nutzersymbol"
|
||||
"userIcon": "Symbol"
|
||||
},
|
||||
"register": {
|
||||
"cta": "Los geht's",
|
||||
@@ -371,20 +370,13 @@
|
||||
},
|
||||
"title": "Aussehen"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "Hintergrund-Deckkraft",
|
||||
"colorLabel": "Farbe",
|
||||
"previewQuote": "Das Gras wächst nicht schneller, wenn man daran zieht.",
|
||||
"textSizeLabel": "Schriftgröße",
|
||||
"title": "Untertitel"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Falls du dich mit einem anderen Server verbinden willst, um deine Daten zu speichern. Aktiviere dies und gebe die URL an.",
|
||||
"label": "Eigener Server",
|
||||
"urlLabel": "Eigene Server-URL"
|
||||
},
|
||||
"title": "Verbindungen",
|
||||
"title": "Verbindung",
|
||||
"workers": {
|
||||
"addButton": "Neuen Worker hinzufügen",
|
||||
"description": "Damit die App funktioniert werden alle Anfrage durch einen Proxy geleitet. Aktiviere dies, falls du deinen eigenen Worker verwenden willst.",
|
||||
@@ -415,6 +407,11 @@
|
||||
"userId": "Nutzer-ID"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"previewQuote": "Das Gras wächst nicht schneller, wenn man daran zieht.",
|
||||
"textSizeLabel": "Schriftgröße",
|
||||
"title": "Untertitel"
|
||||
},
|
||||
"unsaved": "Du hast ungespeicherte Änderungen"
|
||||
}
|
||||
}
|
||||
|
@@ -1,149 +1,180 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "movie-web is a web application that searches the internet for streams. The team aims for a mostly minimalistic approach to consuming content.",
|
||||
"faqTitle": "Common questions",
|
||||
"q1": {
|
||||
"body": "movie-web does not host any content. When you click on something to watch, the internet is searched for the selected media (On the loading screen and in the 'video sources' tab you can see which source you're using). Media never gets uploaded by movie-web, everything is through this searching mechanism.",
|
||||
"title": "Where does the content come from?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "It's not possible to request a show or movie, movie-web does not manage any content. All content is viewed through sources on the internet.",
|
||||
"title": "Where can I request a show or movie?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "Our search results are powered by The Movie Database (TMDB) and display regardless of whether our sources actually have the content.",
|
||||
"title": "The search results display the show or movie, why can't I play it?"
|
||||
},
|
||||
"title": "About movie-web"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "Copied",
|
||||
"copy": "Copy"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "Don't have an account yet? <0>Create an account.</0>",
|
||||
"deviceNameLabel": "Device name",
|
||||
"deviceNamePlaceholder": "Personal phone",
|
||||
"generate": {
|
||||
"description": "Your passphrase acts as your username and password. Make sure to keep it safe as you will need to enter it to login to your account",
|
||||
"next": "I have saved my passphrase",
|
||||
"passphraseFrameLabel": "Passphrase",
|
||||
"title": "Your passphrase"
|
||||
},
|
||||
"hasAccount": "Already have an account? <0>Login here.</0>",
|
||||
"createAccount": "Don't have an account yet? <0>Create an account.</0>",
|
||||
"login": {
|
||||
"description": "Please enter your passphrase to login to your account",
|
||||
"deviceLengthError": "Please enter a device name",
|
||||
"passphraseLabel": "12-Word passphrase",
|
||||
"passphrasePlaceholder": "Passphrase",
|
||||
"submit": "Login",
|
||||
"title": "Login to your account",
|
||||
"validationError": "Incorrect or incomplete passphrase"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
"title": "Account information",
|
||||
"color1": "Profile color one",
|
||||
"color2": "Profile color two",
|
||||
"icon": "User icon",
|
||||
"header": "Enter a name for your device and pick colours and a user icon of your choosing",
|
||||
"next": "Next"
|
||||
"icon": "User icon",
|
||||
"next": "Next",
|
||||
"title": "Account information"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"title": "Login to your account",
|
||||
"description": "Please enter your passphrase to login to your account",
|
||||
"validationError": "Incorrect or incomplete passphrase",
|
||||
"deviceLengthError": "Please enter a device name",
|
||||
"submit": "Login",
|
||||
"passphraseLabel": "12-Word passphrase",
|
||||
"passphrasePlaceholder": "Passphrase"
|
||||
},
|
||||
"generate": {
|
||||
"title": "Your passphrase",
|
||||
"next": "I have saved my passphrase",
|
||||
"description": "Your passphrase acts as your username and password. Make sure to keep it safe as you will need to enter it to login to your account"
|
||||
},
|
||||
"trust": {
|
||||
"title": "Do you trust this server?",
|
||||
"host": "You are connecting to <0>{{hostname}}</0> - please confirm you trust it before making an account",
|
||||
"failed": {
|
||||
"title": "Failed to reach server",
|
||||
"text": "Did you configure it correctly?"
|
||||
"text": "Did you configure it correctly?",
|
||||
"title": "Failed to reach server"
|
||||
},
|
||||
"yes": "I trust this server",
|
||||
"no": "Go back"
|
||||
"host": "You are connecting to <0>{{hostname}}</0> - please confirm you trust it before making an account",
|
||||
"no": "Go back",
|
||||
"title": "Do you trust this server?",
|
||||
"yes": "I trust this server"
|
||||
},
|
||||
"verify": {
|
||||
"title": "Confirm your passphrase",
|
||||
"description": "Please enter your passphrase from earlier to confirm you have saved it and to create your account",
|
||||
"invalidData": "Data is not valid",
|
||||
"noMatch": "Passphrase doesn't match",
|
||||
"recaptchaFailed": "ReCaptcha validation failed",
|
||||
"passphraseLabel": "Your 12-word passphrase",
|
||||
"register": "Create account"
|
||||
"recaptchaFailed": "ReCaptcha validation failed",
|
||||
"register": "Create account",
|
||||
"title": "Confirm your passphrase"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "It broke",
|
||||
"details": "Error details",
|
||||
"reloadPage": "Reload the page",
|
||||
"showError": "Show error details",
|
||||
"badge": "It broke",
|
||||
"title": "We encountered an error!"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"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"
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Disclaimer",
|
||||
"disclaimerText": "movie-web does not host any files, it merely links to 3rd party services. Legal issues should be taken up with the file hosts and providers. movie-web is not responsible for any media files shown by the video providers."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Watch your favourite shows and movies with this open source streaming app."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
"pages": {
|
||||
"pagetitle": "{{title}} - movie-web",
|
||||
"dmca": "DMCA",
|
||||
"settings": "Settings",
|
||||
"about": "About",
|
||||
"dmca": "DMCA",
|
||||
"login": "Login",
|
||||
"register": "Register"
|
||||
"pagetitle": "{{title}} - movie-web",
|
||||
"register": "Register",
|
||||
"settings": "Settings"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Bookmarks"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Continue Watching"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "Stop editing"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "That's all we have!",
|
||||
"failed": "Failed to find media, try again!",
|
||||
"loading": "Loading...",
|
||||
"noResults": "We couldn't find anything!",
|
||||
"placeholder": "What do you want to watch?",
|
||||
"sectionTitle": "Search results"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "What would you like to watch this afternoon?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "What would you like to watch this morning?",
|
||||
"extra": ["I hear Before Sunrise is good"]
|
||||
},
|
||||
"night": {
|
||||
"default": "What would you like to watch tonight?",
|
||||
"extra": ["Tired? I hear The Exorcist is good."]
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "S{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "Movie",
|
||||
"show": "Show"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Check your internet connection"
|
||||
},
|
||||
"episodeDisplay": "S{{season}} E{{episode}}"
|
||||
"menu": {
|
||||
"about": "About us",
|
||||
"donation": "Donate",
|
||||
"logout": "Log out",
|
||||
"register": "Sync to cloud",
|
||||
"settings": "Settings",
|
||||
"support": "Support"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"goHome": "Back to home",
|
||||
"message": "We looked everywhere: under the bins, in the closet, behind the proxy but ultimately couldn't find the page you are looking for.",
|
||||
"title": "Couldn't find that page"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Close"
|
||||
},
|
||||
"player": {
|
||||
"scraping": {
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"title": "We couldn't find that",
|
||||
"text": "We have searched through our providers and cannot find the media you are looking for! We do not host the media and have no control over what is available. Please click 'Show details' below for more details.",
|
||||
"homeButton": "Go home",
|
||||
"detailsButton": "Show details"
|
||||
},
|
||||
"items": {
|
||||
"pending": "Checking for videos...",
|
||||
"notFound": "Doesn't have the video",
|
||||
"failure": "Error occurred"
|
||||
}
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Casting to device..."
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Playback error",
|
||||
"title": "Failed to play video!",
|
||||
"text": "There was an error trying to play the media. Please try again.",
|
||||
"homeButton": "Go home",
|
||||
"errors": {
|
||||
"errorAborted": "The fetching of the media was aborted by the user's request.",
|
||||
"errorNetwork": "Some kind of network error occurred which prevented the media from being successfully fetched, despite having previously been available.",
|
||||
"errorDecode": "Despite having previously been determined to be usable, an error occurred while trying to decode the media resource, resulting in an error.",
|
||||
"errorNotSupported": "The media or media provider object is not supported.",
|
||||
"errorGenericMedia": "Unknown media error occurred."
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"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",
|
||||
"title": "Failed to load metadata",
|
||||
"text": "Could not load the media's metadata from TMDB. Please check whether TMDB is down or blocked on your internet connection.",
|
||||
"homeButton": "Go home"
|
||||
}
|
||||
},
|
||||
"back": {
|
||||
"default": "Back to home",
|
||||
"short": "Back"
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"remaining": "{{timeLeft}} left • Finish at {{timeFinished, datetime}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
},
|
||||
"nextEpisode": {
|
||||
"next": "Next episode",
|
||||
"cancel": "Cancel"
|
||||
"casting": {
|
||||
"enabled": "Casting to device..."
|
||||
},
|
||||
"menus": {
|
||||
"settings": {
|
||||
"videoSection": "Video settings",
|
||||
"experienceSection": "Viewing experience",
|
||||
"enableCaptions": "Enable captions",
|
||||
"captionItem": "Caption settings",
|
||||
"enableSubtitles": "Enable Subtitles",
|
||||
"subtitleItem": "Subtitle settings",
|
||||
"sourceItem": "Video sources",
|
||||
"playbackItem": "Playback settings",
|
||||
"downloadItem": "Download",
|
||||
@@ -173,245 +204,216 @@
|
||||
"text": "There was an error while trying to find any videos, please try a different source."
|
||||
}
|
||||
},
|
||||
"captions": {
|
||||
"title": "Captions",
|
||||
"subtitles": {
|
||||
"title": "Subtitles",
|
||||
"customizeLabel": "Customize",
|
||||
"settings": {
|
||||
"fixCapitals": "Fix capitalization",
|
||||
"delay": "Caption delay"
|
||||
"delay": "Subtitle delay",
|
||||
"backlink": "Custom subtitles"
|
||||
},
|
||||
"customChoice": "Select caption from file",
|
||||
"customChoice": "Select subtitle from file",
|
||||
"offChoice": "Off",
|
||||
"unknownLanguage": "Unknown"
|
||||
},
|
||||
"downloads": {
|
||||
"title": "Download",
|
||||
"disclaimer": "Downloads are taken directly from the provider. movie-web does not have control over how the downloads are provided.",
|
||||
"hlsExplanation": "This media is a HLS stream which cannot be downloaded on movie-web.",
|
||||
"downloadSubtitle": "Download current subtitle",
|
||||
"downloadPlaylist": "Download playlist",
|
||||
"downloadVideo": "Download video",
|
||||
"downloadCaption": "Download current caption",
|
||||
"onPc": {
|
||||
"1": "On PC, click the download button then, on the new page, right click the video and select <bold>Save video as</bold>",
|
||||
"title": "Downloading on PC",
|
||||
"shortTitle": "Download / PC"
|
||||
},
|
||||
"hlsDisclaimer": "Downloads are taken directly from the provider. movie-web does not have control over how the downloads are provided. Please note that you are downloading an HLS playlist, this is intended for users familiar with advanced multimedia streaming.",
|
||||
"onAndroid": {
|
||||
"1": "To download on Android, click the download button then, on the new page, <bold>tap and hold</bold> on the video, then select <bold>save</bold>.",
|
||||
"title": "Downloading on Android",
|
||||
"shortTitle": "Download / Android"
|
||||
"shortTitle": "Download / Android",
|
||||
"title": "Downloading on Android"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "To download on iOS, click the download button then, on the new page, click <bold><ios_share /></bold>, then <bold>Save to Files <ios_files /></bold>.",
|
||||
"title": "Downloading on iOS",
|
||||
"shortTitle": "Download / iOS"
|
||||
}
|
||||
"shortTitle": "Download / iOS",
|
||||
"title": "Downloading on iOS"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "On PC, click the download button then, on the new page, right click the video and select <bold>Save video as</bold>",
|
||||
"shortTitle": "Download / PC",
|
||||
"title": "Downloading on PC"
|
||||
},
|
||||
"title": "Download"
|
||||
},
|
||||
"playback": {
|
||||
"title": "Playback settings",
|
||||
"speedLabel": "Playback speed"
|
||||
"speedLabel": "Playback speed",
|
||||
"title": "Playback settings"
|
||||
},
|
||||
"quality": {
|
||||
"title": "Quality",
|
||||
"automaticLabel": "Automatic quality",
|
||||
"hint": "You can try <0>switching source</0> to get different quality options.",
|
||||
"iosNoQuality": "Due to Apple-defined limitations, quality selection is not available on iOS for this source. You can try <0>switching to another source</0> to get different quality options."
|
||||
}
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"mediaList": {
|
||||
"stopEditing": "Stop editing"
|
||||
},
|
||||
"titles": {
|
||||
"morning": {
|
||||
"default": "What would you like to watch this morning?",
|
||||
"extra": ["I hear Before Sunrise is good"]
|
||||
},
|
||||
"day": {
|
||||
"default": "What would you like to watch this afternoon?",
|
||||
"extra": []
|
||||
},
|
||||
"night": {
|
||||
"default": "What would you like to watch tonight?",
|
||||
"extra": ["Tired? I hear The Exorcist is good."]
|
||||
"iosNoQuality": "Due to Apple-defined limitations, quality selection is not available on iOS for this source. You can try <0>switching to another source</0> to get different quality options.",
|
||||
"title": "Quality"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"loading": "Loading...",
|
||||
"sectionTitle": "Search results",
|
||||
"allResults": "That's all we have!",
|
||||
"noResults": "We couldn't find anything!",
|
||||
"failed": "Failed to find media, try again!",
|
||||
"placeholder": "What do you want to watch?"
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "Failed",
|
||||
"homeButton": "Go home",
|
||||
"text": "Could not load the media's metadata from TMDB. Please check whether TMDB is down or blocked on your internet connection.",
|
||||
"title": "Failed to load metadata"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"homeButton": "Back to home",
|
||||
"text": "We couldn't find the media you requested. Either it's been removed or you tampered with the URL.",
|
||||
"title": "Couldn't find that media."
|
||||
}
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Continue Watching"
|
||||
"nextEpisode": {
|
||||
"cancel": "Cancel",
|
||||
"next": "Next episode"
|
||||
},
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Bookmarks"
|
||||
"playbackError": {
|
||||
"badge": "Playback error",
|
||||
"errors": {
|
||||
"errorAborted": "The fetching of the media was aborted by the user's request.",
|
||||
"errorDecode": "Despite having previously been determined to be usable, an error occurred while trying to decode the media resource, resulting in an error.",
|
||||
"errorGenericMedia": "Unknown media error occurred.",
|
||||
"errorNetwork": "Some kind of network error occurred which prevented the media from being successfully fetched, despite having previously been available.",
|
||||
"errorNotSupported": "The media or media provider object is not supported."
|
||||
},
|
||||
"homeButton": "Go home",
|
||||
"text": "There was an error trying to play the media. Please try again.",
|
||||
"title": "Failed to play video!"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "Error occurred",
|
||||
"notFound": "Doesn't have the video",
|
||||
"pending": "Checking for videos..."
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"detailsButton": "Show details",
|
||||
"homeButton": "Go home",
|
||||
"text": "We have searched through our providers and cannot find the media you are looking for! We do not host the media and have no control over what is available. Please click 'Show details' below for more details.",
|
||||
"title": "We couldn't find that"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "{{timeLeft}} left • Finish at {{timeFinished, datetime}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Close"
|
||||
},
|
||||
"screens": {
|
||||
"loadingUser": "Loading your profile",
|
||||
"dmca": {
|
||||
"text": "Welcome to movie-web's DMCA contact page! We respect intellectual property rights and want to address any copyright concerns swiftly. If you believe your copyrighted work has been improperly used on our platform, please send a detailed DMCA notice to the email below. Please include a description of the copyrighted material, your contact details, and a statement of good faith belief. We're committed to resolving these matters promptly and appreciate your cooperation in keeping movie-web a place that respects creativity and copyrights.",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "Loading application",
|
||||
"loadingUser": "Loading your profile",
|
||||
"loadingUserError": {
|
||||
"text": "Failed to load your profile",
|
||||
"textWithReset": "Failed to load your profile from your custom server, want to reset back to the default server?",
|
||||
"logout": "Logout",
|
||||
"reset": "Reset custom server",
|
||||
"logout": "Logout"
|
||||
"text": "Failed to load your profile",
|
||||
"textWithReset": "Failed to load your profile from your custom server, want to reset back to the default server?"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "Failed to migrate your data.",
|
||||
"inProgress": "Please hold, we are migrating your data. This shouldn't take long."
|
||||
},
|
||||
"dmca": {
|
||||
"title": "DMCA",
|
||||
"text": "Welcome to movie-web's DMCA contact page! We respect intellectual property rights and want to address any copyright concerns swiftly. If you believe your copyrighted work has been improperly used on our platform, please send a detailed DMCA notice to the email below. Please include a description of the copyrighted material, your contact details, and a statement of good faith belief. We're committed to resolving these matters promptly and appreciate your cooperation in keeping movie-web a place that respects creativity and copyrights."
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Check your internet connection"
|
||||
},
|
||||
"menu": {
|
||||
"register": "Sync to cloud",
|
||||
"settings": "Settings",
|
||||
"about": "About us",
|
||||
"donation": "Donate",
|
||||
"support": "Support",
|
||||
"logout": "Log out"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"copy": "Copy",
|
||||
"copied": "Copied"
|
||||
},
|
||||
"settings": {
|
||||
"unsaved": "You have unsaved changes",
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "Device name",
|
||||
"deviceNamePlaceholder": "Personal phone",
|
||||
"editProfile": "Edit",
|
||||
"logoutButton": "Log out"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "Delete account",
|
||||
"confirmButton": "Delete account",
|
||||
"confirmDescription": "Are you sure you want to delete your account? All your data will be lost!",
|
||||
"confirmTitle": "Are you sure?",
|
||||
"text": "This action is irreversible. All data will be deleted and nothing can be recovered.",
|
||||
"title": "Delete account"
|
||||
},
|
||||
"title": "Actions"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "Device name",
|
||||
"failed": "Failed to load sessions",
|
||||
"removeDevice": "Remove",
|
||||
"title": "Devices"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "Finish editing",
|
||||
"firstColor": "Profile color one",
|
||||
"secondColor": "Profile color two",
|
||||
"title": "Edit profile picture",
|
||||
"userIcon": "User icon"
|
||||
},
|
||||
"register": {
|
||||
"cta": "Get started",
|
||||
"text": "Share your watch progress between devices and keep them synced.",
|
||||
"title": "Sync to the cloud"
|
||||
},
|
||||
"title": "Account"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "Active",
|
||||
"themes": {
|
||||
"blue": "Blue",
|
||||
"default": "Default",
|
||||
"gray": "Gray",
|
||||
"red": "Red",
|
||||
"teal": "Teal"
|
||||
},
|
||||
"title": "Appearance"
|
||||
},
|
||||
"subtitles": {
|
||||
"title": "Subtitles",
|
||||
"previewQuote": "I must not fear. Fear is the mind-killer.",
|
||||
"textSizeLabel": "Text size",
|
||||
"backgroundLabel": "Background opacity",
|
||||
"colorLabel": "Color"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "If you would like to connect to a custom backend to store your data, enable this and provide the URL.",
|
||||
"label": "Custom server",
|
||||
"urlLabel": "Custom server URL"
|
||||
},
|
||||
"title": "Connections",
|
||||
"workers": {
|
||||
"addButton": "Add new worker",
|
||||
"description": "To make the application function, all traffic is routed through proxies. Enable this if you want to bring your own workers.",
|
||||
"emptyState": "No workers yet, add one below",
|
||||
"label": "Use custom proxy workers",
|
||||
"urlLabel": "Worker URLs",
|
||||
"urlPlaceholder": "https://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "Application language",
|
||||
"languageDescription": "Language applied to the entire application.",
|
||||
"title": "Locale"
|
||||
},
|
||||
"reset": "Reset",
|
||||
"save": "Save",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"title": "App information",
|
||||
"hostname": "Hostname",
|
||||
"backendUrl": "Backend URL",
|
||||
"userId": "User ID",
|
||||
"notLoggedIn": "You are not logged in",
|
||||
"appVersion": "App version",
|
||||
"backendUrl": "Backend URL",
|
||||
"backendVersion": "Backend version",
|
||||
"unknownVersion": "Unknown",
|
||||
"hostname": "Hostname",
|
||||
"insecure": "Insecure",
|
||||
"notLoggedIn": "You are not logged in",
|
||||
"secure": "Secure",
|
||||
"insecure": "Insecure"
|
||||
"title": "App information",
|
||||
"unknownVersion": "Unknown",
|
||||
"userId": "User ID"
|
||||
}
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Appearance",
|
||||
"activeTheme": "Active",
|
||||
"themes": {
|
||||
"default": "Default",
|
||||
"blue": "Blue",
|
||||
"teal": "Teal",
|
||||
"red": "Red",
|
||||
"gray": "Gray"
|
||||
}
|
||||
},
|
||||
"account": {
|
||||
"title": "Account",
|
||||
"register": {
|
||||
"title": "Sync to the cloud",
|
||||
"text": "Share your watch progress between devices and keep them synced.",
|
||||
"cta": "Get started"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Edit profile picture",
|
||||
"firstColor": "Profile color one",
|
||||
"secondColor": "Profile color two",
|
||||
"userIcon": "User icon",
|
||||
"finish": "Finish editing"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Devices",
|
||||
"failed": "Failed to load sessions",
|
||||
"deviceNameLabel": "Device name",
|
||||
"removeDevice": "Remove"
|
||||
},
|
||||
"accountDetails": {
|
||||
"editProfile": "Edit",
|
||||
"deviceNameLabel": "Device name",
|
||||
"deviceNamePlaceholder": "Personal phone",
|
||||
"logoutButton": "Log out"
|
||||
},
|
||||
"actions": {
|
||||
"title": "Actions",
|
||||
"delete": {
|
||||
"title": "Delete account",
|
||||
"text": "This action is irreversible. All data will be deleted and nothing can be recovered.",
|
||||
"button": "Delete account",
|
||||
"confirmTitle": "Are you sure?",
|
||||
"confirmDescription": "Are you sure you want to delete your account? All your data will be lost!",
|
||||
"confirmButton": "Delete account"
|
||||
}
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"title": "Locale",
|
||||
"language": "Application language",
|
||||
"languageDescription": "Language applied to the entire application."
|
||||
},
|
||||
"captions": {
|
||||
"title": "Captions",
|
||||
"previewQuote": "I must not fear. Fear is the mind-killer.",
|
||||
"backgroundLabel": "Background opacity",
|
||||
"textSizeLabel": "Text size",
|
||||
"colorLabel": "Color"
|
||||
},
|
||||
"connections": {
|
||||
"title": "Connections",
|
||||
"workers": {
|
||||
"label": "Use custom proxy workers",
|
||||
"description": "To make the application function, all traffic is routed through proxies. Enable this if you want to bring your own workers.",
|
||||
"urlLabel": "Worker URLs",
|
||||
"emptyState": "No workers yet, add one below",
|
||||
"urlPlaceholder": "https://",
|
||||
"addButton": "Add new worker"
|
||||
},
|
||||
"server": {
|
||||
"label": "Custom server",
|
||||
"description": "If you would like to connect to a custom backend to store your data, enable this and provide the URL.",
|
||||
"urlLabel": "Custom server URL"
|
||||
}
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "About movie-web",
|
||||
"description": "movie-web is a web application that searches the internet for streams. The team aims for a mostly minimalistic approach to consuming content.",
|
||||
"faqTitle": "Common questions",
|
||||
"q1": {
|
||||
"title": "Where does the content come from?",
|
||||
"body": "movie-web does not host any content. When you click on something to watch, the internet is searched for the selected media (On the loading screen and in the 'video sources' tab you can see which source you're using). Media never gets uploaded by movie-web, everything is through this searching mechanism."
|
||||
},
|
||||
"q2": {
|
||||
"title": "Where can I request a show or movie?",
|
||||
"body": "It's not possible to request a show or movie, movie-web does not manage any content. All content is viewed through sources on the internet."
|
||||
},
|
||||
"q3": {
|
||||
"title": "The search results display the show or movie, why can't I play it?",
|
||||
"body": "Our search results are powered by The Movie Database (TMDB) and display regardless of whether our sources actually have the content."
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"tagline": "Watch your favourite shows and movies with this open source streaming app.",
|
||||
"links": {
|
||||
"github": "GitHub",
|
||||
"dmca": "DMCA",
|
||||
"discord": "Discord"
|
||||
},
|
||||
"legal": {
|
||||
"disclaimer": "Disclaimer",
|
||||
"disclaimerText": "movie-web does not host any files, it merely links to 3rd party services. Legal issues should be taken up with the file hosts and providers. movie-web is not responsible for any media files shown by the video providers."
|
||||
}
|
||||
"unsaved": "You have unsaved changes"
|
||||
}
|
||||
}
|
||||
|
399
src/assets/locales/es.json
Normal file
@@ -0,0 +1,399 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "movie-web es una aplicación web que busca transmisiones en internet. El equipo tiene como objetivo un enfoque principalmente minimalista para consumir contenido.",
|
||||
"faqTitle": "Preguntas frecuentes",
|
||||
"q1": {
|
||||
"body": "movie-web no aloja ningún contenido. Cuando haces clic en algo para ver, se busca en internet el medio seleccionado (En la pantalla de carga y en la pestaña 'fuentes de vídeo' puedes ver qué fuente estás utilizando). El contenido nunca se carga en movie-web, todo se realiza a través de este mecanismo de búsqueda.",
|
||||
"title": "¿De dónde proviene el contenido?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "No es posible solicitar una serie o película, movie-web no gestiona ningún contenido. Todo el contenido se ve a través de fuentes en internet.",
|
||||
"title": "¿Dónde puedo solicitar una serie o película?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "Nuestros resultados de búsqueda están alimentados por The Movie Database (TMDB) y se muestran independientemente de si nuestras fuentes realmente tienen el contenido.",
|
||||
"title": "Los resultados de búsqueda muestran la serie o película, ¿por qué no puedo reproducirla?"
|
||||
},
|
||||
"title": "Acerca de movie-web"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "Copiado",
|
||||
"copy": "Copiar"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "¿Todavía no tienes una cuenta? <0>Crea una cuenta.</0>",
|
||||
"deviceNameLabel": "Nombre del dispositivo",
|
||||
"deviceNamePlaceholder": "Teléfono personal",
|
||||
"generate": {
|
||||
"description": "Tu frase de contraseña actúa como tu nombre de usuario y contraseña. Asegúrate de mantenerlas seguras, ya que las necesitarás para iniciar sesión en tu cuenta",
|
||||
"next": "He guardado mi frase de contraseña",
|
||||
"passphraseFrameLabel": "Frase de contraseña",
|
||||
"title": "Tu frase de contraseña"
|
||||
},
|
||||
"hasAccount": "¿Ya tienes una cuenta? <0>Inicia sesión aquí.</0>",
|
||||
"login": {
|
||||
"description": "Por favor, ingresa tu frase de contraseña para iniciar sesión en tu cuenta",
|
||||
"deviceLengthError": "Por favor, ingresa un nombre de dispositivo",
|
||||
"passphraseLabel": "Frase de contraseña de 12 palabras",
|
||||
"passphrasePlaceholder": "Frase de contraseña",
|
||||
"submit": "Iniciar sesión",
|
||||
"title": "Inicia sesión en tu cuenta",
|
||||
"validationError": "Contraseña incorrecta o incompleta"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
"color1": "Color de perfil uno",
|
||||
"color2": "Color de perfil dos",
|
||||
"header": "Ingresa un nombre para tu dispositivo, elige colores, y un ícono de usuario de tu elección",
|
||||
"icon": "Ícono de usuario",
|
||||
"next": "Siguiente",
|
||||
"title": "Información de la cuenta"
|
||||
}
|
||||
},
|
||||
"trust": {
|
||||
"failed": {
|
||||
"text": "¿Lo configuraste correctamente?",
|
||||
"title": "No se pudo conectar al servidor"
|
||||
},
|
||||
"host": "Te estás conectando a <0>{{hostname}}</0> - por favor, confirma si confías en este antes de crear una cuenta",
|
||||
"no": "Regresar",
|
||||
"title": "¿Confías en este servidor?",
|
||||
"yes": "Confío en este servidor"
|
||||
},
|
||||
"verify": {
|
||||
"description": "Por favor, ingresa tu frase de contraseña anterior para confirmar que la has guardado y para crear tu cuenta",
|
||||
"invalidData": "Los datos no son válidos",
|
||||
"noMatch": "La frase de contraseña no coincide",
|
||||
"passphraseLabel": "Tu frase de contraseña de 12 palabras",
|
||||
"recaptchaFailed": "La validación de ReCaptcha falló",
|
||||
"register": "Crear cuenta",
|
||||
"title": "Confirma tu frase de contraseña"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "Se descompuso",
|
||||
"details": "Detalles del error",
|
||||
"reloadPage": "Recargar la página",
|
||||
"showError": "Mostrar detalles del error",
|
||||
"title": "¡Encontramos un error!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Descargo de responsabilidad",
|
||||
"disclaimerText": "movie-web no aloja ningún archivo, simplemente enlaza a servicios de terceros. Los problemas legales deben ser tratados con los proveedores de archivos y servicios. movie-web no se hace responsable de los archivos multimedia mostrados por los proveedores de vídeo."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Ve tus series y películas favoritas con esta aplicación de transmisión de código abierto."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
"pages": {
|
||||
"about": "Acerca de",
|
||||
"dmca": "DMCA",
|
||||
"login": "Iniciar sesión",
|
||||
"pagetitle": "{{title}} - movie-web",
|
||||
"register": "Registrarse",
|
||||
"settings": "Configuración"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Marcadores"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Continuar viendo"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "Detener edición"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "¡Eso es todo lo que tenemos!",
|
||||
"failed": "¡Error al encontrar contenido, inténtalo de nuevo!",
|
||||
"loading": "Cargando...",
|
||||
"noResults": "¡No pudimos encontrar nada!",
|
||||
"placeholder": "¿Qué te gustaría ver?",
|
||||
"sectionTitle": "Resultados de búsqueda"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "¿Qué te gustaría ver esta tarde?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "¿Qué te gustaría ver esta mañana?",
|
||||
"extra": [
|
||||
"Escuché que “Antes del amanecer” es buena"
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "¿Qué te gustaría ver esta noche?",
|
||||
"extra": [
|
||||
"¿Cansado? Escuché que “El Exorcista” es buena."
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "T{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "Película",
|
||||
"show": "Serie"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Verifica tu conexión a internet"
|
||||
},
|
||||
"menu": {
|
||||
"about": "Acerca de nosotros",
|
||||
"donation": "Donar",
|
||||
"logout": "Cerrar sesión",
|
||||
"register": "Sincronizar con la nube",
|
||||
"settings": "Configuración",
|
||||
"support": "Soporte"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "No encontrado",
|
||||
"goHome": "Volver a inicio",
|
||||
"message": "Buscamos en todas partes: debajo de los contenedores, en el armario, detrás del proxy, pero al final no pudimos encontrar la página que estás buscando.",
|
||||
"title": "No se puede encontrar esa página"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Cerrar"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Volver al inicio",
|
||||
"short": "Volver"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Transmitiendo a dispositivo..."
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "Las descargas se realizan directamente desde el proveedor. movie-web no tiene control sobre cómo se proporcionan las descargas.",
|
||||
"downloadVideo": "Descargar vídeo",
|
||||
"onAndroid": {
|
||||
"1": "Para descargar en Android, haz clic en el botón de descarga y luego, en la nueva página, <bold>mantén presionado</bold> el vídeo y selecciona <bold>guardar</bold>.",
|
||||
"shortTitle": "Descargar / Android",
|
||||
"title": "Descargando en Android"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "Para descargar en iOS, haz clic en el botón de descarga y luego, en la nueva página, haz clic en <bold><ios_share /></bold>, luego <bold>Guardar en archivos <ios_files /></bold>.",
|
||||
"shortTitle": "Descargar / iOS",
|
||||
"title": "Descargando en iOS"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "En una PC, haz clic en el botón de descarga y luego, en la nueva página, haz clic derecho en el vídeo y selecciona <bold>Guardar vídeo como...</bold>",
|
||||
"shortTitle": "Descargar / PC",
|
||||
"title": "Descargando en PC"
|
||||
},
|
||||
"title": "Descargar"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "Episodios",
|
||||
"emptyState": "No hay episodios en esta temporada, ¡Intenta más tarde!",
|
||||
"episodeBadge": "E{{episode}}",
|
||||
"loadingError": "Error al cargar la temporada",
|
||||
"loadingList": "Cargando...",
|
||||
"loadingTitle": "Cargando..."
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "Velocidad de reproducción",
|
||||
"title": "Configuración de reproducción"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "Calidad automática",
|
||||
"hint": "Puedes intentar <0>cambiar de fuente</0> para obtener diferentes opciones de calidad.",
|
||||
"iosNoQuality": "Debido a limitaciones definidas por Apple, la selección de calidad no está disponible en iOS para esta fuente. Puedes intentar <0>cambiar a otra fuente</0> para obtener diferentes opciones de calidad.",
|
||||
"title": "Calidad"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "Descargar",
|
||||
"experienceSection": "Experiencia de visualización",
|
||||
"playbackItem": "Configuración de reproducción",
|
||||
"qualityItem": "Calidad",
|
||||
"sourceItem": "Fuentes de vídeo",
|
||||
"videoSection": "Configuración de vídeo"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "Se produjo un error al intentar encontrar vídeos, por favor intenta con una fuente diferente.",
|
||||
"title": "Error al obtener"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "No pudimos encontrar ninguna embed, por favor intenta con una fuente diferente.",
|
||||
"title": "No se encontraron embeds"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "Esta fuente no tiene transmisiones para esta película o serie.",
|
||||
"title": "Sin transmisión"
|
||||
},
|
||||
"title": "Fuentes",
|
||||
"unknownOption": "Desconocida"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "Error",
|
||||
"homeButton": "Ir al inicio",
|
||||
"text": "No se pudieron cargar los metadatos del contenido de TMDB. Por favor, verifica si TMDB está caído o bloqueado en tu conexión a internet.",
|
||||
"title": "Error al cargar los metadatos"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "No encontrado",
|
||||
"homeButton": "Volver al inicio",
|
||||
"text": "No pudimos encontrar el contenido que solicitaste. Ya sea que se haya eliminado o se haya modificado la URL.",
|
||||
"title": "No se pudo encontrar ese contenido."
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "Cancelar",
|
||||
"next": "Siguiente episodio"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Error de reproducción",
|
||||
"errors": {
|
||||
"errorAborted": "La obtención del contenido fue cancelada por solicitud del usuario.",
|
||||
"errorDecode": "A pesar de haber sido determinado previamente como utilizable, se produjo un error al intentar decodificar el recurso del contenido, lo que resultó en un error.",
|
||||
"errorGenericMedia": "Se produjo un error desconocido en el contenido.",
|
||||
"errorNetwork": "Se produjo un error de red que impidió obtener el contenido de manera exitosa, a pesar de haber estado disponible anteriormente.",
|
||||
"errorNotSupported": "El contenido o el proveedor del contenido no es compatible."
|
||||
},
|
||||
"homeButton": "Ir al inicio",
|
||||
"text": "Se produjo un error al intentar reproducir el contenido. Por favor, inténtalo de nuevo.",
|
||||
"title": "¡No se pudo reproducir el vídeo!"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "Ocurrió un error",
|
||||
"notFound": "No tiene el vídeo",
|
||||
"pending": "Verificando vídeos..."
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "No encontrado",
|
||||
"detailsButton": "Mostrar detalles",
|
||||
"homeButton": "Ir al inicio",
|
||||
"text": "Hemos buscado en nuestros proveedores y no podemos encontrar el contenido que estás buscando. No alojamos el contenido y no tenemos control sobre lo que está disponible. Haz clic en 'Mostrar detalles' a continuación para obtener más información.",
|
||||
"title": "No pudimos encontrar eso"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "{{timeLeft}} restante • Finaliza a las {{timeFinished, datetime}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"screens": {
|
||||
"dmca": {
|
||||
"text": "¡Bienvenido a la página de contacto DMCA de movie-web! Respetamos los derechos de propiedad intelectual y queremos abordar cualquier problema de derechos de autor de manera rápida. Si cree que su trabajo con derechos de autor se ha utilizado incorrectamente en nuestra plataforma, envíe un aviso DMCA detallado al correo electrónico que se muestra a continuación. Incluya una descripción del material con derechos de autor, sus datos de contacto y una declaración de buena fe. Estamos comprometidos a resolver estos asuntos de manera pronta y agradecemos su cooperación para mantener a movie-web como un lugar que respeta la creatividad y los derechos de autor.",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "Cargando la aplicación",
|
||||
"loadingUser": "Cargando tu perfil",
|
||||
"loadingUserError": {
|
||||
"logout": "Cerrar sesión",
|
||||
"reset": "Restablecer servidor personalizado",
|
||||
"text": "Error al cargar tu perfil",
|
||||
"textWithReset": "Error al cargar tu perfil desde tu servidor personalizado, ¿Quieres restablecerlo al servidor predeterminado?"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "Error al migrar tus datos.",
|
||||
"inProgress": "Por favor espera, estamos migrando tus datos. Esto no debería tomar mucho tiempo."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "Nombre del dispositivo",
|
||||
"deviceNamePlaceholder": "Teléfono personal",
|
||||
"editProfile": "Editar",
|
||||
"logoutButton": "Cerrar sesión"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "Eliminar cuenta",
|
||||
"confirmButton": "Eliminar cuenta",
|
||||
"confirmDescription": "¿Estás seguro de que quieres eliminar tu cuenta? ¡Todos tus datos se perderán!",
|
||||
"confirmTitle": "¿Estás seguro?",
|
||||
"text": "Esta acción es irreversible. Todos los datos se eliminarán y no se podrán recuperar.",
|
||||
"title": "Eliminar cuenta"
|
||||
},
|
||||
"title": "Acciones"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "Nombre del dispositivo",
|
||||
"failed": "Error al cargar las sesiones",
|
||||
"removeDevice": "Eliminar",
|
||||
"title": "Dispositivos"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "Finalizar edición",
|
||||
"firstColor": "Color de perfil uno",
|
||||
"secondColor": "Color de perfil dos",
|
||||
"title": "Editar imagen de perfil",
|
||||
"userIcon": "Icono de usuario"
|
||||
},
|
||||
"register": {
|
||||
"cta": "Empezar",
|
||||
"text": "Comparte tu progreso de visualización entre dispositivos y manténlos sincronizados.",
|
||||
"title": "Sincronizar con la nube"
|
||||
},
|
||||
"title": "Cuenta"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "Activo",
|
||||
"themes": {
|
||||
"blue": "Azul",
|
||||
"default": "Predeterminado",
|
||||
"gray": "Gris",
|
||||
"red": "Rojo",
|
||||
"teal": "Turquesa"
|
||||
},
|
||||
"title": "Apariencia"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Si deseas conectarte a un backend personalizado para almacenar tus datos, habilita esto y proporciona la URL.",
|
||||
"label": "Servidor personalizado",
|
||||
"urlLabel": "URL del servidor personalizado"
|
||||
},
|
||||
"title": "Conexiones",
|
||||
"workers": {
|
||||
"addButton": "Agregar nuevo worker",
|
||||
"description": "Para que la aplicación funcione, todo el tráfico se enruta a través de proxies. Habilita esto si quieres usar tus propios workers.",
|
||||
"emptyState": "Aún no hay workers, agrega uno a continuación",
|
||||
"label": "Usar proxy workers personalizados",
|
||||
"urlLabel": "URL de los workers",
|
||||
"urlPlaceholder": "https://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "Idioma de la aplicación",
|
||||
"languageDescription": "Idioma aplicado a toda la aplicación.",
|
||||
"title": "Idioma"
|
||||
},
|
||||
"reset": "Restablecer",
|
||||
"save": "Guardar",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"appVersion": "Versión de la aplicación",
|
||||
"backendUrl": "URL del backend",
|
||||
"backendVersion": "Versión del backend",
|
||||
"hostname": "Nombre de host",
|
||||
"insecure": "No seguro",
|
||||
"notLoggedIn": "No has iniciado sesión",
|
||||
"secure": "Seguro",
|
||||
"title": "Información de la aplicación",
|
||||
"unknownVersion": "Desconocida",
|
||||
"userId": "ID de usuario"
|
||||
}
|
||||
},
|
||||
"unsaved": "Tienes cambios sin guardar"
|
||||
}
|
||||
}
|
417
src/assets/locales/et.json
Normal file
@@ -0,0 +1,417 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "movie-web on veebirakendus, mis otsib internetti voogude jaoks. Meeskonna eesmärk on enamasti minimalistlik lähenemine sisu tarbimisele.",
|
||||
"faqTitle": "Tihti küsitud küsimused",
|
||||
"q1": {
|
||||
"body": "movie-web ei hoiusta enda sisu. Kui klõpsate, et midagi vaadata, otsitakse valitud meediat internetist (laadimisekraanil ja vahekaardil \"videoallikad\" näete, millist allikat te kasutate). Meediat ei lae movie-web kunagi üles, kõik toimub selle otsingumehhanismi kaudu.",
|
||||
"title": "Kust tuleb meie sisu?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "Saadet või filmi ei ole võimalik taotelda, movie-web ei halda mingit sisu. Kogu sisu vaadatakse interneti allikate kaudu.",
|
||||
"title": "Kust ma saan kindlat saadet või filmi paluda?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "Meie otsingutulemusi toetab The Movie Database (TMDB) ja need kuvatakse sõltumata sellest, kas meie allikates on sisu tegelikult olemas.",
|
||||
"title": "Otsingutulemustes kuvatakse saade või film. Miks ma ei saa seda esitada?"
|
||||
},
|
||||
"title": "movie-web'i kohta"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "Kopeeritud",
|
||||
"copy": "Kopeeri"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "Ei ole kontot veel?<0>Loo konto.</0>",
|
||||
"deviceNameLabel": "Seadme nimi",
|
||||
"deviceNamePlaceholder": "Isiklik telefon",
|
||||
"generate": {
|
||||
"description": "Teie paroolifraas toimib teie kasutajanime ja paroolina. Veenduge, et see oleks ohutus kohas, kuna peate kasutama seda, et logida oma kontosse sisse",
|
||||
"next": "Olen salvestanud oma paroolifraasi",
|
||||
"passphraseFrameLabel": "Paroolifraas",
|
||||
"title": "Sinu paroolifraas"
|
||||
},
|
||||
"hasAccount": "On juba konto? <0>Logi sisse.</0>",
|
||||
"login": {
|
||||
"description": "Palun sisestage paroolifraas, et logida kontosse sisse",
|
||||
"deviceLengthError": "Palun sisesta seadme nimi",
|
||||
"passphraseLabel": "12-Sõnaline paroolifraas",
|
||||
"passphrasePlaceholder": "Paroolifraas",
|
||||
"submit": "Logi sisse",
|
||||
"title": "Logi sisse oma kontosse",
|
||||
"validationError": "Vale vōi mittetäielik paroolifraas"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
"color1": "Profiili värv üks",
|
||||
"color2": "Profiili värv kaks",
|
||||
"header": "Sisestage oma seadme nimi ja valige värvid ning kasutajaikoon",
|
||||
"icon": "Kasutaja ikoon",
|
||||
"next": "Järgmine",
|
||||
"title": "Kontoteave"
|
||||
}
|
||||
},
|
||||
"trust": {
|
||||
"failed": {
|
||||
"text": "Kas sa seadistasid selle õigesti?",
|
||||
"title": "Serveriga ühenduse loomine ebaõnnestus"
|
||||
},
|
||||
"host": "Ühendate <0>{{hostname}}</0> - enne konto tegemist kinnitage, et usaldate seda",
|
||||
"no": "Tagasi",
|
||||
"title": "Kas usaldate seda serverit?",
|
||||
"yes": "Usaldan seda serverit"
|
||||
},
|
||||
"verify": {
|
||||
"description": "Palun sisestage oma paroolifraas, et kinnitada, et olete selle salvestanud ja luua oma konto",
|
||||
"invalidData": "Andmed ei kehti",
|
||||
"noMatch": "Paroolifraas ei klapi",
|
||||
"passphraseLabel": "Sinu 12-sõnaline paroolifraas",
|
||||
"recaptchaFailed": "ReCaptcha valideerimine ebaõnnestua",
|
||||
"register": "Loo konto",
|
||||
"title": "Kinnita oma paroolifraas"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "Läks katki",
|
||||
"details": "Vea üksikasjad",
|
||||
"reloadPage": "Värskenda leht",
|
||||
"showError": "Näita vea üksikasju",
|
||||
"title": "Tekkis viga!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Lahtiütlemine",
|
||||
"disclaimerText": "movie-web ei hoiusta ühtegi faili, vaid ainult lingib kolmandate osapoolte teenustele. Juriidilised küsimused tuleks lahendada failihostide ja teenusepakkujatega. movie-web ei vastuta videopakkujate poolt näidatud meediafailide eest."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Vaadake selle avatud lähtekoodiga voogesituse rakendusega oma lemmiksaateid ja -filme."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
"pages": {
|
||||
"about": "Meist",
|
||||
"dmca": "DMCA",
|
||||
"login": "Logi sisse",
|
||||
"pagetitle": "{{title}} - movie-web",
|
||||
"register": "Registreeri",
|
||||
"settings": "Sätted"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Järjehoidjad"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Jätka vaatamist"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "Lõpeta redigeerimine"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "See on kõik, mis meil on!",
|
||||
"failed": "Meedia leidmine ebaõnnestus, proovige uuesti!",
|
||||
"loading": "Laadimine....",
|
||||
"noResults": "Me ei leidnud midagi!",
|
||||
"placeholder": "Mida tahate vaadata?",
|
||||
"sectionTitle": "Otsingutulemused"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "Mida te soovite täna pärastlõunal vaadata?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "Mida te soovite täna hommikul vaadata?",
|
||||
"extra": [
|
||||
"Ma kuulsin, et Before Sunrise on hea"
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "Mida te soovite täna õhtul vaadata?",
|
||||
"extra": [
|
||||
"Väsinud? Olen kuulnud, et The Exorcist on hea."
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "S{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "Film",
|
||||
"show": "Saade"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Kontrollige oma Interneti-ühendust"
|
||||
},
|
||||
"menu": {
|
||||
"about": "Meie kohta",
|
||||
"donation": "Anneta",
|
||||
"logout": "Logi välja",
|
||||
"register": "Sünkrooni pilvega",
|
||||
"settings": "Sätted",
|
||||
"support": "Abi"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Ei leitud",
|
||||
"goHome": "Tagasi koju",
|
||||
"message": "Otsisime kõikjalt: prügikastide alt, kapist, proksi tagant, kuid lõpuks ei leidnud otsitud lehte.",
|
||||
"title": "Ei leidnud seda lehekülge"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Sulge"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Tagasi koju",
|
||||
"short": "Tagasi"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Seadmesse ülekandmine..."
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "Allalaadimine toimub otse teenusepakkujalt. movie-web ei saa kontrollida, kuidas allalaadimine toimub.",
|
||||
"downloadPlaylist": "Laadige esitusloend alla",
|
||||
"downloadVideo": "Lae alla video",
|
||||
"hlsDisclaimer": "Allalaadimised võetakse otse teenusepakkujalt. movie-web ei kontrolli, kuidas allalaadimisi pakutakse. Pange tähele, et laadite alla HLS-i esitusloendit, see on mõeldud kasutajatele, kes on tuttavad multimeediumi voogesitusega.",
|
||||
"onAndroid": {
|
||||
"1": "Et allalaadida Androidi telefonil, vajuta allalaadimise nupule, siis uuel leheküljel <bold>vajuta ja hoia</bold> video peal, siis vali <bold>salvesta</bold>.",
|
||||
"shortTitle": "Allalaadimine / Android",
|
||||
"title": "Androidil allalaadimine"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "Et allalaadida iOS telefonil, vajuta allalaadimise nupule, siis uuel leheküljel vajuta <bold><ios_share /></bold>, siis <bold>Salvesta failidesse <ios_files /></bold>.",
|
||||
"shortTitle": "Allalaadimine / iOS",
|
||||
"title": "iOSil allalaadimine"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "Klõpsake arvutis allalaadimise nupule, seejärel klõpsake uuel lehel parema klõpsuga videol ja valige <bold>Salvesta video</bold>",
|
||||
"shortTitle": "Allalaadimine / Arvutis",
|
||||
"title": "Arvutis allalaadimine"
|
||||
},
|
||||
"title": "Lae alla"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "Episoodid",
|
||||
"emptyState": "Selles hooajas puuduvad episoodid, vaadake hiljem uuesti!",
|
||||
"episodeBadge": "E{{episode}}",
|
||||
"loadingError": "Hooaja laadimine ebaōnnestus",
|
||||
"loadingList": "Laadimine...",
|
||||
"loadingTitle": "Laadimine..."
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "Taasesituse kiirus",
|
||||
"title": "Taasesituse sätted"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "Automaatne kvaliteet",
|
||||
"hint": "Võid proovida <0>vahetada allikat</0>, et saada teisi kvaliteedi valikuid.",
|
||||
"iosNoQuality": "Apple'i poolt määratletud piirangute tõttu ei ole sellel allikal kvaliteedivalik saadaval. Te võite proovida <0>vahetada teisele allikale</0>, et saada erinevaid kvaliteedivalikuid.",
|
||||
"title": "Kvaliteet"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "Lae alla",
|
||||
"experienceSection": "Vaatamise kogemus",
|
||||
"playbackItem": "Taasesituse sätted",
|
||||
"qualityItem": "Kvaliteet",
|
||||
"sourceItem": "Video allikad",
|
||||
"videoSection": "Video sätted"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "Videote leidmisel tekkis viga, palun proovige mõnda muud allikat.",
|
||||
"title": "Ei õnnestunud kraapida"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "Me ei leidnud ühtegi manust, proovige twist allikat.",
|
||||
"title": "Ei leitud manuseid"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "Sellel allikal ei ole selle filmi või seriaali jaoks ühtegi voogedastust.",
|
||||
"title": "Puudub voog"
|
||||
},
|
||||
"title": "Allikad",
|
||||
"unknownOption": "Teadmata"
|
||||
},
|
||||
"subtitles": {
|
||||
"customizeLabel": "Kohanda",
|
||||
"offChoice": "Välja",
|
||||
"settings": {
|
||||
"backlink": "Kohandatud Subtiitrid",
|
||||
"delay": "Subtiitrite viivitus",
|
||||
"fixCapitals": "Parandage suurtähtede kasutamine"
|
||||
},
|
||||
"title": "Subtiitrid",
|
||||
"unknownLanguage": "Tundmatu"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "Ebaōnnestus",
|
||||
"homeButton": "Mine koju",
|
||||
"text": "Meedia metaandmeid ei õnnestunud TMDB-st laadida. Palun kontrollige, kas TMDB on maas või see on teie internetiühenduses blokeeritud.",
|
||||
"title": "Metaandmete laadimine ebaõnnestus"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Ei leitud",
|
||||
"homeButton": "Tagasi koju",
|
||||
"text": "Me ei leidnud teie soovitud meediat. Kas see on eemaldatud või olete URL-i muutnud.",
|
||||
"title": "Ei leidnud seda meediat."
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "Tühista",
|
||||
"next": "Järgmine episood"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Taasesituse viga",
|
||||
"errors": {
|
||||
"errorAborted": "Meedia kättesaamine katkestati kasutaja taotlusel.",
|
||||
"errorDecode": "Vaatamata sellele, et eelnevalt oli kindlaks tehtud, et see on kasutatav, tekkis viga meediaressursi dekodeerimisel, mille tulemuseks oli viga.",
|
||||
"errorGenericMedia": "Tekkis tundmatu meediaviga.",
|
||||
"errorNetwork": "Tekkis võrguviga, mis takistas meedia edukat kättesaamist, kuigi see oli varem saadaval.",
|
||||
"errorNotSupported": "Meedia või meediapakkuja objekt ei ole toetatud."
|
||||
},
|
||||
"homeButton": "Mine koju",
|
||||
"text": "Tekkis viga meedia mängimisel. Palun proovige uuesti.",
|
||||
"title": "Video mängimine ebaōnnestus!"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "Tekkis viga",
|
||||
"notFound": "Ei ole videot",
|
||||
"pending": "Otsin videoid..."
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Ei leitud",
|
||||
"detailsButton": "Näita üksikasju",
|
||||
"homeButton": "Mine koju",
|
||||
"text": "Me otsisime läbi meie teenusepakkujad ja ei leidnud teie poolt otsitud meediat! Me ei halda meediat ja meil ei ole kontrolli selle üle, mis on saadaval. Täpsema teabe saamiseks klõpsake allpool nupule \"Näita üksikasju\".",
|
||||
"title": "Me ei leidnud seda"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "{{timeLeft}} alles • Lõppeb {{timeFinished, datetime}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"screens": {
|
||||
"dmca": {
|
||||
"text": "Tere tulemast movie-webi DMCA kontaktilehele! Me austame intellektuaalomandi õigusi ja soovime kiiresti lahendada kõik autoriõigusega seotud probleemid. Kui usute, et teie autoriõigusega kaitstud tööd on meie platvormil vääralt kasutatud, saatke palun üksikasjalik DMCA-teade alljärgnevale e-posti aadressile. Palun lisage autoriõigusega kaitstud materjali kirjeldus, oma kontaktandmed ja avaldus heauskse veendumuse kohta. Oleme pühendunud nende küsimuste kiirele lahendamisele ja hindame teie koostööd, et movie-web oleks koht, kus austatakse loovust ja autoriõigusi.",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "Rakenduse laadimine",
|
||||
"loadingUser": "Teie profiili laadimine",
|
||||
"loadingUserError": {
|
||||
"logout": "Logi välja",
|
||||
"reset": "Lähtestage kohandatud server",
|
||||
"text": "Profiili laadimine ebaōnnestus",
|
||||
"textWithReset": "Profiili laadimine kohandatud serverist ebaõnnestus. Kas soovite lähtestada vaikeserverile?"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "Teie andmete üleviimine ebaõnnestus.",
|
||||
"inProgress": "Palun oodake, me viime teie andmeid üle. See ei tohiks kaua aega võtta."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "Seadme nimi",
|
||||
"deviceNamePlaceholder": "Isiklik telefon",
|
||||
"editProfile": "Muuda",
|
||||
"logoutButton": "Logi välja"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "Kustuta konto",
|
||||
"confirmButton": "Kustuta konto",
|
||||
"confirmDescription": "Kas olete kindel, et soovite oma konto kustutada? Kõik teie andmed lähevad kaotsi!",
|
||||
"confirmTitle": "Oled sa kindel?",
|
||||
"text": "See toiming on pöördumatu. Kõik andmed kustutatakse ja midagi ei saa taastada.",
|
||||
"title": "Kustuta konto"
|
||||
},
|
||||
"title": "Tegevused"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "Seadme nimi",
|
||||
"failed": "Seansside laadimine ebaõnnestus",
|
||||
"removeDevice": "Eemalda",
|
||||
"title": "Seadmed"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "Lõpeta redigeerimine",
|
||||
"firstColor": "Profiili värv üks",
|
||||
"secondColor": "Profiili värv kaks",
|
||||
"title": "Redigeeri profiilipilti",
|
||||
"userIcon": "Kasutaja ikoon"
|
||||
},
|
||||
"register": {
|
||||
"cta": "Alustama",
|
||||
"text": "Jagage oma vaatamise edenemist seadmete vahel ja hoidke neid sünkroonituna.",
|
||||
"title": "Sünkrooni pilvega"
|
||||
},
|
||||
"title": "Konto"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "Aktiivne",
|
||||
"themes": {
|
||||
"blue": "Sinine",
|
||||
"default": "Vaikimisi",
|
||||
"gray": "Hall",
|
||||
"red": "Punane",
|
||||
"teal": "Tumesinine"
|
||||
},
|
||||
"title": "Välimus"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Kui soovite kohandatud backend'i kasutada oma andmete hoidmiseks, siis lubage see ja varustage URL.",
|
||||
"label": "Kohandatud server",
|
||||
"urlLabel": "Kohandatud serveri URL"
|
||||
},
|
||||
"title": "Ühendused",
|
||||
"workers": {
|
||||
"addButton": "Lisa uus töötaja",
|
||||
"description": "Rakenduse toimimiseks suunatakse kogu liiklus puhverserverite kaudu. Lubage see, kui soovite oma puhverserverit kasutada.",
|
||||
"emptyState": "Töötajaid pole veel, lisage üks",
|
||||
"label": "Kasutage kohandatud puhverserveri töötajaid",
|
||||
"urlLabel": "Töötajate URL-id",
|
||||
"urlPlaceholder": "https://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "Rakenduse keel",
|
||||
"languageDescription": "Keel on rakendatud kogu rakendusele.",
|
||||
"title": "Lokaal"
|
||||
},
|
||||
"reset": "Lähtesta",
|
||||
"save": "Salvesta",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"appVersion": "Rakenduse versioon",
|
||||
"backendUrl": "Backend'i URL",
|
||||
"backendVersion": "Backend'i versioon",
|
||||
"hostname": "Hostinimi",
|
||||
"insecure": "Ebakindel",
|
||||
"notLoggedIn": "Sa pole sisse loginud",
|
||||
"secure": "Turvaline",
|
||||
"title": "Rakenduse teave",
|
||||
"unknownVersion": "Teadmatu",
|
||||
"userId": "Kasutaja ID"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"previewQuote": "Ma ei tohi karta. Hirm on meelemõrvar.",
|
||||
"textSizeLabel": "Teksti suurus",
|
||||
"title": "Subtiitrid"
|
||||
},
|
||||
"unsaved": "Teil on salvestamata muudatusi"
|
||||
}
|
||||
}
|
@@ -7,11 +7,11 @@
|
||||
"title": "D'où vient le contenu ?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "Il n'est pas possible de demander une émission ou un film, movie-web ne gère aucun contenu. Tous les contenus sont consultés par l'intermédiaire de sources sur Internet.",
|
||||
"title": "Où puis-je demander un show ou un film ?"
|
||||
"body": "Il est impossible de solliciter une émission ou un film car movie-web ne gère aucun contenu. Les sources sur Internet sont utilisées pour consulter tous les contenus.",
|
||||
"title": "Où puis-je demander une série ou un film ?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "Nos résultats de recherche sont fournis par The Movie Database (TMDB) et s'affichent indépendamment du fait que nos sources possèdent ou non le contenu.",
|
||||
"body": "Nos résultats de recherche sont disponibles dans The Movie Database (TMDB), indépendamment du fait que nos sources possèdent ou non le contenu.",
|
||||
"title": "Les résultats de la recherche affichent l'émission ou le film, pourquoi ne puis-je pas le lire ?"
|
||||
},
|
||||
"title": "A propos de movie-web"
|
||||
@@ -21,17 +21,18 @@
|
||||
"copy": "Copier"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "Vous n'avez pas encore de compte ? <0>Créer un compte.</0>",
|
||||
"createAccount": "N'avez-vous pas encore de compte ? <0>Créer un compte.</0>",
|
||||
"deviceNameLabel": "Nom de l'appareil",
|
||||
"deviceNamePlaceholder": "Téléphone personnel",
|
||||
"generate": {
|
||||
"description": "Votre passphrase fait office de nom d'utilisateur et de mot de passe. Conservez-la précieusement, car vous devrez la saisir pour vous connecter à votre compte",
|
||||
"description": "Le nom d'utilisateur et le mot de passe sont obtenus à partir de votre passphrase. Vous devrez la saisir pour accéder à votre compte, alors gardez-la précieusement",
|
||||
"next": "J'ai sauvegardé ma passphrase",
|
||||
"passphraseFrameLabel": "Pass phrase",
|
||||
"title": "Votre passphrase"
|
||||
},
|
||||
"hasAccount": "Vous avez déjà un compte ? <0>Connectez-vous ici.</0>",
|
||||
"hasAccount": "Avez-vous déjà un compte ? <0>Connectez-vous ici.</0>",
|
||||
"login": {
|
||||
"description": "Veuillez entrer votre passphrase pour vous connecter à votre compte",
|
||||
"description": "Veuillez fournir votre passphrase pour accéder à votre compte",
|
||||
"deviceLengthError": "Veuillez saisir un nom d'appareil",
|
||||
"passphraseLabel": "Passphrase de 12 mots",
|
||||
"passphrasePlaceholder": "Passphrase",
|
||||
@@ -54,9 +55,9 @@
|
||||
"text": "L'avez-vous configuré correctement ?",
|
||||
"title": "Échec de la connexion au serveur"
|
||||
},
|
||||
"host": "Vous vous connectez à <0>{{hostname}}</0> - veuillez confirmer que vous lui faites confiance avant de créer un compte.",
|
||||
"host": "Vous vous connectez à <0>{{hostname}}</0> - veuillez confirmer que vous lui faites confiance avant de créer un compte",
|
||||
"no": "Retour",
|
||||
"title": "Faites-vous confiance à ce serveur ?",
|
||||
"title": "Est-ce que vous avez confiance à ce serveur?",
|
||||
"yes": "Je fais confiance à ce serveur"
|
||||
},
|
||||
"verify": {
|
||||
@@ -79,14 +80,14 @@
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Avertissement",
|
||||
"disclaimerText": "movie-web n'héberge aucun fichier, il se contente de proposer des liens vers des services tiers. Les questions juridiques doivent être réglées avec les hébergeurs et les fournisseurs de fichiers. movie-web n'est pas responsable des fichiers multimédias diffusés par les fournisseurs de vidéos."
|
||||
"disclaimerText": "Le site movie-web ne stocke pas de fichiers, mais propose des liens vers des services externes. Les problèmes juridiques doivent être traités avec les fournisseurs et les hébergeurs de fichiers. Les fichiers multimédias diffusés par les fournisseurs de vidéos ne sont pas couverts par movie-web."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Regardez vos émissions et films préférés avec cette application de streaming open source."
|
||||
"tagline": "Cette application de streaming open source vous permet de regarder vos émissions et films préférés."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
@@ -173,22 +174,9 @@
|
||||
"enabled": "Casting à l'appareil..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "Télécharger des sous-titres",
|
||||
"customizeLabel": "Personnaliser",
|
||||
"offChoice": "Désactivé",
|
||||
"settings": {
|
||||
"delay": "Délai des sous-titres",
|
||||
"fixCapitals": "Correction de la majuscule"
|
||||
},
|
||||
"title": "Sous-titres",
|
||||
"unknownLanguage": "Inconnu"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "Les téléchargements sont effectués directement par le fournisseur. movie-web n'a aucun contrôle sur la manière dont les téléchargements sont effectués.",
|
||||
"downloadCaption": "Télécharger les sous-titres actuels",
|
||||
"downloadVideo": "Télécharger la vidéo",
|
||||
"hlsExplanation": "Ce média est un flux HLS qui ne peut pas être téléchargé sur movie-web.",
|
||||
"onAndroid": {
|
||||
"1": "Pour télécharger sur Android, cliquez sur le bouton de téléchargement puis, sur la nouvelle page, <bold>tapez et maintenez </bold> sur la vidéo, puis sélectionnez <bold>enregistrer</bold>.",
|
||||
"shortTitle": "Télécharger / Android",
|
||||
@@ -225,9 +213,7 @@
|
||||
"title": "Qualité"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "Paramètres des sous-titres",
|
||||
"downloadItem": "Télécharger",
|
||||
"enableCaptions": "Activer les sous-titres",
|
||||
"experienceSection": "Expérience de visionnage",
|
||||
"playbackItem": "Paramètres de lecture",
|
||||
"qualityItem": "Qualité",
|
||||
@@ -371,13 +357,6 @@
|
||||
},
|
||||
"title": "Apparence"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "Opacité de l'arrière-plan",
|
||||
"colorLabel": "Couleur",
|
||||
"previewQuote": "Je ne dois pas avoir peur. La peur est un tueur d'esprit.",
|
||||
"textSizeLabel": "Taille du texte",
|
||||
"title": "Sous-titres"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Si vous souhaitez vous connecter à un backend personnalisé pour stocker vos données, activez cette option et indiquez l'URL.",
|
||||
|
@@ -27,6 +27,7 @@
|
||||
"generate": {
|
||||
"description": "ביטוי הסיסמה שלך משמש כשם המשתמש והסיסמה שלך. אנא הקפד לשמור אותו בטוח מכיוון שתצטרך להזין אותו כדי להתחבר לחשבון שלך",
|
||||
"next": "אני שמרתי את משפט הסיסמה שלי",
|
||||
"passphraseFrameLabel": "ביטוי סיסמה",
|
||||
"title": "משפט הסיסמה שלך"
|
||||
},
|
||||
"hasAccount": "כבר יש לך חשבון? <0>התחבר כאן.</0>",
|
||||
@@ -173,22 +174,11 @@
|
||||
"enabled": "משדר למכשיר..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "בחר כתוביות מהקובץ",
|
||||
"customizeLabel": "התאם אישית",
|
||||
"offChoice": "כבוי",
|
||||
"settings": {
|
||||
"delay": "עיכוב בכיתוב",
|
||||
"fixCapitals": "תקן שימוש באותיות גדולות"
|
||||
},
|
||||
"title": "כתוביות",
|
||||
"unknownLanguage": "לא ידוע"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "ההורדות נלקחות ישירות מהספק. ל-movie-web אין שליטה על האופן שבו מסופקות ההורדות.",
|
||||
"downloadCaption": "הורד את הכתוביות הנוכחיות",
|
||||
"downloadPlaylist": "הורד פלייליסט",
|
||||
"downloadVideo": "הורד וידאו",
|
||||
"hlsExplanation": "מדיה זו היא זרם HLS שאינו ניתן להורדה ב-movie-web.",
|
||||
"hlsDisclaimer": "ההורדות נלקחות ישירות מהספק. ל-movie-web אין שליטה על האופן שבו מסופקות ההורדות. שימו לב שאתם מורידים רשימת השמעה של HLS, זה מיועד למשתמשים שמכירים הזרמת מולטימדיה מתקדמת.",
|
||||
"onAndroid": {
|
||||
"1": "כדי להוריד באנדרואיד, לחץ על כפתור ההורדה ולאחר מכן, בדף החדש, <bold>הקש והחזק</bold> על הסרטון, ולאחר מכן בחר <bold>שמור</bold>.",
|
||||
"shortTitle": "הורדה / אנדרויד",
|
||||
@@ -225,9 +215,7 @@
|
||||
"title": "איכות"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "הגדרות כתוביות",
|
||||
"downloadItem": "הורד",
|
||||
"enableCaptions": "אפשר כתוביות",
|
||||
"experienceSection": "חווית צפייה",
|
||||
"playbackItem": "הגדרות ניגון",
|
||||
"qualityItem": "איכות",
|
||||
@@ -249,6 +237,17 @@
|
||||
},
|
||||
"title": "מקורות",
|
||||
"unknownOption": "לא ידוע"
|
||||
},
|
||||
"subtitles": {
|
||||
"customizeLabel": "התאם",
|
||||
"offChoice": "כבוי",
|
||||
"settings": {
|
||||
"backlink": "כתוביות מותאמות אישית",
|
||||
"delay": "עיכוב בכיתוב",
|
||||
"fixCapitals": "תקן שימוש באותיות גדולות"
|
||||
},
|
||||
"title": "כתוביות",
|
||||
"unknownLanguage": "לא ידוע"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
@@ -371,13 +370,6 @@
|
||||
},
|
||||
"title": "מראה"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "אטימות רקע",
|
||||
"colorLabel": "צבע",
|
||||
"previewQuote": "אסור לי לפחד. הפחד הוא קוטל הנפש.",
|
||||
"textSizeLabel": "גודל הטקסט",
|
||||
"title": "כתוביות"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "אם תרצה להתחבר ל-backend מותאם אישית כדי לאחסן את הנתונים שלך, הפעל זאת וספק את כתובת האתר.",
|
||||
@@ -415,6 +407,11 @@
|
||||
"userId": "זהות המשתמש"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"previewQuote": "אסור לי לפחד. הפחד הוא קוטל הנפש.",
|
||||
"textSizeLabel": "גודל הטקסט",
|
||||
"title": "כתוביות"
|
||||
},
|
||||
"unsaved": "יש לך שינויים שלא נשמרו"
|
||||
}
|
||||
}
|
||||
|
423
src/assets/locales/hi.json
Normal file
@@ -0,0 +1,423 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "मूवी-वेब एक वेब एप्लिकेशन है जो इंटरनेट पर स्ट्रीम्स की खोज करता है। टीम का लक्ष्य सामग्री के उपभोग के लिए अधिकतर न्यूनतम दृष्टिकोण अपनाना है।",
|
||||
"faqTitle": "सामान्य प्रश्न",
|
||||
"q1": {
|
||||
"body": "मूवी-वेब किसी भी कंटेंट को होस्ट नहीं करता है। जब आप देखने के लिए किसी चीज़ पर क्लिक करते हैं, तो इंटरनेट पर चयनित मीडिया की खोज की जाती है (लोडिंग स्क्रीन पर और 'वीडियो स्रोत' टैब में आप देख सकते हैं कि आप किस स्रोत का उपयोग कर रहे हैं)। मीडिया कभी भी मूवी-वेब द्वारा अपलोड नहीं किया जाता है, सब कुछ इस खोज तंत्र के माध्यम से होता है।",
|
||||
"title": "फिल्म कहां से आती है?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "किसी शो या मूवी का अनुरोध करना संभव नहीं है, मूवी-वेब किसी भी फिलम का प्रबंधन नहीं करता है। सभी फिल्में इंटरनेट पर स्रोतों के माध्यम से देखी जाती है।",
|
||||
"title": "मैं किसी शो या मूवी का अनुरोध कहां कर सकता हूं?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "हमारे खोज परिणाम मूवी डेटाबेस (टीएमडीबी) द्वारा संचालित होते हैं और इस पर ध्यान दिए बिना प्रदर्शित होते हैं कि हमारे स्रोतों में वास्तव में सामग्री है या नहीं।",
|
||||
"title": "खोज परिणाम शो या मूवी प्रदर्शित करते हैं, मैं फिलम क्यों नहीं चला पा रहा ?"
|
||||
},
|
||||
"title": "मूवी-वेब के बारे में"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "कॉपी किया गया हुआ है",
|
||||
"copy": "कॉपी"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "अब तक कोई खाता नहीं है? <0>खाता बनाएं।</0>",
|
||||
"deviceNameLabel": "डिवाइस का नाम",
|
||||
"deviceNamePlaceholder": "निजी फ़ोन",
|
||||
"generate": {
|
||||
"description": "आपका पासफ़्रेज़ आपके नाम और पासवर्ड के रूप में कार्य करता है। इसे सुरक्षित रखना सुनिश्चित करें क्योंकि आपको अपने खाते में लॉगिन करने के लिए इसे दर्ज करना होगा",
|
||||
"next": "मैंने अपना पासफ़्रेज़ सहेज कर लिया है",
|
||||
"passphraseFrameLabel": "पासफ़्रेज़",
|
||||
"title": "तुम्हारा पासफ़्रेज़"
|
||||
},
|
||||
"hasAccount": "पहले से एक खाता मौजूद है? <0>यहां लॉगिन करें।</0>",
|
||||
"login": {
|
||||
"description": "कृपया अपने खाते में लॉगिन करने के लिए अपना पासफ़्रेज़ दर्ज करें",
|
||||
"deviceLengthError": "कृपया डिवाइस का नाम दर्ज करें",
|
||||
"passphraseLabel": "12-शब्द का पासफ़्रेज़",
|
||||
"passphrasePlaceholder": "पासफ़्रेज़",
|
||||
"submit": "लॉग इन",
|
||||
"title": "अपने अकाउंट में लॉग इन करें",
|
||||
"validationError": "ग़लत या अपूर्ण पासफ़्रेज़"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
"color1": "प्रोफ़ाइल का पहला रंग",
|
||||
"color2": "प्रोफ़ाइल का दूसरा रंग",
|
||||
"header": "अपने डिवाइस के लिए एक नाम दर्ज करें और अपने पसंद का रंग और एक आइकन चुनें",
|
||||
"icon": "आइकन",
|
||||
"next": "अगला",
|
||||
"title": "खाता संबंधी जानकारी"
|
||||
}
|
||||
},
|
||||
"trust": {
|
||||
"failed": {
|
||||
"text": "क्या आपने इसे सही ढंग से कॉन्फ़िगर किया?",
|
||||
"title": "सर्वर तक पहुंचने में विफल"
|
||||
},
|
||||
"host": "आप <0>{{hostname}}</0> से कनेक्ट हो रहे हैं - खाता बनाने से पहले कृपया पुष्टि करें कि आप इस पर भरोसा करते हैं",
|
||||
"no": "पीछे जाये",
|
||||
"title": "क्या आपको इस सर्वर पर भरोसा है?",
|
||||
"yes": "मुझे इस सर्वर पर भरोसा है"
|
||||
},
|
||||
"verify": {
|
||||
"description": "यह पुष्टि करने के लिए कि आपने इसे सहेज लिया है और अपना खाता बनाने के लिए कृपया अपना पहले का पासफ़्रेज़ दर्ज करें",
|
||||
"invalidData": "डेटा मान्य नहीं है",
|
||||
"noMatch": "पासफ़्रेज़ मेल नहीं खाता",
|
||||
"passphraseLabel": "आपका 12-शब्दों वाला पासफ़्रेज़",
|
||||
"recaptchaFailed": "कैप्चा सत्यापन विफल रहा",
|
||||
"register": "खाता बनाएं",
|
||||
"title": "अपने पासफ़्रेज़ की पुष्टि करें"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "कुछ टूट गया है शायद",
|
||||
"details": "गलतियों की जानकारी",
|
||||
"reloadPage": "पृष्ठ को पुन: लोड करें",
|
||||
"showError": "गलतियों का विवरण दिखाएँ",
|
||||
"title": "हमें एक गलति का सामना करना पड़ा!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "अस्वीकरण",
|
||||
"disclaimerText": "मूवी-वेब किसी फ़ाइल को होस्ट नहीं करता है, यह केवल तृतीय पक्ष सेवाओं से लिंक करता है। कानूनी मुद्दों को फ़ाइल होस्ट और प्रदाताओं के साथ उठाया जाना चाहिए। मूवी-वेब वीडियो प्रदाताओं द्वारा दिखाई गई किसी भी मीडिया फ़ाइल के लिए ज़िम्मेदार नहीं है।"
|
||||
},
|
||||
"links": {
|
||||
"discord": "डीसकॉर्ड",
|
||||
"dmca": "DMCA",
|
||||
"github": "गिटहब"
|
||||
},
|
||||
"tagline": "अपने पसंदीदा शो और फिल्में देखें, इस ओपन सोर्स स्ट्रीमिंग ऐप के साथ।"
|
||||
},
|
||||
"global": {
|
||||
"name": "मूवी-वेब",
|
||||
"pages": {
|
||||
"about": "साइट के बारे में",
|
||||
"dmca": "DMCA",
|
||||
"login": "लॉग इन",
|
||||
"pagetitle": "{{title}} - मूवी-वेब",
|
||||
"register": "नया खाता बनायें",
|
||||
"settings": "छेड़ छाड़ करे"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "बुकमार्क"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "देखना जारी रखें"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "एडिट करना बंद करे"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "बस यही है!",
|
||||
"failed": "मीडिया ढूंढने में विफल, पुनः प्रयास करें!",
|
||||
"loading": "लोडा हो रहा है..।",
|
||||
"noResults": "हमें कुछ नहीं मिला!",
|
||||
"placeholder": "क्या देखना चाहते हो भाई?",
|
||||
"sectionTitle": "खोज के परिणाम"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "आप आज शाम क्या देखना चाहेंगे?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "आप आज सुबह को क्या देखना चाहेंगे?",
|
||||
"extra": [
|
||||
"मैंने सुना है सूर्योदय से पहले ठीक है"
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "आप आज रात को क्या देखना चाहेंगे?",
|
||||
"extra": [
|
||||
"थके हुए हो? मैंने सुना एक्सोरसिस्ट अच्छी मूवी है।"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "S{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "मूवी",
|
||||
"show": "शृंखला"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "अपना इंटरनेट संपर्क जांचे"
|
||||
},
|
||||
"menu": {
|
||||
"about": "हमारे बारे में",
|
||||
"donation": "दान करें",
|
||||
"logout": "लॉग आउट",
|
||||
"register": "क्लाउड से सिंक करें",
|
||||
"settings": "चेड चाड करे",
|
||||
"support": "सहायता"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "नहीं मिला",
|
||||
"goHome": "घर वापिस जा रहा हूँ",
|
||||
"message": "हमने हर जगह देखा: डिब्बे के नीचे, कोठरी में, प्रॉक्सी के पीछे लेकिन अंततः वह पेज नहीं मिला जिसे आप ढूंढ रहे थे।",
|
||||
"title": "वह पृष्ठ नहीं मिल सका"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "बंद करना"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "घर वापिस",
|
||||
"short": "वापिस"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "डिवाइस पर कास्ट किया जा रहा है..।"
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "डाउनलोड सीधे प्रदाता से लिए जाते हैं। मूवी-वेब का इस पर नियंत्रण नहीं है कि डाउनलोड कैसे प्रदान किए जाते हैं।",
|
||||
"downloadPlaylist": "प्लेलिस्ट डाउनलोड करें",
|
||||
"downloadSubtitle": "वर्तमान उपशीर्षक डाउनलोड करें",
|
||||
"downloadVideo": "वीडियो डाउनलोड करें",
|
||||
"hlsDisclaimer": "डाउनलोड सीधे प्रदाता से लिए जाते हैं। मूवी-वेब का इस पर नियंत्रण नहीं है कि डाउनलोड कैसे प्रदान किए जाते हैं। कृपया ध्यान दें कि आप एक एचएलएस प्लेलिस्ट डाउनलोड कर रहे हैं, यह उन्नत मल्टीमीडिया स्ट्रीमिंग से परिचित उपयोगकर्ताओं के लिए है।",
|
||||
"onAndroid": {
|
||||
"1": "एंड्रॉइड पर डाउनलोड करने के लिए, डाउनलोड बटन पर क्लिक करें, फिर नए पेज पर, वीडियो पर <bold>टैप करके रखें</bold>, फिर <bold>save</bold> चुनें।",
|
||||
"shortTitle": "डाउनलोड / एंड्रॉइड",
|
||||
"title": "एंड्रॉइड पर डाउनलोड हो रहा है"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "iOS पर डाउनलोड करने के लिए, डाउनलोड बटन पर क्लिक करें, फिर नए पेज पर <bold><ios_share /></bold> पर क्लिक करें, फिर <bold>फ़ाइलों में सहेजें <ios_files /></bold> पर क्लिक करें।",
|
||||
"shortTitle": "डाउनलोड / आईओएस",
|
||||
"title": "आईओएस पर डाउनलोड हो रहा है"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "पीसी पर, डाउनलोड बटन पर क्लिक करें, फिर नए पेज पर, वीडियो पर राइट क्लिक करें और <bold>वीडियो को इस रूप में सेव करें</bold> चुनें",
|
||||
"shortTitle": "डाउनलोड / पीसी",
|
||||
"title": "पीसी पर डाउनलोड हो रहा है"
|
||||
},
|
||||
"title": "डाउनलोड"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "एपिसोड",
|
||||
"emptyState": "इस सीज़न में कोई एपिसोड नहीं है, बाद में दोबारा जाँचें!",
|
||||
"episodeBadge": "E{{episode}}",
|
||||
"loadingError": "सीज़न लोड करने में त्रुटि",
|
||||
"loadingList": "लोड..।",
|
||||
"loadingTitle": "लोडा हो रहा है..।"
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "प्लेबैक गति",
|
||||
"title": "प्लेबैक सेटिंग्स"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "स्वचालित गुणवत्ता",
|
||||
"hint": "आप विभिन्न गुणवत्ता विकल्प प्राप्त करने के लिए <0>स्रोत स्विचिंग</0> का प्रयास कर सकते हैं।",
|
||||
"iosNoQuality": "Apple द्वारा परिभाषित सीमाओं के कारण, इस स्रोत के लिए iOS पर गुणवत्ता चयन उपलब्ध नहीं है। आप विभिन्न गुणवत्ता विकल्प प्राप्त करने के लिए <0>किसी अन्य स्रोत पर स्विच करने</0> का प्रयास कर सकते हैं।",
|
||||
"title": "गुणवत्ता"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "डाउनलोड",
|
||||
"enableSubtitles": "उपशीर्षक सक्षम करें",
|
||||
"experienceSection": "देखने का अनुभव",
|
||||
"playbackItem": "प्लेबैक सेटिंग्स",
|
||||
"qualityItem": "चित्र की गुणवत्ता",
|
||||
"sourceItem": "वीडियो स्रोत",
|
||||
"subtitleItem": "उपशीर्षक सेटिंग्स",
|
||||
"videoSection": "वीडियो सेटिंग्स"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "किसी भी वीडियो को खोजने का प्रयास करते समय एक त्रुटि हुई, कृपया किसी भिन्न स्रोत का प्रयास करें।",
|
||||
"title": "स्क्रैप करने में विफल"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "हम कोई एम्बेड नहीं ढूंढ पाए, कृपया कोई भिन्न स्रोत आज़माएँ।",
|
||||
"title": "कोई एंबेड नहीं मिला"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "इस स्रोत के पास इस फिल्म या शो के लिए कोई स्ट्रीम नहीं है।",
|
||||
"title": "कोई धारा नहीं"
|
||||
},
|
||||
"title": "सूत्रों का कहना है",
|
||||
"unknownOption": "अज्ञात"
|
||||
},
|
||||
"subtitles": {
|
||||
"customChoice": "फ़ाइल से उपशीर्षक चुनें",
|
||||
"customizeLabel": "अनुकूलित करें",
|
||||
"offChoice": "बंद",
|
||||
"settings": {
|
||||
"backlink": "कस्टम उपशीर्षक",
|
||||
"delay": "उपशीर्षक विलंब",
|
||||
"fixCapitals": "पूंजीकरण ठीक करें"
|
||||
},
|
||||
"title": "उपशीर्षक",
|
||||
"unknownLanguage": "अज्ञात"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "असफल",
|
||||
"homeButton": "घर जाओ",
|
||||
"text": "टीएमडीबी से मीडिया का मेटाडेटा लोड नहीं किया जा सका। कृपया जांचें कि क्या आपके इंटरनेट कनेक्शन पर टीएमडीबी बंद है या अवरुद्ध है।",
|
||||
"title": "मेटाडेटा लोड करने में विफल"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "नहीं मिला",
|
||||
"homeButton": "घर वापिस",
|
||||
"text": "हमें आपके द्वारा अनुरोधित मीडिया नहीं मिल सका। या तो इसे हटा दिया गया है या आपने यूआरएल के साथ छेड़छाड़ की है।",
|
||||
"title": "वह मीडिया नहीं मिल सका।"
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "रद्द करना",
|
||||
"next": "अगले प्रकरण"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "प्लेबैक त्रुटि",
|
||||
"errors": {
|
||||
"errorAborted": "उपयोगकर्ता के अनुरोध पर मीडिया को लाना रोक दिया गया था।",
|
||||
"errorDecode": "पहले प्रयोग योग्य होने के लिए निर्धारित होने के बावजूद, मीडिया संसाधन को डीकोड करने का प्रयास करते समय एक त्रुटि उत्पन्न हुई, जिसके परिणामस्वरूप त्रुटि हुई।",
|
||||
"errorGenericMedia": "अज्ञात मीडिया त्रुटि उत्पन्न हुई।",
|
||||
"errorNetwork": "किसी प्रकार की नेटवर्क त्रुटि उत्पन्न हुई जिसके कारण मीडिया पहले से उपलब्ध होने के बावजूद सफलतापूर्वक प्राप्त नहीं हो सका।",
|
||||
"errorNotSupported": "मीडिया या मीडिया प्रदाता ऑब्जेक्ट समर्थित नहीं है।"
|
||||
},
|
||||
"homeButton": "घर जाओ",
|
||||
"text": "मीडिया चलाने का प्रयास करते समय एक त्रुटि हुई. कृपया पुन: प्रयास करें।",
|
||||
"title": "वीडियो चलाने में विफल!"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "त्रुटि हुई",
|
||||
"notFound": "वीडियो नहीं है",
|
||||
"pending": "वीडियो की जांच की जा रही है..।"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "नहीं मिला",
|
||||
"detailsButton": "प्रदर्शन का विवरण",
|
||||
"homeButton": "घर जाओ",
|
||||
"text": "हमने अपने प्रदाताओं के माध्यम से खोज की है और आपको वह मीडिया नहीं मिल सका जिसकी आप तलाश कर रहे हैं! हम मीडिया की मेजबानी नहीं करते हैं और जो उपलब्ध है उस पर हमारा कोई नियंत्रण नहीं है। अधिक जानकारी के लिए कृपया नीचे 'विवरण दिखाएं' पर क्लिक करें।",
|
||||
"title": "हमें वह नहीं मिला"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "{{timeLeft}} समय बचा है • ख़तम होगा {{timeFinished, datetime}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"screens": {
|
||||
"dmca": {
|
||||
"text": "मूवी-वेब के DMCA संपर्क पृष्ठ में आपका स्वागत है! हम बौद्धिक संपदा अधिकारों का सम्मान करते हैं और किसी भी कॉपीराइट संबंधी चिंताओं का शीघ्र समाधान करना चाहते हैं। यदि आपको लगता है कि आपके कॉपीराइट किए गए कार्य का हमारे प्लेटफ़ॉर्म पर अनुचित तरीके से उपयोग किया गया है, तो कृपया नीचे दिए गए ईमेल पर एक विस्तृत DMCA नोटिस भेजें। कृपया कॉपीराइट सामग्री का विवरण, अपना संपर्क विवरण और सद्भावना विश्वास का एक बयान शामिल करें। हम इन मामलों को तुरंत हल करने के लिए प्रतिबद्ध हैं और मूवी-वेब को रचनात्मकता और कॉपीराइट का सम्मान करने वाला स्थान बनाए रखने में आपके सहयोग की सराहना करते हैं।",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "एप्लिकेशन लोड हो रहा है",
|
||||
"loadingUser": "आपकी प्रोफ़ाइल लोड हो रही है",
|
||||
"loadingUserError": {
|
||||
"logout": "लॉग आउट",
|
||||
"reset": "कस्टम सर्वर रीसेट करें",
|
||||
"text": "आपकी प्रोफ़ाइल लोड करने में विफल",
|
||||
"textWithReset": "आपके कस्टम सर्वर से आपकी प्रोफ़ाइल लोड करने में विफल, डिफ़ॉल्ट सर्वर पर वापस रीसेट करना चाहते हैं?"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "आपका डेटा स्थानांतरित करने में विफल।",
|
||||
"inProgress": "कृपया रुकें, हम आपका डेटा स्थानांतरित कर रहे हैं। इसमें ज्यादा समय नहीं लगना चाहिए।"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "डिवाइस का नाम",
|
||||
"deviceNamePlaceholder": "निजी फ़ोन",
|
||||
"editProfile": "संपादन करना",
|
||||
"logoutButton": "लॉग आउट"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "खाता हटा दो",
|
||||
"confirmButton": "खाता हटा दो",
|
||||
"confirmDescription": "क्या आप इस खाते को हटाने के लिए सुनिश्चित हैं? आपका सारा डेटा खो जाएगा!",
|
||||
"confirmTitle": "क्या आपको यकीन है?",
|
||||
"text": "यह क्रिया अपरिवर्तनीय है. सारा डेटा हटा दिया जाएगा और कुछ भी पुनर्प्राप्त नहीं किया जा सकेगा।",
|
||||
"title": "खाता हटा दो"
|
||||
},
|
||||
"title": "कार्रवाई"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "डिवाइस का नाम",
|
||||
"failed": "सत्र लोड करने में विफल",
|
||||
"removeDevice": "निकालना",
|
||||
"title": "उपकरण"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "संपादन समाप्त करें",
|
||||
"firstColor": "प्रोफ़ाइल का रंग एक",
|
||||
"secondColor": "प्रोफ़ाइल रंग दो",
|
||||
"title": "प्रोफाइल तस्वीर को संपादित करें",
|
||||
"userIcon": "आइकन"
|
||||
},
|
||||
"register": {
|
||||
"cta": "शुरू हो जाओ",
|
||||
"text": "अपनी प्रगति को उपकरणों के बीच साझा करें और उन्हें समन्वयित रखें।",
|
||||
"title": "क्लाउड से सिंक करें"
|
||||
},
|
||||
"title": "खाता"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "सक्रिय",
|
||||
"themes": {
|
||||
"blue": "नीला",
|
||||
"default": "गलती करना",
|
||||
"gray": "स्लेटी",
|
||||
"red": "लाल",
|
||||
"teal": "टील"
|
||||
},
|
||||
"title": "उपस्थिति"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "यदि आप अपना डेटा संग्रहीत करने के लिए कस्टम बैकएंड से कनेक्ट करना चाहते हैं, तो इसे सक्षम करें और URL प्रदान करें।",
|
||||
"label": "कस्टम सर्वर",
|
||||
"urlLabel": "कस्टम सर्वर यूआरएल"
|
||||
},
|
||||
"title": "सम्बन्ध",
|
||||
"workers": {
|
||||
"addButton": "नया कार्यकर्ता जोड़ें",
|
||||
"description": "एप्लिकेशन को कार्यशील बनाने के लिए, सभी ट्रैफ़िक को प्रॉक्सी के माध्यम से रूट किया जाता है। यदि आप अपने स्वयं के श्रमिकों को लाना चाहते हैं तो इसे सक्षम करें।",
|
||||
"emptyState": "अभी तक कोई कर्मचारी नहीं, नीचे एक जोड़ें",
|
||||
"label": "कस्टम प्रॉक्सी कार्यकर्ताओं का उपयोग करें",
|
||||
"urlLabel": "कार्यकर्ता यूआरएल",
|
||||
"urlPlaceholder": "https://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "अनुप्रयोग भाषा",
|
||||
"languageDescription": "भाषा संपूर्ण अनुप्रयोग पर लागू होती है।",
|
||||
"title": "स्थानीय"
|
||||
},
|
||||
"reset": "रीसेट",
|
||||
"save": "सेव",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"appVersion": "एप्लिकेशन वेरीज़न",
|
||||
"backendUrl": "बैकएंड यूआरएल",
|
||||
"backendVersion": "बैकएंड संस्करण",
|
||||
"hostname": "होस्ट का नाम",
|
||||
"insecure": "असुरक्षित",
|
||||
"notLoggedIn": "आपने लॉग - इन नहीं किया",
|
||||
"secure": "सुरक्षित",
|
||||
"title": "ऐप की जानकारी",
|
||||
"unknownVersion": "अज्ञात",
|
||||
"userId": "उपयोगकर्ता पहचान"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"backgroundLabel": "पृष्ठभूमि अस्पष्टता",
|
||||
"colorLabel": "रंग",
|
||||
"previewQuote": "मुझे डरना नहीं चाहिए. डर मन हत्यारा है।",
|
||||
"textSizeLabel": "टेक्स्ट का साइज़",
|
||||
"title": "उपशीर्षक"
|
||||
},
|
||||
"unsaved": "आपके पास सहेजे नहीं गए परिवर्तन हैं"
|
||||
}
|
||||
}
|
@@ -1,71 +1,66 @@
|
||||
{
|
||||
"global": {
|
||||
"name": "movie-web"
|
||||
"global": {
|
||||
"name": "movie-web"
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Segnalibri"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
"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"
|
||||
}
|
||||
"search": {
|
||||
"allResults": "Ecco tutto ciò che abbiamo!",
|
||||
"failed": "Impossibile trovare i media, riprova!",
|
||||
"loading": "Caricamento...",
|
||||
"noResults": "Non abbiamo trovato nulla!",
|
||||
"placeholder": "Cosa vuoi guardare?",
|
||||
"sectionTitle": "Risultati della ricerca"
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "S{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "Film",
|
||||
"show": "Serie"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Controlla la tua connessione internet"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Non trovato",
|
||||
"goHome": "Torna alla home",
|
||||
"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.",
|
||||
"title": "Impossibile trovare quella pagina"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Torna alla home",
|
||||
"short": "Indietro"
|
||||
},
|
||||
"menus": {
|
||||
"episodes": {
|
||||
"button": "Episodi",
|
||||
"loadingList": "Caricamento...",
|
||||
"loadingTitle": "Caricamento..."
|
||||
},
|
||||
"sources": {
|
||||
"title": "Fonti"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"notFound": {
|
||||
"badge": "Non trovato",
|
||||
"homeButton": "Torna alla home",
|
||||
"text": "Non siamo riusciti a trovare il media richiesto. È stato rimosso o hai manomesso l'URL.",
|
||||
"title": "Impossibile trovare quel media."
|
||||
}
|
||||
},
|
||||
"playbackError": {
|
||||
"title": "Ops, qualcosa si è rotto!"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
10
src/assets/locales/km.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "movie-web គឺជាកម្មវិធីបណ្ដាញវែបសាយដែលស្វែងរកអ៊ីនធឺណិតសម្រាប់ការផ្សាយ។ ក្រុមនេះមានគោលបំណងសម្រាប់វិធីសាស្រ្តតិចតួចបំផុតក្នុងការប្រើប្រាស់មាតិកា។",
|
||||
"faqTitle": "សំណួរទូទៅ",
|
||||
"q1": {
|
||||
"body": "movie-web មិនផ្ទុកមាតិកាណាមួយទេ។ នៅពេលអ្នកចុចលើអ្វីមួយដើម្បីមើល អ៊ីនធឺណិតត្រូវបានស្វែងរកសម្រាប់មេឌៀដែលបានជ្រើសរើស (នៅលើអេក្រង់ផ្ទុក និងក្នុងផ្ទាំង 'ប្រភពវីដេអូ' អ្នកអាចឃើញប្រភពណាមួយដែលអ្នកកំពុងប្រើ)។ ប្រព័ន្ធផ្សព្វផ្សាយមិនដែលត្រូវបានបង្ហោះដោយគេហទំព័រភាពយន្តនោះទេ អ្វីគ្រប់យ៉ាងគឺតាមរយៈយន្តការស្វែងរកនេះ។",
|
||||
"title": "តើមាតិកាបានមកពីណា?"
|
||||
}
|
||||
}
|
||||
}
|
@@ -173,22 +173,9 @@
|
||||
"enabled": "Atskaņo uz ierīci..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "Atlasiet failā parakstu",
|
||||
"customizeLabel": "Paraksti",
|
||||
"offChoice": "Izslēgts",
|
||||
"settings": {
|
||||
"delay": "Parakstu aizkave",
|
||||
"fixCapitals": "Labojiet lielo burtu lietojumu"
|
||||
},
|
||||
"title": "Paraksti",
|
||||
"unknownLanguage": "Nezināms"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "Lejupielādes tiek ņemtas tieši no pakalpojumu sniedzēja. Movie-web nevar kontrolēt, kā tiek nodrošinātas lejupielādes.",
|
||||
"downloadCaption": "Lejupielādēt pašreizējo parakstu",
|
||||
"downloadVideo": "Lejupielādēt video",
|
||||
"hlsExplanation": "Šī multivide ir HLS straume, kuru nevar lejupielādēt filmu tīmeklī.",
|
||||
"onAndroid": {
|
||||
"1": "Lai lejupielādētu operētājsistēmā Android, noklikšķiniet uz lejupielādes pogas, pēc tam jaunajā lapā <bold>pieskarieties videoklipam un turiet to</bold>, pēc tam atlasiet <bold>saglabāt</bold>.",
|
||||
"shortTitle": "Lejupielādēt / Android",
|
||||
@@ -225,9 +212,7 @@
|
||||
"title": "Kvalitāte"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "Parakstu iestatījumi",
|
||||
"downloadItem": "Lejupladēt",
|
||||
"enableCaptions": "Iespējot parakstus",
|
||||
"experienceSection": "Skatīšanās pieredze",
|
||||
"playbackItem": "Atskaņošana iestādijumi",
|
||||
"qualityItem": "Kvalitāte",
|
||||
@@ -371,13 +356,6 @@
|
||||
},
|
||||
"title": "Izskats"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "Fona necaurredzamība",
|
||||
"colorLabel": "Krāsa",
|
||||
"previewQuote": "Es nedrīkstu baidīties. Bailes ir prāta slepkava.",
|
||||
"textSizeLabel": "Teksta lielums",
|
||||
"title": "Paraksti"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Ja vēlaties izveidot savienojumu ar pielāgotu aizmugursistēmu, lai saglabātu savus datus, iespējojiet to un norādiet URL.",
|
||||
|
@@ -1,271 +1,145 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "Minion-web is a banana application that searches the banana for bananas. The banana aims for a mostly banana approach to consuming banana.",
|
||||
"faqTitle": "Banana questions",
|
||||
"q1": {
|
||||
"body": "Minion-web does not banana any banana. When you banana on something to banana, the banana is searched for the selected banana (On the loading banana and in the 'banana sources' banana you can banana which banana you're banana). Banana never gets banana by Minion-web, everything is banana this banana mechanism.",
|
||||
"title": "Where does the banana come from?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "It's not banana to banana a banana or banana, Minion-web does not banana any banana. All banana is banana through bananas on the banana.",
|
||||
"title": "Banana can I banana a banana or banana?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "Our banana results are banana by The Banana Banana (TBMB) and banana regardless of whether our bananas actually have the banana.",
|
||||
"title": "The banana results banana the banana or banana, banana can't I banana it?"
|
||||
},
|
||||
"title": "About Minion-web"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "Banana",
|
||||
"copy": "Banana"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "Whaaaat? Don't have an account yet? <0>Create an account.</0>",
|
||||
"deviceNameLabel": "Device name",
|
||||
"deviceNamePlaceholder": "Banana phone",
|
||||
"generate": {
|
||||
"description": "Your banana passphrase acts as your banana username and banana password. Make sure to keep it safe as you will need to enter it to banana to your account",
|
||||
"next": "I have saved my banana passphrase",
|
||||
"title": "Your banana passphrase"
|
||||
},
|
||||
"hasAccount": "Bello! Already have an account? <0>Login here.</0>",
|
||||
"createAccount": "Whaaaat? Don't have an account yet? <0>Create an account.</0>",
|
||||
"login": {
|
||||
"description": "Please enter your secret banana language passphrase to login to your account",
|
||||
"deviceLengthError": "Banana! Please enter a device name",
|
||||
"passphraseLabel": "12-Banana passphrase",
|
||||
"passphrasePlaceholder": "Banana Passphrase",
|
||||
"submit": "Bello! Login",
|
||||
"title": "Login to your account",
|
||||
"validationError": "Banana language not fluent or incomplete"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
"title": "Account information",
|
||||
"color1": "Profile color one",
|
||||
"color2": "Profile color two",
|
||||
"icon": "Minion icon",
|
||||
"header": "Whaaat? Enter a name for your device and pick colors and a minion icon of your choosing",
|
||||
"next": "Banana!"
|
||||
"icon": "Minion icon",
|
||||
"next": "Banana!",
|
||||
"title": "Account information"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"title": "Login to your account",
|
||||
"description": "Please enter your secret banana language passphrase to login to your account",
|
||||
"validationError": "Banana language not fluent or incomplete",
|
||||
"deviceLengthError": "Banana! Please enter a device name",
|
||||
"submit": "Bello! Login",
|
||||
"passphraseLabel": "12-Banana passphrase",
|
||||
"passphrasePlaceholder": "Banana Passphrase"
|
||||
},
|
||||
"generate": {
|
||||
"title": "Your banana passphrase",
|
||||
"next": "I have saved my banana passphrase",
|
||||
"description": "Your banana passphrase acts as your banana username and banana password. Make sure to keep it safe as you will need to enter it to banana to your account"
|
||||
},
|
||||
"trust": {
|
||||
"title": "Do you trust this server?",
|
||||
"host": "You are connecting to <0>{{hostname}}</0> - please confirm you trust it before making a banana account",
|
||||
"failed": {
|
||||
"title": "Failed to reach server",
|
||||
"text": "Did you configure it correctly?"
|
||||
"text": "Did you configure it correctly?",
|
||||
"title": "Failed to reach server"
|
||||
},
|
||||
"yes": "I trust this server, banana!",
|
||||
"no": "Go back, banana"
|
||||
"host": "You are connecting to <0>{{hostname}}</0> - please confirm you trust it before making a banana account",
|
||||
"no": "Go back, banana",
|
||||
"title": "Do you trust this server?",
|
||||
"yes": "I trust this server, banana!"
|
||||
},
|
||||
"verify": {
|
||||
"title": "Confirm your banana passphrase",
|
||||
"description": "Please enter your banana passphrase from earlier to confirm you have saved it and to create your banana account",
|
||||
"invalidData": "Banana data is not valid",
|
||||
"noMatch": "Banana! Passphrase doesn't match",
|
||||
"recaptchaFailed": "Banana! ReCaptcha validation failed",
|
||||
"passphraseLabel": "Your 12-banana passphrase",
|
||||
"register": "Create banana account"
|
||||
"recaptchaFailed": "Banana! ReCaptcha validation failed",
|
||||
"register": "Create banana account",
|
||||
"title": "Confirm your banana passphrase"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "It broke",
|
||||
"details": "Error banana details",
|
||||
"reloadPage": "Reload the banana",
|
||||
"showError": "Show banana details",
|
||||
"badge": "It broke",
|
||||
"title": "We encountered a banana!"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"title": "Couldn't find that banana",
|
||||
"message": "We looked everywhere: under the banana, in the banana, behind the banana but ultimately couldn't find the banana you are looking for.",
|
||||
"goHome": "Back to banana"
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Banana",
|
||||
"disclaimerText": "Minion-web does not banana any bananas, it merely banana to 3rd banana bananas. Banana issues should be banana up with the banana bananas and bananas. Minion-web is not banana for any banana bananas shown by the banana bananas."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Banana",
|
||||
"dmca": "Banana",
|
||||
"github": "Banana"
|
||||
},
|
||||
"tagline": "Banana your favourite bananas and bananas with this open source banana app."
|
||||
},
|
||||
"global": {
|
||||
"name": "banana-web",
|
||||
"pages": {
|
||||
"pagetitle": "{{title}} - banana-web",
|
||||
"dmca": "DMCA",
|
||||
"settings": "Banana Settings",
|
||||
"about": "About banana",
|
||||
"dmca": "DMCA",
|
||||
"login": "Banana Login",
|
||||
"register": "Banana Register"
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"types": {
|
||||
"movie": "Banana Movie",
|
||||
"show": "Banana Show"
|
||||
},
|
||||
"episodeDisplay": "S{{season}} E{{episode}}"
|
||||
},
|
||||
"player": {
|
||||
"scraping": {
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"title": "We couldn't find that banana",
|
||||
"text": "We have searched through our banana providers and cannot find the banana you are looking for! We do not host the banana and have no control over what is available. Please click 'Show details' below for more details.",
|
||||
"homeButton": "Go home",
|
||||
"detailsButton": "Show details"
|
||||
},
|
||||
"items": {
|
||||
"pending": "Checking for banana videos...",
|
||||
"notFound": "Doesn't have the banana video",
|
||||
"failure": "Error banana occurred"
|
||||
}
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Casting to banana..."
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Banana Playback error",
|
||||
"title": "Failed to play banana video!",
|
||||
"text": "There was an error trying to play the banana. Please try again.",
|
||||
"homeButton": "Go home",
|
||||
"errors": {
|
||||
"errorAborted": "The fetching of the banana was aborted by the user's banana.",
|
||||
"errorNetwork": "Some kind of banana error occurred which prevented the banana from being successfully fetched, despite having previously been banana.",
|
||||
"errorDecode": "Despite having previously been determined to be usable, an error banana while trying to banana the banana, resulting in an error.",
|
||||
"errorNotSupported": "The banana or banana provider object is not banana.",
|
||||
"errorGenericMedia": "Unknown banana error occurred."
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"notFound": {
|
||||
"badge": "Banana Not found",
|
||||
"title": "Couldn't find that banana.",
|
||||
"text": "We couldn't find the banana you requested. Either it's been banana or you tampered with the banana.",
|
||||
"homeButton": "Back to banana"
|
||||
},
|
||||
"failed": {
|
||||
"badge": "Banana Failed",
|
||||
"title": "Failed to load banana metadata",
|
||||
"text": "Could not banana the banana's banana from TMDB. Please banana whether TMDB is down or banana on your banana connection.",
|
||||
"homeButton": "Go banana"
|
||||
}
|
||||
},
|
||||
"back": {
|
||||
"default": "Back to banana",
|
||||
"short": "Back banana"
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"remaining": "{{timeLeft}} left • Finish at {{timeFinished, datetime}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
},
|
||||
"nextEpisode": {
|
||||
"next": "Next banana",
|
||||
"cancel": "Banana"
|
||||
},
|
||||
"menus": {
|
||||
"settings": {
|
||||
"videoSection": "Banana Video settings",
|
||||
"experienceSection": "Banana Viewing experience",
|
||||
"enableCaptions": "Enable banana",
|
||||
"captionItem": "Banana settings",
|
||||
"sourceItem": "Banana sources",
|
||||
"playbackItem": "Banana settings",
|
||||
"downloadItem": "Banana",
|
||||
"qualityItem": "Banana"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "Banana",
|
||||
"loadingTitle": "Loading...",
|
||||
"loadingList": "Loading...",
|
||||
"loadingError": "Error loading banana",
|
||||
"emptyState": "There are no banana in this banana, check back banana!",
|
||||
"episodeBadge": "E{{episode}}"
|
||||
},
|
||||
"sources": {
|
||||
"title": "Banana",
|
||||
"unknownOption": "Banana",
|
||||
"noStream": {
|
||||
"title": "Banana stream",
|
||||
"text": "This banana has no banana for this banana or banana."
|
||||
},
|
||||
"noEmbeds": {
|
||||
"title": "No banana found",
|
||||
"text": "We were unable to banana any banana, please try a different banana."
|
||||
},
|
||||
"failed": {
|
||||
"title": "Banana to banana",
|
||||
"text": "There was an banana while trying to banana any banana, please try a different banana."
|
||||
}
|
||||
},
|
||||
"captions": {
|
||||
"title": "Banana",
|
||||
"customizeLabel": "Banana",
|
||||
"settings": {
|
||||
"fixCapitals": "Banana",
|
||||
"delay": "Banana"
|
||||
},
|
||||
"customChoice": "Banana",
|
||||
"offChoice": "Banana",
|
||||
"unknownLanguage": "Banana"
|
||||
},
|
||||
"downloads": {
|
||||
"title": "Banana",
|
||||
"disclaimer": "Downloads are taken directly from the banana. banana-web does not have banana over how the banana are banana.",
|
||||
"hlsExplanation": "This banana is a banana banana which cannot be banana on banana-web.",
|
||||
"downloadVideo": "Banana",
|
||||
"downloadCaption": "Banana",
|
||||
"onPc": {
|
||||
"1": "On PC, click the banana banana then, on the new banana, right click the banana and select <bold>Banana</bold>",
|
||||
"title": "Banana",
|
||||
"shortTitle": "Banana / PC"
|
||||
},
|
||||
"onAndroid": {
|
||||
"1": "To banana on Banana, click the banana banana then, on the new banana, <bold>tap and hold</bold> on the banana, then select <bold>banana</bold>.",
|
||||
"title": "Banana",
|
||||
"shortTitle": "Banana / Banana"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "To banana on Banana, click the banana banana then, on the new banana, click <bold><ios_share /></bold>, then <bold>Banana to banana <ios_files /></bold>.",
|
||||
"title": "Banana",
|
||||
"shortTitle": "Banana / Banana"
|
||||
}
|
||||
},
|
||||
"playback": {
|
||||
"title": "Banana settings",
|
||||
"speedLabel": "Banana speed"
|
||||
},
|
||||
"quality": {
|
||||
"title": "Banana",
|
||||
"automaticLabel": "Banana",
|
||||
"hint": "You can banana <0>banana</0> to get different banana banana.",
|
||||
"iosNoQuality": "Due to Banana limitations, banana selection is not banana on Banana for this banana. You can banana <0>banana</0> to get different banana banana."
|
||||
}
|
||||
"pagetitle": "{{title}} - banana-web",
|
||||
"register": "Banana Register",
|
||||
"settings": "Banana Settings"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"mediaList": {
|
||||
"stopEditing": "Stop banana"
|
||||
},
|
||||
"titles": {
|
||||
"morning": {
|
||||
"default": "What would you like to banana this banana?",
|
||||
"extra": ["Banana! I hear Banana Sunrise is banana"]
|
||||
},
|
||||
"day": {
|
||||
"default": "What would you like to banana this banana?",
|
||||
"extra": []
|
||||
},
|
||||
"night": {
|
||||
"default": "What would you like to banana banana?",
|
||||
"extra": ["Banana? I hear The Banana is banana."]
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"loading": "Loading...",
|
||||
"sectionTitle": "Banana results",
|
||||
"allResults": "Banana's all we banana!",
|
||||
"noResults": "We couldn't banana anything!",
|
||||
"failed": "Failed to banana banana, try again!",
|
||||
"placeholder": "Banana do you want to banana?"
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Banana"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Continue Banana"
|
||||
},
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Banana"
|
||||
"mediaList": {
|
||||
"stopEditing": "Stop banana"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "Banana's all we banana!",
|
||||
"failed": "Failed to banana banana, try again!",
|
||||
"loading": "Loading...",
|
||||
"noResults": "We couldn't banana anything!",
|
||||
"placeholder": "Banana do you want to banana?",
|
||||
"sectionTitle": "Banana results"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "What would you like to banana this banana?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "What would you like to banana this banana?",
|
||||
"extra": [
|
||||
"Banana! I hear Banana Sunrise is banana"
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "What would you like to banana banana?",
|
||||
"extra": [
|
||||
"Banana? I hear The Banana is banana."
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Banana"
|
||||
},
|
||||
"screens": {
|
||||
"loadingUser": "Loading your banana",
|
||||
"loadingApp": "Loading banana",
|
||||
"loadingUserError": {
|
||||
"text": "Failed to banana your banana",
|
||||
"textWithReset": "Failed to banana your banana from your banana banana, banana to banana back to the banana banana?",
|
||||
"reset": "Banana banana banana",
|
||||
"logout": "Banana"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "Banana to banana your banana.",
|
||||
"inProgress": "Please banana, we are banana your banana. This shouldn't banana long."
|
||||
"media": {
|
||||
"episodeDisplay": "S{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "Banana Movie",
|
||||
"show": "Banana Show"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
@@ -273,141 +147,253 @@
|
||||
"offline": "Check your banana connection"
|
||||
},
|
||||
"menu": {
|
||||
"register": "Banana to banana",
|
||||
"settings": "Banana",
|
||||
"about": "Banana us",
|
||||
"donation": "Banana",
|
||||
"support": "Banana",
|
||||
"logout": "Banana out"
|
||||
"logout": "Banana out",
|
||||
"register": "Banana to banana",
|
||||
"settings": "Banana",
|
||||
"support": "Banana"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"copy": "Banana",
|
||||
"copied": "Banana"
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"goHome": "Back to banana",
|
||||
"message": "We looked everywhere: under the banana, in the banana, behind the banana but ultimately couldn't find the banana you are looking for.",
|
||||
"title": "Couldn't find that banana"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Banana"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Back to banana",
|
||||
"short": "Back banana"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Casting to banana..."
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "Downloads are taken directly from the banana. banana-web does not have banana over how the banana are banana.",
|
||||
"downloadVideo": "Banana",
|
||||
"onAndroid": {
|
||||
"1": "To banana on Banana, click the banana banana then, on the new banana, <bold>tap and hold</bold> on the banana, then select <bold>banana</bold>.",
|
||||
"shortTitle": "Banana / Banana",
|
||||
"title": "Banana"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "To banana on Banana, click the banana banana then, on the new banana, click <bold><ios_share /></bold>, then <bold>Banana to banana <ios_files /></bold>.",
|
||||
"shortTitle": "Banana / Banana",
|
||||
"title": "Banana"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "On PC, click the banana banana then, on the new banana, right click the banana and select <bold>Banana</bold>",
|
||||
"shortTitle": "Banana / PC",
|
||||
"title": "Banana"
|
||||
},
|
||||
"title": "Banana"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "Banana",
|
||||
"emptyState": "There are no banana in this banana, check back banana!",
|
||||
"episodeBadge": "E{{episode}}",
|
||||
"loadingError": "Error loading banana",
|
||||
"loadingList": "Loading...",
|
||||
"loadingTitle": "Loading..."
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "Banana speed",
|
||||
"title": "Banana settings"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "Banana",
|
||||
"hint": "You can banana <0>banana</0> to get different banana banana.",
|
||||
"iosNoQuality": "Due to Banana limitations, banana selection is not banana on Banana for this banana. You can banana <0>banana</0> to get different banana banana.",
|
||||
"title": "Banana"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "Banana",
|
||||
"experienceSection": "Banana Viewing experience",
|
||||
"playbackItem": "Banana settings",
|
||||
"qualityItem": "Banana",
|
||||
"sourceItem": "Banana sources",
|
||||
"videoSection": "Banana Video settings"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "There was an banana while trying to banana any banana, please try a different banana.",
|
||||
"title": "Banana to banana"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "We were unable to banana any banana, please try a different banana.",
|
||||
"title": "No banana found"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "This banana has no banana for this banana or banana.",
|
||||
"title": "Banana stream"
|
||||
},
|
||||
"title": "Banana",
|
||||
"unknownOption": "Banana"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "Banana Failed",
|
||||
"homeButton": "Go banana",
|
||||
"text": "Could not banana the banana's banana from TMDB. Please banana whether TMDB is down or banana on your banana connection.",
|
||||
"title": "Failed to load banana metadata"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Banana Not found",
|
||||
"homeButton": "Back to banana",
|
||||
"text": "We couldn't find the banana you requested. Either it's been banana or you tampered with the banana.",
|
||||
"title": "Couldn't find that banana."
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "Banana",
|
||||
"next": "Next banana"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Banana Playback error",
|
||||
"errors": {
|
||||
"errorAborted": "The fetching of the banana was aborted by the user's banana.",
|
||||
"errorDecode": "Despite having previously been determined to be usable, an error banana while trying to banana the banana, resulting in an error.",
|
||||
"errorGenericMedia": "Unknown banana error occurred.",
|
||||
"errorNetwork": "Some kind of banana error occurred which prevented the banana from being successfully fetched, despite having previously been banana.",
|
||||
"errorNotSupported": "The banana or banana provider object is not banana."
|
||||
},
|
||||
"homeButton": "Go home",
|
||||
"text": "There was an error trying to play the banana. Please try again.",
|
||||
"title": "Failed to play banana video!"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "Error banana occurred",
|
||||
"notFound": "Doesn't have the banana video",
|
||||
"pending": "Checking for banana videos..."
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Not found",
|
||||
"detailsButton": "Show details",
|
||||
"homeButton": "Go home",
|
||||
"text": "We have searched through our banana providers and cannot find the banana you are looking for! We do not host the banana and have no control over what is available. Please click 'Show details' below for more details.",
|
||||
"title": "We couldn't find that banana"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "{{timeLeft}} left • Finish at {{timeFinished, datetime}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"screens": {
|
||||
"loadingApp": "Loading banana",
|
||||
"loadingUser": "Loading your banana",
|
||||
"loadingUserError": {
|
||||
"logout": "Banana",
|
||||
"reset": "Banana banana banana",
|
||||
"text": "Failed to banana your banana",
|
||||
"textWithReset": "Failed to banana your banana from your banana banana, banana to banana back to the banana banana?"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "Banana to banana your banana.",
|
||||
"inProgress": "Please banana, we are banana your banana. This shouldn't banana long."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"unsaved": "Whaaat? You have unsaved bananas",
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "Banana name",
|
||||
"deviceNamePlaceholder": "Banana phone",
|
||||
"editProfile": "Banana",
|
||||
"logoutButton": "Banana out"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "Banana",
|
||||
"confirmButton": "Banana",
|
||||
"confirmDescription": "Banana you banana to banana your banana? All your bananas will be banana!",
|
||||
"confirmTitle": "Banana you banana?",
|
||||
"text": "Whaaat? This banana is irreversible. All bananas will be banana and nothing can be banana.",
|
||||
"title": "Banana"
|
||||
},
|
||||
"title": "Bananas"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "Banana name",
|
||||
"failed": "Failed to load bananas :'(",
|
||||
"removeDevice": "Banana",
|
||||
"title": "Bananas"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "Finish banana",
|
||||
"firstColor": "Minion color banana",
|
||||
"secondColor": "Minion color banana",
|
||||
"title": "Edit banana banana",
|
||||
"userIcon": "Minion icon"
|
||||
},
|
||||
"register": {
|
||||
"cta": "Banana started",
|
||||
"text": "Banana your banana banana between banana and keep them synced.",
|
||||
"title": "Banana to the banana"
|
||||
},
|
||||
"title": "Banana"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "Banana",
|
||||
"themes": {
|
||||
"blue": "Banana",
|
||||
"default": "Banana",
|
||||
"gray": "Banana",
|
||||
"red": "Banana",
|
||||
"teal": "Banana"
|
||||
},
|
||||
"title": "Banana"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Banana you would like to banana to a banana banana to store your banana, banana this and banana the URL.",
|
||||
"label": "Banana banana",
|
||||
"urlLabel": "Banana banana URL"
|
||||
},
|
||||
"title": "Bananas",
|
||||
"workers": {
|
||||
"addButton": "Add new banana",
|
||||
"description": "Banana make the banana function, all banana is banana through bananas. Banana this if you banana to banana your own bananas.",
|
||||
"emptyState": "No bananas yet, banana one banana",
|
||||
"label": "Banana custom banana workers",
|
||||
"urlLabel": "Banana URLs",
|
||||
"urlPlaceholder": "banana://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "Banana",
|
||||
"languageDescription": "Banana applied to the entire banana.",
|
||||
"title": "Banana"
|
||||
},
|
||||
"reset": "Banana",
|
||||
"save": "Banana",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"title": "Banana information",
|
||||
"hostname": "Banana",
|
||||
"backendUrl": "Banana URL",
|
||||
"userId": "Minion ID",
|
||||
"notLoggedIn": "You are not banana in",
|
||||
"appVersion": "Banana version",
|
||||
"backendUrl": "Banana URL",
|
||||
"backendVersion": "Banana version",
|
||||
"unknownVersion": "Unknown",
|
||||
"hostname": "Banana",
|
||||
"insecure": "Banana",
|
||||
"notLoggedIn": "You are not banana in",
|
||||
"secure": "Banana",
|
||||
"insecure": "Banana"
|
||||
"title": "Banana information",
|
||||
"unknownVersion": "Unknown",
|
||||
"userId": "Minion ID"
|
||||
}
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Banana",
|
||||
"activeTheme": "Banana",
|
||||
"themes": {
|
||||
"default": "Banana",
|
||||
"blue": "Banana",
|
||||
"teal": "Banana",
|
||||
"red": "Banana",
|
||||
"gray": "Banana"
|
||||
}
|
||||
},
|
||||
"account": {
|
||||
"title": "Banana",
|
||||
"register": {
|
||||
"title": "Banana to the banana",
|
||||
"text": "Banana your banana banana between banana and keep them synced.",
|
||||
"cta": "Banana started"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Edit banana banana",
|
||||
"firstColor": "Minion color one",
|
||||
"secondColor": "Minion color two",
|
||||
"userIcon": "Minion icon",
|
||||
"finish": "Banana banana"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Banana",
|
||||
"failed": "Failed to load bananas",
|
||||
"deviceNameLabel": "Banana name",
|
||||
"removeDevice": "Banana"
|
||||
},
|
||||
"accountDetails": {
|
||||
"editProfile": "Banana",
|
||||
"deviceNameLabel": "Banana name",
|
||||
"deviceNamePlaceholder": "Banana phone",
|
||||
"logoutButton": "Banana out"
|
||||
},
|
||||
"actions": {
|
||||
"title": "Banana",
|
||||
"delete": {
|
||||
"title": "Banana",
|
||||
"text": "Whaaat? This banana is irreversible. All bananas will be banana and nothing can be banana.",
|
||||
"button": "Banana",
|
||||
"confirmTitle": "Banana you banana?",
|
||||
"confirmDescription": "Banana you banana to banana your banana? All your bananas will be banana!",
|
||||
"confirmButton": "Banana"
|
||||
}
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"title": "Banana",
|
||||
"language": "Banana",
|
||||
"languageDescription": "Banana applied to the entire banana."
|
||||
},
|
||||
"captions": {
|
||||
"title": "Banana",
|
||||
"previewQuote": "I must not banana. Banana is the banana-killer.",
|
||||
"backgroundLabel": "Banana opacity",
|
||||
"subtitles": {
|
||||
"previewQuote": "I must not banana. Banana is the minion-killer.",
|
||||
"textSizeLabel": "Banana size",
|
||||
"colorLabel": "Banana"
|
||||
"title": "Bananas"
|
||||
},
|
||||
"connections": {
|
||||
"title": "Banana",
|
||||
"workers": {
|
||||
"label": "Banana custom banana",
|
||||
"description": "Banana make the banana function, all banana is banana through bananas. Banana this if you banana to banana your own bananas.",
|
||||
"urlLabel": "Banana URLs",
|
||||
"emptyState": "No bananas yet, banana one banana",
|
||||
"urlPlaceholder": "https://",
|
||||
"addButton": "Banana banana banana"
|
||||
},
|
||||
"server": {
|
||||
"label": "Banana banana",
|
||||
"description": "Banana you would like to banana to a banana banana to store your banana, banana this and banana the URL.",
|
||||
"urlLabel": "Banana banana URL"
|
||||
}
|
||||
}
|
||||
},
|
||||
"about": {
|
||||
"title": "About Minion-web",
|
||||
"description": "Minion-web is a banana application that searches the banana for bananas. The banana aims for a mostly banana approach to consuming banana.",
|
||||
"faqTitle": "Banana questions",
|
||||
"q1": {
|
||||
"title": "Where does the banana come from?",
|
||||
"body": "Minion-web does not banana any banana. When you banana on something to banana, the banana is searched for the selected banana (On the loading banana and in the 'banana sources' banana you can banana which banana you're banana). Banana never gets banana by Minion-web, everything is banana this banana mechanism."
|
||||
},
|
||||
"q2": {
|
||||
"title": "Banana can I banana a banana or banana?",
|
||||
"body": "It's not banana to banana a banana or banana, Minion-web does not banana any banana. All banana is banana through bananas on the banana."
|
||||
},
|
||||
"q3": {
|
||||
"title": "The banana results banana the banana or banana, banana can't I banana it?",
|
||||
"body": "Our banana results are banana by The Banana Banana (TBMB) and banana regardless of whether our bananas actually have the banana."
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"tagline": "Banana your favourite bananas and bananas with this open source banana app.",
|
||||
"links": {
|
||||
"github": "Banana",
|
||||
"dmca": "Banana",
|
||||
"discord": "Banana"
|
||||
},
|
||||
"legal": {
|
||||
"disclaimer": "Banana",
|
||||
"disclaimerText": "Minion-web does not banana any bananas, it merely banana to 3rd banana bananas. Banana issues should be banana up with the banana bananas and bananas. Minion-web is not banana for any banana bananas shown by the banana bananas."
|
||||
}
|
||||
"unsaved": "Whaaat? You have unsaved bananas"
|
||||
}
|
||||
}
|
||||
|
@@ -1,4 +1,21 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "movie-web एउटा वेब एप हो जसले स्ट्रिमहरूको लागि इन्टरनेटमा खोज्छ। हाम्रा टोलीले सामग्री उपभोग गर्नको लागि प्रायः न्यूनतम दृष्टिकोणको लागि लक्ष्य राख्छ।",
|
||||
"faqTitle": "सामान्य प्रश्नहरू",
|
||||
"q1": {
|
||||
"body": "movie-web ले कुनै पनि सामग्री होस्ट गर्दैन। जब तपाइँ हेर्नको लागि केहि क्लिक गर्नुहुन्छ, इन्टरनेटमा चयन गरिएको मिडियाको लागि खोजी गरिन्छ (लोडिङ स्क्रिनमा र 'भिडियो स्रोत' ट्याबमा तपाइँ कुन स्रोत प्रयोग गरिरहनु भएको छ भनेर देख्न सक्नुहुन्छ)। मिडिया कहिले पनि चलचित्र-वेब द्वारा अपलोड हुँदैन, सबै कुरा यो खोजी संयन्त्र मार्फत हुन्छ।",
|
||||
"title": "सामग्री कहाँबाट आउँछ?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "कार्यक्रम वा चलचित्र अनुरोध गर्न सम्भव छैन, movie-webले कुनै पनि सामग्री व्यवस्थापन गर्दैन। सबै सामग्री इन्टरनेटमा स्रोतहरू मार्फत हेरिन्छ।",
|
||||
"title": "म कहाँ कार्यक्रम वा चलचित्र अनुरोध गर्न सक्छु?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "हाम्रा खोज परिणामहरू चलचित्र डाटाबेस (TMDB) द्वारा संचालित हुन्छन् र हाम्रा स्रोतहरूमा साँच्चै सामग्री छ कि छैन भनी प्रदर्शन गरिन्छ।",
|
||||
"title": "खोज परिणामहरूले कार्यक्रम वा चलचित्र प्रदर्शन गर्दछ, म यसलाई किन प्ले गर्न सक्दिन?"
|
||||
},
|
||||
"title": "movie-web बारेमा"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "कपी भयो",
|
||||
"copy": "कपी"
|
||||
@@ -10,6 +27,7 @@
|
||||
"generate": {
|
||||
"description": "तपाईंको पासफ्रेजले तपाईंको प्रयोगकर्ता नाम र पासवर्डको रूपमा कार्य गर्दछ। यसलाई सुरक्षित राख्नुहोस् किनकि तपाईंले आफ्नो खातामा लगइन गर्न आवश्यक हुनेछ",
|
||||
"next": "मैले मेरो पासफ्रेज सुरक्षित गरेको छु",
|
||||
"passphraseFrameLabel": "पासफ्रेज",
|
||||
"title": "तपाईको पासफ्रेज"
|
||||
},
|
||||
"hasAccount": "पहिले नै खाता छ? <0>यहाँ लग-इन गर्नुहोस्|</0>",
|
||||
@@ -59,6 +77,18 @@
|
||||
"showError": "त्रुटि विवरण देखाउनुहोस्",
|
||||
"title": "हामीले एउटा त्रुटिको सामना गर्यौं!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Disclaimer",
|
||||
"disclaimerText": "movie-webले कुनै पनि फाइलहरू होस्ट गर्दैन, यसले केवल तेस्रो पक्ष सेवाहरूमा लिङ्क गर्दछ। कानुनी मुद्दाहरू फाइल होस्ट र प्रदायकहरूसँग लिनु पर्छ। चलचित्र-वेब भिडियो प्रदायकहरू द्वारा देखाइएका कुनै पनि मिडिया फाइलहरूको लागि जिम्मेवार छैन।"
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "यो खुला स्रोत स्ट्रिमिङ एपको साथ आफ्नो मनपर्ने शो र चलचित्रहरू हेर्नुहोस्।"
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
"pages": {
|
||||
@@ -144,22 +174,11 @@
|
||||
"enabled": "उपकरणमा कास्ट गर्दै..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "फाइलबाट क्याप्शन चयन गर्नुहोस्",
|
||||
"customizeLabel": "रुचिको अनुसार बनाउनु",
|
||||
"offChoice": "बन्द",
|
||||
"settings": {
|
||||
"delay": "क्याप्सन ढिलाइ",
|
||||
"fixCapitals": "पूंजीकरण ठीक गर्नुहोस्"
|
||||
},
|
||||
"title": "क्याप्शन",
|
||||
"unknownLanguage": "अज्ञात"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "डाउनलोडहरू सीधा प्रदायकबाट लिइन्छ। movie-web ले डाउनलोडहरू कसरी प्रदान गरिन्छ भन्नेमा नियन्त्रण गर्दैन।",
|
||||
"downloadCaption": "डाउनलोड चलिरहेको क्याप्शन",
|
||||
"downloadPlaylist": "डाउनलोड प्लेलिस्ट",
|
||||
"downloadVideo": "डाउनलोड भिडियो",
|
||||
"hlsExplanation": "यो मिडिया HLS स्ट्रिम हो जुन movie-web मा डाउनलोड गर्न सकिँदैन।",
|
||||
"hlsDisclaimer": "डाउनलोडहरू सीधा प्रदायकबाट लिइन्छ। movie-webले डाउनलोडहरू कसरी प्रदान गरिन्छ भन्नेमा नियन्त्रण गर्दैन। कृपया ध्यान दिनुहोस् कि तपाइँ HLS प्लेलिस्ट डाउनलोड गर्दै हुनुहुन्छ, यो उन्नत मल्टिमिडिया स्ट्रिमिङसँग परिचित प्रयोगकर्ताहरूको लागि हो।",
|
||||
"onAndroid": {
|
||||
"1": "एन्ड्रोइड मा, डाउनलोड बटन क्लिक गर्नुहोस् त्यसपछि, नयाँ पृष्ठमा, भिडियोमा <bold>ट्याप गर्नुहोस् र होल्ड गर्नुहोस्</bold>, त्यसपछि <bold>बचत</bold> चयन गर्नुहोस्।",
|
||||
"shortTitle": "डाउनलोड / एन्ड्रोइड",
|
||||
@@ -196,9 +215,7 @@
|
||||
"title": "क्वालिटी"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "क्याप्शन सेत्तिन्ग्स",
|
||||
"downloadItem": "डाउनलोड",
|
||||
"enableCaptions": "क्याप्सन इनेबल गर्नुहोस्",
|
||||
"experienceSection": "हेर्ने अनुभव",
|
||||
"playbackItem": "प्लेब्याक सेटिङ",
|
||||
"qualityItem": "क्वालिटी",
|
||||
@@ -220,6 +237,17 @@
|
||||
},
|
||||
"title": "स्रोतहरू",
|
||||
"unknownOption": "अज्ञात"
|
||||
},
|
||||
"subtitles": {
|
||||
"customizeLabel": "अनुकूलन गर्नुहोस्",
|
||||
"offChoice": "बन्द",
|
||||
"settings": {
|
||||
"backlink": "अनुकूलन उपशीर्षकहरू",
|
||||
"delay": "क्याप्शन ढिलाइ",
|
||||
"fixCapitals": "पूंजीकरण ठीक गर्नुहोस्"
|
||||
},
|
||||
"title": "क्याप्शन",
|
||||
"unknownLanguage": "अज्ञात"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
@@ -293,8 +321,97 @@
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "उपकरणको नाम",
|
||||
"deviceNamePlaceholder": "व्यक्तिगत फोन",
|
||||
"editProfile": "सम्पादन गर्नुहोस्",
|
||||
"logoutButton": "बाहिर निस्कनु"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "खाता डिलीट गर्नुहोस्",
|
||||
"confirmButton": "खाता डिलीट गर्नुहोस्",
|
||||
"confirmDescription": "के तपाइँ आफ्नो खाता डिलीट गर्न नश्चित हुनुहुन्छ? तपाईंको सबै डाटा हराउनेछ!",
|
||||
"confirmTitle": "के तपाईँ निश्चित हुनुहुन्छ?",
|
||||
"text": "यो कार्य अपरिवर्तनीय छ। सबै डाटा मेटाइनेछ र केहि पनि पुन: प्राप्त गर्न सकिँदैन।",
|
||||
"title": "खाता डिलीट गर्नुहोस्"
|
||||
},
|
||||
"title": "कार्यहरू"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "उपकरणको नाम",
|
||||
"failed": "सत्रहरू लोड गर्न असफल भयो",
|
||||
"removeDevice": "हटाउनुहोस्",
|
||||
"title": "उपकरणहरु"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "सम्पादन समाप्त गर्नुहोस्",
|
||||
"firstColor": "प्रोफाइल रङ एक",
|
||||
"secondColor": "प्रोफाइल रङ दुई",
|
||||
"title": "प्रोफाइल तस्वीर सम्पादन गर्नुहोस्",
|
||||
"userIcon": "प्रयोगकर्ता आइकन"
|
||||
},
|
||||
"register": {
|
||||
"cta": "सुरु गर्नु",
|
||||
"text": "उपकरणहरू बीच आफ्नो cप्रगति साझेदारी गर्नुहोस् र तिनीहरूलाई सिंक राख्नुहोस्।",
|
||||
"title": "क्लाउडमा सिंक गर्नुहोस्"
|
||||
},
|
||||
"title": "खाता"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "सक्रिय",
|
||||
"themes": {
|
||||
"blue": "निलो",
|
||||
"default": "साधारण",
|
||||
"gray": "खैरो",
|
||||
"red": "रातो",
|
||||
"teal": "हरियो-नीलो"
|
||||
},
|
||||
"title": "रूप-रंग"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "यदि तपाईं आफ्नो डेटा भण्डारण गर्न अनुकूलन ब्याकइन्डमा जडान गर्न चाहनुहुन्छ भने, यसलाई सक्षम गर्नुहोस् र URL प्रदान गर्नुहोस्।",
|
||||
"label": "अनुकूलन सर्भर",
|
||||
"urlLabel": "अनुकूलन सर्भर URL"
|
||||
},
|
||||
"title": "संबन्धहरु",
|
||||
"workers": {
|
||||
"addButton": "नया worker हरु हाल्नुहोस",
|
||||
"description": "एप्लिकेसन प्रकार्य बनाउनको लागि, सबै ट्राफिक प्रोक्सीहरू मार्फत रूट गरिएको छ। यदि तपाईं आफ्नो कामदारहरू ल्याउन चाहनुहुन्छ भने यसलाई सक्षम गर्नुहोस्।",
|
||||
"emptyState": "अहिलेसम्म worker हरु छैनन्, तल एउटा थप्नुहोस्",
|
||||
"label": "आफ्नै proxy workers हरु चलाउनुहोस्",
|
||||
"urlLabel": "Worker URL हरु",
|
||||
"urlPlaceholder": "https://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "एपको भाषा",
|
||||
"languageDescription": "सम्पूर्ण अनुप्रयोगमा भाषा लागू गरियो।",
|
||||
"title": "भाषा"
|
||||
},
|
||||
"reset": "रिसेट गर्नुहोस्",
|
||||
"save": "सेभ गर्नुहोस्",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"appVersion": "एप संस्करण",
|
||||
"backendUrl": "ब्याकइन्ड URL",
|
||||
"backendVersion": "ब्याकएन्ड संस्करण",
|
||||
"hostname": "होस्टको नाम",
|
||||
"insecure": "असुरक्षित",
|
||||
"notLoggedIn": "तपाईं लग्द इन हुनुहुन्न",
|
||||
"secure": "सुरक्षित",
|
||||
"title": "एप बारे जानकारी",
|
||||
"unknownVersion": "अज्ञात",
|
||||
"userId": "प्रयोगकर्ता ID"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"previewQuote": "म डराउनु हुँदैन। डर दिमागको हत्यारा हो।",
|
||||
"textSizeLabel": "टेक्स्ट साइज",
|
||||
"title": "क्याप्शन"
|
||||
},
|
||||
"unsaved": "तपाईंसँग सुरक्षित नगरिएका परिवर्तनहरू छन्"
|
||||
}
|
||||
}
|
||||
|
@@ -107,22 +107,9 @@
|
||||
"enabled": "Aan het casten..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "Ondertiteling uploaden",
|
||||
"customizeLabel": "Instellingen",
|
||||
"offChoice": "Geen ondertiteling",
|
||||
"settings": {
|
||||
"delay": "Tijdverschil ondertiteling",
|
||||
"fixCapitals": "Hoofdletters corrigeren"
|
||||
},
|
||||
"title": "Ondertiteling",
|
||||
"unknownLanguage": "Onbekend"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "Downloads worden direct bij de bron opgehaald. movie-web heeft geen controle over het bestand dat je ontvangt.",
|
||||
"downloadCaption": "Ondertiteling downloaden",
|
||||
"downloadVideo": "Download filmpje",
|
||||
"hlsExplanation": "Dit filmpje is een HLS bestand, een type bestand dat we helaas niet kunnen downloaden.",
|
||||
"title": "Download"
|
||||
},
|
||||
"episodes": {
|
||||
@@ -134,9 +121,7 @@
|
||||
"loadingTitle": "Aan het zoeken..."
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "Instellingen ondertiteling",
|
||||
"downloadItem": "Download",
|
||||
"enableCaptions": "Ondertiteling aanzetten",
|
||||
"experienceSection": "Kijk-ervaring",
|
||||
"playbackItem": "Afspeel instellingen",
|
||||
"qualityItem": "Kwaliteit",
|
||||
|
@@ -129,22 +129,9 @@
|
||||
"short": "Back"
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "Upload sea shanties",
|
||||
"customizeLabel": "Customize",
|
||||
"offChoice": "Off",
|
||||
"settings": {
|
||||
"delay": "Shanty delay",
|
||||
"fixCapitals": "Fix capitalization"
|
||||
},
|
||||
"title": "Sea Shanties",
|
||||
"unknownLanguage": "Unknown"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "Downloads be taken directly from the provider. movie-web does not have control over how the downloads be provided.",
|
||||
"downloadCaption": "Download sea shanty",
|
||||
"downloadVideo": "Download film",
|
||||
"hlsExplanation": "Insert explanation for why ye can't download HLS here",
|
||||
"onAndroid": {
|
||||
"1": "To download on Android, <bold>tap and hold</bold> on the film, then select <bold>save</bold>.",
|
||||
"shortTitle": "Download / Android",
|
||||
@@ -181,9 +168,7 @@
|
||||
"title": "Quality"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "Sea Shanty settings",
|
||||
"downloadItem": "Buried Treasure",
|
||||
"enableCaptions": "Enable Sea Shanties",
|
||||
"experienceSection": "Viewing Experience",
|
||||
"playbackItem": "Playback settings",
|
||||
"qualityItem": "Quality",
|
||||
@@ -321,13 +306,6 @@
|
||||
},
|
||||
"title": "Appearance"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "Background opacity",
|
||||
"colorLabel": "Color",
|
||||
"previewQuote": "I must not fear. Fear be the mind-killer.",
|
||||
"textSizeLabel": "Text size",
|
||||
"title": "Captions"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "To make the application function, all traffic be routed through proxies. Enable this if ye want to bring yer own sailors.",
|
||||
|
@@ -1,74 +1,417 @@
|
||||
{
|
||||
"global": {
|
||||
"name": "movie-web"
|
||||
"about": {
|
||||
"description": "movie-web jest aplikacją internetową, która wyszukuje w internecie strumienia. Zespół dąży do minimalistycznego podejścia do konsumpcji treści.",
|
||||
"faqTitle": "Częste pytania",
|
||||
"q1": {
|
||||
"body": "movie-web nie udostępnia żadnych treści. Kiedy klikniesz na coś co chcesz obejrzeć, internet zostanie przeszukany pod kątem wybranych multimediów (na ekranie ładowania oraz w zakładce „źródła wideo” możesz zobaczyć, z jakiego źródła korzystasz). Media nigdy nie są przesyłane przez movie-web, wszystko odbywa się za pośrednictwem tego mechanizmu wyszukiwania.",
|
||||
"title": "Skąd pochodzą treści?"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
"q2": {
|
||||
"body": "Nie można złożyć wniosku o programu ani filmu, movie-web nie zarządza żadną treścią. Wszystkie treści są przeglądane za pośrednictwem źródeł w Internecie.",
|
||||
"title": "Gdzie mogę złożyć wniosek o programie lub filmie?"
|
||||
},
|
||||
"media": {
|
||||
"types": {
|
||||
"movie": "Filmy",
|
||||
"show": "Seriale"
|
||||
},
|
||||
"episodeDisplay": "S{{season}} E{{episode}}"
|
||||
"q3": {
|
||||
"body": "Nasze wyniki wyszukiwania pochodzą z TMDB i są wyświetlane niezależnie od tego, czy nasze źródła faktycznie posiadają daną treść.",
|
||||
"title": "W wyniku wyszukiwania wyświetlany jest program lub film. Dlaczego nie mogę go odtworzyć?"
|
||||
},
|
||||
"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óć"
|
||||
}
|
||||
"title": "O movie-web"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "Skopiowano",
|
||||
"copy": "Kopiuj"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "Nie masz jeszcze konta? <0>Utwórz konto.</0>",
|
||||
"deviceNameLabel": "Nazwa urządzenia",
|
||||
"deviceNamePlaceholder": "Telefon osobisty",
|
||||
"generate": {
|
||||
"description": "Twoja fraza hasła działa jak nazwa użytkownika i hasło. Pamiętaj aby zachować go w bezpiecznym miejscu, ponieważ będziesz musiał go wprowadzić aby zalogować się na swoje konto",
|
||||
"next": "Zapisałem frazę hasła",
|
||||
"passphraseFrameLabel": "Fraza hasła",
|
||||
"title": "Twoja fraza hasła"
|
||||
},
|
||||
"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."
|
||||
"hasAccount": "Masz już konto? <0>Zaloguj się tutaj.</0>",
|
||||
"login": {
|
||||
"description": "Proszę wpisać frazę hasła, aby zalogować się na swoje konto",
|
||||
"deviceLengthError": "Proszę wpisać nazwę urządzenia",
|
||||
"passphraseLabel": "12-wyrazowa fraza hasła",
|
||||
"passphrasePlaceholder": "Fraza hasła",
|
||||
"submit": "Zaloguj się",
|
||||
"title": "Zaloguj się na swoje konto",
|
||||
"validationError": "Nieprawidłowe lub niedokończone fraza hasła"
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Sprawdź swoje połączenie sieciowe"
|
||||
}
|
||||
"register": {
|
||||
"information": {
|
||||
"color1": "Kolor profilu jeden",
|
||||
"color2": "Kolor profilu dwa",
|
||||
"header": "Wpisz nazwę swojego urządzenia i wybierz kolory oraz ikonę użytkownika",
|
||||
"icon": "Ikona użytkownika",
|
||||
"next": "Dalej",
|
||||
"title": "Informacje o koncie"
|
||||
}
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Zamknąć"
|
||||
"trust": {
|
||||
"failed": {
|
||||
"text": "Skonfigurowałeś to poprawnie?",
|
||||
"title": "Nie udało się połączyć z serwerem"
|
||||
},
|
||||
"host": "Łączysz się z <0>{{hostname}}</0> - przed utworzeniem konta potwierdź że ufasz temu serwerowi",
|
||||
"no": "Wstecz",
|
||||
"title": "Ufasz temu serwerowi?",
|
||||
"yes": "Ufam temu serwerowi"
|
||||
},
|
||||
"verify": {
|
||||
"description": "Wprowadź swoją frazę hasła, aby potwierdzić jego zapisanie i utworzyć konto",
|
||||
"invalidData": "Dane są nieprawidłowe",
|
||||
"noMatch": "Fraza hasła nie pasuje",
|
||||
"passphraseLabel": "Twoja 12-wyrazowa fraza hasła",
|
||||
"recaptchaFailed": "Weryfikacja ReCaptcha nie powiodła się",
|
||||
"register": "Utwórz konto",
|
||||
"title": "Potwierdź swoją frazę hasła"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "Zepsuło się",
|
||||
"details": "Szczegóły błędu",
|
||||
"reloadPage": "Odśwież stronę",
|
||||
"showError": "Pokaż szczegóły błędu",
|
||||
"title": "Napotkaliśmy błąd!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Zastrzeżenie",
|
||||
"disclaimerText": "movie-web nie przechowuje żadnych plików, zawiera jedynie łącza do usług stron trzecich. Kwestie prawne należy konsultować z hostami plików i dostawcami. movie-web nie ponosi odpowiedzialności za jakiekolwiek pliki multimedialne prezentowane przez dostawców wideo."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Oglądaj swoje ulubione programy i filmy za pomocą tej aplikacji streamingowej typu open source."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
"pages": {
|
||||
"about": "Informacje",
|
||||
"dmca": "DMCA",
|
||||
"login": "Zaloguj sie",
|
||||
"pagetitle": "{{title}} - movie-web",
|
||||
"register": "Zarejestruj się",
|
||||
"settings": "Ustawienia"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Zakładki"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Kontynuuj oglądanie"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "Przestań edytować"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "To wszystko co mamy!",
|
||||
"failed": "Nie udało się znaleźć mediów, Spróbuj ponownie!",
|
||||
"loading": "Wczytywanie...",
|
||||
"noResults": "Nie mogliśmy niczego znaleźć!",
|
||||
"placeholder": "Co chciałbyś obejrzeć?",
|
||||
"sectionTitle": "Wyniki wyszukiwania"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "Co chciałbyś obejrzeć dziś po południu?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "Co chciałbyś obejrzeć dziś rano?",
|
||||
"extra": [
|
||||
"Słyszałem że „Przed wschodem słońca” jest dobre"
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "Co chciałbyś obejrzeć dziś wieczorem?",
|
||||
"extra": [
|
||||
"Zmęczony? Słyszałem że „Egzorcysta” jest dobry."
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "S{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "Filmy",
|
||||
"show": "Seriale"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Sprawdź swoje połączenie sieciowe"
|
||||
},
|
||||
"menu": {
|
||||
"about": "O nas",
|
||||
"donation": "Wspieraj nas",
|
||||
"logout": "Wyloguj się",
|
||||
"register": "Synchronizuj z chmurą",
|
||||
"settings": "Ustawienia",
|
||||
"support": "Wsparcie"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Nie znaleziono",
|
||||
"goHome": "Wróć na stronę główną",
|
||||
"message": "Szukaliśmy wszędzie: w koszu, w szafie, a nawet w piwnicy, ale nie byliśmy w stanie znaleźć strony której szukasz.",
|
||||
"title": "Nie można znaleźć tej strony"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Zamknij"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Wróć na stronę główną",
|
||||
"short": "Wróć"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Przesyłam na urządzenie..."
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "Pliki do pobrania są pobierane bezpośrednio od dostawcy. movie-web nie ma kontroli nad sposobem dostarczania plików do pobrania.",
|
||||
"downloadPlaylist": "Pobierz playlistę",
|
||||
"downloadVideo": "Pobierz wideo",
|
||||
"hlsDisclaimer": "Pliki do pobrania są pobierane bezpośrednio od dostawcy. movie-web nie ma kontroli nad sposobem dostarczania plików do pobrania. Należy pamiętać, że pobierana jest playlista HLS, przeznaczona dla użytkowników zaznajomionych z zaawansowanym strumieniowaniem multimediów.",
|
||||
"onAndroid": {
|
||||
"1": "Aby pobrać na Androidzie, kliknij przycisk pobierania, a następnie na nowej stronie <bold>dotknij i przytrzymaj</bold> na filmie, a następnie wybierz <bold>zapisz</bold>.",
|
||||
"shortTitle": "Pobierz / Android",
|
||||
"title": "Pobieranie na Androidzie"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "Aby pobrać na iOS, kliknij przycisk pobierania, a następnie na nowej stronie, kliknij <bold><ios_share /></bold>, a następnie <bold>Zapisz do plików <ios_files /></bold>.",
|
||||
"shortTitle": "Pobierz / iOS",
|
||||
"title": "Pobieranie na iOS"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "Na komputerze, kliknij przycisk pobierania, a następnie na nowej stronie, kliknij wideo prawym przyciskiem myszy i wybierz <bold>Zapisz wideo jako</bold>",
|
||||
"shortTitle": "Pobierz / Komputer",
|
||||
"title": "Pobieranie na komputerze"
|
||||
},
|
||||
"title": "Pobierz"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "Odcinki",
|
||||
"emptyState": "Nie ma odcinków w tym sezonie, sprawdź później!",
|
||||
"episodeBadge": "E{{episode}}",
|
||||
"loadingError": "Błąd podczas ładowania sezonu",
|
||||
"loadingList": "Wczytywanie...",
|
||||
"loadingTitle": "Wczytywanie..."
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "Szybkość odtwarzania",
|
||||
"title": "Ustawienia odtwarzania"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "Jakość automatyczna",
|
||||
"hint": "Możesz spróbować <0>przełączyć źródło</0> aby uzyskać różne opcje jakości.",
|
||||
"iosNoQuality": "Ze względu na ograniczenia zdefiniowane przez Apple, wybór jakości nie jest dostępny w systemie iOS dla tego źródła. Możesz spróbować <0>przełączyć na inne źródło</0> aby uzyskać inne opcje jakości.",
|
||||
"title": "Jakość"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "Pobierz",
|
||||
"experienceSection": "Odtwarzanie",
|
||||
"playbackItem": "Ustawienia odtwarzania",
|
||||
"qualityItem": "Jakość",
|
||||
"sourceItem": "Źródła wideo",
|
||||
"videoSection": "Ustawienia wideo"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "Wystąpił błąd podczas próby znalezienia filmów. Spróbuj użyć innego źródła.",
|
||||
"title": "Nie udało się zgarnąć"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "Nie znaleźliśmy żadnych osadzonych plików. Spróbuj użyć innego źródła.",
|
||||
"title": "Nie znaleziono osadzonych treści"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "To źródło nie ma strumieni dla tego filmu lub programu.",
|
||||
"title": "Brak strumienia"
|
||||
},
|
||||
"title": "Źródła",
|
||||
"unknownOption": "Nieznany"
|
||||
},
|
||||
"subtitles": {
|
||||
"customizeLabel": "Dostosuj",
|
||||
"offChoice": "Wyłączone",
|
||||
"settings": {
|
||||
"backlink": "Własne napisy",
|
||||
"delay": "Opóźnienie napisów",
|
||||
"fixCapitals": "Popraw kapitalizację"
|
||||
},
|
||||
"title": "Napisy",
|
||||
"unknownLanguage": "Nieznany"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "Nie powiodło się",
|
||||
"homeButton": "Wróć na stronę główną",
|
||||
"text": "Nie można załadować metadanych multimediów z TMDB. Sprawdź czy TMDB nie działa lub jest zablokowany na twoim połączeniu internetowym.",
|
||||
"title": "Nie udało się załadować metadanych"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Nie znaleziono",
|
||||
"homeButton": "Wróć na stronę główną",
|
||||
"text": "Nie znaleźliśmy żądanych multimediów. Albo został usunięty, albo zmieniłeś adres URL.",
|
||||
"title": "Nie można znaleźć multimediów."
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "Anuluj",
|
||||
"next": "Następny odcinek"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Błąd odtwarzania",
|
||||
"errors": {
|
||||
"errorAborted": "Pobieranie multimediów zostało przerwane na żądanie użytkownika.",
|
||||
"errorDecode": "Pomimo wcześniejszego stwierdzenia że zasób multimedialny nadaje się do użytku, wystąpił błąd podczas próby dekodowania zasobu multimedialnego, co spowodowało błąd.",
|
||||
"errorGenericMedia": "Wystąpił nieznany błąd multimediów.",
|
||||
"errorNetwork": "Wystąpił jakiś błąd sieciowy, który uniemożliwił pomyślne pobranie multimediów, mimo że były one wcześniej dostępne.",
|
||||
"errorNotSupported": "Obiekt multimediów lub dostawcy multimediów nie jest obsługiwany."
|
||||
},
|
||||
"homeButton": "Wróć na stronę główną",
|
||||
"text": "Wystąpił błąd podczas próby odtworzenia multimediów. Spróbuj ponownie.",
|
||||
"title": "Nie udało się odtworzyć wideo!"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "Wystąpił błąd",
|
||||
"notFound": "Nie ma wideo",
|
||||
"pending": "Sprawdzanie filmów..."
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Nie znaleziono",
|
||||
"detailsButton": "Pokaż szczegóły",
|
||||
"homeButton": "Wróć na stronę główną",
|
||||
"text": "Przeszukaliśmy naszych dostawców i nie możemy znaleźć poszukiwanych multimediów! Nie przechowujemy multimediów i nie mamy kontroli nad ich dostępnością. Kliknij \"Pokaż szczegóły\" poniżej, aby uzyskać więcej informacji.",
|
||||
"title": "Nie mogliśmy znaleźć tego"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "Zostało {{timeLeft}} • Skończ o {{timeFinished, datetime}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"screens": {
|
||||
"dmca": {
|
||||
"text": "Witamy na stronie kontaktowej DMCA serwisu movie-web! Szanujemy prawa własności intelektualnej i chcemy szybko rozwiązywać wszelkie problemy związane z prawami autorskimi. Jeśli uważasz że twoja praca chroniona prawem autorskim została niewłaściwie wykorzystana na naszej platformie, proszę wysłać szczegółowe powiadomienie DMCA na poniższy adres e-mail. Prosimy o dołączenie opisu materiału chronionego prawem autorskim, danych kontaktowych i oświadczenia w dobrej wierze. Zależy nam na szybkim rozwiązywaniu takich spraw i będziemy wdzięczni za współpracę w utrzymaniu movie-web jako miejsce w którym szanuje się kreatywność i prawa autorskie.",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "Wczytywanie aplikacji",
|
||||
"loadingUser": "Wczytywanie profilu",
|
||||
"loadingUserError": {
|
||||
"logout": "Wyloguj się",
|
||||
"reset": "Zresetuj serwer niestandardowy",
|
||||
"text": "Nie udało się wczytać profilu",
|
||||
"textWithReset": "Nie udało się wczytać profilu z niestandardowego serwera, chcesz powrócić do domyślnego serwera?"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "Migracja danych nie powiodła się.",
|
||||
"inProgress": "Proszę czekać, przeprowadzamy migrację danych. Nie powinno to zająć dużo czasu."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "Nazwa urządzenia",
|
||||
"deviceNamePlaceholder": "Telefon osobisty",
|
||||
"editProfile": "Edytuj",
|
||||
"logoutButton": "Wyloguj się"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "Usuń konto",
|
||||
"confirmButton": "Usuń konto",
|
||||
"confirmDescription": "Na pewno chcesz usunąć swoje konto? Wszystkie twoje dane zostaną stracone!",
|
||||
"confirmTitle": "Jesteś pewny?",
|
||||
"text": "Działanie to jest nieodwracalne. Wszystkie dane zostaną usunięte i nie będzie można ich odzyskać.",
|
||||
"title": "Usuń konto"
|
||||
},
|
||||
"title": "Działania"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "Nazwa urządzenia",
|
||||
"failed": "Nie udało się załadować sesji",
|
||||
"removeDevice": "Usuń",
|
||||
"title": "Urządzenia"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "Zakończ edycję",
|
||||
"firstColor": "Kolor profilu jeden",
|
||||
"secondColor": "Kolor profilu dwa",
|
||||
"title": "Edytuj zdjęcie profilowe",
|
||||
"userIcon": "Ikona użytkownika"
|
||||
},
|
||||
"register": {
|
||||
"cta": "Rozpocznij",
|
||||
"text": "Udostępnij postępy oglądania między urządzeniami i synchronizuj je.",
|
||||
"title": "Synchronizuj z chmurą"
|
||||
},
|
||||
"title": "Konto"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "Aktywny",
|
||||
"themes": {
|
||||
"blue": "Niebieski",
|
||||
"default": "Domyślny",
|
||||
"gray": "Szary",
|
||||
"red": "Czerwony",
|
||||
"teal": "Morski"
|
||||
},
|
||||
"title": "Wygląd"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Jeśli chcesz połączyć się z niestandardowym backendem w celu przechowywania danych, włącz tę opcję i podaj adres URL.",
|
||||
"label": "Serwer niestandardowy",
|
||||
"urlLabel": "Adres URL niestandardowego serwera"
|
||||
},
|
||||
"title": "Połączenia",
|
||||
"workers": {
|
||||
"addButton": "Dodaj nowego pracownika",
|
||||
"description": "Aby aplikacja działała, cały ruch jest kierowany przez serwery proxy. Włącz tę opcję, jeśli chcesz korzystać z własnych pracowników.",
|
||||
"emptyState": "Brak pracowników, dodaj jednego poniżej",
|
||||
"label": "Używaj niestandardowych pracowników proxy",
|
||||
"urlLabel": "Adresy URL pracowników",
|
||||
"urlPlaceholder": "https://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "Język aplikacji",
|
||||
"languageDescription": "Język zastosowany do całej aplikacji.",
|
||||
"title": "Język"
|
||||
},
|
||||
"reset": "Reset",
|
||||
"save": "Zapisz",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"appVersion": "Wersja aplikacji",
|
||||
"backendUrl": "Adres URL backendu",
|
||||
"backendVersion": "Wersja backendu",
|
||||
"hostname": "Nazwa hosta",
|
||||
"insecure": "Niebezpieczny",
|
||||
"notLoggedIn": "Nie jesteś zalogowany",
|
||||
"secure": "Bezpieczne",
|
||||
"title": "Informacje o aplikacji",
|
||||
"unknownVersion": "Nieznany",
|
||||
"userId": "Identyfikator użytkownika"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"previewQuote": "Nie wolno mi się bać. Strach zabija myślenie.",
|
||||
"textSizeLabel": "Rozmiar czcionki",
|
||||
"title": "Napisy"
|
||||
},
|
||||
"unsaved": "Masz niezapisane zmiany"
|
||||
}
|
||||
}
|
||||
|
417
src/assets/locales/pt-BR.json
Normal file
@@ -0,0 +1,417 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "movie-web é uma aplicação web que busca na internet por streams. A equipe visa uma abordagem principalmente minimalista para consumir conteúdo.",
|
||||
"faqTitle": "Perguntas comuns",
|
||||
"q1": {
|
||||
"body": "movie-web não hospeda nenhum conteúdo. Quando você clica em algo para assistir, a internet é pesquisada pela mídia selecionada (Na tela de carregamento e na aba 'fontes de vídeo' você pode ver qual fonte está usando). A mídia nunca é carregada pelo movie-web, tudo é através deste mecanismo de busca.",
|
||||
"title": "De onde vem o conteúdo?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "Não é possível solicitar um filme ou série, o movie-web não gerencia nenhum conteúdo. Todo o conteúdo é visualizado através de fontes na internet.",
|
||||
"title": "Onde posso solicitar um filme ou série?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "Nossos resultados de pesquisa são alimentados pelo The Movie Database (TMDB) e são exibidos independentemente de nossas fontes terem ou não o conteúdo.",
|
||||
"title": "Os resultados da pesquisa mostram o filme ou série, por que não consigo reproduzi-lo?"
|
||||
},
|
||||
"title": "Sobre o movie-web"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "Copiado",
|
||||
"copy": "Copiar"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "Ainda não tem uma conta? <0>Crie uma conta.</0>",
|
||||
"deviceNameLabel": "Nome do dispositivo",
|
||||
"deviceNamePlaceholder": "Telefone pessoal",
|
||||
"generate": {
|
||||
"description": "Sua frase de acesso funciona como seu nome de usuário e senha. Certifique-se de mantê-la segura, pois você precisará inseri-la para entrar na sua conta",
|
||||
"next": "Eu salvei minha frase de acesso",
|
||||
"passphraseFrameLabel": "Frase de acesso",
|
||||
"title": "Sua frase de acesso"
|
||||
},
|
||||
"hasAccount": "Já tem uma conta? <0>Entre aqui.</0>",
|
||||
"login": {
|
||||
"description": "Por favor, insira sua frase de acesso para entrar na sua conta",
|
||||
"deviceLengthError": "Por favor, insira um nome para o dispositivo",
|
||||
"passphraseLabel": "Frase de acesso de 12 palavras",
|
||||
"passphrasePlaceholder": "Frase de acesso",
|
||||
"submit": "Entrar",
|
||||
"title": "Entrar na sua conta",
|
||||
"validationError": "Frase de acesso incorreta ou incompleta"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
"color1": "Cor do perfil um",
|
||||
"color2": "Cor do perfil dois",
|
||||
"header": "Digite um nome para o seu dispositivo e escolha cores e um ícone de usuário de sua preferência",
|
||||
"icon": "Ícone do usuário",
|
||||
"next": "Próximo",
|
||||
"title": "Informações da conta"
|
||||
}
|
||||
},
|
||||
"trust": {
|
||||
"failed": {
|
||||
"text": "Você o configurou corretamente?",
|
||||
"title": "Falha ao alcançar o servidor"
|
||||
},
|
||||
"host": "Você está se conectando a <0>{{hostname}}</0> - por favor, confirme se confia nele antes de criar uma conta",
|
||||
"no": "Voltar",
|
||||
"title": "Você confia neste servidor?",
|
||||
"yes": "Eu confio neste servidor"
|
||||
},
|
||||
"verify": {
|
||||
"description": "Por favor, insira sua frase de acesso anterior para confirmar que você a salvou e para criar sua conta",
|
||||
"invalidData": "Dados não são válidos",
|
||||
"noMatch": "Frase de acesso não corresponde",
|
||||
"passphraseLabel": "Sua frase de acesso de 12 palavras",
|
||||
"recaptchaFailed": "Falha na validação do ReCaptcha",
|
||||
"register": "Criar conta",
|
||||
"title": "Confirme sua frase de acesso"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "Quebrou",
|
||||
"details": "Detalhes do erro",
|
||||
"reloadPage": "Recarregar a página",
|
||||
"showError": "Mostrar detalhes do erro",
|
||||
"title": "Encontramos um erro!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Aviso legal",
|
||||
"disclaimerText": "movie-web não hospeda nenhum arquivo, apenas fornece links para serviços de terceiros. Questões legais devem ser tratadas com os hosts de arquivos e provedores. movie-web não é responsável por quaisquer arquivos de mídia exibidos pelos provedores de vídeo."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Assista seus programas e filmes favoritos com este aplicativo de streaming de código aberto."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
"pages": {
|
||||
"about": "Sobre",
|
||||
"dmca": "DMCA",
|
||||
"login": "Entrar",
|
||||
"pagetitle": "{{title}} - movie-web",
|
||||
"register": "Registrar",
|
||||
"settings": "Configurações"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Favoritos"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Continue assistindo"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "Parar de editar"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "Isso é tudo que temos!",
|
||||
"failed": "Falha ao encontrar mídia, tente novamente!",
|
||||
"loading": "Carregando...",
|
||||
"noResults": "Não conseguimos encontrar nada!",
|
||||
"placeholder": "O que você quer assistir?",
|
||||
"sectionTitle": "Resultados da pesquisa"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "O que você gostaria de assistir esta tarde?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "O que você gostaria de assistir esta manhã?",
|
||||
"extra": [
|
||||
"Ouvi dizer que Antes do Amanhecer é bom"
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "O que você gostaria de assistir esta noite?",
|
||||
"extra": [
|
||||
"Cansado? Ouvi dizer que O Exorcista é bom."
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "T{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "Filme",
|
||||
"show": "Série"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Verifique sua conexão com a internet"
|
||||
},
|
||||
"menu": {
|
||||
"about": "Sobre nós",
|
||||
"donation": "Doar",
|
||||
"logout": "Sair",
|
||||
"register": "Sincronizar com a nuvem",
|
||||
"settings": "Configurações",
|
||||
"support": "Suporte"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Não encontrado",
|
||||
"goHome": "Voltar para o início",
|
||||
"message": "Procuramos em todos os lugares: debaixo das lixeiras, no armário, atrás do proxy, mas no final não conseguimos encontrar a página que você está procurando.",
|
||||
"title": "Não conseguimos encontrar essa página"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Fechar"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Voltar para o início",
|
||||
"short": "Voltar"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Transmitindo para o dispositivo..."
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "Os downloads são feitos diretamente do provedor. movie-web não tem controle sobre como os downloads são fornecidos.",
|
||||
"downloadPlaylist": "Baixar playlist",
|
||||
"downloadVideo": "Baixar vídeo",
|
||||
"hlsDisclaimer": "Os downloads são feitos diretamente do provedor. movie-web não tem controle sobre como os downloads são fornecidos. Por favor, note que você está baixando uma playlist HLS, isso é destinado para usuários familiarizados com streaming multimídia avançado.",
|
||||
"onAndroid": {
|
||||
"1": "Para baixar no Android, clique no botão de download e, na nova página, <bold>toque e segure</bold> no vídeo, depois selecione <bold>salvar</bold>.",
|
||||
"shortTitle": "Baixar / Android",
|
||||
"title": "Baixando no Android"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "Para baixar no iOS, clique no botão de download e, na nova página, clique em <bold><ios_share /></bold>, depois em <bold>Salvar em Arquivos <ios_files /></bold>.",
|
||||
"shortTitle": "Baixar / iOS",
|
||||
"title": "Baixando no iOS"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "No PC, clique no botão de download e, na nova página, clique com o botão direito do mouse no vídeo e selecione <bold>Salvar vídeo como</bold>",
|
||||
"shortTitle": "Baixar / PC",
|
||||
"title": "Baixando no PC"
|
||||
},
|
||||
"title": "Baixar"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "Episódios",
|
||||
"emptyState": "Não há episódios nesta temporada, volte mais tarde!",
|
||||
"episodeBadge": "E{{episode}}",
|
||||
"loadingError": "Erro ao carregar temporada",
|
||||
"loadingList": "Carregando...",
|
||||
"loadingTitle": "Carregando..."
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "Velocidade de reprodução",
|
||||
"title": "Configurações de reprodução"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "Qualidade automática",
|
||||
"hint": "Você pode tentar <0>trocar de fonte</0> para obter diferentes opções de qualidade.",
|
||||
"iosNoQuality": "Devido a limitações definidas pela Apple, a seleção de qualidade não está disponível no iOS para esta fonte. Você pode tentar <0>trocar para outra fonte</0> para obter diferentes opções de qualidade.",
|
||||
"title": "Qualidade"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "Baixar",
|
||||
"experienceSection": "Experiência de visualização",
|
||||
"playbackItem": "Configurações de reprodução",
|
||||
"qualityItem": "Qualidade",
|
||||
"sourceItem": "Fontes de vídeo",
|
||||
"videoSection": "Configurações de vídeo"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "Houve um erro ao tentar encontrar vídeos, por favor, tente uma fonte diferente.",
|
||||
"title": "Falha ao raspar"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "Não conseguimos encontrar nenhum incorporado, por favor, tente uma fonte diferente.",
|
||||
"title": "Nenhum incorporado encontrado"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "Esta fonte não tem transmissões para este filme ou série.",
|
||||
"title": "Sem transmissão"
|
||||
},
|
||||
"title": "Fontes",
|
||||
"unknownOption": "Desconhecido"
|
||||
},
|
||||
"subtitles": {
|
||||
"customizeLabel": "Personalizar",
|
||||
"offChoice": "Desativadas",
|
||||
"settings": {
|
||||
"backlink": "Legendas personalizadas",
|
||||
"delay": "Atraso da legenda",
|
||||
"fixCapitals": "Corrigir letras maiúsculas"
|
||||
},
|
||||
"title": "Legendas",
|
||||
"unknownLanguage": "Desconhecido"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "Falhou",
|
||||
"homeButton": "Ir para o início",
|
||||
"text": "Não foi possível carregar os metadados da mídia do TMDB. Por favor, verifique se o TMDB está fora do ar ou bloqueado na sua conexão de internet.",
|
||||
"title": "Falha ao carregar metadados"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Não encontrado",
|
||||
"homeButton": "Voltar para o início",
|
||||
"text": "Não conseguimos encontrar a mídia que você solicitou. Ou ela foi removida ou você alterou o URL.",
|
||||
"title": "Não conseguimos encontrar essa mídia."
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "Cancelar",
|
||||
"next": "Próximo episódio"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Erro de reprodução",
|
||||
"errors": {
|
||||
"errorAborted": "A busca pela mídia foi abortada a pedido do usuário.",
|
||||
"errorDecode": "Apesar de ter sido previamente determinado como utilizável, ocorreu um erro ao tentar decodificar o recurso de mídia, resultando em um erro.",
|
||||
"errorGenericMedia": "Ocorreu um erro desconhecido de mídia.",
|
||||
"errorNetwork": "Ocorreu algum tipo de erro de rede que impediu a mídia de ser buscada com sucesso, apesar de ter sido previamente disponível.",
|
||||
"errorNotSupported": "A mídia ou objeto do provedor de mídia não é suportado."
|
||||
},
|
||||
"homeButton": "Ir para o início",
|
||||
"text": "Houve um erro ao tentar reproduzir a mídia. Por favor, tente novamente.",
|
||||
"title": "Falha ao reproduzir o vídeo!"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "Ocorreu um erro",
|
||||
"notFound": "Não tem o vídeo",
|
||||
"pending": "Verificando vídeos..."
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Não encontrado",
|
||||
"detailsButton": "Mostrar detalhes",
|
||||
"homeButton": "Ir para o início",
|
||||
"text": "Procuramos em nossos provedores e não conseguimos encontrar a mídia que você está procurando! Não hospedamos a mídia e não temos controle sobre o que está disponível. Por favor, clique em 'Mostrar detalhes' abaixo para mais informações.",
|
||||
"title": "Não conseguimos encontrar isso"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "{{timeLeft}} restantes • Terminar às {{timeFinished, datetime}}",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"screens": {
|
||||
"dmca": {
|
||||
"text": "Bem-vindo à página de contato do DMCA do movie-web! Respeitamos os direitos de propriedade intelectual e queremos resolver quaisquer preocupações com direitos autorais rapidamente. Se você acredita que seu trabalho protegido por direitos autorais foi usado indevidamente em nossa plataforma, envie um aviso detalhado de DMCA para o e-mail abaixo. Inclua uma descrição do material protegido por direitos autorais, seus detalhes de contato e uma declaração de crença de boa fé. Estamos comprometidos em resolver essas questões prontamente e agradecemos sua cooperação em manter o movie-web um lugar que respeita a criatividade e os direitos autorais.",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "Carregando aplicativo",
|
||||
"loadingUser": "Carregando seu perfil",
|
||||
"loadingUserError": {
|
||||
"logout": "Sair",
|
||||
"reset": "Redefinir servidor personalizado",
|
||||
"text": "Falha ao carregar seu perfil",
|
||||
"textWithReset": "Falha ao carregar seu perfil do seu servidor personalizado, deseja redefinir para o servidor padrão?"
|
||||
},
|
||||
"migration": {
|
||||
"failed": "Falha ao migrar seus dados.",
|
||||
"inProgress": "Por favor, aguarde, estamos migrando seus dados. Isso não deve demorar muito."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "Nome do dispositivo",
|
||||
"deviceNamePlaceholder": "Telefone pessoal",
|
||||
"editProfile": "Editar",
|
||||
"logoutButton": "Sair"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "Excluir conta",
|
||||
"confirmButton": "Excluir conta",
|
||||
"confirmDescription": "Você tem certeza de que deseja excluir sua conta? Todos os seus dados serão perdidos!",
|
||||
"confirmTitle": "Você tem certeza?",
|
||||
"text": "Esta ação é irreversível. Todos os dados serão excluídos e nada poderá ser recuperado.",
|
||||
"title": "Excluir conta"
|
||||
},
|
||||
"title": "Ações"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "Nome do dispositivo",
|
||||
"failed": "Falha ao carregar sessões",
|
||||
"removeDevice": "Remover",
|
||||
"title": "Dispositivos"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "Finalizar edição",
|
||||
"firstColor": "Cor do perfil um",
|
||||
"secondColor": "Cor do perfil dois",
|
||||
"title": "Editar foto de perfil",
|
||||
"userIcon": "Ícone do usuário"
|
||||
},
|
||||
"register": {
|
||||
"cta": "Começar",
|
||||
"text": "Compartilhe seu progresso de visualização entre dispositivos e mantenha-os sincronizados.",
|
||||
"title": "Sincronizar com a nuvem"
|
||||
},
|
||||
"title": "Conta"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "Ativo",
|
||||
"themes": {
|
||||
"blue": "Azul",
|
||||
"default": "Padrão",
|
||||
"gray": "Cinza",
|
||||
"red": "Vermelho",
|
||||
"teal": "Verde-azulado"
|
||||
},
|
||||
"title": "Aparência"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Se você deseja se conectar a um backend personalizado para armazenar seus dados, ative isso e forneça a URL.",
|
||||
"label": "Servidor personalizado",
|
||||
"urlLabel": "URL do servidor personalizado"
|
||||
},
|
||||
"title": "Conexões",
|
||||
"workers": {
|
||||
"addButton": "Adicionar novo worker",
|
||||
"description": "Para fazer o aplicativo funcionar, todo o tráfego é roteado através de proxies. Ative isso se você quiser trazer seus próprios workers.",
|
||||
"emptyState": "Ainda não há workers, adicione um abaixo",
|
||||
"label": "Usar proxy workers personalizados",
|
||||
"urlLabel": "URLs dos workers",
|
||||
"urlPlaceholder": "https://"
|
||||
}
|
||||
},
|
||||
"locale": {
|
||||
"language": "Idioma do aplicativo",
|
||||
"languageDescription": "Idioma aplicado a todo o aplicativo.",
|
||||
"title": "Região"
|
||||
},
|
||||
"reset": "Redefinir",
|
||||
"save": "Salvar",
|
||||
"sidebar": {
|
||||
"info": {
|
||||
"appVersion": "Versão do aplicativo",
|
||||
"backendUrl": "URL do backend",
|
||||
"backendVersion": "Versão do backend",
|
||||
"hostname": "Nome do host",
|
||||
"insecure": "Inseguro",
|
||||
"notLoggedIn": "Você não está logado",
|
||||
"secure": "Seguro",
|
||||
"title": "Informações do aplicativo",
|
||||
"unknownVersion": "Desconhecido",
|
||||
"userId": "ID do usuário"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"previewQuote": "Eu não devo ter medo. Medo é o assassino da mente.",
|
||||
"textSizeLabel": "Tamanho do texto",
|
||||
"title": "Legendas"
|
||||
},
|
||||
"unsaved": "Você tem alterações não salvas"
|
||||
}
|
||||
}
|
5
src/assets/locales/ru.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"about": {
|
||||
"faqTitle": "Общие вопросы"
|
||||
}
|
||||
}
|
@@ -3,7 +3,7 @@
|
||||
"description": "movie-web är en webbapplikation som söker efter strömmar på internet. Teamet strävar efter en mestadels minimalistisk ansats för att konsumera innehåll.",
|
||||
"faqTitle": "Vanliga frågor",
|
||||
"q1": {
|
||||
"body": "movie-web hostar inte något innehåll. När du klickar på något att titta på, söks internet efter den valda median (På laddningsskärmen och i fliken 'video sources' kan du se vilken källa du använder). Media laddas aldrig upp av movie-web, allt går genom detta sökmechanism.",
|
||||
"body": "Movie-web hostar ingen innehåll. När du klickar på något att titta på, söks internet efter det valda mediet (På laddningsskärmen och i fliken 'Videokällor' kan du se vilken källa du använder). Inget medium laddas upp av movie-web, allt sker genom sökmotorn.",
|
||||
"title": "Var kommer innehållet ifrån?"
|
||||
},
|
||||
"q2": {
|
||||
@@ -78,15 +78,15 @@
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Ansvarsfriskrivning",
|
||||
"disclaimerText": "movie-web hostar inga filer, den länkar bara till tjänster från tredje part. Juridiska frågor bör tas upp med filvärdar och leverantörer. movie-web ansvarar inte för några mediefiler som visas av videoleverantörerna."
|
||||
"disclaimer": "Friskriver sig från ansvar",
|
||||
"disclaimerText": "Movie-web hostar inga filer utan länkar endast till filer från tredje part. Eventuella juridiska frågor bör tas upp med källorna till materialet. Movie-web varken ansvarar eller styr över de mediefiler som visas."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Discord",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Titta på dina favoritprogram och filmer med denna öppna källkodsströmapp."
|
||||
"tagline": "Titta på dina favoritprogram och filmer helt gratis."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
@@ -173,22 +173,9 @@
|
||||
"enabled": "Castar till enheten..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "Välj undertext från fil",
|
||||
"customizeLabel": "Anpassa",
|
||||
"offChoice": "Av",
|
||||
"settings": {
|
||||
"delay": "Fördröjning för undertexter",
|
||||
"fixCapitals": "Åtgärda versaler"
|
||||
},
|
||||
"title": "Undertexter",
|
||||
"unknownLanguage": "Okänd"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "Nedladdningar görs direkt från leverantören. movie-web har ingen kontroll över hur nedladdningarna tillhandahålls.",
|
||||
"downloadCaption": "Ladda ner aktuell undertext",
|
||||
"downloadVideo": "Ladda ner video",
|
||||
"hlsExplanation": "Denna media är en HLS-ström som inte kan laddas ner på movie-web.",
|
||||
"onAndroid": {
|
||||
"1": "För att ladda ner på Android, klicka på nedladdningsknappen och på den nya sidan <bold>trycker och håller</bold> på videon, välj sedan <bold>spara</bold>.",
|
||||
"shortTitle": "Ladda ner / Android",
|
||||
@@ -225,9 +212,7 @@
|
||||
"title": "Kvalitet"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "Undertextinställningar",
|
||||
"downloadItem": "Ladda ner",
|
||||
"enableCaptions": "Aktivera undertexter",
|
||||
"experienceSection": "Visningsupplevelse",
|
||||
"playbackItem": "Uppspelningsinställningar",
|
||||
"qualityItem": "Kvalitet",
|
||||
@@ -371,13 +356,6 @@
|
||||
},
|
||||
"title": "Utseende"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "Bakgrundstransparens",
|
||||
"colorLabel": "Färg",
|
||||
"previewQuote": "Jag får inte frukta. Rädsla är tankedödaren.",
|
||||
"textSizeLabel": "Textstorlek",
|
||||
"title": "Textning"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Om du vill ansluta till en anpassad bakänd för att lagra dina data, aktivera detta och ange URL:en.",
|
||||
|
@@ -27,6 +27,7 @@
|
||||
"generate": {
|
||||
"description": "รหัสผ่านของคุณถูกตั้งเช่นเดียวกับชื่อผู้ใช้และรหัสผ่าน โปรดตรวจสอบให้แน่ใจว่ารหัสผ่านของคุณถูกเก็บอย่างปลอดภัย คุณจำเป็นต้องใช้เพื่อเข้าสู่ระบบบัญชีของคุณ",
|
||||
"next": "ฉันบันทึกรหัสผ่านของฉันแล้ว",
|
||||
"passphraseFrameLabel": "หรัสผ่าน",
|
||||
"title": "หรัสผ่านของคุณ"
|
||||
},
|
||||
"hasAccount": "คุณมีบัญชีแล้วหรือไม่? <0>เข้าสู่ระบบที่นี่.</0>",
|
||||
@@ -173,22 +174,9 @@
|
||||
"enabled": "เชื่อมต่ออุปกรณ์.."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "เลือกคําบรรยายจากไฟล์",
|
||||
"customizeLabel": "ปรับแต่ง",
|
||||
"offChoice": "ปิด",
|
||||
"settings": {
|
||||
"delay": "คําบรรยายล่าช้า",
|
||||
"fixCapitals": "แก้ไขตัวพิมพ์ใหญ่"
|
||||
},
|
||||
"title": "คําบรรยาย",
|
||||
"unknownLanguage": "ไม่ทราบ"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "การดาวน์โหลดจะถูกนํามาจากผู้ให้บริการโดยตรง movie-web ไม่สามารถควบคุมวิธีการดาวน์โหลดได้",
|
||||
"downloadCaption": "ดาวน์โหลดคำบรรยายปัจจุบัน",
|
||||
"downloadVideo": "ดาวน์โหลดวิดีโอ",
|
||||
"hlsExplanation": "สื่อนี้เป็นสตรีม HLS ซึ่งไม่สามารถดาวน์โหลดบนเว็บภาพยนตร์ได้",
|
||||
"onAndroid": {
|
||||
"1": "หากต้องการดาวน์โหลดบน Android ให้คลิกปุ่มดาวน์โหลด จากนั้นในหน้าใหม่ <bold>แตะ</bold> บนวิดีโอค้างไว้ จากนั้นเลือก <bold>บันทึก</bold>",
|
||||
"shortTitle": "ดาวน์โหลด / Android",
|
||||
@@ -225,9 +213,7 @@
|
||||
"title": "คุณภาพ"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "การตั้งค่าคําบรรยาย",
|
||||
"downloadItem": "ดาวน์โหลด",
|
||||
"enableCaptions": "เปิดใช้งานคําบรรยาย",
|
||||
"experienceSection": "ประสบการณ์รับชม",
|
||||
"playbackItem": "ตั้งค่าการเล่น",
|
||||
"qualityItem": "คุณภาพ",
|
||||
@@ -371,13 +357,6 @@
|
||||
},
|
||||
"title": "ธีม"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "ความทึบของพื้นหลัง",
|
||||
"colorLabel": "สี",
|
||||
"previewQuote": "ข้าต้องไม่กลัว ความกลัวจักพิฆาตจิตใจ",
|
||||
"textSizeLabel": "ขนาดตัวหนังสือ",
|
||||
"title": "คำบรรยาย"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "หากคุณต้องการเชื่อมต่อกับ backend ที่กําหนดเองเพื่อจัดเก็บข้อมูลของคุณ ให้เปิดใช้งานสิ่งนี้และระบุ URL",
|
||||
|
349
src/assets/locales/tok.json
Normal file
@@ -0,0 +1,349 @@
|
||||
{
|
||||
"about": {
|
||||
"title": "ilo Muwi-We la"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "sama a",
|
||||
"copy": "o sama"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "sina jo ala e lipu open la <0>o pali e lipu open</0>",
|
||||
"deviceNameLabel": "nimi ilo",
|
||||
"deviceNamePlaceholder": "ilo mi",
|
||||
"generate": {
|
||||
"description": "nimi open sina li lon nasin open pi lipu open sina. o awen pona e ona. sina open e lipu open sina la sina wile pana e nimi open ale sina",
|
||||
"next": "mi jo e nimi open mi",
|
||||
"passphraseFrameLabel": "nimi open",
|
||||
"title": "nimi open sina"
|
||||
},
|
||||
"hasAccount": "sina jo e lipu open la <0>o pana e nimi sina</0>",
|
||||
"login": {
|
||||
"description": "lipu open sina la o sitelen e nimi ale sina",
|
||||
"deviceLengthError": "o pana e nimi ilo",
|
||||
"passphraseLabel": "nimi open 12",
|
||||
"passphrasePlaceholder": "nimi open",
|
||||
"submit": "o open",
|
||||
"title": "o pana e nimi sina",
|
||||
"validationError": "pakala"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
"color1": "kule nanpa wan",
|
||||
"color2": "kule nanpa tu",
|
||||
"header": "o pana e nimi pi ilo sina e kule e sitelen",
|
||||
"icon": "sitelen",
|
||||
"next": "o pana",
|
||||
"title": "lipu open"
|
||||
}
|
||||
},
|
||||
"trust": {
|
||||
"failed": {
|
||||
"text": "nasin ale sina li pona anu seme?",
|
||||
"title": "toki tawa lawa ilo li pakala"
|
||||
},
|
||||
"host": "lawa ilo sina li <0>{{hostname}}</0> - ona li pona tawa sina la sina ken pali e lipu open",
|
||||
"no": "o weka",
|
||||
"title": "lawa ilo ni li pona tawa sina anu seme?",
|
||||
"yes": "lawa ilo ni li pona"
|
||||
},
|
||||
"verify": {
|
||||
"description": "sina awen e nimi open sina la o pana e nimi open",
|
||||
"invalidData": "pakala",
|
||||
"noMatch": "nimi li sama ala",
|
||||
"passphraseLabel": "nimi open 12 sina",
|
||||
"recaptchaFailed": "nasin ReCaptcha li pakala",
|
||||
"register": "o pali e lipu open",
|
||||
"title": "nimi open sina"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "pakala a",
|
||||
"details": "pakala",
|
||||
"reloadPage": "o sin e lipu",
|
||||
"showError": "o pana e sona pakala",
|
||||
"title": "mi kama pakala a!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "o sona e ni:"
|
||||
},
|
||||
"links": {
|
||||
"discord": "kulupu Siko",
|
||||
"dmca": "DMCA",
|
||||
"github": "lipu Kita"
|
||||
},
|
||||
"tagline": "o lukin e sitelen ale pi wile sina kepeken ilo ni"
|
||||
},
|
||||
"global": {
|
||||
"name": "ilo Muwi-We",
|
||||
"pages": {
|
||||
"about": "o sona",
|
||||
"dmca": "DMCA",
|
||||
"login": "o open",
|
||||
"pagetitle": "{{title}} - ilo Muwi-We",
|
||||
"register": "o pali open",
|
||||
"settings": "o ante"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "poki awen"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "o awen lukin"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "o pini ante"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "pini a!",
|
||||
"failed": "lukin li pakala a! o alasa sin",
|
||||
"loading": "alasa...",
|
||||
"noResults": "ijo li lon ala a!",
|
||||
"placeholder": "sina wile lukin e seme?",
|
||||
"sectionTitle": "mi lukin e ni:"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "tenpo suno ni la sina wile lukin e seme?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "tenpo sin ni la sina wile lukin e seme?",
|
||||
"extra": [
|
||||
"ken la sitelen Before Sunrise li pona"
|
||||
]
|
||||
},
|
||||
"night": {
|
||||
"default": "tenpo pimeja ni la sina wile lukin e seme?",
|
||||
"extra": [
|
||||
"sina pilin lape anu seme? o alasa lukin e sitelen Exorcist"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "S{{season}} E{{episode}}",
|
||||
"types": {
|
||||
"movie": "sitelen wan",
|
||||
"show": "sitelen kulupu"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "wawa linja sina li seme?"
|
||||
},
|
||||
"menu": {
|
||||
"about": "mi",
|
||||
"donation": "o esun",
|
||||
"logout": "o weka sona e sina",
|
||||
"register": "Sync to cloud",
|
||||
"settings": "o ante",
|
||||
"support": "o supa"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "lon ala",
|
||||
"goHome": "o tawa weka",
|
||||
"message": "mi lukin lon anpa poki, lon insa tomo, lon monsi ilo. taso mi lukin ala e lipu pi wile sina",
|
||||
"title": "mi ken ala lukin e lipu ona"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "o pini"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "o tawa weka",
|
||||
"short": "o tawa"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "mi pana e sitelen tawa ilo ante..."
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "sina kama jo e sitelen tawa ilo sina tan lipu mama. ilo Muwi-We li lawa ala e nasin jo",
|
||||
"downloadVideo": "o jo e sitelen",
|
||||
"onAndroid": {
|
||||
"1": "ilo Android la o luka e nena 'o jo'. lon lipu sin la <bold>o luka wawa</bold> e sitelen. o luka e nena 'o jo'",
|
||||
"shortTitle": "Android ) o jo",
|
||||
"title": "o jo lon ilo Android"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "ilo iOS la o luka e nena 'o jo'. lon lipu sin la o luka e <bold><ios_share /></bold>, e <bold>o jo poki <ios_files /></bold>.",
|
||||
"shortTitle": "iOS ) o jo",
|
||||
"title": "o jo lon ilo iOS"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "ilo suli la o luka e nena 'o jo e sitelen'. lon lipu sin la o luka ante e sitelen. o luka e nena <bold>'o jo e sitelen lon nimi ante'</bold>",
|
||||
"shortTitle": "ilo suli ) o jo",
|
||||
"title": "o jo lon ilo suli"
|
||||
},
|
||||
"title": "kama jo"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "sitelen mute",
|
||||
"emptyState": "kulupu ni li jo ala e sitelen. o lukin lon tenpo ante a!",
|
||||
"episodeBadge": "E{{episode}}",
|
||||
"loadingError": "alasa li pakala",
|
||||
"loadingList": "alasa...",
|
||||
"loadingTitle": "alasa..."
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "tenpo lukin",
|
||||
"title": "nasin pali"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "ilo o lawa",
|
||||
"hint": "ante pi pona lukin la sina ken <0>ante e mama</0>",
|
||||
"iosNoQuality": "tan lawa pi esun Apple la ante pi pona lukin li ken ala lon ilo iOS. ante pi pona lukin la o alasa <0>ante e mama</0>",
|
||||
"title": "pona lukin"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "o jo",
|
||||
"experienceSection": "nasin lukin",
|
||||
"playbackItem": "nasin pali",
|
||||
"qualityItem": "pona lukin",
|
||||
"sourceItem": "mama sitelen",
|
||||
"videoSection": "nasin sitelen"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "lukin sitelen li pakala. o alasa e mama ante.",
|
||||
"title": "pakala jo"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "mi lukin ala e lipu. o alasa e mama ante.",
|
||||
"title": "lipu li lon ala"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "lipu mama ni li jo ala e sitelen ni",
|
||||
"title": "sitelen li lon ala"
|
||||
},
|
||||
"title": "mama",
|
||||
"unknownOption": "mi sona ala"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "pakala",
|
||||
"homeButton": "o tawa weka",
|
||||
"text": "mi pakala alasa e sona sitelen tan lipu TMDB. ken la ona li lape anu moli",
|
||||
"title": "mi pakala alasa e sona sitelen"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "lon ala",
|
||||
"homeButton": "o tawa weka",
|
||||
"text": "mi lukin ala e lipu pi wile sina. lipu li weka anu ante",
|
||||
"title": "mi lukin ala e ona"
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "o ala",
|
||||
"next": "o sitelen sin"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "pakala lukin",
|
||||
"errors": {
|
||||
"errorAborted": "jan li pini alasa e sitelen",
|
||||
"errorDecode": "sitelen li kama ante la pakala li kama lon",
|
||||
"errorGenericMedia": "pakala sitelen pi sona ala li lon",
|
||||
"errorNetwork": "pakala linja li pakala e alasa sitelen",
|
||||
"errorNotSupported": "mi ken ala supa e sitelen anu mama sitelen"
|
||||
},
|
||||
"homeButton": "o tawa weka",
|
||||
"text": "mi alasa lukin e sitelen. taso pakala li lon. o alasa sin",
|
||||
"title": "mi pakala lukin a"
|
||||
},
|
||||
"scraping": {
|
||||
"items": {
|
||||
"failure": "mi pakala",
|
||||
"notFound": "sitelen li lon ala",
|
||||
"pending": "mi alasa e sitelen..."
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "lon ala",
|
||||
"detailsButton": "o pana e sona",
|
||||
"homeButton": "o tawa weka",
|
||||
"text": "mi lukin e lipu mama ale mi. taso mi lukin ala e ijo pi wile sina. mi mama ala e sitelen. mi lawa ala e sitelen. o luka e nena anpa",
|
||||
"title": "mi lukin ala e ona"
|
||||
}
|
||||
},
|
||||
"time": {
|
||||
"regular": "{{timeWatched}} / {{duration}}",
|
||||
"remaining": "tenpo {{timeLeft}} la o awen • tenpo {{timeFinished, datetime}} la ona li pini",
|
||||
"shortRegular": "{{timeWatched}}",
|
||||
"shortRemaining": "-{{timeLeft}}"
|
||||
}
|
||||
},
|
||||
"screens": {
|
||||
"loadingApp": "mi alasa e ilo",
|
||||
"loadingUser": "mi alasa e lipu sina",
|
||||
"loadingUserError": {
|
||||
"logout": "o weka sona e sina",
|
||||
"reset": "o sin e lawa ilo sina",
|
||||
"text": "alasa li pakala",
|
||||
"textWithReset": "alasa tan lawa ilo sina li pakala. sina wile e lawa ilo mi anu seme?"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"account": {
|
||||
"accountDetails": {
|
||||
"deviceNameLabel": "nimi ilo",
|
||||
"deviceNamePlaceholder": "ilo",
|
||||
"editProfile": "o ante",
|
||||
"logoutButton": "o weka sona e ona"
|
||||
},
|
||||
"actions": {
|
||||
"delete": {
|
||||
"button": "o weka e ale",
|
||||
"confirmButton": "o weka e ale",
|
||||
"confirmDescription": "weka ni li suli li wawa mute a! sona ale sina li ken ala kama lon tenpo ante a!",
|
||||
"confirmTitle": "sina wile e ni anu seme?",
|
||||
"text": "tenpo kama la sina ken ala ante e weka ni. ale li kama weka",
|
||||
"title": "o weka e ale"
|
||||
},
|
||||
"title": "pali"
|
||||
},
|
||||
"devices": {
|
||||
"deviceNameLabel": "nimi ilo",
|
||||
"failed": "alasa li pakala",
|
||||
"removeDevice": "o weka",
|
||||
"title": "ilo"
|
||||
},
|
||||
"profile": {
|
||||
"finish": "o ante",
|
||||
"firstColor": "kule nanpa wan",
|
||||
"secondColor": "kule nanpa tu",
|
||||
"title": "o ante e sitelen",
|
||||
"userIcon": "sitelen"
|
||||
},
|
||||
"register": {
|
||||
"cta": "o open",
|
||||
"text": "o sama e lipu open sina tawa ilo sina ante",
|
||||
"title": "o sama e lipu"
|
||||
},
|
||||
"title": "lipu open"
|
||||
},
|
||||
"appearance": {
|
||||
"activeTheme": "lon",
|
||||
"themes": {
|
||||
"blue": "laso",
|
||||
"default": "sama",
|
||||
"gray": "pimeja",
|
||||
"red": "loje",
|
||||
"teal": "laso walo"
|
||||
},
|
||||
"title": "kule"
|
||||
},
|
||||
"connections": {
|
||||
"title": "kulupu"
|
||||
},
|
||||
"locale": {
|
||||
"language": "toki ilo",
|
||||
"languageDescription": "ilo li toki kepeken toki ni:",
|
||||
"title": "toki"
|
||||
},
|
||||
"reset": "o sin",
|
||||
"save": "o awen",
|
||||
"unsaved": "ante sina li awen ala"
|
||||
}
|
||||
}
|
@@ -25,19 +25,20 @@
|
||||
"deviceNameLabel": "Cihaz ismi",
|
||||
"deviceNamePlaceholder": "Kişisel telefon",
|
||||
"generate": {
|
||||
"description": "Parolanız, kullanıcı adınız ve şifreniz olarak işlev görür. Hesabınıza giriş yapmak için bu parolayı girmeniz gerekeceğinden onu güvende tuttuğunuzdan emin olun",
|
||||
"next": "Parolamı kaydettim",
|
||||
"title": "Parolanız"
|
||||
"description": "Şifreleme anahtarınız, kullanıcı adınız ve parolanız olarak işlev görür. Hesabınıza giriş yapmak için bu parolayı girmeniz gerekeceğinden onu güvende tuttuğunuzdan emin olun",
|
||||
"next": "Şifreleme anahtarımı kaydettim",
|
||||
"passphraseFrameLabel": "Şifreleme anahtarı",
|
||||
"title": "Şifreleme anahtarınız"
|
||||
},
|
||||
"hasAccount": "Zaten hesabınız var mı?<0>Giriş yapın.</0>",
|
||||
"login": {
|
||||
"description": "Hesabınıza giriş yapmak için lütfen parolanızı girin",
|
||||
"description": "Hesabınıza giriş yapmak için lütfen şifreleme anahtarınızı girin",
|
||||
"deviceLengthError": "Lütfen bir cihaz ismi girin",
|
||||
"passphraseLabel": "12 kelimelik parola",
|
||||
"passphrasePlaceholder": "Parola",
|
||||
"passphraseLabel": "12 kelimelik şifreleme anahtarı",
|
||||
"passphrasePlaceholder": "Şifreleme anahtarı",
|
||||
"submit": "Giriş yap",
|
||||
"title": "Hesabınıza giriş yapın",
|
||||
"validationError": "Yanlış veya eksik parola"
|
||||
"validationError": "Yanlış veya eksik şifreleme anahtarı"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
@@ -55,18 +56,18 @@
|
||||
"title": "Sunucuya ulaşılamadı"
|
||||
},
|
||||
"host": "<0>{{hostname}}</0> adlı sunucuya bağlanıyorsunuz - lütfen hesap oluşturmadan önce sunucuya güvendiğinizi onaylayın",
|
||||
"no": "Geri git",
|
||||
"no": "Geri dön",
|
||||
"title": "Bu sunucuya güveniyor musunuz?",
|
||||
"yes": "Bu sunucuya güveniyorum"
|
||||
},
|
||||
"verify": {
|
||||
"description": "Kaydettiğinizi doğrulamak ve hesabınızı oluşturmak için önceki aşamada gösterilen parolayı girin",
|
||||
"description": "Kaydettiğinizi doğrulamak ve hesabınızı oluşturmak için önceki aşamada gösterilen şifreleme anahtarınızı girin",
|
||||
"invalidData": "Veri geçersiz",
|
||||
"noMatch": "Parola eşleşmiyor",
|
||||
"passphraseLabel": "12 kelimelik parolanız",
|
||||
"noMatch": "Şifreleme anahtarı eşleşmiyor",
|
||||
"passphraseLabel": "12 kelimelik şifreleme anahtarınız",
|
||||
"recaptchaFailed": "ReCaptcha doğrulaması başarısız",
|
||||
"register": "Hesap oluştur",
|
||||
"title": "Parolanızı doğrulayın"
|
||||
"title": "Şifreleme anahtarınızı doğrulayın"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
@@ -167,28 +168,15 @@
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Ana sayfaya dön",
|
||||
"short": "Geri"
|
||||
"short": "Geri dön"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Cihaza yansıtılıyor..."
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "Altyazı yükle",
|
||||
"customizeLabel": "Seçenekler",
|
||||
"offChoice": "Kapalı",
|
||||
"settings": {
|
||||
"delay": "Altyazı gecikmesi",
|
||||
"fixCapitals": "Büyük harf kullanımını düzelt"
|
||||
},
|
||||
"title": "Altyazılar",
|
||||
"unknownLanguage": "Bilinmeyen"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "İndirme bağlantıları doğrudan sağlayıcının kendisinden alınır. movie-web'in sağlanan indirme bağlantıları üzerinde hiçbir konrolü yoktur.",
|
||||
"downloadCaption": "Geçerli altyazıyı indir",
|
||||
"downloadVideo": "Videoyu indir",
|
||||
"hlsExplanation": "Bu medya, movie-web üzerinden indirilemeyen bir HLS akışıdır.",
|
||||
"onAndroid": {
|
||||
"1": "Android'e indirmek için önce indir butonuna basın, sonra açılan yeni sayfada video üzerine <bold>basılı tutun</bold>, ardından <bold>Videoyu indir</bold> seçeneğini seçin.",
|
||||
"shortTitle": "İndir / Android",
|
||||
@@ -225,9 +213,7 @@
|
||||
"title": "Kalite"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "Altyazı ayarları",
|
||||
"downloadItem": "İndir",
|
||||
"enableCaptions": "Altyazıları etkinleştir",
|
||||
"experienceSection": "İzleme deneyimi",
|
||||
"playbackItem": "Oynatma ayarları",
|
||||
"qualityItem": "Kalite",
|
||||
@@ -371,13 +357,6 @@
|
||||
},
|
||||
"title": "Görünüm"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "Arka plan opaklığı",
|
||||
"colorLabel": "Renk",
|
||||
"previewQuote": "Korkmamalıyım. Korku aklı öldürür.",
|
||||
"textSizeLabel": "Yazı boyutu",
|
||||
"title": "Altyazılar"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "Verilerinizi depolamak için özel bir arkayüze bağlanmak istiyorsanız, bunu etkinleştirin ve URL'yi sağlayın.",
|
||||
|
283
src/assets/locales/uk.json
Normal file
@@ -0,0 +1,283 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "movie-web це веб-додаток, який шукає інтернет для стрімінгових відтворень. Команда прагне до мінімалістичного стилю в споживанні контенту.",
|
||||
"faqTitle": "Загальні питання",
|
||||
"q1": {
|
||||
"body": "movie-web не зберігає жодного контенту. Коли ви натискаєте щось для перегляду, в Інтернеті виконується пошук вибраного медіа (на екрані завантаження та на вкладці «джерела відео» ви можете побачити, яке джерело ви використовуєте). Медіафайли ніколи не завантажуються за допомогою \"movie-web\", усе відбувається через цей механізм пошуку.",
|
||||
"title": "Звідки береться вміст?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "Неможливо подати запит на шоу чи фільм, оскільки movie-web не керує жодним вмістом. Весь контент переглядається через джерела в Інтернеті.",
|
||||
"title": "Де я можу подати запит на шоу чи фільм?"
|
||||
},
|
||||
"q3": {
|
||||
"body": "Наші результати пошуку надходять від The Movie Database (TMDB) і відображаються незалежно від того, чи насправді є вміст у наших джерелах.",
|
||||
"title": "Результати пошуку відображають шоу чи фільм, чому я не можу його відтворити?"
|
||||
},
|
||||
"title": "Про movie-web"
|
||||
},
|
||||
"actions": {
|
||||
"copied": "Скопійовано",
|
||||
"copy": "Копіювати"
|
||||
},
|
||||
"auth": {
|
||||
"createAccount": "У вас ще немає облікового запису? <0>Створити обліковий запис.</0>",
|
||||
"deviceNameLabel": "Ім'я пристрою",
|
||||
"deviceNamePlaceholder": "Особистий телефон",
|
||||
"generate": {
|
||||
"description": "Ваша парольна фраза виступає як ваше ім'я користувача та пароль. Переконайтеся, що ви зберігаєте його в безпеці, оскільки вам буде потрібно вводити його для входу в свій обліковий запис",
|
||||
"next": "Я зберіг(ла) свою парольну фразу",
|
||||
"passphraseFrameLabel": "Парольна фраза",
|
||||
"title": "Ваша парольна фраза"
|
||||
},
|
||||
"hasAccount": "Вже є аккаунт? <0>Увійдіть тут.</0>",
|
||||
"login": {
|
||||
"description": "Будь ласка, введіть свій пароль для входу до вашого облікового запису",
|
||||
"deviceLengthError": "Будь ласка, введіть назву пристрою",
|
||||
"passphraseLabel": "Парольна фраза з 12 слів",
|
||||
"passphrasePlaceholder": "Парольна фраза",
|
||||
"submit": "Логін",
|
||||
"title": "Увійти до свого облікового запису",
|
||||
"validationError": "Неправильна або неповна парольна фраза"
|
||||
},
|
||||
"register": {
|
||||
"information": {
|
||||
"color1": "Перший колір профілю",
|
||||
"color2": "Другий колір профілю",
|
||||
"header": "Введіть ім'я для вашого пристрою та виберіть кольори та іконку користувача за вашим бажанням",
|
||||
"icon": "Іконка користувача",
|
||||
"next": "Наступний",
|
||||
"title": "Інформація про обліковий запис"
|
||||
}
|
||||
},
|
||||
"trust": {
|
||||
"failed": {
|
||||
"text": "Чи ви налаштували це правильно?",
|
||||
"title": "Не вдалося зв’язатися з сервером"
|
||||
},
|
||||
"host": "Ви під’єднуєтеся до <0>{{hostname}}</0> – підтвердьте, що довіряєте йому, перш ніж створювати обліковий запис",
|
||||
"no": "Повернутися назад",
|
||||
"title": "Чи довіряєте ви цьому серверу?",
|
||||
"yes": "Я довіряю цьому серверу"
|
||||
},
|
||||
"verify": {
|
||||
"description": "Будь ласка, введіть свою парольну фразу, яка була раніше, щоб підтвердити її збереження та створити обліковий запис",
|
||||
"invalidData": "Дані недійсні",
|
||||
"noMatch": "Парольна фраза не збігається",
|
||||
"passphraseLabel": "Ваша парольна фраза з 12 слів",
|
||||
"recaptchaFailed": "Валідація капчі не вдалася",
|
||||
"register": "Створити акаунт",
|
||||
"title": "Підтвердьте свою парольну фразу"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"badge": "Це зламалося",
|
||||
"details": "Деталі помилки",
|
||||
"reloadPage": "Перезавантажити сторінку",
|
||||
"showError": "Показати деталі помилки",
|
||||
"title": "Ми зіткнулися з помилкою!"
|
||||
},
|
||||
"footer": {
|
||||
"legal": {
|
||||
"disclaimer": "Застереження",
|
||||
"disclaimerText": "movie-web не містить жодних файлів, він лише посилається на сторонні служби. Юридичні питання слід вирішувати з хостами та провайдерами файлів. movie-web не несе відповідальності за будь-які медіафайли, показані постачальниками відео."
|
||||
},
|
||||
"links": {
|
||||
"discord": "Діскорд",
|
||||
"dmca": "DMCA",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"tagline": "Дивіться свої улюблені шоу та фільми за допомогою цього відкритого стрімінгового додатка."
|
||||
},
|
||||
"global": {
|
||||
"name": "movie-web",
|
||||
"pages": {
|
||||
"about": "Про",
|
||||
"dmca": "DMCA",
|
||||
"login": "Логін",
|
||||
"pagetitle": "{{title}} - movie-web",
|
||||
"register": "Зареєструватися",
|
||||
"settings": "Налаштування"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Закладки"
|
||||
},
|
||||
"continueWatching": {
|
||||
"sectionTitle": "Продовжити перегляд"
|
||||
},
|
||||
"mediaList": {
|
||||
"stopEditing": "Зупинити редагування"
|
||||
},
|
||||
"search": {
|
||||
"allResults": "Це все, що ми маємо!",
|
||||
"failed": "Не вдалося знайти медіафайли, повторіть спробу!",
|
||||
"loading": "Завантаження...",
|
||||
"noResults": "Ми не змогли знайти нічого!",
|
||||
"placeholder": "Що ви хочете подивитися?",
|
||||
"sectionTitle": "Результати пошуку"
|
||||
},
|
||||
"titles": {
|
||||
"day": {
|
||||
"default": "Що б ви хотіли подивитися сьогодні вдень?"
|
||||
},
|
||||
"morning": {
|
||||
"default": "Що б ви хотіли подивитися сьогодні вранці?"
|
||||
},
|
||||
"night": {
|
||||
"default": "Що б ви хотіли подивитися сьогодні ввечері?"
|
||||
}
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "С{{season}} Е{{episode}}",
|
||||
"types": {
|
||||
"movie": "Фільм",
|
||||
"show": "Шоу"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Перевірте підключення до Інтернету"
|
||||
},
|
||||
"menu": {
|
||||
"about": "Про нас",
|
||||
"donation": "Пожертвуйте",
|
||||
"logout": "Вийти",
|
||||
"register": "Синхронізація з хмарою",
|
||||
"settings": "Налаштування",
|
||||
"support": "Підтримка"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Не знайдено",
|
||||
"goHome": "На головну",
|
||||
"message": "Ми шукали всюди: під смітниками, у шафі, за проксі-сервером, але зрештою не змогли знайти сторінку, яку ви шукали.",
|
||||
"title": "Не вдалося знайти цю сторінку"
|
||||
},
|
||||
"overlays": {
|
||||
"close": "Закрити"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "На головну",
|
||||
"short": "Назад"
|
||||
},
|
||||
"casting": {
|
||||
"enabled": "Трансляція на пристрій..."
|
||||
},
|
||||
"menus": {
|
||||
"downloads": {
|
||||
"disclaimer": "Завантаження беруться безпосередньо від провайдера. У movie-web немає контролю над тим, як надаються завантаження.",
|
||||
"downloadPlaylist": "Завантажити плейлист",
|
||||
"downloadSubtitle": "Завантажити поточні субтитри",
|
||||
"downloadVideo": "Завантажити відео",
|
||||
"hlsDisclaimer": "Завантаження виконуються безпосередньо від постачальника. У movie-web немає контролю над тим, як надаються завантаження. Будь ласка, зверніть увагу, що ви завантажуєте список відтворення HLS, він призначений для користувачів, знайомих із розширеним потоковим мультимедійним вмістом.",
|
||||
"onAndroid": {
|
||||
"1": "Щоб завантажити на Android, натисніть кнопку завантаження, потім на новій сторінці <bold>торкніться й утримуйте</bold> відео, а потім виберіть <bold>зберегти</bold>.",
|
||||
"shortTitle": "Завантажити / Android",
|
||||
"title": "Завантажити на Android"
|
||||
},
|
||||
"onIos": {
|
||||
"1": "Щоб завантажити на iOS, натисніть кнопку завантаження, далі на новій сторінці, натисніть <bold><ios_share /></bold>, а потім <bold>Зберегти у файли <ios_files /></bold>.",
|
||||
"shortTitle": "Завантажити / iOS",
|
||||
"title": "Завантаження на iOS"
|
||||
},
|
||||
"onPc": {
|
||||
"1": "На комп'ютері натисніть кнопку завантаження, далі на новій вкладці клацніть правим кліком по відео та виберіть <bold>Зберегти відео як</bold>",
|
||||
"shortTitle": "Завантажити / Комп'ютер",
|
||||
"title": "Завантаження на комп'ютер"
|
||||
},
|
||||
"title": "Завантажити"
|
||||
},
|
||||
"episodes": {
|
||||
"button": "Епізоди",
|
||||
"emptyState": "У цьому сезоні немає серій, перевірте пізніше!",
|
||||
"episodeBadge": "Е{{episode}}",
|
||||
"loadingError": "Помилка завантаження сезону",
|
||||
"loadingList": "Завантаження...",
|
||||
"loadingTitle": "Завантаження..."
|
||||
},
|
||||
"playback": {
|
||||
"speedLabel": "Швидкість відтворення",
|
||||
"title": "Налаштування відтворення"
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "Якість автоматична",
|
||||
"hint": "Спробуйте <0>переключити джерело</0>, аби отримати інші варіанти якості.",
|
||||
"iosNoQuality": "Через обмеження, встановлені Apple, вибір якості не доступний у системі iOS для цього джерела. Ви можете спробувати <0>змінити джерело</0>, щоб отримати інші варіанти якості.",
|
||||
"title": "Якість"
|
||||
},
|
||||
"settings": {
|
||||
"downloadItem": "Завантажити",
|
||||
"enableSubtitles": "Увімкнути субтитри",
|
||||
"experienceSection": "Враження від перегляду",
|
||||
"playbackItem": "Налаштування відтворення",
|
||||
"qualityItem": "Якість",
|
||||
"sourceItem": "Джерела відео",
|
||||
"subtitleItem": "Налаштування субтитрів",
|
||||
"videoSection": "Налаштування відео"
|
||||
},
|
||||
"sources": {
|
||||
"failed": {
|
||||
"text": "Під час спроби знайти будь-яке відео сталася помилка. Спробуйте інше джерело.",
|
||||
"title": "Не вдалося отримати дані"
|
||||
},
|
||||
"noEmbeds": {
|
||||
"text": "Ми не змогли знайти жодних вставок. Будь ласка, спробуйте інше джерело.",
|
||||
"title": "Не знайдено вбудованих елементів"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "Це джерело не має потоків для цього фільму чи шоу.",
|
||||
"title": "Немає потоку"
|
||||
},
|
||||
"title": "Джерела",
|
||||
"unknownOption": "Невідомий"
|
||||
},
|
||||
"subtitles": {
|
||||
"customChoice": "Виберіть субтитри з файлу",
|
||||
"customizeLabel": "Налаштувати",
|
||||
"offChoice": "Вимкнено",
|
||||
"settings": {
|
||||
"backlink": "Власні субтитри",
|
||||
"delay": "Затримка субтитрів",
|
||||
"fixCapitals": "Виправити використання великих літер"
|
||||
},
|
||||
"title": "Субтитри",
|
||||
"unknownLanguage": "Невідомий"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"failed": {
|
||||
"badge": "Не вдалося",
|
||||
"homeButton": "Повернутися на головну",
|
||||
"text": "Не вдалося завантажити метадані мультимедіа з TMDB. Перевірте, чи не відбувається збій TMDB або чи не є заблоковано у вашому інтернет-з'єднанні.",
|
||||
"title": "Не вдалося завантажити метадані"
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Не знайдено",
|
||||
"homeButton": "Повернутися на головну",
|
||||
"text": "Не вдалося знайти запитані мультимедіа. Вони або були вилучені, або ви змінили URL.",
|
||||
"title": "Не вдалося знайти це мультимедіа."
|
||||
}
|
||||
},
|
||||
"nextEpisode": {
|
||||
"cancel": "Відмінити",
|
||||
"next": "Наступний епізод"
|
||||
},
|
||||
"playbackError": {
|
||||
"badge": "Помилка відтворення",
|
||||
"errors": {
|
||||
"errorAborted": "Завантаження мультимедіа було скасовано на вимогу користувача.",
|
||||
"errorGenericMedia": "Виникла невідома помилка мультимедіа.",
|
||||
"errorNetwork": "Виникла якась помилка мережі, яка завадила успішному завантаженню мультимедіа, незважаючи на те, що раніше вони були доступні.",
|
||||
"errorNotSupported": "Медіаоб'єкт або провайдер медіа не підтримується."
|
||||
},
|
||||
"homeButton": "Повернутися на головну"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"unsaved": "У вас є незбережені зміни"
|
||||
}
|
||||
}
|
@@ -1,71 +1,66 @@
|
||||
{
|
||||
"global": {
|
||||
"name": "movie-web"
|
||||
"global": {
|
||||
"name": "movie-web"
|
||||
},
|
||||
"home": {
|
||||
"bookmarks": {
|
||||
"sectionTitle": "Đánh dấu"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
"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"
|
||||
}
|
||||
"search": {
|
||||
"allResults": "Đó là tất cả chúng tôi có!",
|
||||
"failed": "Không thể tìm thấy nội dung, hãy thử lại!",
|
||||
"loading": "Đang tải...",
|
||||
"noResults": "Chúng tôi không thể tìm thấy gì!",
|
||||
"placeholder": "Bạn muốn xem gì?",
|
||||
"sectionTitle": "Kết quả tìm kiếm"
|
||||
}
|
||||
},
|
||||
"media": {
|
||||
"episodeDisplay": "M{{season}} T{{episode}}",
|
||||
"types": {
|
||||
"movie": "Phim",
|
||||
"show": "Chương trình truyền hình"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"banner": {
|
||||
"offline": "Hãy kiểm tra kết nối Internet của bạn"
|
||||
}
|
||||
},
|
||||
"notFound": {
|
||||
"badge": "Không tìm thấy",
|
||||
"goHome": "Quay lại trang chính",
|
||||
"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.",
|
||||
"title": "Không thể tìm thấy trang"
|
||||
},
|
||||
"player": {
|
||||
"back": {
|
||||
"default": "Quay lại trang chính",
|
||||
"short": "Quay lại"
|
||||
},
|
||||
"menus": {
|
||||
"episodes": {
|
||||
"button": "Tập",
|
||||
"loadingList": "Đang tải...",
|
||||
"loadingTitle": "Đang tải..."
|
||||
},
|
||||
"sources": {
|
||||
"title": "Nguồn"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"notFound": {
|
||||
"badge": "Không tìm thấy",
|
||||
"homeButton": "Quay lại trang chính",
|
||||
"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.",
|
||||
"title": "Không thể tìm thấy nội dung."
|
||||
}
|
||||
},
|
||||
"playbackError": {
|
||||
"title": "Rất tiếc, đã hỏng!"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,13 +1,13 @@
|
||||
{
|
||||
"about": {
|
||||
"description": "movie-web 是一个在互联网上搜寻流媒体的 Web 应用程序。团队致力于让用户采取最简约的方式消费内容。",
|
||||
"description": "movie-web 是一款在互联网上搜寻流媒体的网络应用程序。团队致力于让用户采取最简约的方式消费内容。",
|
||||
"faqTitle": "常见问题",
|
||||
"q1": {
|
||||
"body": "movie-web 不托管任何内容。您点选观看内容时,系统均从互联网搜寻(在加载提示页和“视频源”选项卡中,您可以看到正在使用的源)。媒体从未在 movie-web 中上传,所有内容均通过搜索机制而得。",
|
||||
"title": "内容来自哪里?"
|
||||
},
|
||||
"q2": {
|
||||
"body": "无法请求影视剧或其他节目,movie-web 不管理任何内容。所有内容均从互联网视频源获取并供您观看。",
|
||||
"body": "无法主动请求影视剧或其他节目,movie-web 不管理任何内容。所有内容均从互联网视频源获取并供您观看。",
|
||||
"title": "我可以从哪里请求观看影视剧或其他节目?"
|
||||
},
|
||||
"q3": {
|
||||
@@ -27,6 +27,7 @@
|
||||
"generate": {
|
||||
"description": "您的密码短语相当于用户名与密码。由于您需要输入它来登录账户,请确保将其存放到安全位置",
|
||||
"next": "我已保存密码短语",
|
||||
"passphraseFrameLabel": "密码短语",
|
||||
"title": "您的密码短语"
|
||||
},
|
||||
"hasAccount": "已经拥有账户?<0>点击此处登录。</0>",
|
||||
@@ -139,7 +140,7 @@
|
||||
"episodeDisplay": "第{{season}}季 第{{episode}}集",
|
||||
"types": {
|
||||
"movie": "电影",
|
||||
"show": "连续剧"
|
||||
"show": "电视节目"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
@@ -173,22 +174,11 @@
|
||||
"enabled": "正在投放到设备…"
|
||||
},
|
||||
"menus": {
|
||||
"captions": {
|
||||
"customChoice": "上传字幕",
|
||||
"customizeLabel": "自定义",
|
||||
"offChoice": "关闭",
|
||||
"settings": {
|
||||
"delay": "字幕延迟",
|
||||
"fixCapitals": "修复大小写"
|
||||
},
|
||||
"title": "字幕",
|
||||
"unknownLanguage": "未知"
|
||||
},
|
||||
"downloads": {
|
||||
"disclaimer": "下载内容是直接从内容提供者获取的。movie-web 无法控制下载内容如何被提供。",
|
||||
"downloadCaption": "下载当前字幕",
|
||||
"downloadPlaylist": "下载播放列表",
|
||||
"downloadVideo": "下载视频",
|
||||
"hlsExplanation": "该媒体为 HLS 流,因此无法从 movie-web 下载。",
|
||||
"hlsDisclaimer": "下载内容是直接从内容提供者获取的。movie-web 无法控制下载内容如何被提供。请注意,您正在下载 HLS 播放列表,这适用于熟悉高级多媒体串流技术的用户。",
|
||||
"onAndroid": {
|
||||
"1": "要从 Android 下载,先点击下载按钮,之后在新的页面上, <bold>点击并按住</bold>视频,然后选择 <bold>保存</bold>。",
|
||||
"shortTitle": "下载 / Android",
|
||||
@@ -220,14 +210,12 @@
|
||||
},
|
||||
"quality": {
|
||||
"automaticLabel": "自动质量",
|
||||
"hint": "您可以尝试 <0>切换视频源</0>以获取不同的质量选项。",
|
||||
"iosNoQuality": "由于苹果施加的限制,该视频源的质量选择在 iOS 上不可用。您可以尝试 <0>切换到其他视频源</0>以获取不同的质量选项。",
|
||||
"hint": "您可以尝试<0>切换视频源</0>以获取不同的质量选项。",
|
||||
"iosNoQuality": "由于苹果施加的限制,该视频源的质量选择在 iOS 上不可用。您可以尝试<0>切换到其他视频源</0>以获取不同的质量选项。",
|
||||
"title": "质量"
|
||||
},
|
||||
"settings": {
|
||||
"captionItem": "字幕设置",
|
||||
"downloadItem": "下载",
|
||||
"enableCaptions": "启用字幕",
|
||||
"experienceSection": "观看体验",
|
||||
"playbackItem": "播放设置",
|
||||
"qualityItem": "质量",
|
||||
@@ -244,11 +232,22 @@
|
||||
"title": "未找到嵌入内容"
|
||||
},
|
||||
"noStream": {
|
||||
"text": "此源没有该影片或剧集的串流。",
|
||||
"text": "此视频源没有该影片或节目的串流。",
|
||||
"title": "没有流"
|
||||
},
|
||||
"title": "视频源",
|
||||
"unknownOption": "未知"
|
||||
},
|
||||
"subtitles": {
|
||||
"customizeLabel": "自定义",
|
||||
"offChoice": "关闭",
|
||||
"settings": {
|
||||
"backlink": "自定义字幕",
|
||||
"delay": "字幕延时",
|
||||
"fixCapitals": "修整大小写"
|
||||
},
|
||||
"title": "字幕",
|
||||
"unknownLanguage": "未知"
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
@@ -305,7 +304,7 @@
|
||||
},
|
||||
"screens": {
|
||||
"dmca": {
|
||||
"text": "欢迎来到 movie-web 的 DMCA 联系页面!我们尊重知识产权,并希望迅速解决任何版权问题。如果您认为您的受版权保护的作品在我们的平台上被不当使用,请将详细的 DMCA 通知发送至以下电子邮件地址。请附上受版权保护的材料的描述、您的联系方式以及善意信念声明。 我们致力于迅速解决这些问题,并感谢您的合作,让 movie -web 成为尊重创造力和版权的地方。",
|
||||
"text": "欢迎来到 movie-web 的 DMCA 联系页面!我们尊重知识产权,并希望迅速解决任何版权问题。如果您认为您的版权作品在我们的平台上被不当使用,请发送详细的 DMCA 通知至以下邮箱。同时请附上受版权保护的材料的描述、您的具体联系方式以及善意信念声明。 我们承诺及时解决这些问题,并感谢您的合作,让 movie-web 成为尊重创意和版权之地。",
|
||||
"title": "DMCA"
|
||||
},
|
||||
"loadingApp": "正在载入应用程序",
|
||||
@@ -371,13 +370,6 @@
|
||||
},
|
||||
"title": "外观"
|
||||
},
|
||||
"captions": {
|
||||
"backgroundLabel": "背景透明度",
|
||||
"colorLabel": "颜色",
|
||||
"previewQuote": "我一定不会害怕。 恐惧是心灵杀手。",
|
||||
"textSizeLabel": "字体大小",
|
||||
"title": "字幕"
|
||||
},
|
||||
"connections": {
|
||||
"server": {
|
||||
"description": "若您想连接到自定义后端保存数据,请启用此选项并提供 URL。",
|
||||
@@ -396,7 +388,7 @@
|
||||
},
|
||||
"locale": {
|
||||
"language": "应用程序语言",
|
||||
"languageDescription": "语言已应用到整个应用程序。",
|
||||
"languageDescription": "当前已应用到整个应用程序的语言。",
|
||||
"title": "本地化"
|
||||
},
|
||||
"reset": "重设",
|
||||
@@ -415,6 +407,11 @@
|
||||
"userId": "用户 ID"
|
||||
}
|
||||
},
|
||||
"subtitles": {
|
||||
"previewQuote": "我不能害怕。恐惧是心灵的杀手。",
|
||||
"textSizeLabel": "字体大小",
|
||||
"title": "字幕"
|
||||
},
|
||||
"unsaved": "您有未保存的更改"
|
||||
}
|
||||
}
|
||||
|
@@ -22,7 +22,7 @@ export function getAuthHeaders(token: string): Record<string, string> {
|
||||
export async function accountLogin(
|
||||
url: string,
|
||||
id: string,
|
||||
deviceName: string
|
||||
deviceName: string,
|
||||
): Promise<LoginResponse> {
|
||||
return ofetch<LoginResponse>("/auth/login", {
|
||||
method: "POST",
|
||||
|
@@ -19,7 +19,7 @@ export interface BookmarkInput {
|
||||
|
||||
export function bookmarkMediaToInput(
|
||||
tmdbId: string,
|
||||
item: BookmarkMediaItem
|
||||
item: BookmarkMediaItem,
|
||||
): BookmarkInput {
|
||||
return {
|
||||
meta: {
|
||||
@@ -35,7 +35,7 @@ export function bookmarkMediaToInput(
|
||||
export async function addBookmark(
|
||||
url: string,
|
||||
account: AccountWithToken,
|
||||
input: BookmarkInput
|
||||
input: BookmarkInput,
|
||||
) {
|
||||
return ofetch<BookmarkResponse>(
|
||||
`/users/${account.userId}/bookmarks/${input.tmdbId}`,
|
||||
@@ -44,14 +44,14 @@ export async function addBookmark(
|
||||
headers: getAuthHeaders(account.token),
|
||||
baseURL: url,
|
||||
body: input,
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export async function removeBookmark(
|
||||
url: string,
|
||||
account: AccountWithToken,
|
||||
id: string
|
||||
id: string,
|
||||
) {
|
||||
return ofetch<{ tmdbId: string }>(
|
||||
`/users/${account.userId}/bookmarks/${id}`,
|
||||
@@ -59,6 +59,6 @@ export async function removeBookmark(
|
||||
method: "DELETE",
|
||||
headers: getAuthHeaders(account.token),
|
||||
baseURL: url,
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ export function genMnemonic(): string {
|
||||
|
||||
export async function signCode(
|
||||
code: string,
|
||||
privateKey: Uint8Array
|
||||
privateKey: Uint8Array,
|
||||
): Promise<Uint8Array> {
|
||||
return forge.pki.ed25519.sign({
|
||||
encoding: "utf8",
|
||||
@@ -91,7 +91,7 @@ export async function encryptData(data: string, secret: Uint8Array) {
|
||||
|
||||
const cipher = forge.cipher.createCipher(
|
||||
"AES-GCM",
|
||||
forge.util.createBuffer(secret)
|
||||
forge.util.createBuffer(secret),
|
||||
);
|
||||
cipher.start({
|
||||
iv,
|
||||
@@ -104,7 +104,7 @@ export async function encryptData(data: string, secret: Uint8Array) {
|
||||
const tag = cipher.mode.tag;
|
||||
|
||||
return `${forge.util.encode64(iv)}.${stringBufferToBase64(
|
||||
encryptedData
|
||||
encryptedData,
|
||||
)}.${stringBufferToBase64(tag)}` as const;
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ export function decryptData(data: string, secret: Uint8Array) {
|
||||
|
||||
const decipher = forge.cipher.createDecipher(
|
||||
"AES-GCM",
|
||||
forge.util.createBuffer(secret)
|
||||
forge.util.createBuffer(secret),
|
||||
);
|
||||
decipher.start({
|
||||
iv: base64ToStringBuffer(iv),
|
||||
|
@@ -9,7 +9,7 @@ import { ProgressInput } from "./progress";
|
||||
export function importProgress(
|
||||
url: string,
|
||||
account: AccountWithToken,
|
||||
progressItems: ProgressInput[]
|
||||
progressItems: ProgressInput[],
|
||||
) {
|
||||
return ofetch<void>(`/users/${account.userId}/progress/import`, {
|
||||
method: "PUT",
|
||||
@@ -22,7 +22,7 @@ export function importProgress(
|
||||
export function importBookmarks(
|
||||
url: string,
|
||||
account: AccountWithToken,
|
||||
bookmarks: BookmarkInput[]
|
||||
bookmarks: BookmarkInput[],
|
||||
) {
|
||||
return ofetch<void>(`/users/${account.userId}/bookmarks`, {
|
||||
method: "PUT",
|
||||
|
@@ -8,7 +8,7 @@ export interface ChallengeTokenResponse {
|
||||
|
||||
export async function getLoginChallengeToken(
|
||||
url: string,
|
||||
publicKey: string
|
||||
publicKey: string,
|
||||
): Promise<ChallengeTokenResponse> {
|
||||
return ofetch<ChallengeTokenResponse>("/auth/login/start", {
|
||||
method: "POST",
|
||||
@@ -35,7 +35,7 @@ export interface LoginInput {
|
||||
|
||||
export async function loginAccount(
|
||||
url: string,
|
||||
data: LoginInput
|
||||
data: LoginInput,
|
||||
): Promise<LoginResponse> {
|
||||
return ofetch<LoginResponse>("/auth/login/complete", {
|
||||
method: "POST",
|
||||
|
@@ -23,7 +23,7 @@ export interface ProgressInput {
|
||||
}
|
||||
|
||||
export function progressUpdateItemToInput(
|
||||
item: ProgressUpdateItem
|
||||
item: ProgressUpdateItem,
|
||||
): ProgressInput {
|
||||
return {
|
||||
duration: item.progress?.duration ?? 0,
|
||||
@@ -44,7 +44,7 @@ export function progressUpdateItemToInput(
|
||||
|
||||
export function progressMediaItemToInputs(
|
||||
tmdbId: string,
|
||||
item: ProgressMediaItem
|
||||
item: ProgressMediaItem,
|
||||
): ProgressInput[] {
|
||||
if (item.type === "show") {
|
||||
return Object.entries(item.episodes).flatMap(([_, episode]) => ({
|
||||
@@ -83,7 +83,7 @@ export function progressMediaItemToInputs(
|
||||
export async function setProgress(
|
||||
url: string,
|
||||
account: AccountWithToken,
|
||||
input: ProgressInput
|
||||
input: ProgressInput,
|
||||
) {
|
||||
return ofetch<ProgressResponse>(
|
||||
`/users/${account.userId}/progress/${input.tmdbId}`,
|
||||
@@ -92,7 +92,7 @@ export async function setProgress(
|
||||
headers: getAuthHeaders(account.token),
|
||||
baseURL: url,
|
||||
body: input,
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ export async function removeProgress(
|
||||
account: AccountWithToken,
|
||||
id: string,
|
||||
episodeId?: string,
|
||||
seasonId?: string
|
||||
seasonId?: string,
|
||||
) {
|
||||
await ofetch(`/users/${account.userId}/progress/${id}`, {
|
||||
method: "DELETE",
|
||||
|
@@ -9,7 +9,7 @@ export interface ChallengeTokenResponse {
|
||||
|
||||
export async function getRegisterChallengeToken(
|
||||
url: string,
|
||||
captchaToken?: string
|
||||
captchaToken?: string,
|
||||
): Promise<ChallengeTokenResponse> {
|
||||
return ofetch<ChallengeTokenResponse>("/auth/register/start", {
|
||||
method: "POST",
|
||||
@@ -42,7 +42,7 @@ export interface RegisterInput {
|
||||
|
||||
export async function registerAccount(
|
||||
url: string,
|
||||
data: RegisterInput
|
||||
data: RegisterInput,
|
||||
): Promise<RegisterResponse> {
|
||||
return ofetch<RegisterResponse>("/auth/register/complete", {
|
||||
method: "POST",
|
||||
|
@@ -26,7 +26,7 @@ export async function getSessions(url: string, account: AccountWithToken) {
|
||||
export async function updateSession(
|
||||
url: string,
|
||||
account: AccountWithToken,
|
||||
update: SessionUpdate
|
||||
update: SessionUpdate,
|
||||
) {
|
||||
return ofetch<SessionResponse[]>(`/sessions/${account.sessionId}`, {
|
||||
method: "PATCH",
|
||||
@@ -39,7 +39,7 @@ export async function updateSession(
|
||||
export async function removeSession(
|
||||
url: string,
|
||||
token: string,
|
||||
sessionId: string
|
||||
sessionId: string,
|
||||
) {
|
||||
return ofetch<SessionResponse[]>(`/sessions/${sessionId}`, {
|
||||
method: "DELETE",
|
||||
|
@@ -18,7 +18,7 @@ export interface SettingsResponse {
|
||||
export function updateSettings(
|
||||
url: string,
|
||||
account: AccountWithToken,
|
||||
settings: SettingsInput
|
||||
settings: SettingsInput,
|
||||
) {
|
||||
return ofetch<SettingsResponse>(`/users/${account.userId}/settings`, {
|
||||
method: "PUT",
|
||||
|
@@ -119,21 +119,21 @@ export function progressResponsesToEntries(responses: ProgressResponse[]) {
|
||||
|
||||
export async function getUser(
|
||||
url: string,
|
||||
token: string
|
||||
token: string,
|
||||
): Promise<{ user: UserResponse; session: SessionResponse }> {
|
||||
return ofetch<{ user: UserResponse; session: SessionResponse }>(
|
||||
"/users/@me",
|
||||
{
|
||||
headers: getAuthHeaders(token),
|
||||
baseURL: url,
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export async function editUser(
|
||||
url: string,
|
||||
account: AccountWithToken,
|
||||
object: UserEdit
|
||||
object: UserEdit,
|
||||
): Promise<{ user: UserResponse; session: SessionResponse }> {
|
||||
return ofetch<{ user: UserResponse; session: SessionResponse }>(
|
||||
`/users/${account.userId}`,
|
||||
@@ -142,13 +142,13 @@ export async function editUser(
|
||||
headers: getAuthHeaders(account.token),
|
||||
body: object,
|
||||
baseURL: url,
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
export async function deleteUser(
|
||||
url: string,
|
||||
account: AccountWithToken
|
||||
account: AccountWithToken,
|
||||
): Promise<UserResponse> {
|
||||
return ofetch<UserResponse>(`/users/${account.userId}`, {
|
||||
headers: getAuthHeaders(account.token),
|
||||
|
@@ -25,7 +25,7 @@ export function mwFetch<T>(url: string, ops: P<T>[1] = {}): R<T> {
|
||||
export async function singularProxiedFetch<T>(
|
||||
proxyUrl: string,
|
||||
url: string,
|
||||
ops: P<T>[1] = {}
|
||||
ops: P<T>[1] = {},
|
||||
): R<T> {
|
||||
let combinedUrl = ops?.baseURL ?? "";
|
||||
if (
|
||||
|
@@ -94,9 +94,14 @@ export async function getApiToken(): Promise<string | null> {
|
||||
return apiToken;
|
||||
}
|
||||
|
||||
function parseEventInput(inp: string): any {
|
||||
if (inp.length === 0) return {};
|
||||
return JSON.parse(inp);
|
||||
}
|
||||
|
||||
export async function connectServerSideEvents<T>(
|
||||
url: string,
|
||||
endEvents: string[]
|
||||
endEvents: string[],
|
||||
) {
|
||||
const apiToken = await getApiToken();
|
||||
|
||||
@@ -115,12 +120,12 @@ export async function connectServerSideEvents<T>(
|
||||
endEvents.forEach((evt) => {
|
||||
eventSource.addEventListener(evt, (e) => {
|
||||
eventSource.close();
|
||||
promResolve(JSON.parse(e.data));
|
||||
promResolve(parseEventInput(e.data));
|
||||
});
|
||||
});
|
||||
|
||||
eventSource.addEventListener("token", (e) => {
|
||||
setApiToken(JSON.parse(e.data));
|
||||
setApiToken(parseEventInput(e.data));
|
||||
});
|
||||
|
||||
eventSource.addEventListener("error", (err: MessageEvent<any>) => {
|
||||
|
@@ -9,6 +9,7 @@ import { PlayerMeta } from "@/stores/player/slices/source";
|
||||
// for anybody who cares - these are anonymous metrics.
|
||||
// They are just used for figuring out if providers are broken or not
|
||||
const metricsEndpoint = "https://backend.movie-web.app/metrics/providers";
|
||||
const captchaMetricsEndpoint = "https://backend.movie-web.app/metrics/captcha";
|
||||
const batchId = () => nanoid(32);
|
||||
|
||||
export type ProviderMetric = {
|
||||
@@ -57,7 +58,7 @@ export function scrapeSourceOutputToProviderMetric(
|
||||
providerId: string,
|
||||
embedId: string | null,
|
||||
status: ProviderMetric["status"],
|
||||
err: unknown | null
|
||||
err: unknown | null,
|
||||
): ProviderMetric {
|
||||
const episodeId = media.episode?.tmdbId;
|
||||
const seasonId = media.season?.tmdbId;
|
||||
@@ -81,7 +82,7 @@ export function scrapeSourceOutputToProviderMetric(
|
||||
export function scrapeSegmentToProviderMetric(
|
||||
media: ScrapeMedia,
|
||||
providerId: string,
|
||||
segment: ScrapingSegment
|
||||
segment: ScrapingSegment,
|
||||
): ProviderMetric | null {
|
||||
const status = segmentStatusMap[segment.status];
|
||||
if (!status) return null;
|
||||
@@ -111,7 +112,7 @@ export function scrapeSegmentToProviderMetric(
|
||||
export function scrapePartsToProviderMetric(
|
||||
media: ScrapeMedia,
|
||||
order: ScrapingItems[],
|
||||
sources: Record<string, ScrapingSegment>
|
||||
sources: Record<string, ScrapingSegment>,
|
||||
): ProviderMetric[] {
|
||||
const output: ProviderMetric[] = [];
|
||||
|
||||
@@ -136,8 +137,17 @@ export function scrapePartsToProviderMetric(
|
||||
export function useReportProviders() {
|
||||
const report = useCallback((items: ProviderMetric[]) => {
|
||||
if (items.length === 0) return;
|
||||
reportProviders(items);
|
||||
reportProviders(items).catch(() => {});
|
||||
}, []);
|
||||
|
||||
return { report };
|
||||
}
|
||||
|
||||
export function reportCaptchaSolve(success: boolean) {
|
||||
ofetch(captchaMetricsEndpoint, {
|
||||
method: "POST",
|
||||
body: {
|
||||
success,
|
||||
},
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
@@ -14,7 +14,7 @@ const expirySeconds = 24 * 60 * 60;
|
||||
* Always returns SRT
|
||||
*/
|
||||
export async function downloadCaption(
|
||||
caption: CaptionListItem
|
||||
caption: CaptionListItem,
|
||||
): Promise<string> {
|
||||
const cached = downloadCache.get(caption.url);
|
||||
if (cached) return cached;
|
||||
|
@@ -34,7 +34,7 @@ export interface DetailedMeta {
|
||||
|
||||
export function formatTMDBMetaResult(
|
||||
details: TMDBShowData | TMDBMovieData,
|
||||
type: MWMediaType
|
||||
type: MWMediaType,
|
||||
): TMDBMediaResult {
|
||||
if (type === MWMediaType.MOVIE) {
|
||||
const movie = details as TMDBMovieData;
|
||||
@@ -68,7 +68,7 @@ export function formatTMDBMetaResult(
|
||||
export async function getMetaFromId(
|
||||
type: MWMediaType,
|
||||
id: string,
|
||||
seasonId?: string
|
||||
seasonId?: string,
|
||||
): Promise<DetailedMeta | null> {
|
||||
const details = await getMediaDetails(id, mediaTypeToTMDB(type));
|
||||
|
||||
@@ -89,7 +89,7 @@ export async function getMetaFromId(
|
||||
if (selectedSeason) {
|
||||
const episodes = await getEpisodes(
|
||||
details.id.toString(),
|
||||
selectedSeason.season_number
|
||||
selectedSeason.season_number,
|
||||
);
|
||||
|
||||
seasonData = {
|
||||
@@ -116,7 +116,7 @@ export async function getMetaFromId(
|
||||
export async function getLegacyMetaFromId(
|
||||
type: MWMediaType,
|
||||
id: string,
|
||||
seasonId?: string
|
||||
seasonId?: string,
|
||||
): Promise<DetailedMeta | null> {
|
||||
const queryType = mediaTypeToJW(type);
|
||||
|
||||
@@ -135,15 +135,13 @@ export async function getLegacyMetaFromId(
|
||||
throw err;
|
||||
}
|
||||
|
||||
let imdbId = data.external_ids.find(
|
||||
(v) => v.provider === "imdb_latest"
|
||||
)?.external_id;
|
||||
let imdbId = data.external_ids.find((v) => v.provider === "imdb_latest")
|
||||
?.external_id;
|
||||
if (!imdbId)
|
||||
imdbId = data.external_ids.find((v) => v.provider === "imdb")?.external_id;
|
||||
|
||||
let tmdbId = data.external_ids.find(
|
||||
(v) => v.provider === "tmdb_latest"
|
||||
)?.external_id;
|
||||
let tmdbId = data.external_ids.find((v) => v.provider === "tmdb_latest")
|
||||
?.external_id;
|
||||
if (!tmdbId)
|
||||
tmdbId = data.external_ids.find((v) => v.provider === "tmdb")?.external_id;
|
||||
|
||||
@@ -175,7 +173,7 @@ export function isLegacyMediaType(url: string): boolean {
|
||||
}
|
||||
|
||||
export async function convertLegacyUrl(
|
||||
url: string
|
||||
url: string,
|
||||
): Promise<string | undefined> {
|
||||
if (!isLegacyUrl(url)) return undefined;
|
||||
|
||||
@@ -191,7 +189,7 @@ export async function convertLegacyUrl(
|
||||
return `/media/${TMDBIdToUrlId(
|
||||
MWMediaType.SERIES,
|
||||
details.id.toString(),
|
||||
details.name
|
||||
details.name,
|
||||
)}${suffix}`;
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,7 @@ export function JWMediaToMediaType(type: string): MWMediaType {
|
||||
|
||||
export function formatJWMeta(
|
||||
media: JWMediaResult,
|
||||
season?: JWSeasonMetaResult
|
||||
season?: JWSeasonMetaResult,
|
||||
): MWMediaMeta {
|
||||
const type = JWMediaToMediaType(media.object_type);
|
||||
let seasons: undefined | MWSeasonMeta[];
|
||||
@@ -32,7 +32,7 @@ export function formatJWMeta(
|
||||
id: v.id.toString(),
|
||||
number: v.season_number,
|
||||
title: v.title,
|
||||
})
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ export function JWMediaToId(media: MWMediaMeta): string {
|
||||
}
|
||||
|
||||
export function decodeJWId(
|
||||
paramId: string
|
||||
paramId: string,
|
||||
): { id: string; type: MWMediaType } | null {
|
||||
const [prefix, type, id] = paramId.split("-", 3);
|
||||
if (prefix !== "JW") return null;
|
||||
|
@@ -38,7 +38,7 @@ export function TMDBMediaToMediaType(type: TMDBContentTypes): MWMediaType {
|
||||
}
|
||||
|
||||
export function TMDBMediaToMediaItemType(
|
||||
type: TMDBContentTypes
|
||||
type: TMDBContentTypes,
|
||||
): MediaItem["type"] {
|
||||
if (type === TMDBContentTypes.MOVIE) return "movie";
|
||||
if (type === TMDBContentTypes.TV) return "show";
|
||||
@@ -47,7 +47,7 @@ export function TMDBMediaToMediaItemType(
|
||||
|
||||
export function formatTMDBMeta(
|
||||
media: TMDBMediaResult,
|
||||
season?: TMDBSeasonMetaResult
|
||||
season?: TMDBSeasonMetaResult,
|
||||
): MWMediaMeta {
|
||||
const type = TMDBMediaToMediaType(media.object_type);
|
||||
let seasons: undefined | MWSeasonMeta[];
|
||||
@@ -59,7 +59,7 @@ export function formatTMDBMeta(
|
||||
title: v.title,
|
||||
id: v.id.toString(),
|
||||
number: v.season_number,
|
||||
})
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ export function formatTMDBMetaToMediaItem(media: TMDBMediaResult): MediaItem {
|
||||
export function TMDBIdToUrlId(
|
||||
type: MWMediaType,
|
||||
tmdbId: string,
|
||||
title: string
|
||||
title: string,
|
||||
) {
|
||||
return [
|
||||
"tmdb",
|
||||
@@ -120,12 +120,12 @@ export function mediaItemToId(media: MediaItem): string {
|
||||
return TMDBIdToUrlId(
|
||||
mediaItemTypeToMediaType(media.type),
|
||||
media.id,
|
||||
media.title
|
||||
media.title,
|
||||
);
|
||||
}
|
||||
|
||||
export function decodeTMDBId(
|
||||
paramId: string
|
||||
paramId: string,
|
||||
): { id: string; type: MWMediaType } | null {
|
||||
const [prefix, type, id] = paramId.split("-", 3);
|
||||
if (prefix !== "tmdb") return null;
|
||||
@@ -160,7 +160,7 @@ async function get<T>(url: string, params?: object): Promise<T> {
|
||||
}
|
||||
|
||||
export async function multiSearch(
|
||||
query: string
|
||||
query: string,
|
||||
): Promise<(TMDBMovieSearchResult | TMDBShowSearchResult)[]> {
|
||||
const data = await get<TMDBSearchResult>("search/multi", {
|
||||
query,
|
||||
@@ -172,13 +172,13 @@ export async function multiSearch(
|
||||
const results = data.results.filter(
|
||||
(r) =>
|
||||
r.media_type === TMDBContentTypes.MOVIE ||
|
||||
r.media_type === TMDBContentTypes.TV
|
||||
r.media_type === TMDBContentTypes.TV,
|
||||
);
|
||||
return results;
|
||||
}
|
||||
|
||||
export async function generateQuickSearchMediaUrl(
|
||||
query: string
|
||||
query: string,
|
||||
): Promise<string | undefined> {
|
||||
const data = await multiSearch(query);
|
||||
if (data.length === 0) return undefined;
|
||||
@@ -189,7 +189,7 @@ export async function generateQuickSearchMediaUrl(
|
||||
return `/media/${TMDBIdToUrlId(
|
||||
TMDBMediaToMediaType(result.media_type),
|
||||
result.id.toString(),
|
||||
title
|
||||
title,
|
||||
)}`;
|
||||
}
|
||||
|
||||
@@ -198,12 +198,12 @@ type MediaDetailReturn<T extends TMDBContentTypes> =
|
||||
T extends TMDBContentTypes.MOVIE
|
||||
? TMDBMovieData
|
||||
: T extends TMDBContentTypes.TV
|
||||
? TMDBShowData
|
||||
: never;
|
||||
? TMDBShowData
|
||||
: never;
|
||||
|
||||
export function getMediaDetails<
|
||||
T extends TMDBContentTypes,
|
||||
TReturn = MediaDetailReturn<T>
|
||||
TReturn = MediaDetailReturn<T>,
|
||||
>(id: string, type: T): Promise<TReturn> {
|
||||
if (type === TMDBContentTypes.MOVIE) {
|
||||
return get<TReturn>(`/movie/${id}`, { append_to_response: "external_ids" });
|
||||
@@ -215,12 +215,12 @@ export function getMediaDetails<
|
||||
}
|
||||
|
||||
export function getMediaPoster(posterPath: string | null): string | undefined {
|
||||
if (posterPath) return `https://image.tmdb.org/t/p/w185/${posterPath}`;
|
||||
if (posterPath) return `https://image.tmdb.org/t/p/w342/${posterPath}`;
|
||||
}
|
||||
|
||||
export async function getEpisodes(
|
||||
id: string,
|
||||
season: number
|
||||
season: number,
|
||||
): Promise<TMDBEpisodeShort[]> {
|
||||
const data = await get<TMDBSeason>(`/tv/${id}/season/${season}`);
|
||||
return data.episodes.map((e) => ({
|
||||
@@ -231,7 +231,7 @@ export async function getEpisodes(
|
||||
}
|
||||
|
||||
export async function getMovieFromExternalId(
|
||||
imdbId: string
|
||||
imdbId: string,
|
||||
): Promise<string | undefined> {
|
||||
const data = await get<ExternalIdMovieSearchResult>(`/find/${imdbId}`, {
|
||||
external_source: "imdb_id",
|
||||
@@ -245,7 +245,7 @@ export async function getMovieFromExternalId(
|
||||
|
||||
export function formatTMDBSearchResult(
|
||||
result: TMDBMovieSearchResult | TMDBShowSearchResult,
|
||||
mediatype: TMDBContentTypes
|
||||
mediatype: TMDBContentTypes,
|
||||
): TMDBMediaResult {
|
||||
const type = TMDBMediaToMediaType(mediatype);
|
||||
if (type === MWMediaType.SERIES) {
|
||||
|
@@ -20,7 +20,7 @@ export function Avatar(props: AvatarProps) {
|
||||
<div
|
||||
className={classNames(
|
||||
props.sizeClass,
|
||||
"rounded-full overflow-hidden flex items-center justify-center text-white"
|
||||
"rounded-full overflow-hidden flex items-center justify-center text-white",
|
||||
)}
|
||||
style={{
|
||||
background: `linear-gradient(to bottom right, ${props.profile.colorA}, ${props.profile.colorB})`,
|
||||
@@ -53,7 +53,7 @@ export function UserAvatar(props: {
|
||||
auth.account && auth.account.seed
|
||||
? base64ToBuffer(auth.account.seed)
|
||||
: null,
|
||||
[auth]
|
||||
[auth],
|
||||
);
|
||||
|
||||
if (!auth.account || auth.account === null) return null;
|
||||
|
@@ -21,6 +21,8 @@ const countryOverrides: Record<string, string> = {
|
||||
zh: "cn",
|
||||
sl: "si",
|
||||
sv: "se",
|
||||
et: "ee",
|
||||
ne: "np",
|
||||
};
|
||||
|
||||
export function FlagIcon(props: FlagIconProps) {
|
||||
@@ -47,11 +49,15 @@ export function FlagIcon(props: FlagIconProps) {
|
||||
</div>
|
||||
);
|
||||
|
||||
let backgroundClass = "bg-video-context-flagBg";
|
||||
if (countryCode === "np") backgroundClass = "bg-white";
|
||||
|
||||
return (
|
||||
<span
|
||||
className={classNames(
|
||||
"!w-8 h-6 rounded overflow-hidden bg-video-context-flagBg bg-cover bg-center block fi",
|
||||
props.countryCode ? `fi-${countryCode}` : undefined
|
||||
"!w-8 h-6 rounded overflow-hidden bg-cover bg-center block fi",
|
||||
backgroundClass,
|
||||
props.countryCode ? `fi-${countryCode}` : undefined,
|
||||
)}
|
||||
/>
|
||||
);
|
||||
|
@@ -1,7 +1,7 @@
|
||||
import classNames from "classnames";
|
||||
import { useCallback, useEffect, useMemo, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { base64ToBuffer, decryptData } from "@/backend/accounts/crypto";
|
||||
import { UserAvatar } from "@/components/Avatar";
|
||||
@@ -21,11 +21,11 @@ function GoToLink(props: {
|
||||
className?: string;
|
||||
onClick?: () => void;
|
||||
}) {
|
||||
const history = useHistory();
|
||||
const navigate = useNavigate();
|
||||
|
||||
const goTo = (href: string) => {
|
||||
if (href.startsWith("http")) window.open(href, "_blank");
|
||||
else history.push(href);
|
||||
else navigate(href);
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -61,7 +61,7 @@ function DropdownLink(props: {
|
||||
props.highlight
|
||||
? "text-dropdown-highlight hover:text-dropdown-highlightHover"
|
||||
: "text-dropdown-text hover:text-white",
|
||||
props.className
|
||||
props.className,
|
||||
)}
|
||||
>
|
||||
{props.icon ? <Icon icon={props.icon} className="text-xl" /> : null}
|
||||
@@ -88,7 +88,7 @@ export function LinksDropdown(props: { children: React.ReactNode }) {
|
||||
const seed = useAuthStore((s) => s.account?.seed);
|
||||
const bufferSeed = useMemo(
|
||||
() => (seed ? base64ToBuffer(seed) : null),
|
||||
[seed]
|
||||
[seed],
|
||||
);
|
||||
const { logout } = useAuth();
|
||||
|
||||
@@ -118,7 +118,7 @@ export function LinksDropdown(props: { children: React.ReactNode }) {
|
||||
<Icon
|
||||
className={classNames(
|
||||
"text-xl transition-transform duration-100",
|
||||
open ? "rotate-180" : ""
|
||||
open ? "rotate-180" : "",
|
||||
)}
|
||||
icon={Icons.CHEVRON_DOWN}
|
||||
/>
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import classNames from "classnames";
|
||||
import { ReactNode, useCallback } from "react";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
import { Icon, Icons } from "@/components/Icon";
|
||||
import { Spinner } from "@/components/layout/Spinner";
|
||||
@@ -19,13 +19,13 @@ interface Props {
|
||||
}
|
||||
|
||||
export function Button(props: Props) {
|
||||
const history = useHistory();
|
||||
const navigate = useNavigate();
|
||||
const { onClick, href, loading } = props;
|
||||
const cb = useCallback(() => {
|
||||
if (loading) return;
|
||||
if (href) history.push(href);
|
||||
if (href) navigate(href);
|
||||
else onClick?.();
|
||||
}, [onClick, href, history, loading]);
|
||||
}, [onClick, href, navigate, loading]);
|
||||
|
||||
let colorClasses = "bg-white hover:bg-gray-200 text-black";
|
||||
if (props.theme === "purple")
|
||||
@@ -41,7 +41,7 @@ export function Button(props: Props) {
|
||||
props.padding ?? "px-4 py-3",
|
||||
props.className,
|
||||
colorClasses,
|
||||
props.disabled ? "cursor-not-allowed bg-opacity-60 text-opacity-60" : null
|
||||
props.disabled ? "cursor-not-allowed bg-opacity-60 text-opacity-60" : null,
|
||||
);
|
||||
|
||||
if (props.disabled)
|
||||
@@ -49,7 +49,7 @@ export function Button(props: Props) {
|
||||
.split(" ")
|
||||
.filter(
|
||||
(className) =>
|
||||
!className.startsWith("hover:") && !className.startsWith("active:")
|
||||
!className.startsWith("hover:") && !className.startsWith("active:"),
|
||||
)
|
||||
.join(" ");
|
||||
|
||||
@@ -120,7 +120,7 @@ export function ButtonPlain(props: ButtonPlainProps) {
|
||||
"cursor-pointer inline-flex items-center justify-center rounded-lg font-medium transition-[transform,background-color] duration-100 active:scale-105 md:px-8",
|
||||
"px-4 py-3",
|
||||
props.className,
|
||||
colorClasses
|
||||
colorClasses,
|
||||
);
|
||||
|
||||
return (
|
||||
|
@@ -7,14 +7,14 @@ export function Toggle(props: { onClick: () => void; enabled?: boolean }) {
|
||||
onClick={props.onClick}
|
||||
className={classNames(
|
||||
"w-11 h-6 p-1 rounded-full grid transition-colors duration-100 group/toggle tabbable",
|
||||
props.enabled ? "bg-buttons-toggle" : "bg-buttons-toggleDisabled"
|
||||
props.enabled ? "bg-buttons-toggle" : "bg-buttons-toggleDisabled",
|
||||
)}
|
||||
>
|
||||
<div className="relative w-full h-full">
|
||||
<div
|
||||
className={classNames(
|
||||
"scale-90 group-hover/toggle:scale-100 h-full aspect-square rounded-full bg-white absolute transition-all duration-100",
|
||||
props.enabled ? "left-full transform -translate-x-full" : "left-0"
|
||||
props.enabled ? "left-full transform -translate-x-full" : "left-0",
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
|
@@ -24,7 +24,7 @@ export function ColorPicker(props: {
|
||||
tabIndex={0}
|
||||
className={classNames(
|
||||
"w-full h-10 rounded flex justify-center items-center text-white pointer border-2 border-opacity-10 cursor-pointer",
|
||||
props.value === color ? "border-white" : "border-transparent"
|
||||
props.value === color ? "border-white" : "border-transparent",
|
||||
)}
|
||||
onClick={() => props.onInput(color)}
|
||||
style={{ backgroundColor: color }}
|
||||
|
@@ -32,7 +32,7 @@ export function IconPicker(props: {
|
||||
"w-full h-10 rounded flex justify-center items-center text-white pointer border-2 border-opacity-10 cursor-pointer",
|
||||
props.value === icon
|
||||
? "bg-buttons-purple border-white"
|
||||
: "bg-authentication-inputBg border-transparent"
|
||||
: "bg-authentication-inputBg border-transparent",
|
||||
)}
|
||||
onClick={() => props.onInput(icon)}
|
||||
key={icon}
|
||||
|
@@ -25,7 +25,9 @@ export function PassphraseDisplay(props: { mnemonic: string }) {
|
||||
return (
|
||||
<div className="rounded-lg border border-authentication-border/50 ">
|
||||
<div className="px-4 py-2 flex justify-between border-b border-authentication-border/50">
|
||||
<p className="font-bold text-sm text-white">Passphrase</p>
|
||||
<p className="font-bold text-sm text-white">
|
||||
{t("auth.generate.passphraseFrameLabel")}
|
||||
</p>
|
||||
<button
|
||||
type="button"
|
||||
className="text-authentication-copyText hover:text-authentication-copyTextHover transition-colors flex gap-2 items-center cursor-pointer"
|
||||
|
@@ -60,5 +60,5 @@ export const SearchBarInput = forwardRef<HTMLInputElement, SearchBarProps>(
|
||||
</Flare.Child>
|
||||
</Flare.Base>
|
||||
);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
@@ -17,7 +17,7 @@ export function BrandPill(props: {
|
||||
props.backgroundClass ?? "bg-pill-background bg-opacity-50",
|
||||
props.clickable
|
||||
? "transition-[transform,background-color] hover:scale-105 hover:bg-pill-backgroundHover hover:text-type-logo active:scale-95"
|
||||
: ""
|
||||
: "",
|
||||
)}
|
||||
>
|
||||
<Icon className="text-xl" icon={Icons.MOVIE_WEB} />
|
||||
|
@@ -1,6 +1,6 @@
|
||||
import { useCallback } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { useHistory } from "react-router-dom";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import type { RequireExactlyOne } from "type-fest";
|
||||
|
||||
import { Icon, Icons } from "@/components/Icon";
|
||||
@@ -21,13 +21,13 @@ type FooterLinkProps = RequireExactlyOne<
|
||||
>;
|
||||
|
||||
function FooterLink(props: FooterLinkProps) {
|
||||
const history = useHistory();
|
||||
const navigate = useNavigate();
|
||||
|
||||
const navigateTo = useCallback(() => {
|
||||
if (!props.to) return;
|
||||
|
||||
history.push(props.to);
|
||||
}, [history, props.to]);
|
||||
navigate(props.to);
|
||||
}, [navigate, props.to]);
|
||||
|
||||
return (
|
||||
<a
|
||||
@@ -99,7 +99,7 @@ export function FooterView(props: {
|
||||
return (
|
||||
<div
|
||||
className={["flex min-h-screen flex-col", props.className || ""].join(
|
||||
" "
|
||||
" ",
|
||||
)}
|
||||
>
|
||||
<div style={{ flex: "1 0 auto" }}>{props.children}</div>
|
||||
|
@@ -51,7 +51,7 @@ export function Navigation(props: NavigationProps) {
|
||||
"fixed left-0 right-0 h-20 flex items-center",
|
||||
props.doBackground
|
||||
? "bg-background-main border-b border-utils-divider border-opacity-50"
|
||||
: null
|
||||
: null,
|
||||
)}
|
||||
>
|
||||
{props.doBackground ? (
|
||||
|
@@ -10,7 +10,7 @@ export function SettingsCard(props: {
|
||||
className={classNames(
|
||||
"w-full rounded-lg bg-settings-card-background bg-opacity-[0.15] border border-settings-card-border",
|
||||
props.paddingClass ?? "px-8 py-6",
|
||||
props.className
|
||||
props.className,
|
||||
)}
|
||||
>
|
||||
{props.children}
|
||||
@@ -28,7 +28,7 @@ export function SolidSettingsCard(props: {
|
||||
className={classNames(
|
||||
"w-full rounded-lg bg-settings-card-altBackground bg-opacity-50",
|
||||
props.paddingClass ?? "px-8 py-6",
|
||||
props.className
|
||||
props.className,
|
||||
)}
|
||||
>
|
||||
{props.children}
|
||||
|
@@ -31,13 +31,13 @@ export function SidebarLink(props: {
|
||||
"tabbable w-full px-3 py-2 flex items-center space-x-3 cursor-pointer rounded my-2",
|
||||
props.active
|
||||
? "bg-settings-sidebar-activeLink text-settings-sidebar-type-activated"
|
||||
: null
|
||||
: null,
|
||||
)}
|
||||
>
|
||||
<Icon
|
||||
className={classNames(
|
||||
"text-2xl text-settings-sidebar-type-icon",
|
||||
props.active ? "text-settings-sidebar-type-iconActivated" : null
|
||||
props.active ? "text-settings-sidebar-type-iconActivated" : null,
|
||||
)}
|
||||
icon={props.icon}
|
||||
/>
|
||||
|
@@ -66,7 +66,7 @@ function MediaCardContent({
|
||||
"relative mb-4 pb-[150%] w-full overflow-hidden rounded-xl bg-mediaCard-hoverBackground bg-cover bg-center transition-[border-radius] duration-100",
|
||||
{
|
||||
"group-hover:rounded-lg": !closable,
|
||||
}
|
||||
},
|
||||
)}
|
||||
style={{
|
||||
backgroundImage: media.poster ? `url(${media.poster})` : undefined,
|
||||
@@ -152,7 +152,7 @@ export function MediaCard(props: MediaCardProps) {
|
||||
link += `/${encodeURIComponent(props.series.seasonId)}`;
|
||||
} else {
|
||||
link += `/${encodeURIComponent(
|
||||
props.series.seasonId
|
||||
props.series.seasonId,
|
||||
)}/${encodeURIComponent(props.series.episodeId)}`;
|
||||
}
|
||||
}
|
||||
@@ -164,7 +164,7 @@ export function MediaCard(props: MediaCardProps) {
|
||||
tabIndex={-1}
|
||||
className={classNames(
|
||||
"tabbable",
|
||||
props.closable ? "hover:cursor-default" : ""
|
||||
props.closable ? "hover:cursor-default" : "",
|
||||
)}
|
||||
>
|
||||
{content}
|
||||
|