Add sudo-flix code from github

This commit is contained in:
Cooper Ransom 2024-02-26 10:54:56 -05:00
commit 2cf23a2bd1
447 changed files with 50556 additions and 0 deletions

6
.dockerignore Normal file
View File

@ -0,0 +1,6 @@
.git
node_modules
build
.env.local
.github
.vscode

7
.editorconfig Normal file
View File

@ -0,0 +1,7 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_size = 2
indent_style = space

108
.eslintrc.js Normal file
View File

@ -0,0 +1,108 @@
const a11yOff = Object.keys(require("eslint-plugin-jsx-a11y").rules).reduce(
(acc, rule) => {
acc[`jsx-a11y/${rule}`] = "off";
return acc;
},
{}
);
module.exports = {
env: {
browser: true
},
extends: [
"airbnb",
"airbnb/hooks",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
ignorePatterns: [
"public/*",
"dist/*",
"/*.js",
"/*.ts",
"/*.mts",
"/plugins/*.ts",
"/plugins/*.mjs",
"/themes/**/*.ts"
],
parser: "@typescript-eslint/parser",
parserOptions: {
project: "./tsconfig.json",
tsconfigRootDir: "./"
},
settings: {
"import/resolver": {
typescript: {
project: "./tsconfig.json"
}
}
},
plugins: ["@typescript-eslint", "import", "prettier"],
rules: {
"react/jsx-uses-react": "off",
"react/react-in-jsx-scope": "off",
"react/require-default-props": "off",
"react/destructuring-assignment": "off",
"no-underscore-dangle": "off",
"@typescript-eslint/no-explicit-any": "off",
"no-console": ["warn", { allow: ["warn", "error", "debug", "info"] }],
"@typescript-eslint/no-this-alias": "off",
"import/prefer-default-export": "off",
"@typescript-eslint/no-empty-function": "off",
"no-shadow": "off",
"@typescript-eslint/no-shadow": ["error"],
"no-restricted-syntax": "off",
"import/no-unresolved": ["error", { ignore: ["^virtual:"] }],
"react/jsx-props-no-spreading": "off",
"consistent-return": "off",
"no-continue": "off",
"no-eval": "off",
"no-await-in-loop": "off",
"no-nested-ternary": "off",
"prefer-destructuring": "off",
"no-param-reassign": "off",
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }],
"react/jsx-filename-extension": [
"error",
{ extensions: [".js", ".tsx", ".jsx"] }
],
"import/extensions": [
"error",
"ignorePackages",
{
ts: "never",
tsx: "never"
}
],
"import/order": [
"error",
{
groups: [
"builtin",
"external",
"internal",
["sibling", "parent"],
"index",
"unknown"
],
"newlines-between": "always",
alphabetize: {
order: "asc",
caseInsensitive: true
}
}
],
"sort-imports": [
"error",
{
ignoreCase: false,
ignoreDeclarationSort: true,
ignoreMemberSort: false,
memberSyntaxSortOrder: ["none", "all", "multiple", "single"],
allowSeparatedGroups: true
}
],
...a11yOff
}
};

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
* text=auto eol=lf

1
.github/CODEOWNERS vendored Normal file
View File

@ -0,0 +1 @@
* @movie-web/project-leads

128
.github/CODE_OF_CONDUCT.md vendored Normal file
View File

@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
codeofconduct@movie-web.app.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

94
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1,94 @@
# Contributing Guidelines for movie-web
Thank you for investing your time in contributing to our project! Your contribution will be reflected on [movie-web.app](https://movie-web.app).
Please read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable.
## Contents
- [New Contributor Guide](#new-contributor-guide)
- [Requesting a feature or reporting a bug](#requesting-a-feature-or-reporting-a-bug)
- [Discord Server](#discord-server)
- [GitHub Issues](#github-issues)
- [Before you start](#before-you-start)
- [Contributing](#before-you-start)
- [Recommended Development Environment](#recommended-development-environment)
- [Tips](#tips)
- [Language Contributions](#language-contributions)
## New contributor guide
To get an overview of the project, read the [README](README.md). Here are some resources to help you get started with open-source contributions:
- [Finding ways to contribute to open-source on GitHub](https://docs.github.com/en/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github)
- [Set up Git](https://docs.github.com/en/get-started/quickstart/set-up-git)
- [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow)
- [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests)
## Requesting a feature or reporting a bug
There are two places where to request features or report bugs:
- GitHub Issues
- The movie-web Discord server
### Discord Server
If you do not have a GitHub account or want to discuss a feature or bug with us before making an issue, you can join our Discord server.
<a href="https://discord.movie-web.app"><img src="https://discord.com/api/guilds/871713465100816424/widget.png?style=banner2" alt="Discord Server"></a>
### GitHub Issues
To make a GitHub issue for movie-web, please visit the [new issue page](https://github.com/movie-web/movie-web/issues/new/choose) where you can pick either the "Bug Report" or "Feature Request" template.
When filling out an issue template, please include as much detail as possible and any screenshots or console logs as appropriate.
After an issue is created, it will be assigned either the https://github.com/movie-web/movie-web/labels/bug or https://github.com/movie-web/movie-web/labels/feature label, along with https://github.com/movie-web/movie-web/labels/awaiting-approval. One of our maintainers will review your issue and, if it's accepted, will set the https://github.com/movie-web/movie-web/labels/approved label.
## Before you start!
Before starting a contribution, please check your contribution is part of an open issue on [our issues page](https://github.com/movie-web/movie-web/issues?q=is%3Aopen+is%3Aissue+label%3Aapproved).
GitHub issues are how we track our bugs and feature requests that will be implemented into movie-web - all contributions **must** have an issue and be approved by a maintainer before a pull request can be worked on.
If a pull request is opened before an issue is created and accepted, you may risk having your pull request rejected! Always check with us before starting work on a feature - we don't want to waste your time!
> **Note**
> The exception to this are language contributions, which are discussed in [this section](#language-contributions)
Also, make sure that the issue you would like to work on has been given the https://github.com/movie-web/movie-web/labels/approved label by a maintainer. Otherwise, if we reject the issue, it means your work will have gone to waste!
## Contributing
If you're here because you'd like to work on an issue, amazing! Thank you for even considering contributing to movie-web; it means a lot :heart:
Firstly, make sure you've read the [Before you start!](#before-you-start) section!
When you have found a GitHub issue you would like to work on, you can request to be assigned to the issue by commenting on the GitHub issue.
If you are assigned to an issue but can't complete it for whatever reason, no problem! Just let us know, and we will open up the issue to have someone else assigned.
### Recommended Development Environment
Our recommended development environment to work on movie-web is:
- [Visual Studio Code](https://code.visualstudio.com/)
- [ESLint Extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
- [EditorConfig Extension](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)
When opening Visual Studio Code, you will be prompted to install our recommended extensions if they are not installed for you.
Our project is set up to enforce formatting and code style standards using ESLint.
### Tips
Here are some tips to make sure that your pull requests are :pinched_fingers: first time:
- KISS - Keep It Simple Soldier! - Simple code makes readable and efficient code!
- Follow standard best practices for TypeScript and React.
- Keep as much as possible to the style of movie-web. Look around our codebase to familiarise yourself with how we do things!
- Ensure to take note of the ESLint errors and warnings! **Do not ignore them!** They are there for a reason.
- Test, test, test! Make sure you thoroughly test the features you are contributing.
### Language Contributions
Language contributions help movie-web massively, allowing people worldwide to use our app!
We use weblate for crowdsourcing our translations. [Click here to go to our translation tool.](https://weblate.movie-web.app/projects/movie-web/website/)
1. First make sure you make an account. (click the link above)
2. Click the language you want to help translate, if it's not listed you can click the plus top left to add a new language.
3. In the top right of the screen, click "translate"
4. Here you will be prompted a key to translate, fill in a translation and proceed to the next item by pressing "save and continue".
5. Thats all there is to it, every translation will eventually come through and be pushed with an update. This usually doesn't take longer than a week.

50
.github/ISSUE_TEMPLATE/bug-report.yml vendored Normal file
View File

@ -0,0 +1,50 @@
name: Bug Report
description: File a bug report
title: "[Bug]: "
labels: ["bug", "awaiting-approval"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
Please fill out with as much detail as possible
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Also tell us, what did you expect to happen?
placeholder: Tell us what you see!
validations:
required: true
- type: dropdown
id: browsers
attributes:
label: What browsers are you seeing the problem on?
multiple: true
options:
- Firefox
- Chrome
- Safari
- Microsoft Edge
- Other (tell us in input box below)
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce?
description: What steps have you taken to see the bug? (OPTIONAL)
placeholder: 1. ...
validations:
required: false
- type: textarea
id: other-info
attributes:
label: Other relevant information
description: |
Feel free to give us any more information that doesn't fit the above text boxes.
Tip: You can attach files by clicking this textbox and dragging in files
validations:
required: false

View File

@ -0,0 +1,26 @@
name: Feature Request
description: Suggest a new feature
title: "[Feature]: "
labels: ["feature", "awaiting-approval"]
assignees: []
body:
- type: textarea
id: what-feature
attributes:
label: What feature do you want to add?
placeholder: A new button!
validations:
required: true
- type: textarea
id: why-feature
attributes:
label: Why do you want to have this feature?
placeholder: A new button!
validations:
required: true
- type: textarea
id: other-details
attributes:
label: Any other details to share?
validations:
required: false

13
.github/SECURITY.md vendored Normal file
View File

@ -0,0 +1,13 @@
# Security Policy
## Supported Versions
The movie-web maintainers only support the latest version of movie-web published at https://movie-web.app.
Support is not provided for any forks or mirrors of movie-web.
## Reporting a Vulnerability
There are two ways you can contact the movie-web maintainers to report a vulnerability:
- Email [security@movie-web.app](mailto:security@movie-web.app)
- Report the vulnerability in the [movie-web Discord server](https://discord.movie-web.app)

11
.github/logo-dark.svg vendored Normal file
View File

@ -0,0 +1,11 @@
<svg width="2147" height="1121" viewBox="0 0 2147 1121" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1663.06 591.678H1719.49C1745.2 591.678 1763.85 595.357 1775.42 602.716C1787.08 609.992 1792.91 621.609 1792.91 637.566C1792.91 648.398 1790.35 657.286 1785.22 664.231C1780.18 671.177 1773.44 675.352 1765.01 676.758V677.998C1776.5 680.561 1784.77 685.357 1789.81 692.385C1794.94 699.413 1797.5 708.756 1797.5 720.414C1797.5 736.951 1791.51 749.849 1779.52 759.109C1767.61 768.37 1751.4 773 1730.9 773H1663.06V591.678ZM1701.51 663.487H1723.83C1734.25 663.487 1741.77 661.875 1746.4 658.65C1751.12 655.426 1753.47 650.093 1753.47 642.651C1753.47 635.706 1750.91 630.745 1745.78 627.769C1740.74 624.709 1732.72 623.18 1721.72 623.18H1701.51V663.487ZM1701.51 693.997V741.25H1726.56C1737.14 741.25 1744.96 739.224 1750 735.173C1755.04 731.121 1757.56 724.92 1757.56 716.569C1757.56 701.521 1746.82 693.997 1725.32 693.997H1701.51Z" fill="white"/>
<path d="M1625.11 773H1520.68V591.678H1625.11V623.18H1559.13V662.991H1620.52V694.493H1559.13V741.25H1625.11V773Z" fill="white"/>
<path d="M1451.72 773H1407.94L1383.39 677.75C1382.48 674.36 1380.91 667.373 1378.67 656.79C1376.52 646.124 1375.28 638.972 1374.95 635.334C1374.46 639.799 1373.22 646.992 1371.23 656.914C1369.25 666.753 1367.72 673.781 1366.64 677.998L1342.21 773H1298.55L1252.29 591.678H1290.12L1313.31 690.648C1317.36 708.921 1320.3 724.755 1322.12 738.149C1322.61 733.437 1323.73 726.16 1325.47 716.321C1327.29 706.399 1328.98 698.71 1330.55 693.253L1356.97 591.678H1393.31L1419.72 693.253C1420.88 697.8 1422.33 704.746 1424.07 714.089C1425.8 723.432 1427.12 731.452 1428.03 738.149C1428.86 731.7 1430.18 723.68 1432 714.089C1433.82 704.415 1435.48 696.602 1436.96 690.648L1460.03 591.678H1497.86L1451.72 773Z" fill="white"/>
<path d="M1178 720.414V689.408H1244.6V720.414H1178Z" fill="white"/>
<path d="M1155.31 773H1050.88V591.678H1155.31V623.18H1089.33V662.991H1150.72V694.493H1089.33V741.25H1155.31V773Z" fill="white"/>
<path d="M966.791 773V591.678H1005.24V773H966.791Z" fill="white"/>
<path d="M905.027 591.678H943.847L882.207 773H840.287L778.771 591.678H817.591L851.697 699.578C853.599 705.945 855.542 713.386 857.526 721.902C859.593 730.336 860.875 736.206 861.371 739.514C862.281 731.907 865.381 718.595 870.673 699.578L905.027 591.678Z" fill="white"/>
<path d="M764.012 682.091C764.012 712.104 756.57 735.173 741.688 751.296C726.805 767.419 705.473 775.48 677.691 775.48C649.91 775.48 628.578 767.419 613.695 751.296C598.812 735.173 591.371 712.022 591.371 681.843C591.371 651.664 598.812 628.637 613.695 612.762C628.661 596.804 650.076 588.825 677.939 588.825C705.803 588.825 727.094 596.845 741.812 612.886C756.612 628.926 764.012 651.994 764.012 682.091ZM631.679 682.091C631.679 702.348 635.523 717.603 643.213 727.855C650.902 738.108 662.395 743.234 677.691 743.234C708.367 743.234 723.704 722.853 723.704 682.091C723.704 641.246 708.449 620.823 677.939 620.823C662.643 620.823 651.109 625.991 643.337 636.326C635.565 646.579 631.679 661.834 631.679 682.091Z" fill="white"/>
<path d="M436.591 773L392.935 630.745H391.818C393.389 659.684 394.175 678.99 394.175 688.664V773H359.82V591.678H412.158L455.07 730.336H455.814L501.331 591.678H553.669V773H517.826V687.176C517.826 683.124 517.868 678.453 517.95 673.161C518.116 667.869 518.694 653.813 519.687 630.993H518.57L471.813 773H436.591Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

11
.github/logo-light.svg vendored Normal file
View File

@ -0,0 +1,11 @@
<svg width="2147" height="1121" viewBox="0 0 2147 1121" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1663.06 599.678H1719.49C1745.2 599.678 1763.85 603.357 1775.42 610.716C1787.08 617.992 1792.91 629.609 1792.91 645.566C1792.91 656.398 1790.35 665.286 1785.22 672.231C1780.18 679.177 1773.44 683.352 1765.01 684.758V685.998C1776.5 688.561 1784.77 693.357 1789.81 700.385C1794.94 707.413 1797.5 716.756 1797.5 728.414C1797.5 744.951 1791.51 757.849 1779.52 767.109C1767.61 776.37 1751.4 781 1730.9 781H1663.06V599.678ZM1701.51 671.487H1723.83C1734.25 671.487 1741.77 669.875 1746.4 666.65C1751.12 663.426 1753.47 658.093 1753.47 650.651C1753.47 643.706 1750.91 638.745 1745.78 635.769C1740.74 632.709 1732.72 631.18 1721.72 631.18H1701.51V671.487ZM1701.51 701.997V749.25H1726.56C1737.14 749.25 1744.96 747.224 1750 743.173C1755.04 739.121 1757.56 732.92 1757.56 724.569C1757.56 709.521 1746.82 701.997 1725.32 701.997H1701.51Z" fill="black"/>
<path d="M1625.11 781H1520.68V599.678H1625.11V631.18H1559.13V670.991H1620.52V702.493H1559.13V749.25H1625.11V781Z" fill="black"/>
<path d="M1451.72 781H1407.94L1383.39 685.75C1382.48 682.36 1380.91 675.373 1378.67 664.79C1376.52 654.124 1375.28 646.972 1374.95 643.334C1374.46 647.799 1373.22 654.992 1371.23 664.914C1369.25 674.753 1367.72 681.781 1366.64 685.998L1342.21 781H1298.55L1252.29 599.678H1290.12L1313.31 698.648C1317.36 716.921 1320.3 732.755 1322.12 746.149C1322.61 741.437 1323.73 734.16 1325.47 724.321C1327.29 714.399 1328.98 706.71 1330.55 701.253L1356.97 599.678H1393.31L1419.72 701.253C1420.88 705.8 1422.33 712.746 1424.07 722.089C1425.8 731.432 1427.12 739.452 1428.03 746.149C1428.86 739.7 1430.18 731.68 1432 722.089C1433.82 712.415 1435.48 704.602 1436.96 698.648L1460.03 599.678H1497.86L1451.72 781Z" fill="black"/>
<path d="M1178 728.414V697.408H1244.6V728.414H1178Z" fill="black"/>
<path d="M1155.31 781H1050.88V599.678H1155.31V631.18H1089.33V670.991H1150.72V702.493H1089.33V749.25H1155.31V781Z" fill="black"/>
<path d="M966.791 781V599.678H1005.24V781H966.791Z" fill="black"/>
<path d="M905.027 599.678H943.847L882.207 781H840.287L778.771 599.678H817.591L851.697 707.578C853.599 713.945 855.542 721.386 857.526 729.902C859.593 738.336 860.875 744.206 861.371 747.514C862.281 739.907 865.381 726.595 870.673 707.578L905.027 599.678Z" fill="black"/>
<path d="M764.012 690.091C764.012 720.104 756.57 743.173 741.688 759.296C726.805 775.419 705.473 783.48 677.691 783.48C649.91 783.48 628.578 775.419 613.695 759.296C598.812 743.173 591.371 720.022 591.371 689.843C591.371 659.664 598.812 636.637 613.695 620.762C628.661 604.804 650.076 596.825 677.939 596.825C705.803 596.825 727.094 604.845 741.812 620.886C756.612 636.926 764.012 659.994 764.012 690.091ZM631.679 690.091C631.679 710.348 635.523 725.603 643.213 735.855C650.902 746.108 662.395 751.234 677.691 751.234C708.367 751.234 723.704 730.853 723.704 690.091C723.704 649.246 708.449 628.823 677.939 628.823C662.643 628.823 651.109 633.991 643.337 644.326C635.565 654.579 631.679 669.834 631.679 690.091Z" fill="black"/>
<path d="M436.591 781L392.935 638.745H391.818C393.389 667.684 394.175 686.99 394.175 696.664V781H359.82V599.678H412.158L455.07 738.336H455.814L501.331 599.678H553.669V781H517.826V695.176C517.826 691.124 517.868 686.453 517.95 681.161C518.116 675.869 518.694 661.813 519.687 638.993H518.57L471.813 781H436.591Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

6
.github/pull_request_template.md vendored Normal file
View File

@ -0,0 +1,6 @@
This pull request resolves #XXX
- [ ] I have read and agreed to the [code of conduct](https://github.com/movie-web/movie-web/blob/dev/.github/CODE_OF_CONDUCT.md).
- [ ] I have read and complied with the [contributing guidelines](https://github.com/movie-web/movie-web/blob/dev/.github/CONTRIBUTING.md).
- [ ] What I'm implementing was assigned to me and is an [approved issue](https://github.com/movie-web/movie-web/issues?q=is%3Aopen+is%3Aissue+label%3Aapproved). For reference, please take a look at our [GitHub projects](https://github.com/movie-web/movie-web/projects).
- [ ] I have tested all of my changes.

181
.github/workflows/deploying.yml vendored Normal file
View File

@ -0,0 +1,181 @@
name: Deploying
on:
push:
branches:
- master
jobs:
build_pwa:
name: Build PWA
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install pnpm packages
run: pnpm install
- name: Build project
run: pnpm run build:pwa
- name: Upload production-ready build files
uses: actions/upload-artifact@v4
with:
name: pwa
path: ./dist
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install pnpm packages
run: pnpm install
- name: Build project
run: pnpm run build
- name: Upload production-ready build files
uses: actions/upload-artifact@v4
with:
name: normal
path: ./dist
release:
name: Release
needs: [build, build_pwa]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download PWA artifact
uses: actions/download-artifact@v4
with:
name: pwa
path: ./dist_pwa
- name: Zip PWA files
run: cd dist_pwa && zip -r ../movie-web.pwa.zip .
- name: Download normal artifact
uses: actions/download-artifact@v4
with:
name: normal
path: ./dist_normal
- name: Zip normal files
run: cd dist_normal && zip -r ../movie-web.zip .
- name: Get version
id: package-version
uses: martinbeentjes/npm-get-version-action@main
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.package-version.outputs.current-version }}
release_name: Movie web v${{ steps.package-version.outputs.current-version }}
draft: false
prerelease: false
- name: Upload release (PWA)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./movie-web.pwa.zip
asset_name: movie-web.pwa.zip
asset_content_type: application/zip
- name: Upload Release (Normal)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./movie-web.zip
asset_name: movie-web.zip
asset_content_type: application/zip
registry:
name: Push to registry
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- name: Get version
id: package-version
uses: martinbeentjes/npm-get-version-action@main
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
latest=auto
tags: |
type=semver,pattern={{version}},value=v${{ steps.package-version.outputs.current-version }}
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v5
with:
push: true
platforms: linux/amd64,linux/arm64
context: .
labels: ${{ steps.meta.outputs.labels }}
tags: ${{ steps.meta.outputs.tags }}
cache-from: type=gha
cache-to: type=gha,mode=max

74
.github/workflows/linting_testing.yml vendored Normal file
View File

@ -0,0 +1,74 @@
name: Linting and Testing
on:
push:
branches:
- master
- dev
pull_request:
jobs:
linting:
name: Run Linters
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install pnpm packages
run: pnpm install
- name: Run ESLint
run: pnpm run lint
building:
name: Build project
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install pnpm packages
run: pnpm install
- name: Build Project
run: pnpm run build
docker:
name: Build Docker
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
- name: Build Docker image
uses: docker/build-push-action@v5
with:
push: false
context: .

30
.gitignore vendored Normal file
View File

@ -0,0 +1,30 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/dist
dev-dist
/stats.html
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
# other package managers
yarn.lock
package-lock.json
# config
.env

1
.npmrc Normal file
View File

@ -0,0 +1 @@
shamefully-hoist=true

6
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"editorconfig.editorconfig"
]
}

11
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"eslint.format.enable": true,
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
}
}

18
Dockerfile Normal file
View File

@ -0,0 +1,18 @@
FROM node:20-alpine as build
WORKDIR /app
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
COPY package.json ./
COPY pnpm-lock.yaml ./
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
COPY . ./
RUN pnpm run build
# production environment
FROM nginx:stable-alpine
COPY --from=build /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

21
LICENSE.md Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 James Hawkins
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

67
README.md Normal file
View File

@ -0,0 +1,67 @@
<p align="center"><img align="center" width="280" src="./.github/logo-dark.svg#gh-dark-mode-only"/></p>
<p align="center"><img align="center" width="280" src="./.github/logo-light.svg#gh-light-mode-only"/></p>
<p align="center">
<img src="https://skillicons.dev/icons?i=react,vite,ts" />
<br/>
<a href="https://discord.movie-web.app"><kbd>🔵 discord</kbd></a> <a href="https://movie-web.app"><kbd>🟢 website</kbd></a>
</p>
<br/><br/>
# ⚡What is movie-web?
movie-web is a web app for watching movies easily. Check it out at <a href="https://movie-web.app"><kbd>movie-web.app</kbd></a>.
This service works by displaying video files from third-party providers inside an intuitive and aesthetic user interface.
# 🔥Features
- Automatic saving of progress - optionally synced to an account.
- Bookmark shows or movies, keep track of what you want to watch.
- Minimalistic interface that only shows whats required - no algorithm to consume you.
## 🍄 Philosophy
This project is meant to be simple and easy to use. Keep features minimal but polished.
We do not want this project to be yet another bulky streaming site, instead it aims for minimalism.
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 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
- Due to being a static site, there can be no SSR
- To keep it cheap to host, amount of proxied requests need to be kept to a minimum
- Also to keep it cheap, no content must ever be streamed through the proxy. So only streams not protected by CORS headers.
# 🧬 Running locally for development
To run locally, you must first clone the repository. After that run the following commands in the root of the repository:
```bash
pnpm install
pnpm run dev
```
You have to also make an `.env` file to configure your environment. Inspire it from the content of `example.env`.
To build production files, run:
```bash
pnpm build
```
> [!TIP]
> You must use pnpm (`npm i -g pnpm`) and run NodeJS 20
# 🥔 Selfhosting
A simple guide has been written to assist in hosting your own instance of movie-web. Check it out below
|[Selfhosting guide](https://docs.movie-web.app)|
|---|
## 🤝 Thanks to all Contributors
This project would not be possible without our amazing contributors and the community. Thanks a lot! Keep rocking 🍻.
[![Contributors](https://contrib.rocks/image?repo=movie-web/movie-web)](https://github.com/movie-web/movie-web/graphs/contributors)

8
example.env Normal file
View File

@ -0,0 +1,8 @@
VITE_TMDB_READ_API_KEY=eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJiZmU0OGY4NjFkY2NmMjczMzUyMDdmMWVjYmVkNjNjNiIsInN1YiI6IjY1YjNmMWI0NTk0Yzk0MDE2MzNkZDBjNSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.GiCKswc2u9NraBbujm0ykI5G3p-K9WJoHg40jYbFv4o
VITE_OPENSEARCH_ENABLED=false
# make sure the cors proxy url does NOT have a slash at the end
VITE_CORS_PROXY_URL=https://flixweb-proxy.netlify.app
# make sure the domain does NOT have a slash at the end
VITE_APP_DOMAIN=http://localhost:5173

165
index.html Normal file
View File

@ -0,0 +1,165 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport"
content="width=device-width, initial-scale=1, viewport-fit=cover, maximum-scale=1.0, user-scalable=no" />
<meta name="description" content="The place for your favourite movies & shows" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#120f1d" />
<meta name="msapplication-TileColor" content="#120f1d" />
<meta name="theme-color" content="#120f1d" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<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" />
<script src="/config.js"></script>
<!-- prevent darkreader extension from messing with our already dark site -->
<meta name="darkreader-lock" />
<!-- disabling referrer can fix some provider problems -->
<meta name="referrer" content="no-referrer" />
<title>Sudo Flix</title>
{{#if opensearchEnabled }}
<!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="sudo-flix" href="/opensearch.xml">
<!-- Google Sitelinks -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"url": "{{ routeDomain }}",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "{{ routeDomain }}/browse/?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
</script>
{{/if}}
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="module" src="/src/index.tsx"></script>
</body>
</html>

137
package.json Normal file
View File

@ -0,0 +1,137 @@
{
"name": "sudo-flix",
"version": "4.4.2",
"private": true,
"homepage": "https://movie-web.app",
"scripts": {
"dev": "vite",
"build": "vite build",
"build:pwa": "cross-env VITE_PWA_ENABLED=true vite build",
"test": "vitest run",
"preview": "vite preview",
"lint": "eslint --ext .tsx,.ts src",
"lint:fix": "eslint --fix --ext .tsx,.ts src",
"lint:report": "eslint --ext .tsx,.ts --output-file eslint_report.json --format json src",
"preinstall": "npx -y only-allow pnpm"
},
"browserslist": {
"production": [
"defaults",
"chrome > 90"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"dependencies": {
"@formkit/auto-animate": "^0.8.1",
"@headlessui/react": "^1.7.17",
"@ladjs/country-language": "^1.0.3",
"@movie-web/providers": "^2.2.0",
"@noble/hashes": "^1.3.3",
"@plasmohq/messaging": "^0.6.1",
"@react-spring/web": "^9.7.3",
"@scure/bip39": "^1.2.2",
"@sozialhelden/ietf-language-tags": "^5.4.2",
"@types/node-forge": "^1.3.10",
"classnames": "^2.3.2",
"core-js": "^3.34.0",
"detect-browser": "^5.3.0",
"dompurify": "^3.0.6",
"flag-icons": "^7.1.0",
"focus-trap-react": "^10.2.3",
"fscreen": "^1.2.0",
"fuse.js": "^7.0.0",
"hls.js": "^1.4.14",
"i18next": "^23.7.11",
"immer": "^10.0.3",
"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.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": "^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.2",
"semver": "^7.5.4",
"slugify": "^1.6.6",
"subsrt-ts": "^2.1.2",
"zustand": "^4.4.7"
},
"devDependencies": {
"@babel/core": "^7.23.6",
"@babel/preset-env": "^7.23.6",
"@babel/preset-typescript": "^7.23.3",
"@rollup/wasm-node": "^4.9.4",
"@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.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.3",
"@types/react-transition-group": "^4.4.10",
"@types/semver": "^7.5.6",
"@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.56.0",
"eslint-config-airbnb": "19.0.4",
"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": "^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.12",
"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": {
"get-func-name@<2.0.1": ">=2.0.1",
"postcss@<8.4.31": ">=8.4.31",
"@babel/traverse@<7.23.2": ">=7.23.2",
"crypto-js@<4.2.0": ">=4.2.0",
"rollup": "npm:@rollup/wasm-node"
}
}
}

1
plugins/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
figmaTokens.json

View File

@ -0,0 +1,43 @@
/**
* This script turns output from the figma plugin "style to JSON" into a usuable theme.
* It expects a format of "themes/{NAME}/anythinghere"
*/
import fs from "fs";
const fileLocation = "./figmaTokens.json";
const theme = "blue";
const fileContents = fs.readFileSync(fileLocation, {
encoding: "utf-8"
});
const tokens = JSON.parse(fileContents);
const themeTokens = tokens.themes[theme];
const output = {};
function setKey(obj, key, defaultVal) {
const realKey = key.match(/^\d+$/g) ? "c" + key : key;
if (obj[key]) return obj[key];
obj[realKey] = defaultVal;
return obj[realKey];
}
function handleToken(token, path) {
if (typeof token.name === "string" && typeof token.description === "string") {
let ref = output;
const lastKey = path.pop();
path.forEach((v) => {
ref = setKey(ref, v, {});
});
setKey(ref, lastKey, token.hex);
return;
}
for (let key in token) {
handleToken(token[key], [...path, key]);
}
}
handleToken(themeTokens, []);
console.log(JSON.stringify(output, null, 2));

41
plugins/handlebars.ts Normal file
View File

@ -0,0 +1,41 @@
import { globSync } from "glob";
import { viteStaticCopy } from 'vite-plugin-static-copy'
import { PluginOption } from "vite";
import Handlebars from "handlebars";
import path from "path";
export const handlebars = (options: { vars?: Record<string, any> } = {}): PluginOption[] => {
const files = globSync("src/assets/**/**.hbs");
function render(content: string): string {
const template = Handlebars.compile(content);
return template(options?.vars ?? {});
}
return [
{
name: 'hbs-templating',
enforce: "pre",
transformIndexHtml: {
order: 'pre',
handler(html) {
return render(html);
}
},
},
viteStaticCopy({
silent: true,
targets: files.map(file => ({
src: file,
dest: '',
rename: path.basename(file).slice(0, -4), // remove .hbs file extension
transform: {
encoding: 'utf8',
handler(content: string) {
return render(content);
}
}
}))
})
]
}

7534
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

6
postcss.config.js Normal file
View File

@ -0,0 +1,6 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

4
prettierrc.js Normal file
View File

@ -0,0 +1,4 @@
module.exports = {
trailingComma: "all",
singleQuote: true
};

13
public/_headers Normal file
View File

@ -0,0 +1,13 @@
/*
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Referrer-Policy: origin-when-cross-origin
Cache-Control: public, max-age=0, s-maxage=0, must-revalidate
/manifest.webmanifest
Content-Type: application/manifest+json
# assets get a long cache instead of no cache
/assets/*
Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable

2
public/_redirects Normal file
View File

@ -0,0 +1,2 @@
/assets/* /assets/:splat 200
/* /index.html 200

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
public/apple-touch-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

9
public/browserconfig.xml Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#120f1d</TileColor>
</tile>
</msapplication>
</browserconfig>

19
public/config.js Normal file
View File

@ -0,0 +1,19 @@
window.__CONFIG__ = {
// The URL for the CORS proxy, the URL must NOT end with a slash!
VITE_CORS_PROXY_URL: "https://flixweb-proxy.netlify.app",
// The READ API key to access TMDB
VITE_TMDB_READ_API_KEY: "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJiZmU0OGY4NjFkY2NmMjczMzUyMDdmMWVjYmVkNjNjNiIsInN1YiI6IjY1YjNmMWI0NTk0Yzk0MDE2MzNkZDBjNSIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.GiCKswc2u9NraBbujm0ykI5G3p-K9WJoHg40jYbFv4o",
// The DMCA email displayed in the footer, null to hide the DMCA link
VITE_DMCA_EMAIL: null,
// Whether to disable hash-based routing, leave this as false if you don't know what this is
VITE_NORMAL_ROUTER: false,
// The backend URL to communicate with, defaults to the movie-web hosted one at backend.movie-web.app
VITE_BACKEND_URL: null,
// A comma separated list of disallowed IDs in the case of a DMCA claim - in the format "series-<id>" and "movie-<id>"
VITE_DISALLOWED_IDS: ""
};

BIN
public/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

BIN
public/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

199
public/flags/galicia.svg Normal file
View File

@ -0,0 +1,199 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg sodipodi:docbase="F:\Mis Documentos - Miaj Dokumentoj\Mis imágenes\++Wiki\Sullpukuna\SVG" sodipodi:docname="Flag_of_Galicia.svg" sodipodi:version="0.32" version="1.0" viewBox="0 0 600 400" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview/>
<g transform="matrix(1 0 0 1.0001 -.04 -96.055)">
<rect x=".040048" y="96.048" width="600" height="399.97" fill="#fff" fill-rule="evenodd" stroke-width="1pt"/>
<path d="m600.04 437.8-513.97-341.75h-86.03v56.935l515.9 343.03h84.104v-58.22" fill="#09c"/>
</g>
<g transform="matrix(1 0 0 1.0001 -.04 -96.055)">
<path d="m296.65 401.23c-60.134 0-58.181-56.575-58.181-56.575v-86.833h116.36v86.833s2.0369 56.575-58.179 56.575" fill="#005bbf"/>
<path d="m296.65 401.23c-60.134 0-58.181-56.575-58.181-56.575v-86.833h116.36v86.833s2.0369 56.575-58.179 56.575z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m296.14 203.18s-12.406-6.0358-24.142 2.851c0 0-21.118-3.0479-22.672 17.18-0.06245 0.81902-0.18975 2.3274 0.18736 2.7669 0.37712 0.43954 0.75423 1.2586 0.75423 1.8206 0 0.56683 0.37712 0.88146 0.50443 1.1312 0.12489 0.25219 0.43955 0.62928 0.50201 1.6981 0.06245 1.0688-0.12491 1.5708 0.88154 2.6396 1.004 1.0688 1.0665 4.1503 1.0665 5.0294 0 0.87906 0.62933 3.3313 1.0689 3.8357 0.43957 0.50197 1.1938 1.7581 1.1938 2.8269 0 1.0688 0.43957 4.023 0.24981 4.7748-0.18735 0.75417 1.1313 1.6981 2.3275 2.0752 1.1938 0.37709 16.031 5.2167 37.656 4.8396 21.628-0.37708 29.415-1.5276 38.35-4.7772 1.3812-0.50199 1.6334-1.6332 1.5085-2.2625-0.12731-0.62686 0-2.6372 0.37711-3.1416 0.37711-0.50197 2.892-4.525 2.3876-5.2792-0.50202-0.75417-0.50202-2.3898 0-3.0167 0.50442-0.62928 2.0777-3.6532 2.3876-4.9045 0.31226-1.2537 0.35309-2.7309 0.92957-3.168 0.57888-0.43713 0.77344-1.8542 0.88394-2.1496 0.11288-0.29782 0.53324-1.2201 1.1193-1.6404 0 0 1.0905-5.111 0.41794-7.6234-0.66775-2.5147-4.4413-13.328-19.78-11.063 0 0-11.4-8.6345-28.163-4.4434" fill="#d81126"/>
<path d="m296.14 203.18s-12.406-6.0358-24.142 2.851c0 0-21.118-3.0479-22.672 17.18-0.06245 0.81902-0.18975 2.3274 0.18736 2.7669 0.37712 0.43954 0.75423 1.2586 0.75423 1.8206 0 0.56683 0.37712 0.88146 0.50443 1.1312 0.12489 0.25219 0.43955 0.62928 0.50201 1.6981 0.06245 1.0688-0.12491 1.5708 0.88154 2.6396 1.004 1.0688 1.0665 4.1503 1.0665 5.0294 0 0.87906 0.62933 3.3313 1.0689 3.8357 0.43957 0.50197 1.1938 1.7581 1.1938 2.8269 0 1.0688 0.43957 4.023 0.24981 4.7748-0.18735 0.75417 1.1313 1.6981 2.3275 2.0752 1.1938 0.37709 16.031 5.2167 37.656 4.8396 21.628-0.37708 29.415-1.5276 38.35-4.7772 1.3812-0.50199 1.6334-1.6332 1.5085-2.2625-0.12731-0.62686 0-2.6372 0.37711-3.1416 0.37711-0.50197 2.892-4.525 2.3876-5.2792-0.50202-0.75417-0.50202-2.3898 0-3.0167 0.50442-0.62928 2.0777-3.6532 2.3876-4.9045 0.31226-1.2537 0.35309-2.7309 0.92957-3.168 0.57888-0.43713 0.77344-1.8542 0.88394-2.1496 0.11288-0.29782 0.53324-1.2201 1.1193-1.6404 0 0 1.0905-5.111 0.41794-7.6234-0.66775-2.5147-4.4413-13.328-19.78-11.063 0 0-11.4-8.6345-28.163-4.4434h0.0048z" fill="none" stroke="#000" stroke-width="1.5084"/>
<path d="m337.64 240.83c-47.108-14.92-83.414-0.73976-83.414-0.73976s0.33627 1.6452 0.75422 2.1472c0.42035 0.50198 1.0064 1.6765 1.0064 2.5579 0 0.87906 0.08407 2.1376 0.08407 2.8077 0 0.6677-0.51403 3.6748 2.1738 3.6388 0 0 32.742-12.842 75.377 0.6605 0 0 1.1674-1.0472 1.2106-2.5555 0.04083-1.5083 0.29064-3.1007 0.87912-3.939 0.58609-0.83823 1.9264-3.4562 1.9264-4.5779" fill="#bcac0b"/>
<path d="m293.97 319.35h-20.453s-2.0129 18.271 13.747 23.804v1.6765h3.3532v2.1784s-5.784 5.1951-0.75663 11.147v1.8446h0.8407v2.9326h0.91996v4.7748s-0.75423 17.058-17.477 25.229v1.0064h44.651v-1.0064c-16.72-8.171-17.477-25.229-17.477-25.229v-4.7748h0.91996v-2.9326h0.8383v-1.8446c5.0298-5.9517-0.75423-11.147-0.75423-11.147v-2.1784h3.3532v-1.6765c15.76-5.5338 13.747-23.804 13.747-23.804h-25.454" fill="#c8b100" fill-opacity=".94118"/>
<path d="m293.97 319.35h-20.453s-2.0129 18.271 13.747 23.804v1.6765h3.3532v2.1784s-5.784 5.1951-0.75663 11.147v1.8446h0.8407v2.9326h0.91996v4.7748s-0.75423 17.058-17.477 25.229v1.0064h44.651v-1.0064c-16.72-8.171-17.477-25.229-17.477-25.229v-4.7748h0.91996v-2.9326h0.8383v-1.8446c5.0298-5.9517-0.75423-11.147-0.75423-11.147v-2.1784h3.3532v-1.6765c15.76-5.5338 13.747-23.804 13.747-23.804h-25.454 0.0024z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m286.59 342.9h19.742m-19.069 1.5083h18.399m-15.046 2.5147h11.568m-12.325 11.44h13.204m-12.322 1.4051h11.527m-11.527 2.851h11.484m-18.524 23.153h25.524m-32.732 5.9085h39.984m-41.492 0.87906h43.041" fill="none" stroke="#000" stroke-width=".2522"/>
<path d="m296.64 318.27c7.2012 0 13.04-5.8388 13.04-13.039 0-7.2006-5.8393-13.039-13.04-13.039-7.2012 0-13.04 5.8388-13.04 13.039 0 7.2006 5.8392 13.039 13.04 13.039" fill="#ccc"/>
<path d="m296.64 318.27c7.2012 0 13.04-5.8388 13.04-13.039 0-7.2006-5.8393-13.039-13.04-13.039-7.2012 0-13.04 5.8388-13.04 13.039 0 7.2006 5.8392 13.039 13.04 13.039z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m266.29 279.96h-8.1308v-8.1326h-7.2084v8.1326h-8.1308v7.2054h8.1308v8.1302h7.2084v-8.1302h8.1308v-7.2054" fill="#ccc"/>
<path d="m266.29 279.96h-8.1308v-8.1326h-7.2084v8.1326h-8.1308v7.2054h8.1308v8.1302h7.2084v-8.1302h8.1308v-7.2054" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m350.8 279.96h-8.1308v-8.1326h-7.2108v8.1326h-8.1284v7.2054h8.1284v8.1302h7.2108v-8.1302h8.1308v-7.2054" fill="#ccc"/>
<path d="m350.8 279.96h-8.1308v-8.1326h-7.2108v8.1326h-8.1284v7.2054h8.1284v8.1302h7.2108v-8.1302h8.1308v-7.2054" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m307.98 269.74h-8.1308v-8.1301h-7.2084v8.1301h-8.1308v7.2078h8.1308v8.1301h7.2084v-8.1301h8.1308v-7.2078" fill="#ccc"/>
<path d="m307.98 269.74h-8.1308v-8.1301h-7.2084v8.1301h-8.1308v7.2078h8.1308v8.1301h7.2084v-8.1301h8.1308v-7.2078" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m266.29 315.16h-8.1308v-8.1301h-7.2084v8.1301h-8.1308v7.2078h8.1308v8.1301h7.2084v-8.1301h8.1308v-7.2078" fill="#ccc"/>
<path d="m266.29 315.16h-8.1308v-8.1301h-7.2084v8.1301h-8.1308v7.2078h8.1308v8.1301h7.2084v-8.1301h8.1308v-7.2078" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m350.8 315.16h-8.1308v-8.1301h-7.2108v8.1301h-8.1284v7.2078h8.1284v8.1301h7.2108v-8.1301h8.1308v-7.2078" fill="#ccc"/>
<path d="m350.8 315.16h-8.1308v-8.1301h-7.2108v8.1301h-8.1284v7.2078h8.1284v8.1301h7.2108v-8.1301h8.1308v-7.2078" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m266.29 350.71h-8.1308v-8.1325h-7.2084v8.1325h-8.1308v7.2078h8.1308v8.1277h7.2084v-8.1277h8.1308v-7.2078" fill="#ccc"/>
<path d="m266.29 350.71h-8.1308v-8.1325h-7.2084v8.1325h-8.1308v7.2078h8.1308v8.1277h7.2084v-8.1277h8.1308v-7.2078" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m350.8 350.71h-8.1308v-8.1325h-7.2108v8.1325h-8.1284v7.2078h8.1284v8.1277h7.2108v-8.1277h8.1308v-7.2078" fill="#ccc"/>
<path d="m350.8 350.71h-8.1308v-8.1325h-7.2108v8.1325h-8.1284v7.2078h8.1284v8.1277h7.2108v-8.1277h8.1308v-7.2078" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m296.53 185.77c4.3212 0 7.8257-3.5018 7.8257-7.8227 0-4.3209-3.5045-7.8227-7.8257-7.8227-4.3212 0-7.8233 3.5018-7.8233 7.8227 0 4.3209 3.5021 7.8227 7.8233 7.8227" fill="#005bbf"/>
<path d="m296.53 185.77c4.3212 0 7.8257-3.5018 7.8257-7.8227 0-4.3209-3.5045-7.8227-7.8257-7.8227-4.3212 0-7.8233 3.5018-7.8233 7.8227 0 4.3209 3.5021 7.8227 7.8233 7.8227z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m303.83 176.57h-6.4133v-10.371h2.45v-2.0752h-2.45v-2.4523h-2.0753v2.4523h-2.4524v2.0752h2.4524v10.371h-6.0987v1.3834h6.0987v0.06245h2.0753v-0.06245h6.4133v-1.3834" fill="#fc0"/>
<path d="m303.83 176.57h-6.4133v-10.371h2.45v-2.0752h-2.45v-2.4523h-2.0753v2.4523h-2.4524v2.0752h2.4524v10.371h-6.0987v1.3834h6.0987v0.06245h2.0753v-0.06245h6.4133v-1.3834" fill="#bcac0b" stroke="#000" stroke-width=".502"/>
<path d="m265.21 195.13s5.784-0.6701 9.1348 0.67011c0 0-3.8408 4.3689-3.0169 10.14 0.42034 2.935 1.0064 4.4434 1.8447 5.8676 0.8383 1.4267 1.7583 4.3593 1.2562 6.7058h1.0905s1.0905-4.7772-0.75423-7.46c-1.8447-2.6804-2.7671-6.3696-0.92236-10.225 1.8423-3.8549 4.5254-5.3632 4.5254-5.3632 3.101 1.2562 9.6416 0.08166 11.484-1.2585 1.8423-1.3426 2.7647-3.1848-0.67015-3.3529-3.4349-0.16812-9.303-0.08406-13.326 2.935 0 0-2.0969-2.433-12.574-1.2586-10.478 1.1745-18.051 5.6491-20.369 15.088-1.1722 4.7772 3.2691 14.834 7.3765 17.264 0 0-0.12491-1.6332 0.29305-2.8077 0 0-6.9994-7.8371-4.9025-15.129 2.0946-7.2919 10.478-12.069 19.531-11.817" fill="#fc0"/>
<path d="m265.21 195.13s5.784-0.6701 9.1348 0.67011c0 0-3.8408 4.3689-3.0169 10.14 0.42034 2.935 1.0064 4.4434 1.8447 5.8676 0.8383 1.4267 1.7583 4.3593 1.2562 6.7058h1.0905s1.0905-4.7772-0.75423-7.46c-1.8447-2.6804-2.7671-6.3696-0.92236-10.225 1.8423-3.8549 4.5254-5.3632 4.5254-5.3632 3.101 1.2562 9.6416 0.08166 11.484-1.2585 1.8423-1.3426 2.7647-3.1848-0.67015-3.3529-3.4349-0.16812-9.303-0.08406-13.326 2.935 0 0-2.0969-2.433-12.574-1.2586-10.478 1.1745-18.051 5.6491-20.369 15.088-1.1722 4.7772 3.2691 14.834 7.3765 17.264 0 0-0.12491-1.6332 0.29305-2.8077 0 0-6.9994-7.8371-4.9025-15.129 2.0946-7.2919 10.478-12.069 19.531-11.817z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m284.9 193.69c1.8111-0.14651 3.2619-0.46114 3.2427-0.70853-0.01922-0.24259-1.5036-0.32425-3.3148-0.17774s-3.2619 0.46355-3.2427 0.70854c0.01922 0.24498 1.5036 0.32424 3.3148 0.17773" fill="#fff"/>
<path d="m278.3 195.43s-2.0729 1.9479 0 0c2.0753-1.9479 6.4133-3.2689 8.8658-2.702 2.45 0.56443-0.44197 0.87906-1.2586 0.94151s-2.4524 0.37709-4.84 0" fill="none" stroke="#000" stroke-width=".65332"/>
<path d="m327.74 195.76s-5.7816-0.6677-9.1348 0.67251c0 0 3.8432 4.3665 3.0169 10.14-0.41795 2.935-1.004 4.4434-1.8423 5.8676-0.84071 1.4219-1.7607 4.3593-1.2587 6.7059h-1.0905s-1.0881-4.7772 0.75422-7.46c1.8448-2.6828 2.7671-6.3696 0.92237-10.225-1.8423-3.8573-4.5254-5.3656-4.5254-5.3656-3.101 1.2586-9.6392 0.08406-11.484-1.2562-1.8399-1.3426-2.7647-3.1848 0.67016-3.3529 3.4373-0.16813 9.3053-0.08406 13.329 2.9326 0 0 2.0946-2.4306 12.572-1.2561 10.48 1.1721 18.051 5.6491 20.369 15.086 1.1746 4.7772-3.2691 14.836-7.3765 17.267 0 0 0.12729-1.6332-0.29305-2.8077 0 0 6.9994-7.8371 4.9049-15.129-2.097-7.2919-10.478-12.069-19.533-11.819" fill="#fc0"/>
<path d="m327.74 195.76s-5.7816-0.6677-9.1348 0.67251c0 0 3.8432 4.3665 3.0169 10.14-0.41795 2.935-1.004 4.4434-1.8423 5.8676-0.84071 1.4219-1.7607 4.3593-1.2587 6.7059h-1.0905s-1.0881-4.7772 0.75422-7.46c1.8448-2.6828 2.7671-6.3696 0.92237-10.225-1.8423-3.8573-4.5254-5.3656-4.5254-5.3656-3.101 1.2586-9.6392 0.08406-11.484-1.2562-1.8399-1.3426-2.7647-3.1848 0.67016-3.3529 3.4373-0.16813 9.3053-0.08406 13.329 2.9326 0 0 2.0946-2.4306 12.572-1.2561 10.48 1.1721 18.051 5.6491 20.369 15.086 1.1746 4.7772-3.2691 14.836-7.3765 17.267 0 0 0.12729-1.6332-0.29305-2.8077 0 0 6.9994-7.8371 4.9049-15.129-2.097-7.2919-10.478-12.069-19.533-11.819z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m308.04 194.32c-1.8087-0.14651-3.2619-0.46355-3.2427-0.70853 0.02162-0.24498 1.5036-0.32425 3.3148-0.17773 1.8111 0.14651 3.2643 0.46355 3.2451 0.70854-0.02162 0.24497-1.506 0.32424-3.3172 0.17772" fill="#fff"/>
<path d="m314.64 196.05s2.0753 1.9479 0 0c-2.0729-1.9503-6.4109-3.2689-8.8634-2.7044-2.4524 0.56683 0.43957 0.88147 1.2562 0.94392 0.81908 0.06245 2.4524 0.37708 4.8424 0" fill="none" stroke="#000" stroke-width=".65332"/>
<path d="m291.11 189.35v22.296c-0.25221 2.1784 2.6806 5.2792 4.7776 6.2015 0 0 4.9457-1.6765 5.2796-6.2015v-23.555h-1.6766v20.367c-0.08168 2.0968-1.4244 5.8676-3.2691 6.4561 0 0-3.603-0.58845-3.7711-6.372v-19.861l-1.3403 0.6677" fill="#fc0"/>
<path d="m291.11 189.35v22.296c-0.25221 2.1784 2.6806 5.2792 4.7776 6.2015 0 0 4.9457-1.6765 5.2796-6.2015v-23.555h-1.6766v20.367c-0.08168 2.0968-1.4244 5.8676-3.2691 6.4561 0 0-3.603-0.58845-3.7711-6.372v-19.861l-1.3403 0.6677" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m241.78 219.84c1.4724 0 2.6662-1.1937 2.6662-2.666 0-1.4699-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m241.78 219.84c1.4724 0 2.6662-1.1937 2.6662-2.666 0-1.4699-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m240.11 213.71c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4699-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m240.11 213.71c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4699-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m240.99 206.3c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m240.99 206.3c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m245.14 200.14c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4747-1.1938-2.6684-2.6686-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m245.14 200.14c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4747-1.1938-2.6684-2.6686-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m250.04 195.64c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666s-2.6686 1.1937-2.6686 2.666c0 1.4747 1.1962 2.6684 2.6686 2.6684" fill="#fff"/>
<path d="m250.04 195.64c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666s-2.6686 1.1937-2.6686 2.666c0 1.4747 1.1962 2.6684 2.6686 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m256.36 193.13c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m256.36 193.13c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m262.96 191.93c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m262.96 191.93c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m269.25 191.56c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666 0 1.4723 1.1938 2.6684 2.6686 2.6684" fill="#fff"/>
<path d="m269.25 191.56c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666 0 1.4723 1.1938 2.6684 2.6686 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m274.91 192.06c1.4724 0 2.6662-1.1937 2.6662-2.666 0-1.4747-1.1938-2.6684-2.6662-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m274.91 192.06c1.4724 0 2.6662-1.1937 2.6662-2.666 0-1.4747-1.1938-2.6684-2.6662-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m291.04 190.05c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4699-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m291.04 190.05c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4699-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m296.19 191.43c1.4724 0 2.6686-1.1937 2.6686-2.666s-1.1962-2.666-2.6686-2.666-2.6662 1.1937-2.6662 2.666 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m296.19 191.43c1.4724 0 2.6686-1.1937 2.6686-2.666s-1.1962-2.666-2.6686-2.666-2.6662 1.1937-2.6662 2.666 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m296.19 211.17c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m296.19 211.17c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m351.33 221.54c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666 0 1.4747 1.1938 2.6684 2.6686 2.6684" fill="#fff"/>
<path d="m351.33 221.54c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666 0 1.4747 1.1938 2.6684 2.6686 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m352.71 214.91c1.4748 0 2.6686-1.1937 2.6686-2.666s-1.1938-2.666-2.6686-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m352.71 214.91c1.4748 0 2.6686-1.1937 2.6686-2.666s-1.1938-2.666-2.6686-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m351.58 207.99c1.4748 0 2.6686-1.1937 2.6686-2.6684 0-1.4723-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m351.58 207.99c1.4748 0 2.6686-1.1937 2.6686-2.6684 0-1.4723-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m348.69 201.46c1.4748 0 2.6686-1.1961 2.6686-2.6684 0-1.4699-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m348.69 201.46c1.4748 0 2.6686-1.1961 2.6686-2.6684 0-1.4699-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m343.78 196.93c1.4724 0 2.6662-1.1937 2.6662-2.666s-1.1938-2.666-2.6662-2.666c-1.4724 0-2.6686 1.1937-2.6686 2.666s1.1962 2.666 2.6686 2.666" fill="#fff"/>
<path d="m343.78 196.93c1.4724 0 2.6662-1.1937 2.6662-2.666s-1.1938-2.666-2.6662-2.666c-1.4724 0-2.6686 1.1937-2.6686 2.666s1.1962 2.666 2.6686 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m337.87 194.04c1.4724 0 2.6662-1.1937 2.6662-2.666s-1.1938-2.666-2.6662-2.666c-1.4748 0-2.6686 1.1937-2.6686 2.666s1.1938 2.666 2.6686 2.666" fill="#fff"/>
<path d="m337.87 194.04c1.4724 0 2.6662-1.1937 2.6662-2.666s-1.1938-2.666-2.6662-2.666c-1.4748 0-2.6686 1.1937-2.6686 2.666s1.1938 2.666 2.6686 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m331.15 192.5c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4699-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m331.15 192.5c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4699-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m324.98 192c1.4748 0 2.6686-1.1937 2.6686-2.6684 0-1.4699-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m324.98 192c1.4748 0 2.6686-1.1937 2.6686-2.6684 0-1.4699-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m319.4 191.26c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m319.4 191.26c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1938-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m323.01 213.09c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4699-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m323.01 213.09c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4699-1.1938-2.666-2.6662-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m324.39 207.93c1.4724 0 2.6662-1.1937 2.6662-2.666s-1.1938-2.666-2.6662-2.666c-1.4748 0-2.6686 1.1937-2.6686 2.666s1.1938 2.666 2.6686 2.666" fill="#fff"/>
<path d="m324.39 207.93c1.4724 0 2.6662-1.1937 2.6662-2.666s-1.1938-2.666-2.6662-2.666c-1.4748 0-2.6686 1.1937-2.6686 2.666s1.1938 2.666 2.6686 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m301.98 190.86c1.4748 0 2.6686-1.1961 2.6686-2.6684s-1.1938-2.666-2.6686-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m301.98 190.86c1.4748 0 2.6686-1.1961 2.6686-2.6684s-1.1938-2.666-2.6686-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m288.93 190.14c1.4748 0 2.6686-1.1937 2.6686-2.6684 0-1.4699-1.1938-2.6636-2.6686-2.6636-1.4724 0-2.6662 1.1913-2.6662 2.6636 0 1.4747 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m288.93 190.14c1.4748 0 2.6686-1.1937 2.6686-2.6684 0-1.4699-1.1938-2.6636-2.6686-2.6636-1.4724 0-2.6662 1.1913-2.6662 2.6636 0 1.4747 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m285.78 190.01c1.4724 0 2.6662-1.1937 2.6662-2.666s-1.1938-2.666-2.6662-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m285.78 190.01c1.4724 0 2.6662-1.1937 2.6662-2.666s-1.1938-2.666-2.6662-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m268.84 213.15c1.4724 0 2.6686-1.1937 2.6686-2.6684 0-1.4723-1.1962-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m268.84 213.15c1.4724 0 2.6686-1.1937 2.6686-2.6684 0-1.4723-1.1962-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4747 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m268.06 206.77c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1962-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m268.06 206.77c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1962-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m269.94 200.61c1.4748 0 2.6686-1.1937 2.6686-2.666s-1.1938-2.666-2.6686-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m269.94 200.61c1.4748 0 2.6686-1.1937 2.6686-2.666s-1.1938-2.666-2.6686-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m281.66 190.61c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4747-1.1938-2.6684-2.6686-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m281.66 190.61c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4747-1.1938-2.6684-2.6686-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m277.23 192.44c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4747-1.1938-2.6684-2.6686-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m277.23 192.44c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4747-1.1938-2.6684-2.6686-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m272.99 196.02c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666 0 1.4723 1.1938 2.6684 2.6686 2.6684" fill="#fff"/>
<path d="m272.99 196.02c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666 0 1.4723 1.1938 2.6684 2.6686 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m296.19 194.45c1.4724 0 2.6686-1.1961 2.6686-2.6684 0-1.4699-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m296.19 194.45c1.4724 0 2.6686-1.1961 2.6686-2.6684 0-1.4699-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m296.19 199.48c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m296.19 199.48c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m296.19 204.88c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4699-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m296.19 204.88c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4699-1.1962-2.666-2.6686-2.666s-2.6662 1.1937-2.6662 2.666c0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m305.43 190.17c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4699-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666s1.1938 2.6684 2.6686 2.6684" fill="#fff"/>
<path d="m305.43 190.17c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4699-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666s1.1938 2.6684 2.6686 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m309.08 189.42c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4699-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666s1.1938 2.6684 2.6686 2.6684" fill="#fff"/>
<path d="m309.08 189.42c1.4724 0 2.6662-1.1961 2.6662-2.6684 0-1.4699-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666s1.1938 2.6684 2.6686 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m313.2 190.08c1.4724 0 2.6662-1.1961 2.6662-2.6684s-1.1938-2.666-2.6662-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.6684 2.6662 2.6684" fill="#fff"/>
<path d="m313.2 190.08c1.4724 0 2.6662-1.1961 2.6662-2.6684s-1.1938-2.666-2.6662-2.666c-1.4724 0-2.6662 1.1937-2.6662 2.666s1.1938 2.6684 2.6662 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m323.51 201.39c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1962-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m323.51 201.39c1.4724 0 2.6686-1.1937 2.6686-2.666 0-1.4723-1.1962-2.666-2.6686-2.666-1.4724 0-2.6662 1.1937-2.6662 2.666 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m317.35 192.47c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4747-1.1938-2.6684-2.6686-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666" fill="#fff"/>
<path d="m317.35 192.47c1.4748 0 2.6686-1.1937 2.6686-2.666 0-1.4747-1.1938-2.6684-2.6686-2.6684-1.4724 0-2.6662 1.1937-2.6662 2.6684 0 1.4723 1.1938 2.666 2.6662 2.666z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m321.12 196.11c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666 0 1.4747 1.1938 2.6684 2.6686 2.6684" fill="#fff"/>
<path d="m321.12 196.11c1.4724 0 2.6662-1.1937 2.6662-2.6684 0-1.4723-1.1938-2.666-2.6662-2.666-1.4748 0-2.6686 1.1937-2.6686 2.666 0 1.4747 1.1938 2.6684 2.6686 2.6684z" fill="none" stroke="#000" stroke-width="1.0064"/>
<path d="m296.02 236.05-7.0403 3.521 6.3365 3.9894 7.511-3.754-6.8073-3.7564" fill="#fff"/>
<path d="m296.02 236.05-7.0403 3.521 6.3365 3.9894 7.511-3.754-6.8073-3.7564" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m280.63 236.79-10.562 1.6332s-0.1273 5.6587 0.37711 7.0421l10.811-1.5107s0.50442-5.2792-0.62692-7.1646" fill="#fff"/>
<path d="m280.63 236.79-10.562 1.6332s-0.1273 5.6587 0.37711 7.0421l10.811-1.5107s0.50442-5.2792-0.62692-7.1646z" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m279.45 238.8s-6.3701 0.58604-7.9626 1.1745l0.08408 3.8549s4.1915-0.75418 8.0467-1.0904l-0.16814-3.939" fill="#058e6e" fill-opacity=".94118"/>
<path d="m279.45 238.8s-6.3701 0.58604-7.9626 1.1745l0.08408 3.8549s4.1915-0.75418 8.0467-1.0904l-0.16814-3.939" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m310.74 237.09 10.559 1.6356s0.12731 5.6563-0.37711 7.0397l-10.811-1.5083s-0.50442-5.2816 0.62932-7.167" fill="#fff"/>
<path d="m310.74 237.09 10.559 1.6356s0.12731 5.6563-0.37711 7.0397l-10.811-1.5083s-0.50442-5.2816 0.62932-7.167z" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m311.92 239.11s6.3701 0.58605 7.9626 1.1721l-0.08407 3.8549s-4.1915-0.75416-8.0467-1.088l0.16813-3.939" fill="#058e6e" fill-opacity=".94118"/>
<path d="m311.92 239.11s6.3701 0.58605 7.9626 1.1721l-0.08407 3.8549s-4.1915-0.75416-8.0467-1.088l0.16813-3.939" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m254.22 241.82s37.048-13.758 84.159 1.1625m-82.65 6.7563s35.835-13.402 80.03 0.59566m-79.862-9.0188 7.2084 2.0944-5.0298 5.3657" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m256.07 247.77 4.1074-3.437-4.6935-0.9223s0.63893 0.72535 0.50682 1.3907c-0.12971 0.6653 0.03843 2.3826 0.07926 2.9686" fill="#f00"/>
<path d="m256.07 247.77 4.1074-3.437-4.6935-0.9223s0.63893 0.72535 0.50682 1.3907c-0.12971 0.6653 0.03843 2.3826 0.07926 2.9686z" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m337.59 242.7-7.6696 1.3834 5.1547 6.0334" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m335.32 247.98-2.892-3.0191 4.1482-0.37709s-1.1313 0.75417-1.1313 1.3834c0 0.62927 0.12731 1.5083-0.1249 2.0127" fill="#f00"/>
<path d="m335.32 247.98-2.892-3.0191 4.1482-0.37709s-1.1313 0.75417-1.1313 1.3834c0 0.62927 0.12731 1.5083-0.1249 2.0127z" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m265.29 241.85c0.65335 0 1.1842-0.42511 1.1842-0.95111 0-0.52119-0.53084-0.94632-1.1842-0.94632-0.65574 0-1.1866 0.42513-1.1866 0.94632 0 0.526 0.53084 0.95111 1.1866 0.95111zm20.607-2.349c0.65575 0 1.1866-0.42512 1.1866-0.94631 0-0.526-0.53084-0.94872-1.1866-0.94872-0.65334 0-1.1842 0.42272-1.1842 0.94872 0 0.52119 0.53084 0.94631 1.1842 0.94631zm0 3.3529c0.65575 0 1.1866-0.42513 1.1866-0.94872 0-0.5236-0.53084-0.94631-1.1866-0.94631-0.65334 0-1.1842 0.42271-1.1842 0.94631 0 0.52359 0.53084 0.94872 1.1842 0.94872zm20.285-3.1848c0.65574 0 1.1866-0.42272 1.1866-0.94872 0-0.52119-0.53084-0.94631-1.1866-0.94631-0.65334 0-1.1842 0.42271-1.1842 0.94631 0 0.526 0.53084 0.94872 1.1842 0.94872zm20.117 3.6892c0.65575 0 1.1866-0.42511 1.1866-0.95111 0-0.5212-0.53084-0.94632-1.1866-0.94632-0.65334 0-1.1842 0.42512-1.1842 0.94632 0 0.526 0.53084 0.95111 1.1842 0.95111zm-0.33387 2.6804c0.65574 0 1.1866-0.42512 1.1866-0.94632 0-0.52119-0.53084-0.95112-1.1866-0.95112-0.65575 0-1.1866 0.42753-1.1866 0.95112 0 0.5212 0.53085 0.94632 1.1866 0.94632zm-19.783-3.0167c0.65574 0 1.1866-0.42512 1.1866-0.94871 0-0.5212-0.53084-0.94632-1.1866-0.94632-0.65334 0-1.1842 0.42272-1.1842 0.94632 0 0.52359 0.53084 0.94871 1.1842 0.94871zm-39.897 3.0167c0.65334 0 1.1842-0.42512 1.1842-0.94632 0-0.52119-0.53085-0.95112-1.1842-0.95112-0.65575 0-1.1866 0.42753-1.1866 0.95112 0 0.5212 0.53084 0.94632 1.1866 0.94632z" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m253.55 231.01s0.16814 7.2078 4.8616 6.2015c4.6935-1.0064 4.1915-6.874 4.5278-7.2078 0.33388-0.33626 0.8359-0.33626 0.8359-0.33626s0.67015 5.6995 5.0274 5.0294c4.3596-0.67011 4.1915-7.7098 3.6895-8.8843l1.0064-0.33625s1.6742 8.2142 6.704 7.0421c5.0298-1.1745 4.5278-6.3696 4.5278-6.3696h0.38672s1.1218 5.5314 5.1451 5.1951c4.021-0.33385 4.8616-1.6765 4.3572-7.2078l2.683-0.50198s-1.0064 8.0461 3.8528 7.878c4.864-0.16813 5.0298-4.023 5.3661-4.6931h0.73261s0.27383 5.6995 4.2972 5.6995c4.0233 0 4.8592-4.8613 4.8592-6.7059l3.9297 0.17534s-4.0954 7.5369 1.9408 8.5432c6.0338 1.004 6.202-4.8637 6.202-4.8637h1.1722s-0.16813 7.5441 3.1851 7.7122c3.3508 0.16812 5.3637-1.0064 5.6975-6.5377l1.8448 0.67011s-1.5997 8.942-7.8786 7.3736c-3.3532-0.83583-4.3596-4.6907-4.1915-5.6971 0 0-2.3444 4.1888-6.8721 2.8486-4.5254-1.3402-4.0233-4.525-4.0233-5.5314 0 0-2.7215 4.9982-6.5382 3.8525-3.3508-1.004-4.6935-2.1784-4.6935-4.525 0 0-1.6766 3.8549-5.0298 3.6892-3.3532-0.16813-5.0274-2.1808-5.1955-4.023 0 0-0.66536 3.6027-5.1979 3.8549-3.0169 0.16813-4.6935-1.3378-5.3637-3.3529 0 0-0.86712 3.6508-5.1955 4.1912-2.6806 0.33625-5.3637-1.1721-6.0362-3.6868 0 0-0.66775 4.8589-5.0274 5.5314-4.3596 0.6701-5.3661-2.3466-5.3661-2.3466s-0.8359 3.8573-4.3572 4.6932c-3.5213 0.83823-5.8681-0.6677-6.7064-4.1888-0.83829-3.5211-0.50201-5.0294-0.50201-5.0294l1.3403 1.8422" fill="#fc0"/>
<path d="m253.55 231.01s0.16814 7.2078 4.8616 6.2015c4.6935-1.0064 4.1915-6.874 4.5278-7.2078 0.33388-0.33626 0.8359-0.33626 0.8359-0.33626s0.67015 5.6995 5.0274 5.0294c4.3596-0.67011 4.1915-7.7098 3.6895-8.8843l1.0064-0.33625s1.6742 8.2142 6.704 7.0421c5.0298-1.1745 4.5278-6.3696 4.5278-6.3696h0.38672s1.1218 5.5314 5.1451 5.1951c4.021-0.33385 4.8616-1.6765 4.3572-7.2078l2.683-0.50198s-1.0064 8.0461 3.8528 7.878c4.864-0.16813 5.0298-4.023 5.3661-4.6931h0.73261s0.27383 5.6995 4.2972 5.6995c4.0233 0 4.8592-4.8613 4.8592-6.7059l3.9297 0.17534s-4.0954 7.5369 1.9408 8.5432c6.0338 1.004 6.202-4.8637 6.202-4.8637h1.1722s-0.16813 7.5441 3.1851 7.7122c3.3508 0.16812 5.3637-1.0064 5.6975-6.5377l1.8448 0.67011s-1.5997 8.942-7.8786 7.3736c-3.3532-0.83583-4.3596-4.6907-4.1915-5.6971 0 0-2.3444 4.1888-6.8721 2.8486-4.5254-1.3402-4.0233-4.525-4.0233-5.5314 0 0-2.7215 4.9982-6.5382 3.8525-3.3508-1.004-4.6935-2.1784-4.6935-4.525 0 0-1.6766 3.8549-5.0298 3.6892-3.3532-0.16813-5.0274-2.1808-5.1955-4.023 0 0-0.66536 3.6027-5.1979 3.8549-3.0169 0.16813-4.6935-1.3378-5.3637-3.3529 0 0-0.86712 3.6508-5.1955 4.1912-2.6806 0.33625-5.3637-1.1721-6.0362-3.6868 0 0-0.66775 4.8589-5.0274 5.5314-4.3596 0.6701-5.3661-2.3466-5.3661-2.3466s-0.8359 3.8573-4.3572 4.6932c-3.5213 0.83823-5.8681-0.6677-6.7064-4.1888-0.83829-3.5211-0.50201-5.0294-0.50201-5.0294l1.3403 1.8422 0.0024 0.0024z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m263.28 231.32c0.91756 0 1.6598-0.74216 1.6598-1.6597 0-0.91509-0.74222-1.6596-1.6598-1.6596-0.91757 0-1.6598 0.74456-1.6598 1.6596 0 0.9175 0.74221 1.6597 1.6598 1.6597" fill="#fc0"/>
<path d="m263.28 231.32c0.91756 0 1.6598-0.74216 1.6598-1.6597 0-0.91509-0.74222-1.6596-1.6598-1.6596-0.91757 0-1.6598 0.74456-1.6598 1.6596 0 0.9175 0.74221 1.6597 1.6598 1.6597z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m285.12 227.83c0.91756 0 1.6598-0.74456 1.6598-1.6596 0-0.91749-0.74222-1.6597-1.6598-1.6597-0.91757 0-1.6598 0.74217-1.6598 1.6597 0 0.91509 0.74221 1.6596 1.6598 1.6596" fill="#fc0"/>
<path d="m285.12 227.83c0.91756 0 1.6598-0.74456 1.6598-1.6596 0-0.91749-0.74222-1.6597-1.6598-1.6597-0.91757 0-1.6598 0.74217-1.6598 1.6597 0 0.91509 0.74221 1.6596 1.6598 1.6596z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m307.26 228.47c0.91757 0 1.6598-0.74456 1.6598-1.6596 0-0.91749-0.74221-1.6597-1.6598-1.6597-0.91756 0-1.6598 0.74217-1.6598 1.6597 0 0.91509 0.74222 1.6596 1.6598 1.6596" fill="#fc0"/>
<path d="m307.26 228.47c0.91757 0 1.6598-0.74456 1.6598-1.6596 0-0.91749-0.74221-1.6597-1.6598-1.6597-0.91756 0-1.6598 0.74217-1.6598 1.6597 0 0.91509 0.74222 1.6596 1.6598 1.6596z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m329.23 232.01c0.91756 0 1.6598-0.74456 1.6598-1.6596 0-0.91749-0.74221-1.6597-1.6598-1.6597-0.91517 0-1.6574 0.74217-1.6574 1.6597 0 0.91509 0.74222 1.6596 1.6574 1.6596" fill="#fc0"/>
<path d="m329.23 232.01c0.91756 0 1.6598-0.74456 1.6598-1.6596 0-0.91749-0.74221-1.6597-1.6598-1.6597-0.91517 0-1.6574 0.74217-1.6574 1.6597 0 0.91509 0.74222 1.6596 1.6574 1.6596z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m295.21 225.98h-1.5084c-0.37712 1.5083-3.5838 2.4523-3.5838 2.4523-0.37712-1.1937 0.43957-2.8918 0.43957-2.8918-3.7087-0.94391-3.7087-2.2649-3.7087-2.2649 0.56447-1.2562 3.9609-1.4435 3.9609-1.4435-0.88154-1.1312-0.69178-2.9542-0.69178-2.9542 2.2627 0.1273 4.1482 2.3874 4.1482 2.3874s-2.2627-1.1289-2.0105-5.1543c0 0 1.2562-0.06004 2.0105 0.75417 0 0 0-4.3353 1.8231-4.8372h0.18735c1.8231 0.50198 1.8231 4.8372 1.8231 4.8372 0.75423-0.81421 2.0105-0.75417 2.0105-0.75417 0.25221 4.023-2.0105 5.1543-2.0105 5.1543s1.8856-2.2601 4.1482-2.3874c0 0 0.18976 1.8206-0.69178 2.9542 0 0 3.3964 0.18734 3.9609 1.4435 0 0 0 1.321-3.7087 2.2649 0 0 0.81669 1.6981 0.43957 2.8918 0 0-3.2067-0.94392-3.5838-2.4523h-3.4565" fill="#fc0"/>
<path d="m295.21 225.98h-1.5084c-0.37712 1.5083-3.5838 2.4523-3.5838 2.4523-0.37712-1.1937 0.43957-2.8918 0.43957-2.8918-3.7087-0.94391-3.7087-2.2649-3.7087-2.2649 0.56447-1.2562 3.9609-1.4435 3.9609-1.4435-0.88154-1.1312-0.69178-2.9542-0.69178-2.9542 2.2627 0.1273 4.1482 2.3874 4.1482 2.3874s-2.2627-1.1289-2.0105-5.1543c0 0 1.2562-0.06004 2.0105 0.75417 0 0 0-4.3353 1.8231-4.8372h0.18735c1.8231 0.50198 1.8231 4.8372 1.8231 4.8372 0.75423-0.81421 2.0105-0.75417 2.0105-0.75417 0.25221 4.023-2.0105 5.1543-2.0105 5.1543s1.8856-2.2601 4.1482-2.3874c0 0 0.18976 1.8206-0.69178 2.9542 0 0 3.3964 0.18734 3.9609 1.4435 0 0 0 1.321-3.7087 2.2649 0 0 0.81669 1.6981 0.43957 2.8918 0 0-3.2067-0.94392-3.5838-2.4523h-3.4565 0.0024z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m296.07 226.83c1.679 0 3.0385-1.3594 3.0385-3.0383 0-1.6765-1.3595-3.0359-3.0385-3.0359-1.6766 0-3.0361 1.3594-3.0361 3.0359 0 1.6789 1.3595 3.0383 3.0361 3.0383" fill="#fff"/>
<path d="m296.07 226.83c1.679 0 3.0385-1.3594 3.0385-3.0383 0-1.6765-1.3595-3.0359-3.0385-3.0359-1.6766 0-3.0361 1.3594-3.0361 3.0359 0 1.6789 1.3595 3.0383 3.0361 3.0383z" fill="none" stroke="#000" stroke-width=".40352"/>
<path d="m296.07 225.46c0.91756 0 1.6622-0.74216 1.6622-1.6597 0-0.91509-0.74463-1.6572-1.6622-1.6572-0.91516 0-1.6574 0.74216-1.6574 1.6572 0 0.9175 0.74222 1.6597 1.6574 1.6597" fill="#fff"/>
<path d="m296.07 225.46c0.91756 0 1.6622-0.74216 1.6622-1.6597 0-0.91509-0.74463-1.6572-1.6622-1.6572-0.91516 0-1.6574 0.74216-1.6574 1.6572 0 0.9175 0.74222 1.6597 1.6574 1.6597z" fill="none" stroke="#000" stroke-width=".2522"/>
<path d="m319.11 227.94 1.4748 0.31944c0.04564 1.554 2.9857 3.1512 2.9857 3.1512 0.61731-1.088 0.17775-2.9182 0.17775-2.9182 3.824-0.13931 4.1002-1.4291 4.1002-1.4291-0.28583-1.3498-3.5646-2.2505-3.5646-2.2505 1.0977-0.9199 1.2995-2.7429 1.2995-2.7429-2.2387-0.35306-4.5614 1.4603-4.5614 1.4603s2.4524-0.62686 3.0553-4.6139c0 0-1.2178-0.32425-2.1234 0.31222 0 0 0.91276-4.2392-0.76143-5.1134l-0.18495-0.04084c-1.888 0.10809-2.8031 4.3473-2.8031 4.3473-0.56448-0.95833-1.8063-1.1625-1.8063-1.1625-1.0953 3.8789 0.87913 5.4641 0.87913 5.4641s-1.3667-2.6108-3.5526-3.2112c0 0-0.56928 1.7413 0.05284 3.0335 0 0-3.358-0.5308-4.1771 0.57884 0 0-0.27624 1.2898 3.149 2.9951 0 0-1.1578 1.4867-1.0401 2.7333 0 0 3.334-0.24499 4.021-1.6404l1.4724 0.31704 1.9072 0.41071" fill="#fc0"/>
<path d="m319.11 227.94 1.4748 0.31944c0.04564 1.554 2.9857 3.1512 2.9857 3.1512 0.61731-1.088 0.17775-2.9182 0.17775-2.9182 3.824-0.13931 4.1002-1.4291 4.1002-1.4291-0.28583-1.3498-3.5646-2.2505-3.5646-2.2505 1.0977-0.9199 1.2995-2.7429 1.2995-2.7429-2.2387-0.35306-4.5614 1.4603-4.5614 1.4603s2.4524-0.62686 3.0553-4.6139c0 0-1.2178-0.32425-2.1234 0.31222 0 0 0.91276-4.2392-0.76143-5.1134l-0.18495-0.04084c-1.888 0.10809-2.8031 4.3473-2.8031 4.3473-0.56448-0.95833-1.8063-1.1625-1.8063-1.1625-1.0953 3.8789 0.87913 5.4641 0.87913 5.4641s-1.3667-2.6108-3.5526-3.2112c0 0-0.56928 1.7413 0.05284 3.0335 0 0-3.358-0.5308-4.1771 0.57884 0 0-0.27624 1.2898 3.149 2.9951 0 0-1.1578 1.4867-1.0401 2.7333 0 0 3.334-0.24499 4.021-1.6404l1.4724 0.31704 1.9072 0.41071" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m318.08 228.6c-1.6382-0.35306-2.6806-1.9695-2.3275-3.6099 0.35309-1.638 1.9696-2.6828 3.6102-2.3274 1.6406 0.35307 2.683 1.9695 2.3299 3.6099-0.35549 1.638-1.972 2.6828-3.6126 2.3274" fill="#fff"/>
<path d="m318.08 228.6c-1.6382-0.35306-2.6806-1.9695-2.3275-3.6099 0.35309-1.638 1.9696-2.6828 3.6102-2.3274 1.6406 0.35307 2.683 1.9695 2.3299 3.6099-0.35549 1.638-1.972 2.6828-3.6126 2.3274z" fill="none" stroke="#000" stroke-width=".40352"/>
<path d="m318.38 227.25c-0.89835-0.19214-1.4676-1.076-1.2731-1.9719 0.19216-0.89347 1.0761-1.4651 1.972-1.2706 0.89595 0.19215 1.4652 1.0784 1.2731 1.9719-0.19456 0.89588-1.0785 1.4651-1.972 1.2706" fill="#fff"/>
<path d="m318.38 227.25c-0.89835-0.19214-1.4676-1.076-1.2731-1.9719 0.19216-0.89347 1.0761-1.4651 1.972-1.2706 0.89595 0.19215 1.4652 1.0784 1.2731 1.9719-0.19456 0.89588-1.0785 1.4651-1.972 1.2706z" fill="none" stroke="#000" stroke-width=".2522"/>
<path d="m272.27 227.65-1.4964 0.19695c-0.17534 1.5468-3.2307 2.9038-3.2307 2.9038-0.53084-1.1337 0.05525-2.923 0.05525-2.923-3.8-0.44674-3.9753-1.7557-3.9753-1.7557 0.39633-1.3186 3.7351-1.9551 3.7351-1.9551-1.0208-1.004-1.0737-2.8365-1.0737-2.8365 2.2603-0.17054 4.4293 1.8206 4.4293 1.8206s-2.3924-0.82382-2.6734-4.8445c0 0 1.2394-0.22817 2.0945 0.48277 0 0-0.57167-4.2992 1.165-5.039l0.18736-0.02162c1.8736 0.25459 2.4452 4.5562 2.4452 4.5562 0.64133-0.90788 1.8952-1.0136 1.8952-1.0136 0.78065 3.9558-1.3139 5.3729-1.3139 5.3729s1.5709-2.4883 3.7976-2.911c0 0 0.42755 1.7798-0.29545 3.0167 0 0 3.3892-0.2618 4.117 0.91029 0 0 0.17295 1.309-3.3796 2.7333 0 0 1.0352 1.5732 0.81907 2.8077 0 0-3.3027-0.51158-3.8768-1.9575l-3.4252 0.45635" fill="#fc0"/>
<path d="m272.27 227.65-1.4964 0.19695c-0.17534 1.5468-3.2307 2.9038-3.2307 2.9038-0.53084-1.1337 0.05525-2.923 0.05525-2.923-3.8-0.44674-3.9753-1.7557-3.9753-1.7557 0.39633-1.3186 3.7351-1.9551 3.7351-1.9551-1.0208-1.004-1.0737-2.8365-1.0737-2.8365 2.2603-0.17054 4.4293 1.8206 4.4293 1.8206s-2.3924-0.82382-2.6734-4.8445c0 0 1.2394-0.22817 2.0945 0.48277 0 0-0.57167-4.2992 1.165-5.039l0.18736-0.02162c1.8736 0.25459 2.4452 4.5562 2.4452 4.5562 0.64133-0.90788 1.8952-1.0136 1.8952-1.0136 0.78065 3.9558-1.3139 5.3729-1.3139 5.3729s1.5709-2.4883 3.7976-2.911c0 0 0.42755 1.7798-0.29545 3.0167 0 0 3.3892-0.2618 4.117 0.91029 0 0 0.17295 1.309-3.3796 2.7333 0 0 1.0352 1.5732 0.81907 2.8077 0 0-3.3027-0.51158-3.8768-1.9575l-3.4252 0.45635" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m273.23 228.39c1.6646-0.22097 2.8344-1.7485 2.611-3.413-0.22098-1.6621-1.7486-2.8317-3.4108-2.6084-1.6646 0.22096-2.832 1.7485-2.611 3.4106 0.22098 1.662 1.7486 2.8317 3.4108 2.6108" fill="#fff"/>
<path d="m273.23 228.39c1.6646-0.22097 2.8344-1.7485 2.611-3.413-0.22098-1.6621-1.7486-2.8317-3.4108-2.6084-1.6646 0.22096-2.832 1.7485-2.611 3.4106 0.22098 1.662 1.7486 2.8317 3.4108 2.6108z" fill="none" stroke="#000" stroke-width=".40352"/>
<path d="m273.05 227.02c0.90796-0.12009 1.5469-0.95352 1.4244-1.8638-0.12011-0.90789-0.9536-1.5444-1.8616-1.4267-0.91035 0.12249-1.5493 0.95593-1.4268 1.8638 0.1201 0.91029 0.95599 1.5468 1.864 1.4267" fill="#fff"/>
<path d="m273.05 227.02c0.90796-0.12009 1.5469-0.95352 1.4244-1.8638-0.12011-0.90789-0.9536-1.5444-1.8616-1.4267-0.91035 0.12249-1.5493 0.95593-1.4268 1.8638 0.1201 0.91029 0.95599 1.5468 1.864 1.4267z" fill="none" stroke="#000" stroke-width=".2522"/>
<path d="m340.16 234.1s-0.76142-1.9983-2.4428-1.2802c-1.6814 0.71815-1.5084 0.97994-3.0121 0.88868 0 0-0.58609-1.7966 0.15372-2.5724 0 0-2.402-0.89828-2.9064-3.0071 0 0 1.2875-1.4939 4.338-0.9367 0 0-0.09609-1.5156 0.32186-2.1833 0 0 3.2763 1.0136 3.2931 2.8414 0 0-0.98242-3.5859 0.74703-6.1895 0 0 1.5349 0.6581 1.4364 2.2913 0 0 0.70619-3.3601 5.2484-2.4571 0 0-2.462 2.1832-2.5845 3.1824-0.1225 0.99916-2.1762 2.702-2.2122 3.2689-0.03123 0.56443-0.28104 1.5564-0.88394 2.1496-0.6029 0.59324-0.66295 1.5996-0.61491 1.9142 0.04083 0.31943-0.10329 1.6957-0.88154 2.0896" fill="#fc0"/>
<path d="m340.16 234.1s-0.76142-1.9983-2.4428-1.2802c-1.6814 0.71815-1.5084 0.97994-3.0121 0.88868 0 0-0.58609-1.7966 0.15372-2.5724 0 0-2.402-0.89828-2.9064-3.0071 0 0 1.2875-1.4939 4.338-0.9367 0 0-0.09609-1.5156 0.32186-2.1833 0 0 3.2763 1.0136 3.2931 2.8414 0 0-0.98242-3.5859 0.74703-6.1895 0 0 1.5349 0.6581 1.4364 2.2913 0 0 0.70619-3.3601 5.2484-2.4571 0 0-2.462 2.1832-2.5845 3.1824-0.1225 0.99916-2.1762 2.702-2.2122 3.2689-0.03123 0.56443-0.28104 1.5564-0.88394 2.1496-0.6029 0.59324-0.66295 1.5996-0.61491 1.9142 0.04083 0.31943-0.10329 1.6957-0.88154 2.0896z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m337.7 230.12c0.32186-1.6452 1.9168-2.7212 3.5622-2.3994 0.46839 0.08886 0.88634 0.28581 1.2418 0.55482-0.09127 0.56923-0.34588 1.3354-0.8455 1.8278-0.6029 0.59324-0.66295 1.5996-0.61731 1.9142 0.03362 0.24978-0.05525 1.1481-0.46839 1.7173-0.15613-0.0072-0.31466-0.02161-0.4708-0.05284-1.643-0.31944-2.719-1.9142-2.402-3.5619" fill="#fff"/>
<path d="m337.7 230.12c0.32186-1.6452 1.9168-2.7212 3.5622-2.3994 0.46839 0.08886 0.88634 0.28581 1.2418 0.55482-0.09127 0.56923-0.34588 1.3354-0.8455 1.8278-0.6029 0.59324-0.66295 1.5996-0.61731 1.9142 0.03362 0.24978-0.05525 1.1481-0.46839 1.7173-0.15613-0.0072-0.31466-0.02161-0.4708-0.05284-1.643-0.31944-2.719-1.9142-2.402-3.5619z" fill="none" stroke="#000" stroke-width=".40352"/>
<path d="m339.06 230.38c0.17295-0.89827 1.0449-1.4867 1.9456-1.3114 0.40834 0.07926 0.74703 0.30743 0.98722 0.61487-0.09607 0.1489-0.20417 0.29301-0.32907 0.41551-0.6029 0.59324-0.66295 1.5996-0.61731 1.9142 0.00721 0.06485 0.00721 0.17532-0.0048 0.30502-0.21379 0.04564-0.44197 0.05284-0.67017 0.00721-0.90074-0.17533-1.4868-1.0448-1.3115-1.9455" fill="#fff"/>
<path d="m339.06 230.38c0.17295-0.89827 1.0449-1.4867 1.9456-1.3114 0.40834 0.07926 0.74703 0.30743 0.98722 0.61487-0.09607 0.1489-0.20417 0.29301-0.32907 0.41551-0.6029 0.59324-0.66295 1.5996-0.61731 1.9142 0.00721 0.06485 0.00721 0.17532-0.0048 0.30502-0.21379 0.04564-0.44197 0.05284-0.67017 0.00721-0.90074-0.17533-1.4868-1.0448-1.3115-1.9455z" fill="none" stroke="#000" stroke-width=".2522"/>
<path d="m252.15 233.27s0.87912-1.9479 2.5125-1.1313c1.6358 0.81662 1.446 1.0688 2.9569 1.0688 0 0 0.68937-1.7605 0-2.5772 0 0 2.45-0.75416 3.0794-2.8293 0 0-1.1938-1.5708-4.2756-1.1937 0 0 0.18975-1.5108-0.18736-2.2001 0 0-3.3316 0.81661-3.4589 2.6396 0 0 1.1962-3.5211-0.37711-6.2231 0 0-1.5709 0.56443-1.5709 2.2001 0 0-0.50201-3.3962-5.0922-2.7669 0 0 2.3251 2.3274 2.39 3.3313 0.06246 1.0064 2.0105 2.8293 2.0105 3.3962 0 0.56443 0.18976 1.5708 0.75422 2.2001 0.56688 0.62928 0.56688 1.6332 0.50202 1.9479-0.06245 0.31223 0 1.6957 0.75664 2.1376" fill="#fc0"/>
<path d="m252.15 233.27s0.87912-1.9479 2.5125-1.1313c1.6358 0.81662 1.446 1.0688 2.9569 1.0688 0 0 0.68937-1.7605 0-2.5772 0 0 2.45-0.75416 3.0794-2.8293 0 0-1.1938-1.5708-4.2756-1.1937 0 0 0.18975-1.5108-0.18736-2.2001 0 0-3.3316 0.81661-3.4589 2.6396 0 0 1.1962-3.5211-0.37711-6.2231 0 0-1.5709 0.56443-1.5709 2.2001 0 0-0.50201-3.3962-5.0922-2.7669 0 0 2.3251 2.3274 2.39 3.3313 0.06246 1.0064 2.0105 2.8293 2.0105 3.3962 0 0.56443 0.18976 1.5708 0.75422 2.2001 0.56688 0.62928 0.56688 1.6332 0.50202 1.9479-0.06245 0.31223 0 1.6957 0.75664 2.1376z" fill="#bcac0b" stroke="#000" stroke-width=".65332"/>
<path d="m254.84 229.44c-0.22098-1.6645-1.7462-2.8317-3.4108-2.6108-0.4708 0.06244-0.90076 0.23298-1.2731 0.48035 0.05765 0.57404 0.26422 1.3522 0.73501 1.8758 0.56688 0.62928 0.56688 1.6332 0.50202 1.9479-0.04804 0.24498-0.01441 1.1481 0.36751 1.7389 0.15373 0.0024 0.31226 0 0.47079-0.02162 1.6622-0.22096 2.832-1.7485 2.6086-3.4106" fill="#fff"/>
<path d="m254.84 229.44c-0.22098-1.6645-1.7462-2.8317-3.4108-2.6108-0.4708 0.06244-0.90076 0.23298-1.2731 0.48035 0.05765 0.57404 0.26422 1.3522 0.73501 1.8758 0.56688 0.62928 0.56688 1.6332 0.50202 1.9479-0.04804 0.24498-0.01441 1.1481 0.36751 1.7389 0.15373 0.0024 0.31226 0 0.47079-0.02162 1.6622-0.22096 2.832-1.7485 2.6086-3.4106z" fill="none" stroke="#000" stroke-width=".40352"/>
<path d="m253.48 229.62c-0.12011-0.90788-0.956-1.5468-1.864-1.4267-0.41554 0.05764-0.76623 0.2642-1.0232 0.55481 0.08887 0.15612 0.18495 0.30503 0.30264 0.43713 0.56688 0.62928 0.56688 1.6332 0.50202 1.9479-0.01201 0.06244-0.01681 0.17053-0.01441 0.30263 0.21138 0.06004 0.43957 0.07926 0.67016 0.05043 0.90795-0.12249 1.5469-0.95592 1.4268-1.8662" fill="#fff"/>
<path d="m253.48 229.62c-0.12011-0.90788-0.956-1.5468-1.864-1.4267-0.41554 0.05764-0.76623 0.2642-1.0232 0.55481 0.08887 0.15612 0.18495 0.30503 0.30264 0.43713 0.56688 0.62928 0.56688 1.6332 0.50202 1.9479-0.01201 0.06244-0.01681 0.17053-0.01441 0.30263 0.21138 0.06004 0.43957 0.07926 0.67016 0.05043 0.90795-0.12249 1.5469-0.95592 1.4268-1.8662z" fill="none" stroke="#000" stroke-width=".2522"/>
<path d="m257.24 251.62s33.748-13.22 76.384 0.28342" fill="none" stroke="#000" stroke-width="1.5084"/>
<path d="m338.38 241.1c-47.11-14.92-84.661-0.83823-84.661-0.83823" fill="none" stroke="#000" stroke-width=".502"/>
<path d="m295.97 237.8-3.7735 1.8854 3.3964 2.1376 4.0234-2.0127-3.6462-2.0103" fill="#f00"/>
<path d="m295.97 237.8-3.7735 1.8854 3.3964 2.1376 4.0234-2.0127-3.6462-2.0103" fill="none" stroke="#000" stroke-width=".502"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 49 KiB

1
public/flags/skull.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M27.865 16.751c0-6.242-4.411-9.988-9.927-9.988s-9.835 3.746-9.835 9.988c0 3.48-.103 6.485 3.897 7.89v2.722c0 1.034.966 1.872 2 1.872 1.035 0 2-.838 2-1.872v-1.97 1.97c0 1.034.965 1.872 2 1.872 1.036 0 2-.838 2-1.872v-1.97 1.97c0 1.034.966 1.872 2 1.872s2-.838 2-1.872v-2.722c4-1.405 3.865-4.41 3.865-7.89z"/><circle fill="#292F33" cx="13.629" cy="15.503" r="3.121"/><path fill="#292F33" d="M25.488 15.503c0 1.724 0 3.121-3.121 3.121-3.12 0-3.12-1.397-3.12-3.121s1.396-3.121 3.12-3.121c1.725 0 3.121 1.397 3.121 3.121zm-6.301 5.656c-.157-.382-.626-.662-1.189-.662-.561 0-1.031.28-1.188.662-.394.11-.685.469-.685.898 0 .517.419.936.937.936.409 0 .753-.263.88-.628.019 0 .037.004.056.004.019 0 .037-.004.057-.004.128.365.472.628.88.628.517 0 .936-.419.936-.936 0-.429-.291-.786-.684-.898z"/><path d="M11 27c0-.367.075-.713.195-1.038-.984-.447-1.831-1.082-2.503-1.97-1.107.969-2.163 1.876-3.127 2.695C4.985 26.26 4.275 26 3.5 26 1.567 26 0 27.566 0 29.5c0 1.778 1.33 3.229 3.046 3.454C3.271 34.671 4.722 36 6.5 36c1.933 0 3.5-1.566 3.5-3.5 0-.775-.26-1.485-.686-2.065.6-.706 1.246-1.46 1.931-2.25C11.088 27.821 11 27.421 11 27zm16.872-15.482c.884-.769 1.729-1.495 2.515-2.163.569.403 1.262.645 2.013.645 1.934 0 3.5-1.567 3.5-3.5 0-1.743-1.277-3.177-2.945-3.444C32.735 1.335 31.281 0 29.5 0 27.566 0 26 1.567 26 3.5c0 .775.26 1.485.687 2.065-.594.7-1.233 1.445-1.911 2.227 1.3.871 2.361 2.095 3.096 3.726zM3.5 10c.775 0 1.485-.26 2.065-.687.799.679 1.661 1.419 2.564 2.204.735-1.631 1.795-2.855 3.096-3.726-.679-.781-1.317-1.527-1.912-2.226.427-.58.687-1.29.687-2.065C10 1.567 8.433 0 6.5 0 4.722 0 3.271 1.33 3.046 3.046 1.33 3.271 0 4.722 0 6.5 0 8.433 1.567 10 3.5 10zm28.9 16c-.752 0-1.444.242-2.014.645-.952-.809-1.99-1.701-3.079-2.653-.672.889-1.519 1.523-2.503 1.971.121.324.196.67.196 1.037 0 .421-.088.821-.245 1.185.685.79 1.331 1.544 1.931 2.25-.426.58-.686 1.29-.686 2.065 0 1.934 1.566 3.5 3.5 3.5 1.781 0 3.235-1.334 3.455-3.056 1.668-.267 2.945-1.701 2.945-3.444 0-1.934-1.566-3.5-3.5-3.5z" fill="#AAB8C2"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

76
public/flags/tokiPona.svg Normal file
View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="600"
height="400"
version="1.1"
id="svg838"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs842" />
<rect
style="fill:#c8e1ed;fill-opacity:1.0;stroke-width:5.66929;stroke-linecap:round;stroke-linejoin:bevel;stop-color:#000000"
id="rect4684"
width="600"
height="400"
x="0"
y="0" />
<g
transform="matrix(0.33755415,0,0,-0.33755415,188.33065,342.42618)"
fill="#000099"
stroke="none"
id="g1364">
<g
id="g1755"
transform="matrix(1.0249506,0,0,1.0249506,-8.2541353,-9.3390257)">
<path
fill="#000099"
stroke="none"
d="m 302,838 c -14,-14 -16,-126 -3,-147 5,-8 16,-11 25,-8 12,5 16,21 16,71 0,89 -10,112 -38,84 z"
id="path1352"
style="fill:#11119a;fill-opacity:1" />
<path
fill="#000099"
stroke="none"
d="m 521,775 c -27,-57 -32,-108 -10,-113 18,-3 84,122 75,144 -11,30 -44,15 -65,-31 z"
id="path1354"
style="fill:#11119a;fill-opacity:1" />
<path
fill="#000099"
stroke="none"
d="M 34,797 C 26,775 93,639 110,643 148,650 99,810 59,810 48,810 37,804 34,797 Z"
id="path1356"
style="fill:#11119a;fill-opacity:1" />
<path
fill="#000099"
stroke="none"
d="M 254,590 C 204,583 126,538 79,490 -19,390 14,144 136,67 199,27 243,17 336,23 c 125,7 212,62 275,172 53,92 32,220 -51,317 -62,71 -170,99 -306,78 z"
id="path1358"
style="fill:#11119a;fill-opacity:1" />
<path
fill="#ffff63"
stroke="none"
d="M 443,539 C 490,526 555,469 581,419 605,371 607,272 584,229 562,186 502,121 467,104 330,33 190,49 116,145 77,197 65,237 65,320 c 1,77 19,113 82,161 80,63 198,86 296,58 z"
id="path1360"
style="fill:#ffff77;fill-opacity:1" />
<path
fill="#000099"
stroke="none"
d="m 462,367 c -5,-7 -15,-28 -21,-48 -21,-67 -100,-120 -144,-98 -30,15 -65,56 -88,102 -21,40 -51,48 -57,14 -5,-26 53,-111 96,-141 89,-62 204,-7 252,119 15,40 -15,81 -38,52 z"
id="path1362"
style="fill:#11119a;fill-opacity:1" />
</g>
</g>
</svg>
<!--
len pi toki pona
COPYRIGHT:
Spencer van der Meulen (jan Pensa) ©2021
Licence: Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Based on:
- original logo design by Sonja Lang.
- Toki Pona logo vector image from https://commons.wikimedia.org/wiki/File:Toki_pona.svg by Eequor.
- colors from image on https://www.teepublic.com/user/toki-pona by Sonja Lang.
-->

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
public/flixico.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg fill="#fff" height="800px" width="800px" version="1.1" id="Capa_1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
viewBox="0 0 298 298" xml:space="preserve">
<g>
<path d="M289.5,140.5h-24.606l11.031-11.03c2.93-2.929,2.93-7.678,0.001-10.606c-2.929-2.929-7.678-2.93-10.606-0.001
L243.681,140.5h-36.369l16.182-17.392c2.821-3.032,2.65-7.777-0.383-10.6c-1.243-1.156-2.775-1.802-4.345-1.961
c-0.952-0.047-21.495-0.003-21.495-0.003L221.315,86.5H251.5c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5h-15.186l17.69-17.69
c2.929-2.93,2.929-7.678,0-10.608c-2.93-2.928-7.844-2.928-10.774,0L225.167,61.1V45.5c0-4.143-3.357-7.5-7.5-7.5
c-4.143,0-7.5,3.357-7.5,7.5v30.601l-24.837,25.004l-0.415-22.645c-0.001-0.036,0.035-0.07,0.034-0.106
c-0.035-1.824-0.704-3.641-2.07-5.059c-2.873-2.982-7.778-3.07-10.761-0.194l-15.951,15.226V53.107l21.47-21.304
c2.929-2.93,3.012-7.678,0.083-10.607c-2.93-2.928-7.803-2.928-10.732,0l-10.821,10.696V7.5c0-4.143-3.357-7.5-7.5-7.5
c-4.143,0-7.5,3.357-7.5,7.5v24.393l-10.53-10.696c-2.93-2.928-7.594-2.928-10.524,0c-2.929,2.93-3.054,7.678-0.125,10.607
l21.179,21.304v35.421l-16.176-15.475c-3.009-2.847-7.67-2.718-10.52,0.289c-1.075,1.136-1.683,2.52-1.914,3.955
c-0.142,0.583-0.203,1.188-0.201,1.811l-0.088,21.229l-25.1-24.944V45.5c0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5v14.894
L55.142,43.202c-2.93-2.928-7.594-2.928-10.524,0c-2.929,2.93-2.887,7.678,0.042,10.608L62.392,71.5H46.5
c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h30.892l24.744,24.744l-23.057,0.831c-4.021,0.146-7.524,3.435-7.563,7.418
c-0.004,0.112-0.349,0.225-0.349,0.337c0,0.003,0,0.007,0,0.011c0,0.008,0.345,0.017,0.345,0.024
c0.045,1.875,0.955,3.736,2.395,5.158L89.748,140.5H55.025l-21.638-21.638c-2.93-2.928-7.678-2.928-10.607,0
c-2.929,2.93-2.929,7.678,0,10.607l11.03,11.03H8.5c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h25.02L22.78,166.239
c-2.929,2.93-2.929,7.678,0,10.607c1.465,1.464,3.385,2.196,5.304,2.196c1.919,0,3.839-0.732,5.304-2.196L54.734,155.5h35.027
l-15.253,16.394c-2.821,3.032-2.65,7.777,0.383,10.6c1.444,1.344,3.277,2.009,5.106,2.009c0.034,0,0.068-0.005,0.103-0.005
c0.022,0,0.044,0.003,0.065,0.003c0.018,0,0.037,0,0.055,0l22.005-0.125L77.101,209.5H46.5c-4.143,0-7.5,3.357-7.5,7.5
s3.357,7.5,7.5,7.5h15.601l-17.399,17.399c-2.929,2.93-2.929,7.678,0,10.607c1.465,1.464,3.385,2.196,5.304,2.196
c1.919,0,3.672-0.732,5.137-2.196l17.025-17.191V250.5c0,4.143,3.357,7.5,7.5,7.5s7.5-3.357,7.5-7.5v-30.185l25.445-25.278
l0.977,24.39c0.148,4.046,3.517,7.306,7.532,7.225c1.364-0.027,2.844-0.465,4.312-1.543c1.063-0.781,15.734-15.812,15.734-15.812
v35.385l-20.971,21.137c-2.93,2.929-2.846,7.678,0.082,10.607c1.465,1.465,3.425,2.197,5.345,2.197
c1.919,0,3.693-0.732,5.157-2.196l10.387-10.532V290.5c0,4.143,3.357,7.5,7.5,7.5c4.143,0,7.5-3.357,7.5-7.5v-25.31l11.404,11.237
c1.465,1.464,3.468,2.196,5.387,2.196c1.919,0,3.881-0.732,5.345-2.196c2.929-2.93,2.783-7.678-0.146-10.607l-21.99-21.845v-35.7
c0,0,13.729,12.896,15.896,14.976c2.167,2.08,3.942,3.25,6.525,3.25c0.015,0,0.03,0,0.046,0c4.142,0,7.48-3.604,7.455-7.746
l-0.306-23.696l24.384,24.551V250.5c0,4.143,3.357,7.5,7.5,7.5c4.143,0,7.5-3.357,7.5-7.5v-15.891l18.064,17.897
c1.465,1.464,3.467,2.196,5.387,2.196c1.919,0,3.88-0.732,5.345-2.196c2.929-2.93,2.95-7.678,0.021-10.607L236.605,224.5H251.5
c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5h-29.894l-25.742-25.742l23.059-0.831c0.082-0.003,0.162-0.016,0.243-0.021
c0.03-0.002,0.06-0.005,0.09-0.008c3.977-0.319,7.037-3.709,6.892-7.736c-0.087-2.424-1.32-4.531-3.155-5.837L209.138,155.5h34.835
l21.345,21.346c1.465,1.465,3.384,2.197,5.304,2.197c1.919,0,3.839-0.732,5.303-2.196c2.93-2.929,2.93-7.678,0.001-10.606
l-10.74-10.74H289.5c4.143,0,7.5-3.357,7.5-7.5S293.643,140.5,289.5,140.5z M200.795,125.483L186.823,140.5h-19.507l15.002-15.002
L200.795,125.483z M170.21,95.784l0.356,20.002l-14.399,14.315V109.16L170.21,95.784z M127.263,95.865l13.904,13.323v20.205
l-13.925-14.008L127.263,95.865z M96.862,126.444l19.762-0.712l14.768,14.768h-20.299L96.862,126.444z M97.246,169.477
L110.25,155.5h20.851l-13.841,13.841L97.246,169.477z M127.863,201.599l-0.854-21.042l14.158-14.241v21.604L127.863,201.599z
M170.819,201.264l-14.652-13.478v-22.179l14.442,14.359L170.819,201.264z M200.991,168.564l-19.614,0.706l-13.77-13.77h20.292
L200.991,168.564z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
public/mstile-150x150.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

1
public/ping.txt Normal file
View File

@ -0,0 +1 @@
pong

3
public/robots.txt Normal file
View File

@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

View File

@ -0,0 +1,18 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="528.000000pt" height="528.000000pt" viewBox="0 0 528.000000 528.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.14, written by Peter Selinger 2001-2017
</metadata>
<g transform="translate(0.000000,528.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M430 5266 c-152 -33 -307 -156 -373 -297 -20 -42 -41 -105 -47 -140
-8 -45 -10 -697 -8 -2229 3 -2105 4 -2166 22 -2215 77 -200 206 -319 400 -369
53 -14 305 -16 2210 -16 2367 0 2211 -4 2346 62 136 66 261 231 289 383 8 42
11 686 11 2200 0 2355 4 2200 -62 2335 -65 135 -231 261 -378 289 -85 16
-4338 13 -4410 -3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 840 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

21
src/@types/country-language.d.ts vendored Normal file
View File

@ -0,0 +1,21 @@
declare module "@ladjs/country-language" {
export interface LanguageObj {
countries: Array<{
code_2: string;
code_3: string;
numCode: string;
}>;
direction: "RTL" | "LTR";
name: string[];
nativeName: string[];
iso639_1: string;
}
type Callback<T> = (err: null | string, result: null | T) => void;
declare namespace lib {
function getLanguage(locale: string, cb: Callback<LanguageObj>): void;
}
export = lib;
}

9
src/assets/README.md Normal file
View File

@ -0,0 +1,9 @@
# About the languages
Locales are difficult, here is some guidance.
## Process on adding new languages
1. Use Weblate to add translations, see contributing guidelines.
2. Add your language to `@/assets/languages.ts`. Must be in ISO format (ISO-639 for language and ISO-3166 for country/region). For joke languages, use any format.
3. If the language code doesn't have a region specified (Such as in `pt-BR`, `BR` being the region), add a default region in `@/utils/language.ts` at `defaultLanguageCodes`
4. If the language code doesn't contain a region (Such as in `zh-Hant`), add a default country in `@/utils/language.ts` at `countryPriority`.

233
src/assets/css/index.css Normal file
View File

@ -0,0 +1,233 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
html,
body {
@apply bg-background-main font-open-sans text-type-text;
min-height: 100vh;
min-height: 100dvh;
}
html[data-full],
html[data-full] body {
overscroll-behavior-y: none;
}
body[data-no-scroll] {
overflow-y: hidden;
height: 100vh;
}
#root {
padding: 0.05px;
min-height: 100vh;
min-height: 100dvh;
width: 100%;
}
body[data-no-select] {
user-select: none;
}
html[data-no-scroll], html[data-no-scroll] body {
overflow: hidden;
}
.roll {
animation: roll 1s;
}
.roll-infinite {
animation: roll 2s infinite;
}
@keyframes roll {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.line-clamp {
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}
.google-cast-button:not(.casting) google-cast-launcher {
@apply brightness-[500];
}
.is-mobile-view .overflow-y-auto {
height: 60vh;
}
.h-screen {
height: 100vh;
height: 100dvh;
}
.min-h-screen {
min-height: 100vh;
min-height: 100dvh;
}
/*generated with Input range slider CSS style generator (version 20211225)
https://toughengineer.github.io/demo/slider-styler*/
:root {
--slider-height: 0.25rem;
--slider-border-radius: 1em;
--slider-progress-background: #8652bb;
}
input[type=range].styled-slider {
height: var(--slider-height);
-webkit-appearance: none;
appearance: none;
border-radius: var(--slider-border-radius);
background: #1C161B;
}
/*progress support*/
input[type=range].styled-slider.slider-progress {
--range: calc(var(--max) - var(--min));
--ratio: calc((var(--value) - var(--min)) / var(--range));
--sx: calc(0.5 * 1rem + var(--ratio) * (100% - 1rem));
}
/*webkit*/
input[type=range].styled-slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 1rem;
height: 1rem;
border-radius: var(--slider-border-radius);
background: #FFFFFF;
border: none;
box-shadow: 0 0 2px #000000;
margin-top: calc(0.25em * 0.5 - 1rem * 0.5);
}
input[type=range].styled-slider::-webkit-slider-runnable-track {
height: var(--slider-height);
border: none;
box-shadow: none;
border-radius: var(--slider-border-radius);
}
input[type=range].styled-slider::-webkit-slider-thumb:hover {
background: #DCDCDC;
}
input[type=range].styled-slider.slider-progress::-webkit-slider-runnable-track {
background: linear-gradient(var(--slider-progress-background), var(--slider-progress-background)) 0/var(--sx) 100% no-repeat, #1C161B;
}
/*mozilla*/
input[type=range].styled-slider::-moz-range-thumb {
width: 1rem;
height: 1rem;
border-radius: var(--slider-border-radius);
background: #FFFFFF;
border: none;
box-shadow: 0 0 2px #000000;
}
input[type=range].styled-slider::-moz-range-track {
height: var(--slider-height);
border: none;
border-radius: var(--slider-border-radius);
background: #1C161B;
box-shadow: none;
}
input[type=range].styled-slider::-moz-range-thumb:hover {
background: #DCDCDC;
}
input[type=range].styled-slider.slider-progress::-moz-range-track {
background: linear-gradient(var(--slider-progress-background), var(--slider-progress-background)) 0/var(--sx) 100% no-repeat, #1C161B;
}
/*ms*/
input[type=range].styled-slider::-ms-fill-upper {
background: transparent;
border-color: transparent;
}
input[type=range].styled-slider::-ms-fill-lower {
background: transparent;
border-color: transparent;
}
input[type=range].styled-slider::-ms-thumb {
width: 1rem;
height: 1rem;
border-radius: var(--slider-border-radius);
background: #FFFFFF;
border: none;
box-shadow: 0 0 2px #000000;
margin-top: 0;
box-sizing: border-box;
}
input[type=range].styled-slider::-ms-track {
height: var(--slider-height);
border-radius: var(--slider-border-radius);
background: #1C161B;
border: none;
box-shadow: none;
box-sizing: border-box;
}
input[type=range].styled-slider::-ms-thumb:hover {
background: #DCDCDC;
}
input[type=range].styled-slider.slider-progress::-ms-fill-lower {
height: var(--slider-height);
border-radius: var(--slider-border-radius) 0 0 5px;
margin: -undefined 0 -undefined -undefined;
background: var(--slider-progress-background);
border: none;
border-right-width: 0;
}
::-webkit-scrollbar-track {
background-color: transparent;
}
::-webkit-scrollbar-thumb {
background-color: theme("colors.video.context.border");
border: 5px solid transparent;
border-left: 0;
background-clip: content-box;
}
::-webkit-scrollbar {
/* For some reason the styles don't get applied without the width */
width: 13px;
}
.grecaptcha-badge {
display: none !important;
}
.tabbable:focus-visible {
outline: 2px solid theme('colors.themePreview.primary');
box-shadow: 0 0 10px theme('colors.themePreview.secondary');
}
[dir="rtl"] .transform {
/* Invert horizontal X offset on transform (Tailwind RTL plugin does the rest) */
transform: translate(calc(var(--tw-translate-x) * -1), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important;
}
[dir="ltr"] .transform {
/* default - otherwise it overwrites*/
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) !important;
}

88
src/assets/languages.ts Normal file
View File

@ -0,0 +1,88 @@
import ar from "@/assets/locales/ar.json";
import bg from "@/assets/locales/bg.json";
import bn from "@/assets/locales/bn.json";
import ca from "@/assets/locales/ca.json";
import cs from "@/assets/locales/cs.json";
import de from "@/assets/locales/de.json";
import el from "@/assets/locales/el.json";
import en from "@/assets/locales/en.json";
import es from "@/assets/locales/es.json";
import et from "@/assets/locales/et.json";
import fa from "@/assets/locales/fa.json";
import fr from "@/assets/locales/fr.json";
import gl from "@/assets/locales/gl.json";
import gu from "@/assets/locales/gu.json";
import he from "@/assets/locales/he.json";
import hi from "@/assets/locales/hi.json";
import id from "@/assets/locales/id.json";
import is from "@/assets/locales/is-IS.json";
import it from "@/assets/locales/it.json";
import ja from "@/assets/locales/ja.json";
import ko from "@/assets/locales/ko.json";
import lv from "@/assets/locales/lv.json";
import minion from "@/assets/locales/minion.json";
import ne from "@/assets/locales/ne.json";
import nl from "@/assets/locales/nl.json";
import pa from "@/assets/locales/pa.json";
import pirate from "@/assets/locales/pirate.json";
import pl from "@/assets/locales/pl.json";
import ptbr from "@/assets/locales/pt-BR.json";
import ptpt from "@/assets/locales/pt-PT.json";
import ro from "@/assets/locales/ro.json";
import ru from "@/assets/locales/ru.json";
import sl from "@/assets/locales/sl.json";
import sv from "@/assets/locales/sv.json";
import ta from "@/assets/locales/ta.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 zhhant from "@/assets/locales/zh-Hant.json";
import zh from "@/assets/locales/zh.json";
export const locales = {
en,
ca,
cs,
de,
fr,
it,
nl,
pl,
tr,
vi,
zh,
he,
sv,
pirate,
minion,
lv,
th,
ne,
ar,
es,
et,
tok,
hi,
"pt-BR": ptbr,
"pt-PT": ptpt,
uk,
bg,
bn,
el,
fa,
gu,
id,
ja,
ko,
sl,
ta,
"zh-HANT": zhhant,
is,
ru,
gl,
pa,
ro,
};
export type Locales = keyof typeof locales;

416
src/assets/locales/ar.json Normal file
View File

@ -0,0 +1,416 @@
{
"about": {
"description": "sudo-flix هو تطبيق ويب يبحث في الإنترنت عن بثوث. يهدف الفريق إلى تبني نهج معظمه بسيط في استهلاك المحتوى.",
"faqTitle": "الأسئلة الشائعة",
"q1": {
"body": "لا يستضيف sudo-flix أي محتوى. عندما تنقر فوق شيء للمشاهدة، يتم البحث على الإنترنت عن الوسائط المحددة (يمكنك رؤية المصدر الذي تستخدمه على شاشة التحميل وفي علامة تبويب \"مصادر الفيديو\"). لا يتم رفع الوسائط أبدًا عن طريق sudo-flix، كل شيء يتم من خلال آلية البحث هذه.",
"title": "من أين يأتي المحتوى؟"
},
"q2": {
"body": "لا يمكن طلب عرض أو فيلم، لأن sudo-flix لا يدير أي محتوى. يتم مشاهدة جميع المحتويات من خلال مصادر على الإنترنت.",
"title": "أين يمكنني طلب مسلسل أو فلم؟"
},
"q3": {
"body": "نتائج البحث لدينا مدعومة بقاعدة بيانات الأفلام (TMDB) وتظهر بغض النظر عما إذا كانت مصادرنا تتضمن فعليًا المحتوى أم لا.",
"title": "تعرِضُ نتائجُ البحثِ الخاصِّ بالعرض أو الفيلم اللذي أريد، لكن لماذا لا يمكنني تشغيله؟"
},
"title": "حول sudo-flix"
},
"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": "فشل التحقق من ReCaptcha",
"register": "إنشاء حساب",
"title": "قم بتأكيد جملة مرورك"
}
},
"errors": {
"badge": "تم كسره",
"details": "تفاصيل الخطأ",
"reloadPage": "أعد تحميل الصفحة",
"showError": "عرض تفاصيل الخطأ",
"title": "واجهنا خطأ!"
},
"footer": {
"legal": {
"disclaimer": "تنويه",
"disclaimerText": "لا يستضيف sudo-flix أي ملفات، بل يقوم بالربط مع خدمات طرف ثالث. يجب معالجة المشاكل القانونية مع مضيفي الملفات والمزودين. لا يتحمل sudo-flix مسؤولية أي ملفات يعرضها مزودو الفيديو."
},
"links": {
"discord": "ديسكورد",
"dmca": "DMCA",
"github": "غيت هاب"
},
"tagline": "شاهد عروضك وأفلامك المفضلة باستخدام تطبيق البث مفتوح المصدر هذا."
},
"global": {
"name": "sudo-flix",
"pages": {
"about": "حَول",
"dmca": "DMCA",
"login": "تسجيل الدخول",
"pagetitle": "\"{{title}} - sudo-flix\"",
"register": "إنشاء حساب",
"settings": "الإعدادات"
}
},
"home": {
"bookmarks": {
"sectionTitle": "علامات مرجعية"
},
"continueWatching": {
"sectionTitle": "متابعة المشاهدة"
},
"mediaList": {
"stopEditing": "إنهاء التعديل"
},
"search": {
"allResults": "هذا كل ما لدينا!",
"failed": "تعذر العثور على الوسائط، حاول مجددا!",
"loading": "جار التحميل...",
"noResults": "لم نتمكن من العثور على أي شيء!",
"placeholder": "ماذا تريد أن تشاهد؟",
"sectionTitle": "نتائج البحث"
},
"titles": {
"day": {
"default": "ماذا تريد أن تشاهد في هذه الظهيرة؟",
"extra": ["متشوق للمغامرة؟ قد يكون Jurassic Park خيارًا مثاليًا لك."]
},
"morning": {
"default": "ماذا تريد أن تشاهد في هذا الصباح؟",
"extra": ["سمعت أن فلم \"Before Sunrise\" جيد"]
},
"night": {
"default": "ماذا تريد أن تشاهد في هذه الليلة؟",
"extra": ["مُرهَق؟ سمعت أن فيلم \"The Exorcist\" جيد."]
}
}
},
"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": "يتم أخذ التنزيلات مباشرةً من قبل مقدم الخدمة. sudo-flix لاسيطرة له على كيفية توفير تلك التنزيلات.",
"downloadPlaylist": "تنزيل قائمة التشغيل",
"downloadSubtitle": "تنزيل مقاطع الترجمة الحالية",
"downloadVideo": "تنزيل الفيديو",
"hlsDisclaimer": "يتم أخذ التنزيلات مباشرة من مزود الخدمة. sudo-flix ليس المتحكم في كيفية توفير التنزيلات. يرجى ملاحظة أنك تقوم بتنزيل قائمة تشغيل HLS، وهذا أمر يتطلب ان تكون على دراية بتقنيات متقدمة لبث الوسائط.",
"onAndroid": {
"1": "للتنزيل على أندرويد، أنقر زر التنزيل وفي الصفحة الموالية <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": "E{{episode}}",
"loadingError": "خطأ في تحميل الموسم",
"loadingList": "تحميل...",
"loadingTitle": "تحميل...",
"unairedEpisodes": "تم تعطيل حلقة واحدة أو أكثر من هذا الموسم لأنه لم يتم بثها بعد."
},
"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": "لم نتمكن من العثور على الوسيط الذي طلبته.",
"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": "مرحبًا بكم في صفحة sudo-flix الخاصة بالتواصل حول قانون الألفية للملكية الرقمية (DMCA) ! نحن نحترم حقوق الملكية الفكرية ونرغب في التعامل بسرعة مع أي مسألة تخص حقوق الطبع والنشر. إن كنت تعتقد أن أيا من أعمالك المحميو بحقوق الطبع والنشر قد تم استخدامها بشكل غير لائق على منصتنا، رجاءً أرسل إشعارا مفصلا إلى البريد الإلكتروني أدناه. يرجى تضمين وصف للمواد المحمية بحقوق الطبع والنشر، وكذا طريقةً للتواصل معك، إضافة إلى تصريح بمصداقية طلبك. نحن ملتزمون بحل هذه القضايا بسرعة ونقدر تعاونكم في الحفاظ على sudo-flix كمكان يحترم الإبداع وحقوق الطبع والنشر.",
"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": "إذا كنت ترغب في الاتصال بخادم خلفي مخصص لتخزين بياناتك، قم بتفعيل هذا ووفر الرابط.",
"label": "خادم مُخصص",
"urlLabel": "رابط الخادم المخصص"
},
"title": "الاتصالات",
"workers": {
"addButton": "إضافة وكيل جديد",
"description": "لتشغيل التطبيق، يتم توجيه كل الاتصالات عبر وكلاء البروكسي. قم بتمكين هذا إذا كنت ترغب في استخدام خوادم العمل الخاصة بك.",
"emptyState": "لا يوجد وكلاء حتى الآن، أضف واحدًا أدناه",
"label": "استخدام وكلاء مُخصصين",
"urlLabel": "روابط الوكلاء",
"urlPlaceholder": "https://"
}
},
"reset": "إعادة تعيين",
"save": "حفظ",
"sidebar": {
"info": {
"appVersion": "إصدار التطبيق",
"backendUrl": "رابط النهاية الخلفية",
"backendVersion": "إصدار النهاية الخلفية",
"hostname": "اسم المضيف",
"insecure": "غير آمن",
"notLoggedIn": "أنت لم تسجل دخولك بعد",
"secure": "آمن",
"title": "معلومات التطبيق",
"unknownVersion": "غير معروف",
"userId": "معرِّف المستخدم"
}
},
"subtitles": {
"backgroundLabel": "تعتيم الخلفية",
"colorLabel": "لون",
"previewQuote": "يجب أن لا أخأف. الخوف هو قاتل العقل.",
"textSizeLabel": "حجم النص",
"title": "مقاطع الترجمة"
},
"unsaved": "لديك تغييرات غير محفوظة"
}
}

285
src/assets/locales/bg.json Normal file
View File

@ -0,0 +1,285 @@
{
"about": {
"description": "sudo-flix е уеб приложение, което търси в интернет за стриймове. Екипът се стреми към предимно минималистичен подход при консумирането на съдържание.",
"faqTitle": "Общи въпроси",
"q1": {
"body": "sudo-flix не хоства никакво съдържание. Когато кликнете върху нещо, за да го гледате, се търси в интернет избраното медийно съдържание (На екрана за зареждане и в раздела \"Източници на видео\" можете да видите кой източник използвате). Медийното съдържание никога не се качва от sudo-flix, всичко става чрез този механизъм за търсене.",
"title": "От къде идва съдържанието?"
},
"q2": {
"body": "Невъзможно е да поискате сериал или филм, sudo-flix не управлява никакво съдържание. Всичко се гледа чрез източници в интернет.",
"title": "Къде мога да поискам определен сериал или филм?"
},
"q3": {
"body": "Резултатите от търсенето ни се поддържат от базата данни за филми (The Movie Database - TMDB) и се показват, независимо дали източниците ни реално разполагат със съдържанието.",
"title": "Резултатите от търсенето показват сериала или филма, защо не мога да го пусна?"
},
"title": "Относно sudo-flix"
},
"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": "Валидацията на ReCaptcha не беше успешна.",
"register": "Създаване на акаунт",
"title": "Потвърдете вашата паролна фраза."
}
},
"errors": {
"badge": "Счупи се",
"details": "Детайли за грешката",
"reloadPage": "Презаредете страницата.",
"showError": "Покажи детайлите за грешката",
"title": "Сблъскахме се с грешка!"
},
"footer": {
"legal": {
"disclaimer": "Внимание",
"disclaimerText": "sudo-flix не хоства никакви файлове, а просто предоставя връзки към услуги от трета страна. Правните въпроси следва да се разглеждат с доставчиците на файлове. sudo-flix не носи отговорност за никакви медийни файлове, предоставени от видео доставчици."
},
"links": {
"discord": "Discord",
"dmca": "DMCA",
"github": "Github"
},
"tagline": "Гледайте любимите си предавания и филми с това отворено-код стрийминг приложение."
},
"global": {
"name": "sudo-flix",
"pages": {
"about": "За нас",
"dmca": "DMCA",
"login": "Вход",
"pagetitle": "{{title}} - sudo-flix",
"register": "Регистрация",
"settings": "Настройки"
}
},
"home": {
"bookmarks": {
"sectionTitle": "Отметки"
},
"continueWatching": {
"sectionTitle": "Продължи гледането"
},
"mediaList": {
"stopEditing": "Спри редактирането"
},
"search": {
"allResults": "Това е всичко, което имаме!",
"failed": "Неуспешно намиране на медия, опитайте отново!",
"loading": "Зареждане...",
"noResults": "Не успяхме да намерим нищо!",
"placeholder": "Какво искате да гледате?",
"sectionTitle": "Резултати от търсенето"
},
"titles": {
"day": {
"default": "Какво бихте искали да гледате този следобед?",
"extra": [
"Чувствате ли се авантюристично? \"Джурасик Парк\" може да бъде перфектният избор."
]
},
"morning": {
"default": "Какво бихте искали да гледате тази сутрин?",
"extra": ["Чух, че Before Sunrise е добър"]
},
"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": "Изтеглянията се вземат директно от доставчика. sudo-flix няма контрол върху това как се предоставят изтеглянията.",
"downloadPlaylist": "Изтегляне на плейлист",
"downloadSubtitle": "Изтеглете текущите субтитри",
"downloadVideo": "Изтегляне на видео",
"hlsDisclaimer": "Изтеглянията се вземат директно от доставчика. sudo-flix няма контрол върху това как се предоставят изтеглянията. Моля, имайте предвид, че изтегляте 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": "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": "Неуспешно зареждане на метаданните на носителя от TMDB. Моля, проверете дали TMDB не работи или е блокиран във вашата интернет връзка.",
"title": "Неуспешно зареждане на метаданните"
},
"notFound": {
"badge": "Не е намерено",
"homeButton": "Обратно към началото",
"text": "Не успяхме да намерим медията, която поискахте. Или е бил премахнат, или сте променили URL адреса.",
"title": "Тази медия не можа да бъде намерена."
}
},
"nextEpisode": {
"cancel": "Отказ",
"next": "Следващ епизод"
},
"playbackError": {
"badge": "Грешка при възпроизвеждане",
"errors": {
"errorAborted": "Извличането на медията беше прекратено по искане на потребителя.",
"errorDecode": "Въпреки че преди това беше определено като използваем, възникна грешка при опит за декодиране на медийния ресурс, което доведе до грешка.",
"errorGenericMedia": "Възникна неизвестна медийна грешка.",
"errorNetwork": "Възникна някакъв вид мрежова грешка, която попречи на медията да бъде успешно извлечена, въпреки че преди това е била достъпна.",
"errorNotSupported": "Обектът медия или доставчик на медия не се поддържа."
}
}
}
}

279
src/assets/locales/bn.json Normal file
View File

@ -0,0 +1,279 @@
{
"about": {
"description": "মুভি-ওয়েব একটি ওয়েব অ্যাপ্লিকেশন যা স্ট্রিমগুলির জন্য ইন্টারনেট অনুসন্ধান করে। দলটির লক্ষ্য বিষয়বস্তু গ্রহণের জন্য সবচেয়ে সংক্ষিপ্ত পদ্ধতির জন্য।",
"faqTitle": "সাধারণ প্রশ্নাবলী",
"q1": {
"body": "মুভি-ওয়েব কোনো বিষয়বস্তু হোস্ট করে না। আপনি যখন দেখার জন্য কিছুতে ক্লিক করেন, তখন নির্বাচিত মিডিয়ার জন্য ইন্টারনেট অনুসন্ধান করা হয় (লোডিং স্ক্রিনে এবং 'ভিডিও উত্স' ট্যাবে আপনি কোন উত্সটি ব্যবহার করছেন তা দেখতে পারেন)। মিডিয়া কখনই মুভি-ওয়েব দ্বারা আপলোড হয় না, সবকিছু এই অনুসন্ধান প্রক্রিয়ার মাধ্যমে হয়।",
"title": "কন্টেন্ট কোথা থেকে আসে?"
},
"q2": {
"body": "একটি শো বা সিনেমার অনুরোধ করা সম্ভব নয়, মুভি-ওয়েব কোনো বিষয়বস্তু পরিচালনা করে না। সমস্ত বিষয়বস্তু ইন্টারনেটে উৎসের মাধ্যমে দেখা হয়।",
"title": "আমি কোথায় একটি শো বা সিনেমা অনুরোধ করতে পারি?"
},
"q3": {
"body": "আমাদের অনুসন্ধানের ফলাফলগুলি The Movie Database (TMDB) দ্বারা চালিত হয় এবং আমাদের উত্সগুলিতে প্রকৃতপক্ষে সামগ্রী আছে কিনা তা নির্বিশেষে প্রদর্শন করা হয়।",
"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": "ডিএমসিএ",
"github": "গিটহাব"
},
"tagline": "এই ওপেন সোর্স স্ট্রিমিং অ্যাপের মাধ্যমে আপনার প্রিয় শো এবং সিনেমা দেখুন।"
},
"global": {
"name": "মুভি-ওয়েব",
"pages": {
"about": "সম্পর্কিত",
"dmca": "ডিএমসিএ",
"login": "প্রবেশ করুন",
"pagetitle": "{{title}} - মুভি-ওয়েব",
"register": "নিবন্ধন",
"settings": "সেটিংস"
}
},
"home": {
"bookmarks": {
"sectionTitle": "বুকমার্ক"
},
"continueWatching": {
"sectionTitle": "দেখা চালিয়ে যান"
},
"mediaList": {
"stopEditing": "সম্পাদনা বন্ধ করুন"
},
"search": {
"allResults": "যে আমরা সব আছে!",
"failed": "মিডিয়া খুঁজে পেতে ব্যর্থ, আবার চেষ্টা করুন!",
"loading": "লোড হচ্ছে..।",
"noResults": "আমরা কিছুই খুঁজে পাইনি!",
"placeholder": "আপনি কি দেখতে চান?",
"sectionTitle": "অনুসন্ধান ফলাফল"
},
"titles": {
"day": {
"default": "আপনি এই বিকেলে কি দেখতে চান?",
"extra": ["দুঃসাহসিক বোধ করছেন? জুরাসিক পার্ক নিখুঁত পছন্দ হতে পারে।"]
},
"morning": {
"default": "আপনি এই সকালে কি দেখতে চান?",
"extra": ["শুনি সূর্যোদয়ের আগে ভালো"]
},
"night": {
"default": "আপনি আজ রাতে কি দেখতে চান?",
"extra": ["ক্লান্ত? আমি শুনেছি দ্য এক্সরসিস্ট ভাল।"]
}
}
},
"media": {
"episodeDisplay": "সিজন{{সিজন}} পর্ব{{পর্ব}}",
"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": "ডাউনলোড সরাসরি প্রদানকারী থেকে নেওয়া হয়. কিভাবে ডাউনলোড দেওয়া হয় তার উপর মুভি-ওয়েবের নিয়ন্ত্রণ নেই। অনুগ্রহ করে মনে রাখবেন যে আপনি একটি HLS প্লেলিস্ট ডাউনলোড করছেন, এটি উন্নত মাল্টিমিডিয়া স্ট্রিমিংয়ের সাথে পরিচিত ব্যবহারকারীদের জন্য।",
"onAndroid": {
"1": "অ্যান্ড্রয়েডে ডাউনলোড করতে, ডাউনলোড বোতামে ক্লিক করুন তারপর, নতুন পৃষ্ঠায়, ভিডিওতে <bold>ট্যাপ করুন এবং ধরে রাখুন</bold>, তারপরে <bold>সংরক্ষণ করুন</bold> নির্বাচন করুন।",
"shortTitle": "ডাউনলোড/অ্যান্ড্রয়েড",
"title": "অ্যান্ড্রয়েডে ডাউনলোড হচ্ছে"
},
"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": "E{{episode}}",
"loadingError": "ঋতু লোড করার সময় ত্রুটি৷",
"loadingList": "লোড হচ্ছে..।",
"loadingTitle": "লোড হচ্ছে..।",
"unairedEpisodes": "এই সিজনের এক বা একাধিক পর্ব অক্ষম করা হয়েছে কারণ সেগুলি এখনও সম্প্রচার করা হয়নি।"
},
"playback": {
"speedLabel": "প্লেব্যাক গতি",
"title": "প্লেব্যাক সেটিংস"
},
"quality": {
"automaticLabel": "স্বয়ংক্রিয় গুণমান",
"hint": "আপনি বিভিন্ন গুণমানের বিকল্প পেতে <0>উৎস পরিবর্তন</0> করে দেখতে পারেন।",
"iosNoQuality": "অ্যাপল-সংজ্ঞায়িত সীমাবদ্ধতার কারণে, এই উৎসের জন্য গুণমান নির্বাচন 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": {
"api": {
"text": "API মেটাডেটা লোড করা যায়নি, অনুগ্রহ করে আপনার ইন্টারনেট সংযোগ পরীক্ষা করুন।",
"title": "API মেটাডেটা লোড করতে ব্যর্থ হয়েছে"
},
"failed": {
"badge": "ব্যর্থ",
"homeButton": "বাড়িতে যেতে",
"text": "TMDB থেকে মিডিয়ার মেটাডেটা লোড করা যায়নি। আপনার ইন্টারনেট সংযোগে TMDB ডাউন বা ব্লক করা আছে কিনা তা অনুগ্রহ করে চেক করুন।",
"title": "মেটাডেটা লোড করতে ব্যর্থ হয়েছে"
},
"notFound": {
"badge": "পাওয়া যায়নি",
"homeButton": "বাড়িতে ফিরে যাও",
"text": "আপনার অনুরোধ করা মিডিয়া আমরা খুঁজে পাইনি। হয় এটি সরানো হয়েছে অথবা আপনি URL-এর সাথে হেরফের করেছেন।"
}
},
"turnstile": {
"description": "ডানদিকে ক্যাপচা সম্পূর্ণ করে আপনি যে মানুষ তা যাচাই করুন। সিনেমা-ওয়েবকে নিরাপদ রাখতেই এই!",
"error": "আপনার মানবতা যাচাই করতে ব্যর্থ হয়েছে. অনুগ্রহপূর্বক আবার চেষ্টা করুন।",
"title": "আপনি যে মানুষ তা আমাদের যাচাই করতে হবে।",
"verifyingHumanity": "আপনার মানবতা যাচাই করা হচ্ছে..।"
}
}
}

428
src/assets/locales/ca.json Normal file
View File

@ -0,0 +1,428 @@
{
"about": {
"description": "sudo-flix és una aplicació web que cerca fluxos a internet. L'equip té com a objectiu un enfocament majoritàriament minimalista del consum de contingut.",
"faqTitle": "Preguntes freqüents",
"q1": {
"body": "sudo-flix no allotja cap contingut. Quan feu clic a alguna cosa per a mirar-la, es busca a Internet el contingut seleccionat (a la pantalla de càrrega i a la pestanya «Fonts de vídeo» podeu veure quina font utilitzeu). sudo-flix mai hi puja contingut, tot és a través d'aquest mecanisme de cerca.",
"title": "D'on prové el contingut?"
},
"q2": {
"body": "No és possible sol·licitar un programa o una pel·lícula, sudo-flix no gestiona cap contingut. Tot el contingut es visualitza a través de fonts a internet.",
"title": "On puc sol·licitar un programa o una pel·lícula?"
},
"q3": {
"body": "Els resultats de cerca funcionen amb The Movie Database (TMDB) i es mostren independentment de si les nostres fonts realment tenen el contingut.",
"title": "Els resultats de la cerca mostren el programa o la pel·lícula, per què no puc reproduir-lo?"
},
"title": "Sobre sudo-flix"
},
"actions": {
"copied": "S'ha copiat",
"copy": "Copia"
},
"auth": {
"createAccount": "Encara no teniu un compte? <0>Creeu un compte.</0>",
"deviceNameLabel": "Nom del dispositiu",
"deviceNamePlaceholder": "Telèfon personal",
"generate": {
"description": "La frase de contrasenya actua com a nom d'usuari i contrasenya. Assegureu-vos de mantenir-la segura, ja que haureu d'introduir-la per a iniciar la sessió al vostre compte",
"next": "He desat la frase de contrasenya",
"passphraseFrameLabel": "Frase de contrasenya",
"title": "La vostra frase de contrasenya"
},
"hasAccount": "Ja teniu un compte? <0>Inicieu sessió aquí.</0>",
"login": {
"description": "Introduïu la vostra frase de contrasenya per a iniciar sessió al vostre compte",
"deviceLengthError": "Introduïu un nom per al dispositiu",
"passphraseLabel": "Frase de contrasenya de 12 paraules",
"passphrasePlaceholder": "Frase de contrasenya",
"submit": "Inicia sessió",
"title": "Inicieu sessió al vostre compte",
"validationError": "Frase de contrasenya incorrecta o incompleta"
},
"register": {
"information": {
"color1": "Color de perfil 1",
"color2": "Color de perfil 2",
"header": "Introduïu un nom per al dispositiu i trieu els colors i la icona d'usuari que vulgueu",
"icon": "Icona d'usuari",
"next": "Següent",
"title": "Informació del compte"
}
},
"trust": {
"failed": {
"text": "L'heu configurada correctament?",
"title": "No s'ha pogut accedir al servidor"
},
"host": "Us esteu connectant a <0>{{hostname}}</0>. Confirmeu que hi confieu abans de crear un compte",
"no": "Torna",
"title": "Confieu en aquest servidor?",
"yes": "Confie en aquest servidor"
},
"verify": {
"description": "Introduïu la vostra frase de contrasenya anterior per a confirmar que l'heu desat, i crear el compte",
"invalidData": "La data no és vàlida",
"noMatch": "La frase de contrasenya no coincideix",
"passphraseLabel": "Frase de contrasenya de 12 paraules",
"recaptchaFailed": "Ha fallat la validació de ReCaptcha",
"register": "Crea el compte",
"title": "Confirmeu la frase de contrasenya"
}
},
"errors": {
"badge": "S'ha trencat",
"details": "Detalls de l'error",
"reloadPage": "Recarrega la pàgina",
"showError": "Mostra els detalls de l'error",
"title": "Hem trobat un error!"
},
"footer": {
"legal": {
"disclaimer": "Avís d'exempció de responsabilitat",
"disclaimerText": "sudo-flix no allotja cap fitxer, només enllaça a serveis de tercers. Els problemes legals s'han d'abordar amb qui allotja i els proveïdors de fitxers. sudo-flix no es fa responsable del contingut mostrat pels proveïdors de vídeo."
},
"links": {
"discord": "Discord",
"dmca": "DMCA",
"github": "GitHub"
},
"tagline": "Mireu els vostres programes i pel·lícules preferits amb aquesta aplicació de codi obert de reproducció en temps real."
},
"global": {
"name": "sudo-flix",
"pages": {
"about": "Quant a",
"dmca": "DMCA",
"login": "Inicia sessió",
"pagetitle": "{{title}} - sudo-flix",
"register": "Registra",
"settings": "Configuració"
}
},
"home": {
"bookmarks": {
"sectionTitle": "Marcadors"
},
"continueWatching": {
"sectionTitle": "Continueu mirant"
},
"mediaList": {
"stopEditing": "Deixa d'editar"
},
"search": {
"allResults": "Això és tot el que tenim!",
"failed": "No s'ha pogut trobar cap contingut, torneu-ho a provar!",
"loading": "S'està carregant…",
"noResults": "No hem pogut trobar res!",
"placeholder": "Què voleu mirar?",
"sectionTitle": "Resultats de la cerca"
},
"titles": {
"day": {
"default": "Què us agradaria mirar aquesta vesprada/tarda?",
"extra": [
"Voleu aventura? Jurassic Park podria ser l'elecció perfecta."
]
},
"morning": {
"default": "Què us agradaria mirar aquest matí?",
"extra": ["He sentit que «Abans de l'alba» és bona"]
},
"night": {
"default": "Què us agradaria mirar aquesta nit?",
"extra": ["Esteu cansat? He sentit que «L'exorcista» és bona."]
}
}
},
"media": {
"episodeDisplay": "T{{season}} E{{episode}}",
"types": {
"movie": "Pel·lícula",
"show": "Sèrie/Programa"
}
},
"navigation": {
"banner": {
"offline": "Comproveu la connexió a internet"
},
"menu": {
"about": "Quant a nosaltres",
"donation": "Feu una donació",
"logout": "Tanca la sessió",
"register": "Sincronitza al núvol",
"settings": "Configuració",
"support": "Ajuda"
}
},
"notFound": {
"badge": "No s'ha trobat",
"goHome": "Torna a l'inici",
"message": "Hem mirat per tot arreu: davall de les papereres, a l'armari, darrere del servidor intermediari, però al remat no hem pogut trobar la pàgina que busqueu.",
"title": "No s'ha pogut trobar la pàgina"
},
"overlays": {
"close": "Tanca"
},
"player": {
"back": {
"default": "Torna a l'inici",
"short": "Torna"
},
"casting": {
"enabled": "S'està emetent al dispositiu…"
},
"menus": {
"downloads": {
"disclaimer": "Les baixades s'obtenen directament del proveïdor. sudo-flix no té control sobre com es proporcionen les baixades.",
"downloadPlaylist": "Baixa la llista de reproducció",
"downloadSubtitle": "Baixa els subtítols actuals",
"downloadVideo": "Baixa el vídeo",
"hlsDisclaimer": "Les baixades s'obtenen directament del proveïdor. sudo-flix no té control sobre com es proporcionen les baixades. Tingueu en compte que esteu baixant una llista de reproducció HLS, destinada als usuaris familiaritzats amb la transmissió multimèdia avançada.",
"onAndroid": {
"1": "Per a baixar-lo a Android, feu clic al botó de baixada i, a la pàgina nova, <bold>manteniu premut</bold> el vídeo i, a continuació, seleccioneu <bold>Desa</bold>.",
"shortTitle": "Baixa / Android",
"title": "Baixada a Android"
},
"onIos": {
"1": "Per a baixar a iOS, feu clic al botó de baixada i, a la pàgina nova, feu clic a <bold><ios_share /></bold> /> i, a continuació, <bold>Desa als Arxius <ios_files /></bold>.",
"shortTitle": "Baixa / iOS",
"title": "Baixada a iOS"
},
"onPc": {
"1": "En un PC, feu clic al botó de baixada i, a la pàgina nova, feu clic amb el botó dret al vídeo i seleccioneu <bold>Anomena i desa el vídeo</bold>",
"shortTitle": "Baixa / PC",
"title": "Baixada a un PC"
},
"title": "Baixa"
},
"episodes": {
"button": "Episodi",
"emptyState": "No hi ha episodis en aquesta temporada, torneu-ho a comprovar més tard!",
"episodeBadge": "E{{episode}}",
"loadingError": "Error en carregar la temporada",
"loadingList": "S'està carregant…",
"loadingTitle": "S'està carregant…",
"unairedEpisodes": "Un o més episodis d'aquesta temporada s'han desactivat perquè encara no s'han emés."
},
"playback": {
"speedLabel": "Velocitat de la reproducció",
"title": "Configuració de la reproducció"
},
"quality": {
"automaticLabel": "Qualitat automàtica",
"hint": "Podeu provar a <0>canviar la font</0> per a obtenir diferents opcions de qualitat.",
"iosNoQuality": "A causa de les limitacions definides per Apple, la selecció de qualitat no està disponible a iOS per a aquesta font. Podeu provar a <0>canviar a una altra font</0> per a obtenir diferents opcions de qualitat.",
"title": "Qualitat"
},
"settings": {
"downloadItem": "Baixa",
"enableSubtitles": "Activa els subtítols",
"experienceSection": "Experiència de visualització",
"playbackItem": "Configuració de la reproducció",
"qualityItem": "Qualitat",
"sourceItem": "Fonts de vídeo",
"subtitleItem": "Configuració dels subtítols",
"videoSection": "Configuració de vídeo"
},
"sources": {
"failed": {
"text": "S'ha produït un error en intentar trobar vídeos, proveu una font diferent.",
"title": "No s'ha pogut obtenir"
},
"noEmbeds": {
"text": "No hem pogut trobar cap incrustat, proveu una font diferent.",
"title": "No s'ha trobat cap incrustació"
},
"noStream": {
"text": "Aquesta font no té fluxos per a aquesta pel·lícula o programa.",
"title": "Cap flux"
},
"title": "Fonts",
"unknownOption": "Desconeguda"
},
"subtitles": {
"customChoice": "Selecciona un fitxer de subtítols",
"customizeLabel": "Personalitza",
"offChoice": "Desactivats",
"settings": {
"backlink": "Subtítols personalitzats",
"delay": "Retard dels subtítols",
"fixCapitals": "Corregeix les majúscules/minúscules"
},
"title": "Subtítols",
"unknownLanguage": "Desconeguda"
}
},
"metadata": {
"api": {
"text": "No s'han pogut carregar les metadades de l'API, comproveu la connexió a Internet.",
"title": "No s'han pogut carregar les metadades de l'API"
},
"failed": {
"badge": "Ha fallat",
"homeButton": "Vés a l'inici",
"text": "No s'han pogut carregar les metadades del contingut des de TMDB. Comproveu si TMDB no funciona o està bloquejat a la vostra connexió a Internet.",
"title": "Ha fallat la càrrega de les metadades"
},
"notFound": {
"badge": "No s'ha trobat",
"homeButton": "Torna a l'inici",
"text": "No hem pogut trobar el contingut sol·licitat. O bé s'ha eliminat o bé heu alterat l'URL.",
"title": "No s'ha trobat el contingut."
}
},
"nextEpisode": {
"cancel": "Cancel·la",
"next": "Episodi següent"
},
"playbackError": {
"badge": "Error en la reproducció",
"errors": {
"errorAborted": "S'ha interromput l'obtenció del contingut per petició de l'usuari.",
"errorDecode": "Tot i haver-se determinat prèviament que era utilitzable, s'ha produït un error en intentar descodificar el recurs multimèdia.",
"errorGenericMedia": "S'ha produït un error desconegut al contingut.",
"errorNetwork": "S'ha produït algun tipus d'error de xarxa que ha impedit que el contingut s'obtinga correctament, tot i haver estat disponibles prèviament.",
"errorNotSupported": "El contingut o el proveïdor del contingut no és compatible."
},
"homeButton": "Torna a l'inici",
"text": "S'ha produït un error en intentar reproduir el contingut. Torneu-ho a provar.",
"title": "No s'ha pogut reproduir el vídeo!"
},
"scraping": {
"items": {
"failure": "S'ha produït un error",
"notFound": "No té el vídeo",
"pending": "S'estan cercant vídeos…"
},
"notFound": {
"badge": "No s'ha trobat",
"detailsButton": "Mostra els detalls",
"homeButton": "Torna a l'inici",
"text": "Hem buscat a través dels nostres proveïdors i no trobem el contingut que busqueu! No allotgem contingut i no tenim control sobre què hi ha disponible. Feu clic a «Mostra els detalls» a continuació per a més informació.",
"title": "No s'ha pogut trobar"
}
},
"time": {
"regular": "{{timeWatched}} / {{duration}}",
"remaining": "{{timeLeft}} restants • Acaba a les {{timeFinished, datetime}}",
"shortRegular": "{{timeWatched}}",
"shortRemaining": "-{{timeLeft}}"
},
"turnstile": {
"description": "Verifiqueu que sou humà completant el Captcha de la dreta. Ho fem per a mantenir segura sudo-flix!",
"error": "No s'ha pogut verificar la humanitat. Torneu-ho a provar.",
"title": "Necessitem verificar que sou humà.",
"verifyingHumanity": "Verificant la vostra humanitat…"
}
},
"screens": {
"dmca": {
"text": "Us donem la benvinguda a la pàgina de contacte DMCA de sudo-flix! Respectem els drets de propietat intel·lectual i volem resoldre qualsevol problema de drets d'autor ràpidament. Si creieu que la vostra obra protegida per drets d'autor s'ha utilitzat incorrectament a la nostra plataforma, envieu un avís detallat de la DMCA al correu electrònic següent. Incloeu una descripció del material protegit per drets d'autor, les vostres dades de contacte i una declaració de creença de bona fe. Ens comprometem a resoldre aquests assumptes amb agilitat i agraïm la vostra col·laboració per a mantenir sudo-flix en un lloc que respecta la creativitat i els drets d'autor.",
"title": "DMCA"
},
"loadingApp": "S'està carregant l'aplicació",
"loadingUser": "S'està carregant el perfil",
"loadingUserError": {
"logout": "Tanca la sessió",
"reset": "Restableix el servidor personalitzat",
"text": "Ha fallat la càrrega del perfil",
"textWithReset": "Error en carregar el vostre perfil des del servidor personalitzat, voleu restablir el servidor per defecte?"
},
"migration": {
"failed": "La migració de les dades ha fallat.",
"inProgress": "Espereu, estem migrant les vostres dades. No hauria de tardar massa."
}
},
"settings": {
"account": {
"accountDetails": {
"deviceNameLabel": "Nom del dispositiu",
"deviceNamePlaceholder": "Telèfon personal",
"editProfile": "Edita",
"logoutButton": "Tanca la sessió"
},
"actions": {
"delete": {
"button": "Elimina el compte",
"confirmButton": "Elimina el compte",
"confirmDescription": "Segur que voleu eliminar el compte? Es perdran totes les dades!",
"confirmTitle": "Segur?",
"text": "Aquesta acció és irreversible. Totes les dades s'eliminaran i no es podrà recuperar res.",
"title": "Elimina el compte"
},
"title": "Accions"
},
"devices": {
"deviceNameLabel": "Nom del dispositiu",
"failed": "La càrrega de sessions ha fallat",
"removeDevice": "Elimina",
"title": "Dispositiu"
},
"profile": {
"finish": "Finalitza l'edició",
"firstColor": "Color de perfil 1",
"secondColor": "Color de perfil dos",
"title": "Edita la foto de perfil",
"userIcon": "Icona d'usuari"
},
"register": {
"cta": "Comença",
"text": "Compartiu el progrés de la visualització entre dispositius i manteniu-los sincronitzats.",
"title": "Sincronització amb el núvol"
},
"title": "Compte"
},
"appearance": {
"activeTheme": "Actiu",
"themes": {
"blue": "Blau",
"default": "Per defecte",
"gray": "Gris",
"red": "Vermell",
"teal": "Verd blavós"
},
"title": "Aparença"
},
"connections": {
"server": {
"description": "Si voleu connectar-vos a un rerefons personalitzat per a emmagatzemar les vostres dades, activeu-ho i proporcioneu l'URL. <0>Instruccions.</0>",
"label": "Servidor personalitzat",
"urlLabel": "URL del servidor personalitzat"
},
"title": "Connexions",
"workers": {
"addButton": "Afig un «worker»",
"description": "Per fer funcionar l'aplicació, tot el trànsit s'encamina a través de servidors intermediaris. Activeu-ho si voleu portar els vostres propis «workers».<0>Instruccions.</0>",
"emptyState": "Encara no hi ha «workers», afegiu-ne un a continuació",
"label": "Utilitza «workers» intermediaris personalitzats",
"urlLabel": "URL dels «workers»",
"urlPlaceholder": "https://"
}
},
"reset": "Restableix",
"save": "Desa",
"sidebar": {
"info": {
"appVersion": "Versió de l'aplicació",
"backendUrl": "URL del rerefons",
"backendVersion": "Versió del rerefons",
"hostname": "Nom de l'amfitrió",
"insecure": "Insegur",
"notLoggedIn": "No heu iniciat sessió",
"secure": "Segur",
"title": "Informació de l'aplicació",
"unknownVersion": "Desconeguda",
"userId": "ID d'usuari"
}
},
"subtitles": {
"backgroundLabel": "Opacitat del fons",
"colorLabel": "Color",
"previewQuote": "No he de tenir por. La por és l'assassina de la ment.",
"textSizeLabel": "Grandària del text",
"title": "Subtítols"
},
"unsaved": "Hi ha canvis sense desar"
}
}

526
src/assets/locales/cs.json Normal file
View File

@ -0,0 +1,526 @@
{
"about": {
"description": "sudo-flix 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": "sudo-flix 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í sudo-flixem, vše probíhá prostřednictvím tohoto vyhledávacího mechanismu.",
"title": "Kde bereme obsah?"
},
"q2": {
"body": "Není možné požádat o pořad nebo film, sudo-flix 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?"
},
"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?"
},
"title": "O sudo-flixu"
},
"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"
},
"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"
},
"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": "sudo-flix 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. sudo-flix 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": "sudo-flix",
"pages": {
"about": "O nás",
"dmca": "DMCA",
"login": "Přihlásit se",
"onboarding": "Nastavení",
"pagetitle": "{{title}} - sudo-flix",
"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?",
"extra": ["Chceš zažít dobrodružství? Jurský Park je pro tebe."]
},
"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"
},
"onboarding": {
"defaultConfirm": {
"cancel": "Zrušit",
"confirm": "Použít výchozí nastavení",
"description": "Výchozí nastavení nemá nejlepší streamy a může být strašně pomalá.",
"title": "Jste si jist?"
},
"extension": {
"back": "Zpět",
"explainer": "Pomocí rozšíření prohlížeče můžete získat nejlepší streamy, které nabízíme. S pouhou instalací.",
"extensionHelp": "Pokud jste rozšíření nainstalovali, ale nebylo zjištěno. <bold>Otevřete rozšíření pomocí nabídky rozšíření ve vašem prohlížeči</bold> a postupujte podle pokynů na obrazovce.",
"status": {
"disallowed": "Rozšíření není pro tuto stránku povoleno",
"disallowedAction": "Povolit rozšíření",
"failed": "Nezdařilo se získávání stavu",
"loading": "Čekání na instalaci rozšíření",
"outdated": "Verze rozšíření je příliš stará",
"success": "Rozšíření funguje podle očekávání!"
},
"submit": "Pokračovat",
"title": "Začněme s rozšířením"
},
"proxy": {
"back": "Zpět",
"explainer": "Pomocí metody proxy můžete získat streamy ve skvělé kvalitě vytvořením proxy serveru.",
"input": {
"errorConnection": "Nelze se připojit k proxy",
"errorInvalidUrl": "Adresa URL není platná",
"errorNotProxy": "Byla očekávaná proxy, ale byla předána webová stránka",
"label": "Proxy URL",
"placeholder": "https://"
},
"link": "Naučit se vytvořit proxy",
"submit": "Předložit proxy",
"title": "Pojďme uďelat novou proxy"
},
"start": {
"explainer": "Abyste získali co nejlepší streamy. Musíte si zvolit, kterou streamovací metodu chcete použít.",
"options": {
"default": {
"text": "Nechci zdroje s dobrou kvalitou,<0 /> <1>použít výchozí nastavení</1>"
},
"extension": {
"action": "Nainstalujte si rozšíření",
"description": "Nainstalujte si rozšíření prohlížeče a získejte přístup k nejlepším zdrojům.",
"quality": "Nejlepší kvalita",
"title": "Rozšíření prohlížeče"
},
"proxy": {
"action": "Nastavit proxy",
"description": "Nastavte si proxy během 5 minut, pro získání přístupu k skvělým zdrojům.",
"quality": "Dobrá kvalita",
"title": "Vlastní proxy"
}
},
"title": "Pojďme vám nastavit sudo-flix"
}
},
"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. sudo-flix nemá kontrolu nad tím, jak jsou stahování poskytovány.",
"downloadPlaylist": "Stáhnout playlist",
"downloadSubtitle": "Stáhnout aktuální titulky",
"downloadVideo": "Stáhnout video",
"hlsDisclaimer": "Stahování probíhá přímo u poskytovatele. sudo-flix nemá kontrolu nad tím, jak jsou stahování poskytovány.<br /><br />Vezměte prosím na vědomí, že stahujete HLS playlist, který <bold>není doporučen stahovat pokud nejste obeznámeni s pokročilým streamováním médií</bold>. Raději skuste jiný zdroj pro jiný formát.",
"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í...",
"unairedEpisodes": "Jedna nebo více epizod v této sezóně nejsou dostupné, protože ještě nebyly odvysílány."
},
"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",
"enableSubtitles": "Zapnout titulky",
"experienceSection": "Zážitek sledování",
"playbackItem": "Nastavení přehrávání",
"qualityItem": "Kvalita",
"sourceItem": "Zdroje videa",
"subtitleItem": "Nastavení titulků",
"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": {
"customChoice": "Vybrat titulky ze souboru",
"customizeLabel": "Přizpůsobit",
"offChoice": "Vypnuto",
"settings": {
"backlink": "Vlastní titulky",
"delay": "Posunutí titulků",
"fixCapitals": "Opravit velká písmena"
},
"title": "Titulky",
"unknownLanguage": "Neznámé"
}
},
"metadata": {
"api": {
"text": "Metadata API nelze načíst, zkontrolujte prosím vaše připojení k internetu.",
"title": "Nepodařilo se načíst API metadata"
},
"dmca": {
"badge": "Odstraněno",
"text": "Toto média není dostupné, kvůli oznámení o zastavení šíření nebo nároku na autorská práva.",
"title": "Média byla odstraněna"
},
"extensionPermission": {
"badge": "Chybí povolení",
"button": "Použít rozšíření",
"text": "Máte rozšíření, ale k jeho použití potřebujeme vaše povolení.",
"title": "Konfigurace rozšíření"
},
"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}}"
},
"turnstile": {
"description": "Ověřte, prosím, že jste člověk, vyplněním Captchy napravo. Toto je pro zajištění bezpečnosti sudo-flix!",
"error": "Nepodařilo se ověřit vaši lidskost. Zkuste to prosím znovu.",
"title": "Potřebujeme ověřit, zda jste člověk.",
"verifyingHumanity": "Ověřování vaši lidskosti..."
}
},
"screens": {
"dmca": {
"text": "Vítejte na DMCA kontaktní stránce sudo-flixu! 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í sudo-flixu 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 pro ukládání dat, povolte toto a zadejte URL adresu. <0>Instrukce.</0>",
"label": "Vlastní server",
"urlLabel": "URL adresa vlastního serveru"
},
"setup": {
"doSetup": "Proveďte nastavení",
"errorStatus": {
"description": "Vypadá to, že jedna nebo více položek v tomto nastavení potřebuje vaši pozornost.",
"title": "Něco potřebuje vaši pozornost"
},
"itemError": "S tímto nastavením je něco špatně. Projděte znovu nastavením abyste to opravili.",
"items": {
"default": "Výchozí nastavení",
"extension": "Rozšíření",
"proxy": "Vlastní proxy"
},
"redoSetup": "Proveďte znovu nastavení",
"successStatus": {
"description": "Všechny věci jsou připraveny, abyste mohli začít sledovat svá oblíbená média.",
"title": "Všechno je nastaveno!"
},
"unsetStatus": {
"description": "Prosím klikněte na vedlejší tlačítko abyste začali proces nastavování.",
"title": "Neprošli jste nastavením"
}
},
"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. <0>Instrukce.</0>",
"emptyState": "Zatím žádní pracovníci, přidej jednoho dolů",
"label": "Použít vlastní proxy pracovníky",
"urlLabel": "URL adresy pracovníků",
"urlPlaceholder": "https://"
}
},
"preferences": {
"language": "Jazyk aplikace",
"languageDescription": "Jazyk aplikován na celou aplikaci.",
"thumbnail": "Generovat miniatury",
"thumbnailDescription": "Videa většinou nemají miniatury. Toto nastavení můžete povolit, ale mohou zpomalit vaše video.",
"thumbnailLabel": "Generovat miniatury",
"title": "Preference"
},
"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": {
"backgroundLabel": "Neprůhlednost pozadí",
"colorLabel": "Barva",
"previewQuote": "Nesmím se bát. Strach zabíjí myšlení.",
"textSizeLabel": "Velikost textu",
"title": "Titulky"
},
"unsaved": "Máte neuložené změny"
}
}

482
src/assets/locales/de.json Normal file
View File

@ -0,0 +1,482 @@
{
"about": {
"description": "sudo-flix ist eine Web-App, welche das Internet nach Streams durchsucht. Das Team versucht einen minimalistischen Ansatz umzusetzen.",
"faqTitle": "Häufig gestellte Fragen",
"q1": {
"body": "sudo-flix 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). sudo-flix 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. sudo-flix 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, 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 sudo-flix"
},
"actions": {
"copied": "Kopiert",
"copy": "Kopieren"
},
"auth": {
"createAccount": "Du hast noch keinen Account? <0>Registriere dich jetzt.</0>",
"deviceNameLabel": "Gerätename",
"deviceNamePlaceholder": "Handy",
"generate": {
"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>",
"login": {
"description": "Gebe deine Passphrase ein, um dich in deinem Konto anzumelden",
"deviceLengthError": "Gebe einen Gerätenamen ein",
"passphraseLabel": "12-Wort Passphrase",
"passphrasePlaceholder": "Passphrase",
"submit": "Anmelden",
"title": "Melde dich in deinem Konto an",
"validationError": "Falsche oder unvollständige Passphrase"
},
"register": {
"information": {
"color1": "Profilfarbe 1",
"color2": "Profilfarbe 2",
"header": "Gebe einen Namen für dein Gerät ein und wähle ein Symbol",
"icon": "Symbol",
"next": "Weiter",
"title": "Kontoinformationen"
}
},
"trust": {
"failed": {
"text": "Hast du es korrekt konfiguriert?",
"title": "Server nicht erreichbar"
},
"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 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",
"recaptchaFailed": "ReCaptcha Verifizierung ist fehlgeschlagenen",
"register": "Konto erstellen",
"title": "Bestätige deine Passphrase"
}
},
"errors": {
"badge": "Kaputt",
"details": "Fehlerdetails",
"reloadPage": "Seite neuladen",
"showError": "Zeige Fehlerdetails an",
"title": "Ein Fehler ist aufgetreten!"
},
"footer": {
"legal": {
"disclaimer": "Hinweis",
"disclaimerText": "sudo-flix hostet keine Dateien, sondern verlinkt lediglich auf Dienste Dritter. Rechtliche Fragen sollten mit den Dateihostern und -anbietern geklärt werden. sudo-flix übernimmt keine Verantwortung für die von den Videoanbietern angezeigten Mediendateien."
},
"links": {
"discord": "Discord",
"dmca": "DMCA",
"github": "GitHub"
},
"tagline": "Schau deine Lieblingsserien und Filme mit dieser quelloffenen Streaming App."
},
"global": {
"name": "sudo-flix",
"pages": {
"about": "Über",
"dmca": "DMCA",
"login": "Anmelden",
"onboarding": "Einrichtung",
"pagetitle": "{{title}} - sudo-flix",
"register": "Registrieren",
"settings": "Einstellungen"
}
},
"home": {
"bookmarks": {
"sectionTitle": "Favoriten"
},
"continueWatching": {
"sectionTitle": "Weiter ansehen"
},
"mediaList": {
"stopEditing": "Bearbeiten beenden"
},
"search": {
"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 möchtest du schauen?",
"sectionTitle": "Suchergebnisse"
},
"titles": {
"day": {
"default": "Was würdest du diesem Nachmittag gerne schauen?",
"extra": [
"Lust auf ein Abenteuer? Dann ist Jurassic Park genau das Richtige."
]
},
"morning": {
"default": "Was würdest du diesen Morgen gerne schauen?",
"extra": ["Before Sunrise soll gut sein"]
},
"night": {
"default": "Was möchtest du diesen Abend gerne schauen?",
"extra": ["Müde? Ich hab gehört The Exorcist soll gut sein."]
}
}
},
"media": {
"episodeDisplay": "S{{season}} E{{episode}}",
"types": {
"movie": "Film",
"show": "Serie"
}
},
"navigation": {
"banner": {
"offline": "Internetverbindung ist instabil"
},
"menu": {
"about": "Über uns",
"donation": "Spenden",
"logout": "Abmelden",
"register": "Mit der Cloud synchronisieren",
"settings": "Einstellungen",
"support": "Support"
}
},
"notFound": {
"badge": "Nicht gefunden",
"goHome": "Zurück zur Startseite",
"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"
},
"onboarding": {
"proxy": {
"back": "Zurück gehen"
},
"start": {
"options": {
"extension": {
"quality": "Beste Qualität"
}
}
}
},
"overlays": {
"close": "Schließen"
},
"player": {
"back": {
"default": "Zurück zur Startseite",
"short": "Zurück"
},
"casting": {
"enabled": "Casting zum Gerät..."
},
"menus": {
"downloads": {
"disclaimer": "Videos werden direkt vom Provider heruntergeladen. sudo-flix hat keinen Einfluss darauf, wie Downloads bereitgestellt werden.",
"downloadPlaylist": "Playlist herunterladen",
"downloadSubtitle": "Aktuelle Untertitel herunterladen",
"downloadVideo": "Video herunterladen",
"hlsDisclaimer": "sudo-flix hat keinen Einfluss darauf, wie Downloads bereitgestellt werden. Downloads werden direkt vom Anbieter bezogen. Bitte beachte, dass du eine HLS-Wiedergabeliste herunterlädst, dies ist nicht empfohlen für Nutzer die nicht mit Erweiterten Streaming Formaten vertraut sind. Probiere andere Anbieter für andere Formate.",
"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",
"title": "Auf Android herunterladen"
},
"onIos": {
"1": "Um Auf iOS herunterzuladen, klick auf den Download-Button. Klicke dann auf der neuen Seite auf<bold> <ios_share /></bold>, dann auf <bold>In Dateien sichern <ios_files /></bold>.",
"shortTitle": "Download / iOS",
"title": "Auf iOS herunterladen"
},
"onPc": {
"1": "Um am PC herunterzuladen, klicke auf den Download-Button. Klicke dann mit der rechten Maustaste auf das Video und klicke auf <bold>Video speichern als</bold>",
"shortTitle": "Download / PC",
"title": "Am PC herunterladen"
},
"title": "Download"
},
"episodes": {
"button": "Folgen",
"emptyState": "Keine Folgen in dieser Staffel, schau später noch einmal!",
"episodeBadge": "E{{episode}}",
"loadingError": "Fehler beim Laden der Sitzung",
"loadingList": "Wird geladen...",
"loadingTitle": "Wird geladen...",
"unairedEpisodes": "Eine oder mehrere Episoden dieser Staffel wurden deaktiviert, weil sie noch nicht ausgestrahlt wurden."
},
"playback": {
"speedLabel": "Wiedergabegeschwindigkeit",
"title": "Wiedergabeeinstellungen"
},
"quality": {
"automaticLabel": "Automatische Qualitätseinstellung",
"hint": "Du kannst versuchen die <0>Quelle zu ändern</0> um andere Qualitätsoptionen zu erhalten.",
"iosNoQuality": "Durch eine Einschränkung von Apple ist die Qualitätsauswahl für iOS für diese Quelle nicht verfügbar. Du kannst versuchen <0>einen andere Quelle auszuwählen</0> um andere Qualitätsoptionen zu erhalten.",
"title": "Qualität"
},
"settings": {
"downloadItem": "Download",
"enableSubtitles": "Untettitel aktivieren",
"experienceSection": "Anzeigeerlebnis",
"playbackItem": "Wiedergabeeinstellungen",
"qualityItem": "Qualität",
"sourceItem": "Videoquellen",
"subtitleItem": "Untertiteleinstellungen",
"videoSection": "Videoeinstellungen"
},
"sources": {
"failed": {
"text": "Beim Versuch, Videos zu finden, ist ein Fehler aufgetreten. Bitte versuche es mit einer anderen Quelle.",
"title": "Fehler beim Laden"
},
"noEmbeds": {
"text": "Es konnten keine Embeds gefunden werden. Bitte versuchen es mit einer anderen Quelle.",
"title": "Keine Embeds gefunden"
},
"noStream": {
"text": "Diese Quelle bietet keine Streams für diesen Film oder diese Serie.",
"title": "Kein Stream"
},
"title": "Quellen",
"unknownOption": "Unbekannt"
},
"subtitles": {
"customChoice": "Untertitel aus Datei wählen",
"customizeLabel": "Anpassen",
"offChoice": "Aus",
"settings": {
"backlink": "Eigene Untertitel",
"delay": "Untertitelverzögerung",
"fixCapitals": "Großschreibung korrigieren"
},
"title": "Untertitel",
"unknownLanguage": "Unbekannt"
}
},
"metadata": {
"api": {
"text": "API Metadaten konnten nicht geladen werden, überprüfe deine Netzwerkverbindung.",
"title": "API Metadaten konnten nicht geladen werden"
},
"dmca": {
"badge": "Entfernt",
"text": "Das Video ist aufgrund einer Takedown-Anfrage oder eines Urheberrechtsanspruchs nicht mehr verfügbar.",
"title": "Video wurde entfernt"
},
"extensionPermission": {
"badge": "Berechtigung fehlt",
"button": "Verwende Erweiterung",
"text": "Du hast die Browser-Erweiterung, aber wir brauchen deine Berechtigung um mit der Erweiterung zu starten.",
"title": "Konfiguriere die Erweiterung"
},
"failed": {
"badge": "Fehlgeschlagen",
"homeButton": "Zurück zur Startseite",
"text": "Konnte die Videometadaten nicht von TMDB laden. Überprüfe ob TMDB funktioniert oder von deiner Internetverbindung gesperrt wird.",
"title": "Laden der Metadaten ist fehlgeschlagen"
},
"notFound": {
"badge": "Nicht gefunden",
"homeButton": "Zurück zur Startseite",
"text": "Wir konnten das angeforderte Video nicht finden.",
"title": "Das Video konnte nicht gefunden werden."
}
},
"nextEpisode": {
"cancel": "Abbrechen",
"next": "Nächste Folge"
},
"playbackError": {
"badge": "Wiedergabefehler",
"errors": {
"errorAborted": "Das Laden des Videos wurde vom Nutzer abgebrochen.",
"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 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": "Während der Wiedergabe ist ein Fehler aufgetreten. Versuche es erneut.",
"title": "Hoppla, etwas ist schiefgegangen!"
},
"scraping": {
"items": {
"failure": "Ein Fehler ist aufgetreten",
"notFound": "Video nicht gefunden",
"pending": "Suche nach Videos..."
},
"notFound": {
"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 auf \"Details anzeigen\" für mehr Details.",
"title": "Wir konnten das nicht finden"
}
},
"time": {
"regular": "{{timeWatched}} / {{duration}}",
"remaining": "{{timeLeft}} übrig • Fertig um {{timeFinished, datetime}}",
"shortRegular": "{{timeWatched}}",
"shortRemaining": "-{{timeLeft}}"
},
"turnstile": {
"description": "Bitte verifiziere deine Menschlichkeit mit dem Captcha auf der Rechten Seite. Dies ist um sudo-flix sicher zu halten!",
"error": "Menschlichkeit konnte nicht verifiziert werden. Bitte versuche es erneut.",
"title": "Wir müssen sicherstellen, dass du Menschlich bist.",
"verifyingHumanity": "Verifiziere deine Menschlichkeit..."
}
},
"screens": {
"dmca": {
"text": "Willkommen zu sudo-flixs DMCA-Kontaktseite! Wir respektieren geistiges Eigentum und wollen uns schnell um urheberrechtlichen Anliegen kümmern. Falls du glaubst, dass dein urheberrechtlich geschütztes Werk unsachgemäß auf unserer Plattform verwendet wurde, sende uns bitte eine genaue DMCA-Anfrage an die unten stehende E-Mail. Diese sollte eine Beschreibung des urheberrechtlich geschützten Material, deine Kontaktinformationen sowie einer Erklärung des guten Glaubens beinhalten. Wir sind engagiert diese Anliegen schnell zu lösen und schätzen deine Hilfe dabei sudo-flix zu einer Plattform, welche Kreativität und Urheberrechte respektiert.",
"title": "DMCA"
},
"loadingApp": "Die App wird geladen",
"loadingUser": "Dein Profil wird geladen",
"loadingUserError": {
"logout": "Abmelden",
"reset": "Eigenen Server zurücksetzen",
"text": "Beim Laden deines Profils ist ein Fehler aufgetreten",
"textWithReset": "Beim Laden deines Profils von deinem Server ist ein Fehler aufgetreten, zurück zum Standard-Server wechseln?"
},
"migration": {
"failed": "Beim Migrieren deiner Daten ist ein Fehler aufgetreten.",
"inProgress": "Bitte warte, wir migrieren deine Daten. Das sollte nicht lange dauern."
}
},
"settings": {
"account": {
"accountDetails": {
"deviceNameLabel": "Gerätename",
"deviceNamePlaceholder": "Handy",
"editProfile": "Bearbeiten",
"logoutButton": "Abmelden"
},
"actions": {
"delete": {
"button": "Konto löschen",
"confirmButton": "Konto löschen",
"confirmDescription": "Konto wirklich löschen? Alle deine Daten gehen dabei verloren!",
"confirmTitle": "Bist du sicher?",
"text": "Diese Aktion kann nicht rückgängig gemacht werden. Alle Daten werden gelöscht und können nicht wiederhergestellt werden.",
"title": "Konto löschen"
},
"title": "Aktionen"
},
"devices": {
"deviceNameLabel": "Gerätename",
"failed": "Laden der Sitzungen fehlgeschlagen",
"removeDevice": "Entfernen",
"title": "Geräte"
},
"profile": {
"finish": "Bearbeiten beenden",
"firstColor": "Profilfarbe 1",
"secondColor": "Profilfarbe 2",
"title": "Profilbild bearbeiten",
"userIcon": "Symbol"
},
"register": {
"cta": "Los geht's",
"text": "Teilen deinen Fortschritt zwischen Geräten und halte sie synchronisiert.",
"title": "Mit der Cloud synchronisieren"
},
"title": "Konto"
},
"appearance": {
"activeTheme": "Aktiv",
"themes": {
"blue": "Blau",
"default": "Standard",
"gray": "Grau",
"red": "Rot",
"teal": "Türkis"
},
"title": "Aussehen"
},
"connections": {
"server": {
"description": "Falls du dich mit einem anderen Server verbinden willst, um deine Daten zu speichern. Aktiviere dies und gebe die URL an. <0>Anweisungen.</0>",
"label": "Eigener Server",
"urlLabel": "Eigene Server-URL"
},
"setup": {
"doSetup": "Einrichten",
"errorStatus": {
"description": "Es scheint so, als bräuchte eine oder mehrere Schritte in dieser Einrichtung deine Aufmerksamkeit.",
"title": "Etwas braucht deine Aufmerksamkeit"
},
"itemError": "Mit diesem Setup stimmt etwas nicht. Führen Sie das Setup erneut durch, um das Problem zu beheben.",
"items": {
"default": "Standard Einstellungen",
"extension": "Erweiterung",
"proxy": "Eigene Proxy"
},
"redoSetup": "Erneut einrichten",
"successStatus": {
"description": "Alles ist bereit, damit du deine Lieblingsserien und Filme ansehen kannst.",
"title": "Alles eingerichtet!"
},
"unsetStatus": {
"description": "Klicken Sie bitte auf den Button rechts, um die Setup zu starten.",
"title": "Du hast das Setup noch nicht durchgeführt"
}
},
"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. <0>Anweisungen.</0>",
"emptyState": "Keine Worker vorhanden, füge einen unten hinzu",
"label": "Verwenden deinen eigenen Worker-Proxys",
"urlLabel": "Worker-URLs",
"urlPlaceholder": "https://"
}
},
"preferences": {
"language": "App-Sprache",
"languageDescription": "Sprache für die ganze App.",
"thumbnail": "Miniaturansichten generieren",
"thumbnailDescription": "Meistens haben Videos keine Miniaturansicht. Du kannst diese Einstellung anmachen, um sie automatisch zu generieren, aber Sie können dein Video langsamer machen.",
"thumbnailLabel": "Miniaturansichten generieren",
"title": "Einstellungen"
},
"reset": "Zurücksetzen",
"save": "Speichern",
"sidebar": {
"info": {
"appVersion": "App-Version",
"backendUrl": "Server-URL",
"backendVersion": "Server-Version",
"hostname": "Hostname",
"insecure": "Unsicher",
"notLoggedIn": "Du bist nicht angemeldet",
"secure": "Sicher",
"title": "App-Informationen",
"unknownVersion": "Unbekannt",
"userId": "Nutzer-ID"
}
},
"subtitles": {
"backgroundLabel": "Hintergrunddeckkraft",
"colorLabel": "Farbe",
"previewQuote": "Das Gras wächst nicht schneller, wenn man daran zieht.",
"textSizeLabel": "Schriftgröße",
"title": "Untertitel"
},
"unsaved": "Du hast ungespeicherte Änderungen"
}
}

428
src/assets/locales/el.json Normal file
View File

@ -0,0 +1,428 @@
{
"about": {
"description": "Το sudo-flix είναι μία διαδικτυακή εφαρμογή που αναζητά το ίντερνετ για streams. Η ομάδα επιδιώκει μία κυρίως μινιμαλιστική προσέγγιση στην κατανάλωση περιεχομένου.",
"faqTitle": "Συχνές ερωτήσεις",
"q1": {
"body": "Το sudo-flix δεν φιλοξενεί περιεχόμενο. Σε κάθε κλικ για οτιδήποτε θέλετε να παρακολουθήσετε, το sudo-flix πραγματοποιεί αναζήτηση στο διαδίκτυο για το επιλεγμένο πολυμέσο (Στην οθόνη φόρτωσης και στην καρτέλα \"πηγές βίντεο\" μπορείτε να δείτε ποια πηγή χρησιμοποιείτε). Τα πολυμέσα δεν φορτώνονται ποτέ από το sudo-flix, όλα γίνονται μέσω του παραπάνω μηχανισμού.",
"title": "Από πού προέρχεται το περιεχόμενο;"
},
"q2": {
"body": "Δεν είναι εφικτό να αιτηθούν σειρές ή ταινίες, το sudo-flix δεν διαχειρίζεται το περιεχόμενο. Όλα τα πολυμέσα προβάλονται από πηγές στο διαδίκτυο.",
"title": "Που μπορώ να αιτηθώ μία σειρά ή ταινία;"
},
"q3": {
"body": "Τα αποτελέσματα των αναζητήσεων τροφοδοτούνται από το The Movie Database (TMDB) και προβάλλονται ανεξάρτητα με το αν οι πηγές διαθέτουν το εν λόγω πολυμέσο.",
"title": "Τα αποτελέσματα της αναζήτησης εμφανίζουν την σειρά ή την ταινία, γιατί δεν μπορώ να την αναπαράγω;"
},
"title": "Σχετικά με το sudo-flix"
},
"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": "Η επικύρωση του ReCaptcha απέτυχε",
"register": "Δημιουργία λογαριασμού",
"title": "Επικυρώστε τη συνθηματική σας φράση"
}
},
"errors": {
"badge": "Χάλασε",
"details": "Λεπτομέρειες σφάλματος",
"reloadPage": "Επαναφόρτωση της σελίδας",
"showError": "Εμφάνιση λεπτομερειών σφάλματος",
"title": "Αντιμετωπίσαμε ένα σφάλμα!"
},
"footer": {
"legal": {
"disclaimer": "Αποποίηση ευθύνης",
"disclaimerText": "Το sudo-flix δεν φιλοξενεί κανένα αρχείο, απλώς παραπέμπει σε υπηρεσίες τρίτων. Τα νομικά ζητήματα θα πρέπει να διευθετηθούν με τους παρόχους και τους διακομιστές που φιλοξενούν τα εν λόγω αρχεία. Το sudo-flix δεν είναι υπεύθυνο για τα αρχεία πολυμέσων που προβάλλονται από τους παρόχους βίντεο."
},
"links": {
"discord": "Discord",
"dmca": "DMCA (νόμος περί πνευματικών δικαιωμάτων)",
"github": "GitHub"
},
"tagline": "Παρακολουθήστε τις αγαπημένες σας σειρές και ταινίες με αυτή την εφαρμογή streaming ανοιχτού κώδικα."
},
"global": {
"name": "sudo-flix",
"pages": {
"about": "Σχετικά",
"dmca": "DMCA (νόμος περί πνευματικών δικαιωμάτων)",
"login": "Σύνδεση",
"pagetitle": "{{title}} - sudo-flix",
"register": "Εγγραφή",
"settings": "Ρυθμίσεις"
}
},
"home": {
"bookmarks": {
"sectionTitle": "Σελιδοδείκτες"
},
"continueWatching": {
"sectionTitle": "Συνεχίστε να παρακολουθείτε"
},
"mediaList": {
"stopEditing": "Σταματήστε την επεξεργασία"
},
"search": {
"allResults": "Αυτά είναι όλα όσα έχουμε!",
"failed": "Απέτυχε η εύρεση πολυμέσων, δοκιμάστε ξανά!",
"loading": "Φόρτωση...",
"noResults": "Δεν μπορέσαμε να βρούμε τίποτα!",
"placeholder": "Τι θέλετε να παρακολουθήσετε;",
"sectionTitle": "Αποτελέσματα αναζήτησης"
},
"titles": {
"day": {
"default": "Τι θα θέλατε να παρακολουθήσετε σήμερα το απόγευμα;",
"extra": [
"Νιώθετε περιπετειώδης; Το Jurassic Park μπορεί να είναι η τέλεια επιλογή."
]
},
"morning": {
"default": "Τι θα θέλατε να παρακολουθήσετε σήμερα το πρωί;",
"extra": ["Έχω ακούσει ότι το Before Sunrise είναι καλό"]
},
"night": {
"default": "Τι θα θέλατε να παρακολουθήσετε απόψε;",
"extra": ["Κούραση; Έχω ακούσει ότι ο Εξορκιστής είναι καλός."]
}
}
},
"media": {
"episodeDisplay": "Σ{{season}} Ε{{episode}}",
"types": {
"movie": "Ταινία",
"show": "Σειρά"
}
},
"navigation": {
"banner": {
"offline": "Ελέγξτε τη σύνδεσή σας στο διαδίκτυο"
},
"menu": {
"about": "Σχετικά με εμάς",
"donation": "Δωρεά",
"logout": "Αποσύνδεση",
"register": "Συγχρονισμός με το cloud",
"settings": "Ρυθμίσεις",
"support": "Υποστήριξη"
}
},
"notFound": {
"badge": "Δεν βρέθηκε",
"goHome": "Επιστροφή στην αρχική",
"message": "Ψάξαμε παντού: κάτω από τους κάδους, στην ντουλάπα, πίσω από το proxy, αλλά τελικά δεν μπορέσαμε να βρούμε τη σελίδα που ψάχνετε.",
"title": "Δεν μπόρεσε να βρεθεί η σελίδα"
},
"overlays": {
"close": "Κλείσιμο"
},
"player": {
"back": {
"default": "Επιστροφή στην αρχική",
"short": "Επιστροφή"
},
"casting": {
"enabled": "Αναμετάδοση στην συσκευή..."
},
"menus": {
"downloads": {
"disclaimer": "Οι λήψεις προέρχονται απευθείας από τον πάροχο. Το sudo-flix δεν ελέγχει τον τρόπο με τον οποίο παρέχονται οι λήψεις.",
"downloadPlaylist": "Λήψη λίστας αναπαραγωγής",
"downloadSubtitle": "Κατέβασμα τρέχοντος υπότιτλου",
"downloadVideo": "Λήψη βίντεο",
"hlsDisclaimer": "Οι λήψεις προέρχονται απευθείας από τον πάροχο. Το sudo-flix δεν ελέγχει τον τρόπο με τον οποίο παρέχονται οι λήψεις. Παρακαλώ λάβετε υπόψη ότι κατεβάζετε μια λίστα αναπαραγωγής 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": "Λήψη / PC",
"title": "Λήψη στο PC"
},
"title": "Λήψη"
},
"episodes": {
"button": "Επεισόδια",
"emptyState": "Δεν υπάρχουν επεισόδια σε αυτή τη σεζόν, επιστρέψτε αργότερα!",
"episodeBadge": "Ε{{episode}}",
"loadingError": "Σφάλμα φόρτωσης της σεζόν",
"loadingList": "Φόρτωση...",
"loadingTitle": "Φόρτωση...",
"unairedEpisodes": "Ένα ή περισσότερα επεισόδια αυτής της σεζόν έχουν απενεργοποιηθεί επειδή δεν έχουν προβληθεί ακόμα."
},
"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": "Το scrape απέτυχε"
},
"noEmbeds": {
"text": "Δεν μπορέσαμε να βρούμε κανένα embed, παρακαλούμε δοκιμάστε μια άλλη πηγή.",
"title": "Δεν βρέθηκε κανένα embed"
},
"noStream": {
"text": "Αυτή η πηγή δεν έχει streams για αυτή την ταινία ή σειρά.",
"title": "Δεν υπάρχει stream"
},
"title": "Πηγές",
"unknownOption": "Άγνωστο"
},
"subtitles": {
"customChoice": "Επιλογή υποτίτλων από αρχείο",
"customizeLabel": "Προσαρμογή",
"offChoice": "Σβηστό",
"settings": {
"backlink": "Προσαρμοσμένοι υπότιτλοι",
"delay": "Καθυστέρηση υποτίτλων",
"fixCapitals": "Επιδιόρθωση κεφαλαιοποίησης"
},
"title": "Υπότιτλοι",
"unknownLanguage": "Άγνωστο"
}
},
"metadata": {
"api": {
"text": "Δεν ήταν δυνατή η φόρτωση των μεταδεδομένων του API, ελέγξτε τη σύνδεσή σας στο διαδίκτυο.",
"title": "Αποτυχία φόρτωσης μεταδεδομένων API"
},
"failed": {
"badge": "Απέτυχε",
"homeButton": "Επιστοφή στην αρχική",
"text": "Δεν ήταν δυνατή η φόρτωση των μεταδεδομένων του πολυμέσου από την TMDB. Ελέγξτε αν η TMDB είναι εκτός λειτουργίας ή αποκλεισμένη στη σύνδεσή σας στο διαδίκτυο.",
"title": "Αποτυχία φόρτωσης μεταδεδομένων"
},
"notFound": {
"badge": "Δεν βρέθηκε",
"homeButton": "Επιστροφή στην αρχική σελίδα",
"text": "Δεν μπορέσαμε να βρούμε το πολυμέσο που ζητήσατε. Είτε έχει αφαιρεθεί είτε παραποιήσατε τη διεύθυνση URL.",
"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}}"
},
"turnstile": {
"description": "Επαληθεύστε ότι είστε άνθρωπος συμπληρώνοντας το Captcha στα δεξιά. Αυτό γίνεται για να διατηρηθεί ο ιστός της ταινίας ασφαλής!",
"error": "Αποτυχία επαλήθευσης της ανθρωπιάς σας. ΠΑΡΑΚΑΛΩ προσπαθησε ξανα.",
"title": "Πρέπει να επαληθεύσουμε ότι είστε άνθρωπος.",
"verifyingHumanity": "Επαλήθευση της ανθρωπιάς σας..."
}
},
"screens": {
"dmca": {
"text": "Καλώς ήρθατε στη σελίδα επικοινωνίας DMCA (νόμου περί πνευματικών δικαιωμάτων) της sudo-flix! Σεβόμαστε τα δικαιώματα πνευματικής ιδιοκτησίας και επιθυμούμε να αντιμετωπίσουμε γρήγορα τυχόν νομικά ζητήματα πνευματικών δικαιωμάτων. Εάν πιστεύετε ότι το έργο σας που προστατεύεται από πνευματικά δικαιώματα έχει χρησιμοποιηθεί αθέμιτα στην πλατφόρμα μας, παρακαλούμε στείλτε μια λεπτομερή ειδοποίηση στην παρακάτω διεύθυνση ηλεκτρονικού ταχυδρομίου. Παρακαλούμε να συμπεριλάβετε μια περιγραφή του υλικού που προστατεύεται από πνευματικά δικαιώματα, τα στοιχεία επικοινωνίας σας και μια δήλωση καλής πίστης. Δεσμευόμαστε να επιλύουμε αυτά τα θέματα άμεσα και εκτιμούμε τη συνεργασία σας για να διατηρήσουμε το sudo-flix ένα μέρος που σέβεται τη δημιουργικότητα και τα πνευματικά δικαιώματα.",
"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": "Συγχρονισμός με το cloud"
},
"title": "Λογαριασμός"
},
"appearance": {
"activeTheme": "Ενεργός",
"themes": {
"blue": "Μπλε",
"default": "Προεπιλογή",
"gray": "Γκρι",
"red": "Κόκκινο",
"teal": "Πετρόλ"
},
"title": "Εμφάνιση"
},
"connections": {
"server": {
"description": "Αν θέλετε να συνδεθείτε σε ένα προσαρμοσμένο backend για την αποθήκευση των δεδομένων σας, ενεργοποιήστε το και παραχωρήστε τη διεύθυνση URL.",
"label": "Προσαρμοσμένος διακομιστής",
"urlLabel": "Διεύθυνση URL προσαρμοσμένου διακομιστή"
},
"title": "Συνδέσεις",
"workers": {
"addButton": "Προσθήκη νέου worker",
"description": "Για να λειτουργήσει η εφαρμογή, όλη η κυκλοφορία δρομολογείται μέσω διακομιστών μεσολάβησης. Ενεργοποιήστε το εάν θέλετε να φέρετε τους δικούς σας workers.",
"emptyState": "Δεν υπάρχουν ακόμη workers, προσθέστε έναν παρακάτω",
"label": "Χρήση προσαρμοσμένων proxy workers",
"urlLabel": "Διευθύνσεις URL των worker",
"urlPlaceholder": "https://"
}
},
"reset": "Επαναφορά",
"save": "Αποθήκευση",
"sidebar": {
"info": {
"appVersion": "Έκδοση εφαρμογής",
"backendUrl": "Διεύθυνση URL του backend",
"backendVersion": "Έκδοση του backend",
"hostname": "Όνομα διακομιστή",
"insecure": "Ανασφαλές",
"notLoggedIn": "Δεν είστε συνδεδεμένοι",
"secure": "Ασφαλές",
"title": "Πληροφορίες εφαρμογής",
"unknownVersion": "Άγνωστο",
"userId": "Αναγνωριστικό χρήστη"
}
},
"subtitles": {
"backgroundLabel": "Διαφάνεια φόντου",
"colorLabel": "Χρώμα",
"previewQuote": "Δεν πρέπει να φοβάμαι. Ο φόβος είναι ο δολοφόνος του μυαλού.",
"textSizeLabel": "Μέγεθος κειμένου",
"title": "Υπότιτλοι"
},
"unsaved": "Έχετε μη αποθηκευμένες αλλαγές"
}
}

533
src/assets/locales/en.json Normal file
View File

@ -0,0 +1,533 @@
{
"about": {
"description": "sudo-flix 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": "sudo-flix 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 sudo-flix, 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, sudo-flix 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 sudo-flix"
},
"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>",
"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": {
"color1": "Profile color one",
"color2": "Profile color two",
"header": "Enter a name for your device and pick colours and a user icon of your choosing",
"icon": "User icon",
"next": "Next",
"title": "Account information"
}
},
"trust": {
"failed": {
"text": "Did you configure it correctly?",
"title": "Failed to reach server"
},
"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": {
"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",
"passphraseLabel": "Your 12-word passphrase",
"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",
"title": "We encountered an error!"
},
"footer": {
"legal": {
"disclaimer": "Disclaimer",
"disclaimerText": "sudo-flix does not host any files, it merely links to 3rd party services. Legal issues should be taken up with the file hosts and providers. sudo-flix 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": "sudo-flix",
"pages": {
"about": "About",
"dmca": "DMCA",
"login": "Login",
"pagetitle": "{{title}} - sudo-flix",
"register": "Register",
"settings": "Settings",
"onboarding": "Setup"
}
},
"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?",
"extra": [
"Have you heard of South Beach Tow, its a trip."
]
},
"morning": {
"default": "What would you like to watch this morning?",
"extra": ["You should watch Worst Bakers in America."]
},
"night": {
"default": "What would you like to watch tonight?",
"extra": ["Tired? Try winding down with Friends."]
}
}
},
"media": {
"episodeDisplay": "S{{season}} E{{episode}}",
"types": {
"movie": "Movie",
"show": "Show"
}
},
"navigation": {
"banner": {
"offline": "Check your internet connection"
},
"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": {
"turnstile": {
"verifyingHumanity": "Verifying your humanity...",
"title": "We need to verify that you're human.",
"description": "Please verify that you are human by completing the Captcha on the right. This is to keep sudo-flix safe!",
"error": "Failed to verify your humanity. Please try again."
},
"back": {
"default": "Back to home",
"short": "Back"
},
"casting": {
"enabled": "Casting to device..."
},
"menus": {
"settings": {
"videoSection": "Video settings",
"experienceSection": "Viewing experience",
"enableSubtitles": "Enable Subtitles",
"subtitleItem": "Subtitle settings",
"sourceItem": "Video sources",
"playbackItem": "Playback settings",
"downloadItem": "Download",
"qualityItem": "Quality"
},
"episodes": {
"button": "Episodes",
"loadingTitle": "Loading...",
"loadingList": "Loading...",
"loadingError": "Error loading season",
"emptyState": "There are no episodes in this season, check back later!",
"episodeBadge": "E{{episode}}",
"unairedEpisodes": "One or more episodes in this season have been disabled because they haven't been aired yet."
},
"sources": {
"title": "Sources",
"unknownOption": "Unknown",
"noStream": {
"title": "No stream",
"text": "This source has no streams for this movie or show."
},
"noEmbeds": {
"title": "No embeds found",
"text": "We were unable to find any embeds, please try a different source."
},
"failed": {
"title": "Failed to scrape",
"text": "There was an error while trying to find any videos, please try a different source."
}
},
"subtitles": {
"title": "Subtitles",
"customizeLabel": "Customize",
"settings": {
"fixCapitals": "Fix capitalization",
"delay": "Subtitle delay",
"backlink": "Custom subtitles"
},
"customChoice": "Select subtitle from file",
"offChoice": "Off",
"unknownLanguage": "Unknown"
},
"downloads": {
"disclaimer": "Downloads are taken directly from the provider. sudo-flix does not have control over how the downloads are provided.",
"downloadSubtitle": "Download current subtitle",
"downloadPlaylist": "Download playlist",
"downloadVideo": "Download video",
"hlsDisclaimer": "Downloads are taken directly from the provider. sudo-flix does not have control over how the downloads are provided.<br /><br />Please note that you are downloading an HLS playlist, <bold>it is not recommended to download if you are not familiar with advanced streaming formats</bold>. Try different sources for different formats.",
"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>.",
"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>.",
"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": {
"speedLabel": "Playback speed",
"title": "Playback settings"
},
"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.",
"title": "Quality"
}
},
"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"
},
"api": {
"text": "Could not load API metadata, please check your internet connection.",
"title": "Failed to load API 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."
},
"extensionPermission": {
"badge": "Permission Missing",
"title": "Configure the extension",
"text": "You have the browser extension, but we need your permission to get started using the extension.",
"button": "Use extension"
},
"dmca": {
"badge": "Removed",
"title": "Media has been removed",
"text": "This media is no longer available due to a takedown notice or copyright claim."
}
},
"nextEpisode": {
"cancel": "Cancel",
"next": "Next episode"
},
"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}}"
}
},
"screens": {
"dmca": {
"text": "Welcome to sudo-flix'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 sudo-flix a place that respects creativity and copyrights.",
"title": "DMCA"
},
"loadingApp": "Loading application",
"loadingUser": "Loading your profile",
"loadingUserError": {
"logout": "Logout",
"reset": "Reset custom server",
"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."
}
},
"settings": {
"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": {
"setup": {
"errorStatus": {
"title": "Something needs your attention",
"description": "It seems that one or more items in this setup need your attention."
},
"unsetStatus": {
"title": "You haven't gone through setup",
"description": "Please click the button to the right to start the setup process."
},
"successStatus": {
"title": "Everything is set up!",
"description": "All things are in place for you to start watching your favourite media."
},
"redoSetup": "Redo setup",
"doSetup": "Do setup",
"itemError": "There is something wrong with this setting. Go through setup again to fix it.",
"items": {
"extension": "Extension",
"proxy": "Custom proxy",
"default": "Default setup"
}
},
"server": {
"description": "If you would like to connect to a custom backend to store your data, enable this and provide the URL. <0>Instructions.</0>",
"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. <0>Instructions.</0>",
"emptyState": "No workers yet, add one below",
"label": "Use custom proxy workers",
"urlLabel": "Worker URLs",
"urlPlaceholder": "https://"
}
},
"preferences": {
"language": "Application language",
"languageDescription": "Language applied to the entire application.",
"title": "Preferences",
"thumbnail": "Generate thumbnails",
"thumbnailDescription": "Most of the time, videos don't have thumbnails. You can enable this setting to generate them on the fly but they can make your video slower.",
"thumbnailLabel": "Generate thumbnails"
},
"reset": "Reset",
"save": "Save",
"sidebar": {
"info": {
"appVersion": "App version",
"backendUrl": "Backend URL",
"backendVersion": "Backend version",
"hostname": "Hostname",
"insecure": "Insecure",
"notLoggedIn": "You are not logged in",
"secure": "Secure",
"title": "App information",
"unknownVersion": "Unknown",
"userId": "User ID"
}
},
"unsaved": "You have unsaved changes"
},
"onboarding": {
"start": {
"title": "Let's get you setup with sudo-flix",
"explainer": "To get the best streams possible. You will need to choose which streaming method you want to use.",
"options": {
"proxy": {
"quality": "Good quality",
"title": "Custom proxy",
"description": "Setup a proxy in just 5 minutes and gain access to great sources.",
"action": "Setup proxy"
},
"extension": {
"quality": "Best quality",
"title": "Browser extension",
"description": "Install browser extension and gain access to the best sources.",
"action": "Install extension"
},
"default": {
"text": "I don't want good quality streams,<0 /> <1>use the default setup</1>"
}
}
},
"proxy": {
"title": "Let's make a new proxy",
"explainer": "With the proxy method, you can get great quality streams by making a self-service proxy.",
"link": "Learn how to make a proxy",
"input": {
"label": "Proxy URL",
"placeholder": "https://",
"errorInvalidUrl": "Not a valid URL",
"errorConnection": "Could not connect to proxy",
"errorNotProxy": "Expected a proxy but got a website"
},
"back": "Go back",
"submit": "Submit proxy"
},
"extension": {
"title": "Let's start with an extension",
"explainer": "Using the browser extension, you can get the best streams we have to offer. With just a simple install.",
"explainerIos": "Unfortunately, the browser extension is not supported on IOS, Press <bold>Go back</bold> to choose another option.",
"extensionHelp": "If you've installed the extension but it's not detected. <bold>Open the extension through your browsers extension menu</bold> and follow the steps on screen.",
"notDetecting": "Installed on chrome but not showing up? Try reloading the page!",
"notDetectingAction": "Reload page",
"linkChrome": "Install Chrome extension",
"linkFirefox": "Install Firefox extension",
"back": "Go back",
"status": {
"loading": "Waiting for you to install the extension",
"disallowed": "Extension is not enabled for this page",
"disallowedAction": "Enable extension",
"failed": "Failed to request status",
"outdated": "Extension version too old",
"success": "Extension is working as expected!"
},
"submit": "Continue"
},
"defaultConfirm": {
"title": "Are you sure?",
"description": "The default setup does not have the best streams and can be unbearably slow.",
"cancel": "Cancel",
"confirm": "Use default setup"
}
}
}

528
src/assets/locales/es.json Normal file
View File

@ -0,0 +1,528 @@
{
"about": {
"description": "sudo-flix 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": "sudo-flix 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 sudo-flix, 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, sudo-flix 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 sudo-flix"
},
"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": "sudo-flix no aloja ningún archivo, simplemente enlaza a servicios de terceros. Los problemas legales deben ser tratados con los proveedores de archivos y servicios. sudo-flix 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": "sudo-flix",
"pages": {
"about": "Acerca de",
"dmca": "DMCA",
"login": "Iniciar sesión",
"onboarding": "Configurar",
"pagetitle": "{{title}} - sudo-flix",
"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?",
"extra": [
"¿Te sientes aventurero? Jurassic Park podría ser la elección perfecta."
]
},
"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"
},
"onboarding": {
"defaultConfirm": {
"cancel": "Cancelar",
"confirm": "Usar configuración por defecto",
"description": "La configuración predeterminada no tiene las mejores transmisiones y puede ser insoportablemente lenta.",
"title": "Estás seguro?"
},
"extension": {
"back": "Volver atrás",
"explainer": "Usando la extensión de navegador, puedes obtener las mejores transiciones que ofrecemos. Simplemente con una simple instalación.",
"extensionHelp": "Si has instalado la extensión pero no es detectada, <bold>abre la extensión desde la sección en el menú de extensiones</bold> y sigue los pasos de la pantalla.",
"status": {
"disallowed": "La extensión no está activada para esta página",
"disallowedAction": "Activar extensión",
"failed": "No se pudo solicitar el estado",
"loading": "Esperando que instales la extensión",
"outdated": "La versión de la extensión es muy antigua",
"success": "¡La extensión está funcionando como se esperaba!"
},
"submit": "Continuar",
"title": "Vamos a empezar con la extensión"
},
"proxy": {
"back": "Volver atrás",
"explainer": "Con el método de proxy, puede obtener una my buena calidad de las transmisiones creando un proxy propio.",
"input": {
"errorConnection": "No se pudo conectar al proxy",
"errorInvalidUrl": "URL no válida",
"errorNotProxy": "Esperaba un proxy pero obtuve un sitio web",
"label": "URL del Proxy",
"placeholder": "https://"
},
"link": "Aprender a crear un proxy",
"submit": "Enviar proxy",
"title": "Vamos a crear un nuevo proxy"
},
"start": {
"explainer": "Para conseguir las mejores transmisiones, necesitarás elegir que método de transmisión quieres usar.",
"options": {
"default": {
"text": "No quiero buena calidad en las transmisiones,<0 /> <1>usar la configuración por defecto</1>"
},
"extension": {
"action": "Instalar extensión",
"description": "Instala la extensión de navegador y gana acceso a las mejore fuentes.",
"quality": "La mejor calidad",
"title": "Extensión de navegador"
},
"proxy": {
"action": "Configurar proxy",
"description": "Configura un proxy en tan solo 5 minutos y obtén acceso a buenas fuentes.",
"quality": "Buena calidad",
"title": "Proxy personalizado"
}
},
"title": "Vamos a configurar sudo-flix"
}
},
"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. sudo-flix no tiene control sobre cómo se proporcionan las descargas.",
"downloadPlaylist": "Descargar lista de reproducción",
"downloadSubtitle": "Descargar subtítulo actual",
"downloadVideo": "Descargar vídeo",
"hlsDisclaimer": "Las descargas se realizan directamente del proveedor. sudo-flix no tiene control sobre cómo se proporcionan las descargas. <br /><br />Tenga en cuenta que está descargando una lista de reproducción HLS, <bold>dirigida a usuarios familiarizados con la transmisión multimedia avanzada.</bold>",
"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...",
"unairedEpisodes": "Uno o más episodios de esta temporada se han desactivado porque aún no se han emitido."
},
"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",
"enableSubtitles": "Habilitar subtítulos",
"experienceSection": "Experiencia de visualización",
"playbackItem": "Configuración de reproducción",
"qualityItem": "Calidad",
"sourceItem": "Fuentes de vídeo",
"subtitleItem": "Configuración de subtítulos",
"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"
},
"subtitles": {
"customChoice": "Seleccionar subtítulo del archivo",
"customizeLabel": "Personalizar",
"offChoice": "Apagado",
"settings": {
"backlink": "Subtítulos personalizados",
"delay": "Retraso de subtítulos",
"fixCapitals": "Arreglar capitalización"
},
"title": "Subtítulos",
"unknownLanguage": "Desconocido"
}
},
"metadata": {
"api": {
"text": "No ha sido posible cargar la metadata de la API, por favor, comprueba tu conexión a internet.",
"title": "No ha sido posible cargar los metadatos de la API"
},
"dmca": {
"badge": "Eliminado",
"text": "Este contenido no va a estar disponible debido a un aviso de eliminación o un reclamo de derechos de autor.",
"title": "El contenido ha sido eliminado"
},
"extensionPermission": {
"badge": "Permisos insuficientes",
"button": "Usar extensión",
"text": "Tienes la extensión de navegador, pero necesitamos tu permiso para empezar a usarla.",
"title": "Configura la extensión"
},
"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}}"
},
"turnstile": {
"description": "Por favor, confirma que eres humano completando el Captcha. Esto es para mantener sudo-flix seguro!",
"error": "Ha habido un error al verificar tu humanidad. Por favor, prueba de nuevo.",
"title": "Necesitamos verificar que eres humano.",
"verifyingHumanity": "Verificando tu hunanidad…"
}
},
"screens": {
"dmca": {
"text": "¡Bienvenido a la página de contacto DMCA de sudo-flix! 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 sudo-flix 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. <0>Instrucciones.</0>",
"label": "Servidor personalizado",
"urlLabel": "URL del servidor personalizado"
},
"setup": {
"doSetup": "Configurar",
"errorStatus": {
"description": "Parece que hay uno o más items en esta configuración que requieren de tu atención.",
"title": "Algo necesita de tu atención"
},
"itemError": "Hay algo que no fue bien con esta configuración. Ve otra vez a la configuración para solucionarlo.",
"items": {
"default": "Configuración por defecto",
"extension": "Extensión",
"proxy": "Proxy personalizado"
},
"redoSetup": "Rehacer configuración",
"successStatus": {
"description": "Todo lo necesario está en su sitio para que empieces a ver tu contenido favorito.",
"title": "Todo está configurado!"
},
"unsetStatus": {
"description": "Haga clic en el botón a la derecha para iniciar el proceso de configuración.",
"title": "No has pasado por la configuración"
}
},
"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. <0>Instrucciones.</0>",
"emptyState": "Aún no hay workers, agrega uno a continuación",
"label": "Usar proxy workers personalizados",
"urlLabel": "URL de los workers",
"urlPlaceholder": "https://"
}
},
"preferences": {
"language": "Idioma de la aplicación",
"languageDescription": "Idioma aplicado a toda la aplicación.",
"thumbnail": "Generar miniaturas",
"thumbnailDescription": "La mayor parte del tiempo, los videos no tienen miniaturas. Puedes activar esta configuración para generarlas sobre la marcha, pero pueden realentizar tu video.",
"thumbnailLabel": "Generar miniaturas",
"title": "Preferencias"
},
"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"
}
},
"subtitles": {
"backgroundLabel": "Opacidad del fondo",
"colorLabel": "Color",
"previewQuote": "No debo temer. El miedo es el asesino de la mente.",
"textSizeLabel": "Tamaño del texto",
"title": "Subtítulos"
},
"unsaved": "Tienes cambios sin guardar"
}
}

Some files were not shown because too many files have changed in this diff Show More